language-javascript 0.3.0 → 0.4.0
raw patch · 12 files changed
+1012/−4292 lines, 12 files
Files
- README +2/−0
- dist/build/Language/JavaScript/Parser/Grammar.hs +0/−2895
- dist/build/Language/JavaScript/Parser/Grammar5.hs +552/−395
- language-javascript.cabal +2/−2
- runtests.hs +28/−23
- src/Language/JavaScript/Parser.hs +6/−4
- src/Language/JavaScript/Parser/AST.hs +126/−42
- src/Language/JavaScript/Parser/Grammar.y +0/−739
- src/Language/JavaScript/Parser/Grammar5.y +246/−187
- src/Language/JavaScript/Parser/Parser.hs +8/−0
- src/Language/JavaScript/Parser/ParserMonad.hs +2/−2
- src/Language/JavaScript/Parser/SrcLocation.hs +40/−3
README view
@@ -45,6 +45,8 @@ Changes +0.4.0 Updated JSNode to include location information, and made the parse more true to the original by leaving blocks as such, not replacing with ';'.+ 0.3.0 ECMA-262 edition 5 compliance. Required adding JSFunctionExpression and JSPropertyAccessor to the AST. 0.2.2 Heading toward compliance with edition 5. Trailing commas allowed in array literals too.
− dist/build/Language/JavaScript/Parser/Grammar.hs
@@ -1,2895 +0,0 @@-{-# OPTIONS_GHC -w #-}-{-# OPTIONS -fglasgow-exts -cpp #-}-module Language.JavaScript.Parser.Grammar (- parseProgram- , parseLiteral- , parsePrimaryExpression- , parseStatement- ) where--import Control.Monad.Error.Class (throwError)-import Data.Char-import Language.JavaScript.Parser.Lexer-import Language.JavaScript.Parser.ParserMonad-import Language.JavaScript.Parser.SrcLocation-import qualified Language.JavaScript.Parser.AST as AST-import qualified Data.Array as Happy_Data_Array-import qualified GHC.Exts as Happy_GHC_Exts---- parser produced by Happy Version 1.18.6--newtype HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79 = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = Happy_GHC_Exts.Any-#else-type HappyAny = forall a . a-#endif-happyIn7 :: t7 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn7 #-}-happyOut7 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t7-happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut7 #-}-happyIn8 :: t8 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn8 #-}-happyOut8 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t8-happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut8 #-}-happyIn9 :: t9 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn9 #-}-happyOut9 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t9-happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut9 #-}-happyIn10 :: t10 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn10 #-}-happyOut10 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t10-happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut10 #-}-happyIn11 :: t11 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn11 #-}-happyOut11 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t11-happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut11 #-}-happyIn12 :: t12 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn12 #-}-happyOut12 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t12-happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut12 #-}-happyIn13 :: t13 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn13 #-}-happyOut13 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t13-happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut13 #-}-happyIn14 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn14 #-}-happyOut14 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut14 #-}-happyIn15 :: t15 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn15 #-}-happyOut15 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t15-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut15 #-}-happyIn16 :: t16 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn16 #-}-happyOut16 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t16-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut16 #-}-happyIn17 :: t17 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn17 #-}-happyOut17 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t17-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut17 #-}-happyIn18 :: t18 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn18 #-}-happyOut18 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t18-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut18 #-}-happyIn19 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn19 #-}-happyOut19 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut19 #-}-happyIn20 :: ([ AST.JSNode ]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn20 #-}-happyOut20 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([ AST.JSNode ])-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut20 #-}-happyIn21 :: t21 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn21 #-}-happyOut21 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t21-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut21 #-}-happyIn22 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn22 #-}-happyOut22 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut22 #-}-happyIn23 :: t23 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn23 #-}-happyOut23 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t23-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut23 #-}-happyIn24 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn24 #-}-happyOut24 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut24 #-}-happyIn25 :: t25 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn25 #-}-happyOut25 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t25-happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut25 #-}-happyIn26 :: ([[AST.JSNode]]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn26 #-}-happyOut26 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([[AST.JSNode]])-happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut26 #-}-happyIn27 :: t27 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn27 #-}-happyOut27 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t27-happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut27 #-}-happyIn28 :: t28 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn28 #-}-happyOut28 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t28-happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut28 #-}-happyIn29 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn29 #-}-happyOut29 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut29 #-}-happyIn30 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn30 #-}-happyOut30 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut30 #-}-happyIn31 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn31 #-}-happyOut31 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut31 #-}-happyIn32 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn32 #-}-happyOut32 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut32 #-}-happyIn33 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn33 #-}-happyOut33 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut33 #-}-happyIn34 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn34 #-}-happyOut34 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut34 #-}-happyIn35 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn35 #-}-happyOut35 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut35 #-}-happyIn36 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn36 #-}-happyOut36 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut36 #-}-happyIn37 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn37 #-}-happyOut37 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut37 #-}-happyIn38 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn38 #-}-happyOut38 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut38 #-}-happyIn39 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn39 #-}-happyOut39 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut39 #-}-happyIn40 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn40 #-}-happyOut40 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut40 #-}-happyIn41 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn41 #-}-happyOut41 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut41 #-}-happyIn42 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn42 #-}-happyOut42 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut42 #-}-happyIn43 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn43 #-}-happyOut43 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut43 #-}-happyIn44 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn44 #-}-happyOut44 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut44 #-}-happyIn45 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn45 #-}-happyOut45 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut45 #-}-happyIn46 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn46 #-}-happyOut46 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut46 #-}-happyIn47 :: t47 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t47-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut47 #-}-happyIn48 :: t48 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t48-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut48 #-}-happyIn49 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut49 #-}-happyIn50 :: t50 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t50-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut50 #-}-happyIn51 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut51 #-}-happyIn52 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut52 #-}-happyIn53 :: t53 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t53-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut53 #-}-happyIn54 :: t54 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t54-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut54 #-}-happyIn55 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut55 #-}-happyIn56 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut56 #-}-happyIn57 :: t57 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t57-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut57 #-}-happyIn58 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn58 #-}-happyOut58 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut58 #-}-happyIn59 :: t59 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn59 #-}-happyOut59 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t59-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut59 #-}-happyIn60 :: t60 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn60 #-}-happyOut60 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t60-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut60 #-}-happyIn61 :: t61 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn61 #-}-happyOut61 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t61-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut61 #-}-happyIn62 :: t62 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn62 #-}-happyOut62 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t62-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut62 #-}-happyIn63 :: t63 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn63 #-}-happyOut63 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t63-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut63 #-}-happyIn64 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn64 #-}-happyOut64 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut64 #-}-happyIn65 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn65 #-}-happyOut65 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut65 #-}-happyIn66 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn66 #-}-happyOut66 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut66 #-}-happyIn67 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn67 #-}-happyOut67 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut67 #-}-happyIn68 :: t68 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn68 #-}-happyOut68 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t68-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut68 #-}-happyIn69 :: t69 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn69 #-}-happyOut69 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t69-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut69 #-}-happyIn70 :: t70 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn70 #-}-happyOut70 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t70-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut70 #-}-happyIn71 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn71 #-}-happyOut71 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut71 #-}-happyIn72 :: t72 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn72 #-}-happyOut72 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t72-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut72 #-}-happyIn73 :: t73 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn73 #-}-happyOut73 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t73-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut73 #-}-happyIn74 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn74 #-}-happyOut74 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut74 #-}-happyIn75 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn75 #-}-happyOut75 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut75 #-}-happyIn76 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn76 #-}-happyOut76 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut76 #-}-happyIn77 :: ([AST.JSNode]) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn77 #-}-happyOut77 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> ([AST.JSNode])-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut77 #-}-happyIn78 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn78 #-}-happyOut78 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut78 #-}-happyIn79 :: t79 -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn79 #-}-happyOut79 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> t79-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut79 #-}-happyIn80 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn80 #-}-happyOut80 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut80 #-}-happyIn81 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn81 #-}-happyOut81 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut81 #-}-happyIn82 :: (AST.JSNode) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn82 #-}-happyOut82 :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (AST.JSNode)-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut82 #-}-happyInTok :: (Token) -> (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79)-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn t7 t8 t9 t10 t11 t12 t13 t15 t16 t17 t18 t21 t23 t25 t27 t28 t47 t48 t50 t53 t54 t57 t59 t60 t61 t62 t63 t68 t69 t70 t72 t73 t79) -> (Token)-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOutTok #-}---happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\x0f\x04\x20\x01\x71\x15\xd9\x03\xc7\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x00\x00\x37\x01\x00\x00\x1b\x01\x2e\x00\xd6\x01\xe2\x01\x00\x00\xeb\x01\x60\x01\x92\x04\x97\x01\xc4\x02\xbe\x02\xbb\x02\xbf\x02\x3e\x00\x00\x00\x00\x00\xbc\x02\x75\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x19\x05\x95\x02\x39\x15\x13\x00\x77\x02\x13\x00\x39\x15\xd9\x03\x00\x00\x97\x02\x74\x02\x92\x02\x55\x15\x00\x00\x45\x04\x90\x02\x00\x00\x39\x15\x00\x00\x8f\x02\x39\x15\x64\x02\x39\x15\x8c\x02\x8b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x02\x00\x00\x6b\x01\x4b\x02\x00\x00\x00\x00\x4b\x02\xa3\x03\x00\x00\x4c\x02\x6c\x02\x6b\x02\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x00\x88\x02\x39\x15\x39\x15\x00\x00\x00\x00\x7f\x02\xd4\x01\x00\x00\x00\x00\xf4\x00\x5f\x02\x86\x02\x39\x15\x00\x00\xcf\x01\x04\x01\x00\x00\x39\x15\x00\x00\x30\x14\x43\x02\x00\x00\x00\x00\x84\x02\xcc\x01\x00\x00\x84\x02\xee\x00\x80\x02\x7c\x02\x7a\x02\x00\x00\x29\x02\x00\x00\xe4\x04\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x39\x15\x00\x00\x00\x00\x39\x15\x00\x00\x00\x00\x00\x00\x34\x02\x39\x15\xfb\x13\x00\x00\x34\x02\x39\x15\x6d\x03\x00\x00\x5d\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x01\x91\x01\x91\x01\x60\x01\x60\x01\x60\x01\x60\x01\x60\x01\x60\x01\x92\x04\x92\x04\x92\x04\x92\x04\x97\x01\x72\x02\x71\x02\x6d\x02\x5b\x02\x58\x02\x00\x00\xaf\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x02\x00\x00\x32\x02\x3a\x00\x57\x02\x54\x02\x0b\x02\xea\x00\x00\x00\x00\x00\xba\x00\xf3\x01\x00\x00\xf4\x00\x00\x00\x00\x00\x2e\x02\x2d\x02\x00\x00\x00\x00\x39\x15\xb8\x00\x85\x00\x04\x15\x6b\x01\x00\x00\x50\x00\x32\x00\x00\x00\x84\x00\x28\x02\x39\x00\x21\x02\x3a\x02\x00\x00\x00\x00\x6d\x03\x6d\x03\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x02\x02\x37\x03\x89\x01\xf4\x01\xcf\x14\xcf\x14\xcf\x14\x00\x00\x7a\x04\x00\x00\x00\x00\xcf\x14\x00\x00\xcf\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x22\x00\x22\x02\xcf\x14\xcf\x14\x1e\x02\xf0\x01\x00\x00\x00\x00\xaf\x00\xe6\x00\x00\x00\x1b\x02\x9a\x14\x01\x03\xd5\x01\xf7\x01\x01\x03\xf6\x01\x01\x03\xf1\x01\x01\x03\x00\x00\x01\x03\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\xed\x01\x65\x14\x65\x00\x00\x00\x36\x01\x00\x00\x65\x14\x09\x02\x00\x00\xcb\x02\x00\x00\x07\x02\x0a\x00\x65\x14\xcb\x02\x04\x02\x00\x00\x00\x00\xda\x01\xcb\x02\x65\x14\x00\x00\xcb\x02\x29\x00\xe4\x00\x00\x00\x00\x00\xb0\x00\x00\x00\xc1\x01\x00\x00\x00\x00\xd2\x01\x00\x00\x00\x00\xc5\x01\x00\x00\x00\x00\xa0\x01\x1a\x00\x00\x00\x00\x00\xcb\x02\xcb\x02\x76\x01\x00\x00\xcb\x02\x00\x00\xcb\x02\xcb\x02\x00\x00\x00\x00\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x2d\x01\xbc\x01\xd3\x04\x19\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x01\x00\x00\x8b\x01\x53\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x13\xe0\x13\xc8\x13\xaf\x13\x97\x13\x7e\x13\x96\x0b\x95\x05\xa7\x0e\xd1\x00\xc8\x00\x8c\x00\x66\x13\xd5\x09\x00\x00\x00\x00\x2a\x00\x00\x00\x69\x04\x00\x00\x64\x05\x00\x00\x00\x00\x76\x0e\x00\x00\x4b\x01\x4d\x13\x9c\x00\x35\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x04\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x0e\x14\x0e\x00\x00\x00\x00\x38\x01\x50\x01\x00\x00\x00\x00\xaf\x01\x61\x06\x00\x00\xe3\x0d\x00\x00\x40\x01\x1a\x01\x00\x00\xb2\x0d\x00\x00\x65\x0b\x00\x00\x00\x00\x00\x00\x2a\x01\x22\x01\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x09\x00\x00\x2f\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x0f\xcd\x0f\x73\x10\x95\x10\xb7\x10\xd9\x10\xfb\x10\x83\x11\x61\x11\x3f\x11\x1d\x11\x4f\x12\x2d\x12\x0b\x12\xe9\x11\xc7\x11\xa5\x11\xa2\x12\x89\x12\x71\x12\x1c\x13\x04\x13\xeb\x12\xd3\x12\xba\x12\x00\x00\x00\x00\x9c\x0f\x00\x00\x00\x00\x00\x00\x13\x01\x81\x0d\x50\x0d\x00\x00\x06\x01\x1e\x0d\x4d\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\xff\x00\x00\x00\x00\xf1\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x09\x00\x00\x44\x01\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x6b\x0f\x00\x00\x00\x00\xbc\x0c\x40\x02\x00\x00\x34\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x08\x81\x08\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\xb6\x00\x5d\x0a\x00\x00\x00\x00\x34\x0b\x8b\x0c\x5a\x0c\x00\x00\x3a\x0f\x00\x00\x00\x00\x09\x0f\x00\x00\xd8\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x0c\x03\x0b\x00\x00\x92\x00\x00\x00\x00\x00\x7e\x01\x00\x00\x00\x00\xc1\x00\xf8\x0b\xe2\x00\x86\x00\x00\x00\x97\x00\x00\x00\x4c\x00\x00\x00\x78\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x51\x10\x47\x01\x00\x00\x33\x01\x00\x00\xc7\x0b\x00\x00\x00\x00\x3d\x08\x00\x00\x00\x00\x00\x00\xd2\x0a\xf9\x07\x5a\x00\x00\x00\x00\x00\x00\x00\xb5\x07\xa1\x0a\x00\x00\x1d\x06\x00\x00\xef\xff\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\xd8\xff\x00\x00\x00\x00\xd9\x05\x71\x07\x00\x00\x00\x00\x2d\x07\x00\x00\xe9\x06\xa5\x06\x00\x00\x00\x00\x00\x00\x00\x00"#--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xec\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xe8\xff\xd1\xff\xed\xff\xeb\xff\xea\xff\xcc\xff\xc2\xff\xc1\xff\xc0\xff\xbd\xff\xb3\xff\xad\xff\xa9\xff\xa8\xff\xa1\xff\x9c\xff\x9a\xff\x98\xff\x96\xff\x94\xff\x92\xff\x90\xff\x8c\xff\x7a\xff\x00\x00\x88\xff\x86\xff\x85\xff\x87\xff\x84\xff\x83\xff\x82\xff\x81\xff\x80\xff\x7f\xff\x7d\xff\x7e\xff\x7c\xff\x7b\xff\xd0\xff\x6c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\xff\x00\x00\xfa\xff\x00\x00\xfa\xff\x00\x00\x00\x00\xf3\xff\x00\x00\x3c\xff\x00\x00\x00\x00\xf5\xff\xfa\xff\x00\x00\xee\xff\x00\x00\xf4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\xf2\xff\xf1\xff\xf0\xff\xef\xff\x00\x00\xed\xff\xd5\xff\x00\x00\x32\xff\x31\xff\x00\x00\x37\xff\x34\xff\x3c\xff\x00\x00\x00\x00\x33\xff\xd2\xff\xd3\xff\xd4\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\xbb\xff\x6f\xff\xfa\xff\x71\xff\xba\xff\x00\x00\x00\x00\x4a\xff\x00\x00\x5b\xff\xfa\xff\xcc\xff\xcb\xff\x00\x00\x3d\xff\x89\xff\x00\x00\xbc\xff\x5f\xff\xfa\xff\xfa\xff\x5d\xff\xfa\xff\x00\x00\xf7\xff\xf6\xff\xed\xff\x75\xff\x00\x00\x79\xff\x00\x00\x00\x00\xdc\xff\xe1\xff\xe6\xff\xb5\xff\xb4\xff\xb6\xff\xb7\xff\xb8\xff\xb9\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\xff\xbe\xff\x00\x00\x8d\xff\x8e\xff\xc9\xff\x00\x00\x00\x00\x00\x00\xca\xff\x00\x00\x00\x00\x00\x00\x4b\xff\x00\x00\xce\xff\x00\x00\xc4\xff\xc6\xff\x00\x00\xc7\xff\x8f\xff\xb0\xff\xb1\xff\xb2\xff\xae\xff\xaf\xff\xab\xff\xaa\xff\xac\xff\xa3\xff\xa2\xff\xa6\xff\xa4\xff\xa7\xff\xa5\xff\x9f\xff\x9d\xff\xa0\xff\x9e\xff\x9b\xff\x99\xff\x97\xff\x95\xff\x93\xff\x00\x00\x8b\xff\x00\x00\xe4\xff\xdf\xff\xe0\xff\xe5\xff\x74\xff\x78\xff\xe9\xff\x5c\xff\x72\xff\x00\x00\x5e\xff\x00\x00\xc0\xff\x8a\xff\x00\x00\x00\x00\x00\x00\xcd\xff\x5a\xff\x00\x00\x00\x00\x77\xff\x49\xff\x46\xff\x48\xff\x00\x00\x00\x00\x73\xff\x6e\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd6\xff\xdb\xff\x00\x00\x00\x00\x3b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\xff\xd9\xff\x00\x00\x00\x00\x6d\xff\x42\xff\x00\x00\x45\xff\x47\xff\x76\xff\x00\x00\x00\x00\x00\x00\x71\xff\x89\xff\x00\x00\x00\x00\x70\xff\x00\x00\xdd\xff\xe2\xff\x00\x00\xc8\xff\x00\x00\xc5\xff\xcf\xff\xc3\xff\x91\xff\xde\xff\xe3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x89\xff\x67\xff\x69\xff\x66\xff\x58\xff\x00\x00\x00\x00\x64\xff\xfa\xff\x00\x00\x38\xff\x00\x00\x00\x00\x38\xff\x00\x00\x38\xff\x00\x00\x39\xff\x36\xff\x38\xff\x3a\xff\x00\x00\xd8\xff\xd7\xff\x59\xff\x00\x00\x00\x00\x00\x00\x51\xff\x00\x00\x57\xff\x00\x00\x00\x00\x6b\xff\x00\x00\x68\xff\x00\x00\x00\x00\x89\xff\x00\x00\xfa\xff\x65\xff\x61\xff\x00\x00\x00\x00\x89\xff\x6a\xff\x4d\xff\x00\x00\x00\x00\x52\xff\x50\xff\x00\x00\x56\xff\x00\x00\x44\xff\x3f\xff\x00\x00\x35\xff\x40\xff\x00\x00\x41\xff\x3e\xff\x00\x00\x00\x00\x55\xff\x53\xff\x4e\xff\x4c\xff\x00\x00\x60\xff\x00\x00\x63\xff\x00\x00\x4f\xff\x54\xff\x43\xff\x62\xff"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x08\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x08\x00\x02\x00\x0c\x00\x08\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x3b\x00\x01\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\x02\x00\x24\x00\x2d\x00\x26\x00\x27\x00\x28\x00\x3b\x00\x02\x00\x2b\x00\x04\x00\x21\x00\x25\x00\x2f\x00\x30\x00\x08\x00\x02\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x0c\x00\x02\x00\x08\x00\x23\x00\x3d\x00\x3e\x00\x3f\x00\x03\x00\x28\x00\x05\x00\x43\x00\x44\x00\x0c\x00\x25\x00\x47\x00\x46\x00\x49\x00\x45\x00\x4b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x25\x00\x25\x00\x0c\x00\x46\x00\x00\x00\x0f\x00\x10\x00\x11\x00\x25\x00\x02\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\x45\x00\x24\x00\x37\x00\x26\x00\x27\x00\x28\x00\x25\x00\x29\x00\x2b\x00\x46\x00\x4b\x00\x46\x00\x2f\x00\x30\x00\x08\x00\x21\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x4b\x00\x02\x00\x02\x00\x23\x00\x3d\x00\x3e\x00\x3f\x00\x00\x00\x28\x00\x08\x00\x43\x00\x44\x00\x29\x00\x2d\x00\x47\x00\x08\x00\x49\x00\x46\x00\x4b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x2c\x00\x2d\x00\x0c\x00\x08\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x25\x00\x25\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\x02\x00\x24\x00\x02\x00\x26\x00\x27\x00\x28\x00\x02\x00\x00\x00\x2b\x00\x31\x00\x21\x00\x08\x00\x2f\x00\x30\x00\x2c\x00\x2d\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x08\x00\x00\x00\x23\x00\x23\x00\x3d\x00\x3e\x00\x3f\x00\x28\x00\x28\x00\x08\x00\x43\x00\x44\x00\x2d\x00\x25\x00\x47\x00\x25\x00\x49\x00\x23\x00\x4b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x02\x00\x02\x00\x0c\x00\x39\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x2c\x00\x2d\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\x29\x00\x24\x00\x23\x00\x26\x00\x27\x00\x28\x00\x25\x00\x28\x00\x2b\x00\x08\x00\x25\x00\x25\x00\x2f\x00\x30\x00\x25\x00\x23\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x08\x00\x36\x00\x29\x00\x00\x00\x3d\x00\x3e\x00\x3f\x00\x00\x00\x1f\x00\x20\x00\x43\x00\x44\x00\x33\x00\x24\x00\x47\x00\x00\x00\x49\x00\x12\x00\x4b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x3a\x00\x3b\x00\x0c\x00\x1f\x00\x20\x00\x0f\x00\x10\x00\x11\x00\x24\x00\x00\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\x00\x00\x24\x00\x32\x00\x26\x00\x27\x00\x28\x00\x1f\x00\x20\x00\x2b\x00\x23\x00\x3a\x00\x24\x00\x2f\x00\x30\x00\x28\x00\x3f\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x2e\x00\x47\x00\x48\x00\x49\x00\x3d\x00\x3e\x00\x3f\x00\x3a\x00\x3b\x00\x0f\x00\x43\x00\x44\x00\x12\x00\x13\x00\x29\x00\x48\x00\x23\x00\x4a\x00\x4b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x3b\x00\x3c\x00\x0c\x00\x41\x00\x42\x00\x0f\x00\x10\x00\x11\x00\x01\x00\x02\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\x25\x00\x24\x00\x12\x00\x26\x00\x27\x00\x28\x00\x0a\x00\x0b\x00\x2b\x00\x0d\x00\x0e\x00\x12\x00\x2f\x00\x30\x00\x18\x00\x19\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x46\x00\x47\x00\x48\x00\x49\x00\x3d\x00\x3e\x00\x3f\x00\x3a\x00\x3b\x00\x3c\x00\x43\x00\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x22\x00\x4b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x01\x00\x02\x00\x0c\x00\x01\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x01\x00\x02\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\x25\x00\x24\x00\x23\x00\x26\x00\x27\x00\x28\x00\x16\x00\x17\x00\x2b\x00\x40\x00\x41\x00\x42\x00\x2f\x00\x30\x00\x01\x00\x23\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x1a\x00\x1b\x00\x1c\x00\x25\x00\x3d\x00\x3e\x00\x3f\x00\x18\x00\x19\x00\x01\x00\x43\x00\x44\x00\x01\x00\x16\x00\x17\x00\x18\x00\x19\x00\x04\x00\x4b\x00\x22\x00\x1d\x00\x1e\x00\x23\x00\x20\x00\x23\x00\x22\x00\x23\x00\x24\x00\x22\x00\x22\x00\x27\x00\x46\x00\x01\x00\x2a\x00\x2b\x00\x01\x00\x30\x00\x2e\x00\x2f\x00\x01\x00\x22\x00\x32\x00\x46\x00\x34\x00\x35\x00\x36\x00\x01\x00\x37\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x04\x00\x16\x00\x17\x00\x18\x00\x19\x00\x22\x00\x04\x00\x05\x00\x1d\x00\x1e\x00\x08\x00\x20\x00\x22\x00\x22\x00\x23\x00\x24\x00\x0e\x00\x22\x00\x27\x00\x46\x00\x24\x00\x2a\x00\x2b\x00\x01\x00\x24\x00\x2e\x00\x2f\x00\x02\x00\x46\x00\x32\x00\x04\x00\x34\x00\x35\x00\x36\x00\x01\x00\x06\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x07\x00\x16\x00\x17\x00\x18\x00\x19\x00\x08\x00\x46\x00\x09\x00\x1d\x00\x1e\x00\x04\x00\x20\x00\x04\x00\x22\x00\x23\x00\x24\x00\x04\x00\x01\x00\x27\x00\x44\x00\x02\x00\x2a\x00\x2b\x00\x0c\x00\x04\x00\x2e\x00\x2f\x00\x24\x00\x24\x00\x32\x00\x46\x00\x34\x00\x35\x00\x36\x00\x01\x00\x4c\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x46\x00\x16\x00\x17\x00\x18\x00\x19\x00\x24\x00\x24\x00\x22\x00\x1d\x00\x1e\x00\x24\x00\x20\x00\x24\x00\x22\x00\x23\x00\x24\x00\x46\x00\x24\x00\x27\x00\x46\x00\x02\x00\x2a\x00\x2b\x00\x4c\x00\x07\x00\x2e\x00\x2f\x00\x06\x00\x08\x00\x32\x00\x01\x00\x34\x00\x35\x00\x36\x00\x01\x00\x09\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x04\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x01\x00\xff\xff\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x01\x00\xff\xff\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x01\x00\xff\xff\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x01\x00\xff\xff\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x01\x00\xff\xff\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x01\x00\xff\xff\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x01\x00\xff\xff\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x2e\x00\xff\xff\x0c\x00\xff\xff\x32\x00\x0f\x00\x10\x00\x35\x00\xff\xff\x02\x00\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\x24\x00\xff\xff\x04\x00\x05\x00\x10\x00\x11\x00\x08\x00\xff\xff\x14\x00\x15\x00\x2e\x00\x0d\x00\x0e\x00\xff\xff\x32\x00\x44\x00\xff\xff\x35\x00\xff\xff\x02\x00\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x16\x00\x17\x00\x18\x00\x19\x00\x37\x00\x38\x00\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\x24\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x2e\x00\xff\xff\x0c\x00\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\x02\x00\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\x02\x00\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\x26\x00\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\x28\x00\xff\xff\xff\xff\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\xff\xff\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x3e\x00\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\xff\xff\x24\x00\x25\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\x00\x25\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\x00\x25\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\x00\x25\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\x00\x25\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\x43\x00\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\x43\x00\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\x24\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\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\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\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\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x44\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x44\x00\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\x17\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\x0f\x00\x10\x00\x11\x00\xff\xff\x44\x00\x14\x00\x15\x00\x16\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\x44\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\x44\x00\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\x39\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x16\x00\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\x39\x00\x3a\x00\xff\xff\x20\x00\x3d\x00\x22\x00\x3f\x00\x24\x00\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\x39\x00\x3a\x00\xff\xff\x20\x00\x3d\x00\x22\x00\x3f\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#--happyTable :: HappyAddr-happyTable = HappyA# "\x00\x00\x6e\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x04\x01\x97\x00\x0f\x00\x62\x00\x97\x00\x10\x00\x11\x00\x12\x00\x5f\x01\x06\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\x97\x00\x22\x00\x1b\x01\x5c\x00\x24\x00\x25\x00\x5f\x01\x97\x00\x26\x00\x70\x01\x21\x01\x59\x01\x27\x00\x28\x00\x7b\x00\x97\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xb3\x00\x38\x01\x04\x01\x78\x01\x2f\x00\x30\x00\x31\x00\x98\x00\x4c\x01\x99\x00\x5d\x00\x32\x00\xb3\x00\x54\x01\x65\x01\x05\x01\x3d\x01\x63\x00\x3e\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x55\x01\x07\x01\x0f\x00\x54\x00\x55\x01\x10\x00\x11\x00\x12\x00\x39\x01\x97\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\x63\x00\x22\x00\x1a\x01\x5c\x00\x24\x00\x25\x00\x09\x01\x78\x01\x26\x00\x54\x00\xb4\x00\x07\x01\x27\x00\x28\x00\x6e\x00\x24\x01\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xb4\x00\x38\x01\x97\x00\x62\x01\x2f\x00\x30\x00\x31\x00\x7f\x00\x4c\x01\x40\x01\x5d\x00\x32\x00\x63\x01\x4d\x01\x68\x01\x80\x00\x3d\x01\x54\x00\x3e\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x16\x01\x17\x01\x0f\x00\x6e\x00\xdf\x00\x10\x00\x11\x00\x12\x00\x3b\x01\x0d\x01\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\x97\x00\x22\x00\x97\x00\x5c\x00\x24\x00\x25\x00\x01\x01\x44\x01\x26\x00\x4d\x01\xe0\x00\x32\x01\x27\x00\x28\x00\x6f\x00\x70\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x6e\x00\x82\x00\x4b\x01\x6e\x01\x2f\x00\x30\x00\x31\x00\x4c\x01\x4c\x01\x83\x00\x5d\x00\x32\x00\x4d\x01\x0e\x01\x3c\x01\x15\x01\x3d\x01\x02\x01\x3e\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x97\x00\x22\x01\x0f\x00\x30\x01\x97\x00\x10\x00\x11\x00\x12\x00\x81\x00\x70\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\x0f\x01\x22\x00\x6f\x01\x5c\x00\x24\x00\x25\x00\x46\x01\x4c\x01\x26\x00\xbe\x00\x16\x01\x23\x01\x27\x00\x28\x00\xe6\x00\xb1\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xc3\x00\x47\x01\xf9\x00\xe6\x00\x2f\x00\x30\x00\x31\x00\xe7\x00\xba\x00\xbb\x00\x5d\x00\x32\x00\xfa\x00\xb8\x00\x41\x01\xe9\x00\x3d\x01\xf0\x00\x3e\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x6c\x01\x48\x01\x0f\x00\xb6\x00\xb7\x00\x10\x00\x11\x00\x12\x00\xb8\x00\xf1\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\xfa\x00\x22\x00\x43\x00\x5c\x00\x24\x00\x25\x00\xba\x00\xbb\x00\x26\x00\x5f\x01\x48\x00\xb8\x00\x27\x00\x28\x00\x4c\x01\x4d\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xfb\x00\x55\x00\x56\x00\x57\x00\x2f\x00\x30\x00\x31\x00\x5d\x01\x48\x01\xa8\x00\x5d\x00\x32\x00\xa9\x00\xaa\x00\x72\x00\x5e\x00\xb1\x00\x5f\x00\x60\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x5f\x01\x60\x01\x0f\x00\x11\x01\x12\x01\x10\x00\x11\x00\x12\x00\x2d\x01\xe9\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\x76\x01\x22\x00\xb4\x00\x5c\x00\x24\x00\x25\x00\x9e\x00\x9f\x00\x26\x00\xa0\x00\xa1\x00\xb8\x00\x27\x00\x28\x00\xab\x00\xac\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x54\x00\x55\x00\x56\x00\x57\x00\x2f\x00\x30\x00\x31\x00\x47\x01\x48\x01\x49\x01\x5d\x00\x32\x00\x5b\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x74\x00\x66\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x06\x00\xe9\x00\x0f\x00\x06\x00\x97\x00\x10\x00\x11\x00\x12\x00\x06\x00\xe9\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\x6c\x01\x22\x00\x6a\x01\x5c\x00\x24\x00\x25\x00\xb0\x00\xb1\x00\x26\x00\xf5\x00\xf6\x00\xf7\x00\x27\x00\x28\x00\x34\x00\x6b\x01\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xad\x00\xae\x00\xaf\x00\x74\x01\x2f\x00\x30\x00\x31\x00\xab\x00\xac\x00\x06\x00\x5d\x00\x32\x00\x5a\x01\x35\x00\x36\x00\x37\x00\x38\x00\x5c\x01\x64\x00\x74\x00\x39\x00\x3a\x00\x65\x01\x3b\x00\x68\x01\x3c\x00\x14\x01\x3d\x00\x3c\x01\x40\x01\x3e\x00\x54\x00\x06\x00\x3f\x00\x40\x00\x50\x01\x4f\x01\x41\x00\x42\x00\x53\x01\x32\x01\x43\x00\x54\x00\x44\x00\x45\x00\x46\x00\x34\x00\x2c\x01\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\x36\x01\x35\x00\x36\x00\x37\x00\x38\x00\x37\x01\x65\x00\x66\x00\x39\x00\x3a\x00\x67\x00\x3b\x00\x3a\x01\x3c\x00\xe5\x00\x3d\x00\x09\x01\x74\x00\x3e\x00\x54\x00\x11\x01\x3f\x00\x40\x00\x19\x01\x1b\x01\x41\x00\x42\x00\x97\x00\x54\x00\x43\x00\x20\x01\x44\x00\x45\x00\x46\x00\x34\x00\x9a\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\x9b\x00\x35\x00\x36\x00\x37\x00\x38\x00\x9c\x00\x54\x00\x9d\x00\x39\x00\x3a\x00\xbc\x00\x3b\x00\xd3\xff\x3c\x00\xf5\x00\x3d\x00\xd2\xff\x06\x00\x3e\x00\xeb\x00\x97\x00\x3f\x00\x40\x00\xfd\x00\x00\x01\x41\x00\x42\x00\x03\x01\x04\x01\x43\x00\x54\x00\x44\x00\x45\x00\x46\x00\x34\x00\xff\xff\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\x54\x00\x35\x00\x36\x00\x37\x00\x38\x00\x6b\x00\x6c\x00\x74\x00\x39\x00\x3a\x00\x76\x00\x3b\x00\x7b\x00\x3c\x00\x8b\x00\x3d\x00\x54\x00\x7d\x00\x3e\x00\x54\x00\x97\x00\x3f\x00\x40\x00\xff\xff\x9b\x00\x41\x00\x42\x00\x9a\x00\x9c\x00\x43\x00\x06\x00\x44\x00\x45\x00\x46\x00\x34\x00\x9d\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\xbc\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x43\x00\x00\x00\x44\x00\x45\x00\x46\x00\x34\x00\x00\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\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x43\x00\x00\x00\x44\x00\x62\x00\x46\x00\x30\x01\x00\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\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x43\x00\x00\x00\x44\x00\x45\x00\x46\x00\x34\x00\x00\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\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x43\x00\x00\x00\x44\x00\x45\x00\x46\x00\x34\x00\x00\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\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x43\x00\x00\x00\x44\x00\x62\x00\x46\x00\x34\x00\x00\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\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x43\x00\x00\x00\x44\x00\x45\x00\x46\x00\x34\x00\x00\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\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x43\x00\x00\x00\x44\x00\x62\x00\x46\x00\x06\x00\x00\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\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x5b\x00\x00\x00\x3d\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x41\x00\x00\x00\x0f\x00\x00\x00\x43\x00\x78\x00\x79\x00\x45\x00\x00\x00\xe2\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\x00\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x28\x01\x5b\x00\x00\x00\x3d\x00\x00\x00\x65\x00\x66\x00\xa2\x00\xa3\x00\x67\x00\x00\x00\xa4\x00\xa5\x00\x41\x00\x68\x00\x69\x00\x00\x00\x43\x00\x32\x00\x00\x00\x45\x00\x00\x00\x8f\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\x00\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x35\x00\x36\x00\x37\x00\x38\x00\xa6\x00\xa7\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x1f\x01\x5b\x00\x00\x00\x3d\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x58\x00\x59\x00\x0e\x00\x41\x00\x00\x00\x0f\x00\x00\x00\x43\x00\x00\x00\x00\x00\x45\x00\x00\x00\xe2\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\x00\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\xe3\x00\x5b\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x45\x00\x00\x00\x8f\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\x00\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x90\x00\x5b\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\x00\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x76\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x85\x00\x86\x00\x0b\x00\x0c\x00\x87\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x68\x00\x69\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\x22\x00\x00\x00\x88\x00\x24\x00\x25\x00\x00\x00\x89\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x88\x00\x24\x00\x25\x00\x00\x00\x76\x01\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x88\x00\x24\x00\x25\x00\x00\x00\x70\x01\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x88\x00\x24\x00\x25\x00\x00\x00\xf3\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\xe3\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x79\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x74\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\xe3\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x72\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x56\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x5a\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x33\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x34\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\xe3\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\xbc\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\xe3\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x7d\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\x22\x00\x00\x00\x00\x00\x2d\x01\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x2e\x01\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x30\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\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\x00\x00\xec\x00\x71\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\xec\x00\x57\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\xec\x00\x50\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\xec\x00\x2a\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\xeb\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\x00\x00\xec\x00\xed\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x8b\x00\x8c\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\x5c\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x42\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x43\x01\x32\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\x00\x00\x51\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\x28\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\x29\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x0a\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x1c\x01\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x0b\x01\x32\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\x1d\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x32\x00\xbf\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\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x24\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x25\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x26\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\x0e\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\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\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\xe0\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\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\x62\x01\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xdb\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xda\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\xce\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\x17\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\xca\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x32\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x6c\x00\x14\x00\x15\x00\x16\x00\xcb\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x15\x00\x16\x00\xcc\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x15\x00\xc5\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x15\x00\xc6\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x15\x00\xc7\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x15\x00\xc8\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x15\x00\xc9\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x6d\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x71\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x7e\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x90\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x91\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x92\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x93\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x94\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x59\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x32\x00\x6c\x00\x14\x00\x95\x00\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x5b\x00\x00\x00\x3d\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\x32\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x5b\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\xef\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x5b\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\x00\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x5b\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\x00\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x5b\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\x00\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x5b\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x4f\x00\x00\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x5b\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x3b\x00\x4b\x00\x5b\x00\x4d\x00\x3d\x00\x4f\x00\x00\x00\x51\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x3b\x00\x4b\x00\x5b\x00\x4d\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyReduceArr = Happy_Data_Array.array (4, 206) [- (4 , happyReduce_4),- (5 , happyReduce_5),- (6 , happyReduce_6),- (7 , happyReduce_7),- (8 , happyReduce_8),- (9 , happyReduce_9),- (10 , happyReduce_10),- (11 , happyReduce_11),- (12 , happyReduce_12),- (13 , happyReduce_13),- (14 , happyReduce_14),- (15 , happyReduce_15),- (16 , happyReduce_16),- (17 , happyReduce_17),- (18 , happyReduce_18),- (19 , happyReduce_19),- (20 , happyReduce_20),- (21 , happyReduce_21),- (22 , happyReduce_22),- (23 , happyReduce_23),- (24 , happyReduce_24),- (25 , happyReduce_25),- (26 , happyReduce_26),- (27 , happyReduce_27),- (28 , happyReduce_28),- (29 , happyReduce_29),- (30 , happyReduce_30),- (31 , happyReduce_31),- (32 , happyReduce_32),- (33 , happyReduce_33),- (34 , happyReduce_34),- (35 , happyReduce_35),- (36 , happyReduce_36),- (37 , happyReduce_37),- (38 , happyReduce_38),- (39 , happyReduce_39),- (40 , happyReduce_40),- (41 , happyReduce_41),- (42 , happyReduce_42),- (43 , happyReduce_43),- (44 , happyReduce_44),- (45 , happyReduce_45),- (46 , happyReduce_46),- (47 , happyReduce_47),- (48 , happyReduce_48),- (49 , happyReduce_49),- (50 , happyReduce_50),- (51 , happyReduce_51),- (52 , happyReduce_52),- (53 , happyReduce_53),- (54 , happyReduce_54),- (55 , happyReduce_55),- (56 , happyReduce_56),- (57 , happyReduce_57),- (58 , happyReduce_58),- (59 , happyReduce_59),- (60 , happyReduce_60),- (61 , happyReduce_61),- (62 , happyReduce_62),- (63 , happyReduce_63),- (64 , happyReduce_64),- (65 , happyReduce_65),- (66 , happyReduce_66),- (67 , happyReduce_67),- (68 , happyReduce_68),- (69 , happyReduce_69),- (70 , happyReduce_70),- (71 , happyReduce_71),- (72 , happyReduce_72),- (73 , happyReduce_73),- (74 , happyReduce_74),- (75 , happyReduce_75),- (76 , happyReduce_76),- (77 , happyReduce_77),- (78 , happyReduce_78),- (79 , happyReduce_79),- (80 , happyReduce_80),- (81 , happyReduce_81),- (82 , happyReduce_82),- (83 , happyReduce_83),- (84 , happyReduce_84),- (85 , happyReduce_85),- (86 , happyReduce_86),- (87 , happyReduce_87),- (88 , happyReduce_88),- (89 , happyReduce_89),- (90 , happyReduce_90),- (91 , happyReduce_91),- (92 , happyReduce_92),- (93 , happyReduce_93),- (94 , happyReduce_94),- (95 , happyReduce_95),- (96 , happyReduce_96),- (97 , happyReduce_97),- (98 , happyReduce_98),- (99 , happyReduce_99),- (100 , happyReduce_100),- (101 , happyReduce_101),- (102 , happyReduce_102),- (103 , happyReduce_103),- (104 , happyReduce_104),- (105 , happyReduce_105),- (106 , happyReduce_106),- (107 , happyReduce_107),- (108 , happyReduce_108),- (109 , happyReduce_109),- (110 , happyReduce_110),- (111 , happyReduce_111),- (112 , happyReduce_112),- (113 , happyReduce_113),- (114 , happyReduce_114),- (115 , happyReduce_115),- (116 , happyReduce_116),- (117 , happyReduce_117),- (118 , happyReduce_118),- (119 , happyReduce_119),- (120 , happyReduce_120),- (121 , happyReduce_121),- (122 , happyReduce_122),- (123 , happyReduce_123),- (124 , happyReduce_124),- (125 , happyReduce_125),- (126 , happyReduce_126),- (127 , happyReduce_127),- (128 , happyReduce_128),- (129 , happyReduce_129),- (130 , happyReduce_130),- (131 , happyReduce_131),- (132 , happyReduce_132),- (133 , happyReduce_133),- (134 , happyReduce_134),- (135 , happyReduce_135),- (136 , happyReduce_136),- (137 , happyReduce_137),- (138 , happyReduce_138),- (139 , happyReduce_139),- (140 , happyReduce_140),- (141 , happyReduce_141),- (142 , happyReduce_142),- (143 , happyReduce_143),- (144 , happyReduce_144),- (145 , happyReduce_145),- (146 , happyReduce_146),- (147 , happyReduce_147),- (148 , happyReduce_148),- (149 , happyReduce_149),- (150 , happyReduce_150),- (151 , happyReduce_151),- (152 , happyReduce_152),- (153 , happyReduce_153),- (154 , happyReduce_154),- (155 , happyReduce_155),- (156 , happyReduce_156),- (157 , happyReduce_157),- (158 , happyReduce_158),- (159 , happyReduce_159),- (160 , happyReduce_160),- (161 , happyReduce_161),- (162 , happyReduce_162),- (163 , happyReduce_163),- (164 , happyReduce_164),- (165 , happyReduce_165),- (166 , happyReduce_166),- (167 , happyReduce_167),- (168 , happyReduce_168),- (169 , happyReduce_169),- (170 , happyReduce_170),- (171 , happyReduce_171),- (172 , happyReduce_172),- (173 , happyReduce_173),- (174 , happyReduce_174),- (175 , happyReduce_175),- (176 , happyReduce_176),- (177 , happyReduce_177),- (178 , happyReduce_178),- (179 , happyReduce_179),- (180 , happyReduce_180),- (181 , happyReduce_181),- (182 , happyReduce_182),- (183 , happyReduce_183),- (184 , happyReduce_184),- (185 , happyReduce_185),- (186 , happyReduce_186),- (187 , happyReduce_187),- (188 , happyReduce_188),- (189 , happyReduce_189),- (190 , happyReduce_190),- (191 , happyReduce_191),- (192 , happyReduce_192),- (193 , happyReduce_193),- (194 , happyReduce_194),- (195 , happyReduce_195),- (196 , happyReduce_196),- (197 , happyReduce_197),- (198 , happyReduce_198),- (199 , happyReduce_199),- (200 , happyReduce_200),- (201 , happyReduce_201),- (202 , happyReduce_202),- (203 , happyReduce_203),- (204 , happyReduce_204),- (205 , happyReduce_205),- (206 , happyReduce_206)- ]--happy_n_terms = 77 :: Int-happy_n_nonterms = 76 :: Int--happyReduce_4 = happySpecReduce_1 0# happyReduction_4-happyReduction_4 happy_x_1- = happyIn7- (AST.JSLiteral ";"- )--happyReduce_5 = happySpecReduce_0 0# happyReduction_5-happyReduction_5 = happyIn7- (AST.JSLiteral ""- )--happyReduce_6 = happySpecReduce_1 1# happyReduction_6-happyReduction_6 happy_x_1- = case happyOut9 happy_x_1 of { happy_var_1 -> - happyIn8- (happy_var_1- )}--happyReduce_7 = happySpecReduce_1 1# happyReduction_7-happyReduction_7 happy_x_1- = case happyOut10 happy_x_1 of { happy_var_1 -> - happyIn8- (happy_var_1- )}--happyReduce_8 = happySpecReduce_1 1# happyReduction_8-happyReduction_8 happy_x_1- = case happyOut11 happy_x_1 of { happy_var_1 -> - happyIn8- (happy_var_1- )}--happyReduce_9 = happySpecReduce_1 1# happyReduction_9-happyReduction_9 happy_x_1- = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn8- (happy_var_1- )}--happyReduce_10 = happySpecReduce_1 2# happyReduction_10-happyReduction_10 happy_x_1- = happyIn9- (AST.JSLiteral "null"- )--happyReduce_11 = happySpecReduce_1 3# happyReduction_11-happyReduction_11 happy_x_1- = happyIn10- (AST.JSLiteral "true"- )--happyReduce_12 = happySpecReduce_1 3# happyReduction_12-happyReduction_12 happy_x_1- = happyIn10- (AST.JSLiteral "false"- )--happyReduce_13 = happySpecReduce_1 4# happyReduction_13-happyReduction_13 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn11- (AST.JSDecimal (token_literal happy_var_1)- )}--happyReduce_14 = happySpecReduce_1 4# happyReduction_14-happyReduction_14 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn11- (AST.JSHexInteger (token_literal happy_var_1)- )}--happyReduce_15 = happySpecReduce_1 5# happyReduction_15-happyReduction_15 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn12- (AST.JSStringLiteral (token_delimiter happy_var_1) (token_literal happy_var_1)- )}--happyReduce_16 = happySpecReduce_1 6# happyReduction_16-happyReduction_16 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn13- (AST.JSRegEx (token_literal happy_var_1)- )}--happyReduce_17 = happySpecReduce_1 7# happyReduction_17-happyReduction_17 happy_x_1- = happyIn14- (AST.JSLiteral "this"- )--happyReduce_18 = happySpecReduce_1 7# happyReduction_18-happyReduction_18 happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn14- (happy_var_1 {- PrimaryExpression1 -}- )}--happyReduce_19 = happySpecReduce_1 7# happyReduction_19-happyReduction_19 happy_x_1- = case happyOut8 happy_x_1 of { happy_var_1 -> - happyIn14- (happy_var_1 {- PrimaryExpression2 -}- )}--happyReduce_20 = happySpecReduce_1 7# happyReduction_20-happyReduction_20 happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn14- (happy_var_1 {- PrimaryExpression3 -}- )}--happyReduce_21 = happySpecReduce_1 7# happyReduction_21-happyReduction_21 happy_x_1- = case happyOut19 happy_x_1 of { happy_var_1 -> - happyIn14- (happy_var_1 {- PrimaryExpression4 -}- )}--happyReduce_22 = happySpecReduce_3 7# happyReduction_22-happyReduction_22 happy_x_3- happy_x_2- happy_x_1- = case happyOut43 happy_x_2 of { happy_var_2 -> - happyIn14- (AST.JSExpressionParen happy_var_2- )}--happyReduce_23 = happySpecReduce_1 7# happyReduction_23-happyReduction_23 happy_x_1- = case happyOut13 happy_x_1 of { happy_var_1 -> - happyIn14- (happy_var_1 {- PrimaryExpression5 -}- )}--happyReduce_24 = happySpecReduce_1 8# happyReduction_24-happyReduction_24 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn15- (AST.JSIdentifier (token_literal happy_var_1)- )}--happyReduce_25 = happySpecReduce_2 9# happyReduction_25-happyReduction_25 happy_x_2- happy_x_1- = happyIn16- (AST.JSArrayLiteral []- )--happyReduce_26 = happySpecReduce_3 9# happyReduction_26-happyReduction_26 happy_x_3- happy_x_2- happy_x_1- = case happyOut17 happy_x_2 of { happy_var_2 -> - happyIn16- (AST.JSArrayLiteral happy_var_2- )}--happyReduce_27 = happySpecReduce_3 9# happyReduction_27-happyReduction_27 happy_x_3- happy_x_2- happy_x_1- = case happyOut18 happy_x_2 of { happy_var_2 -> - happyIn16- (AST.JSArrayLiteral happy_var_2- )}--happyReduce_28 = happyReduce 5# 9# happyReduction_28-happyReduction_28 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut18 happy_x_2 of { happy_var_2 -> - case happyOut17 happy_x_4 of { happy_var_4 -> - happyIn16- (AST.JSArrayLiteral (happy_var_2++happy_var_4)- ) `HappyStk` happyRest}}--happyReduce_29 = happyReduce 4# 9# happyReduction_29-happyReduction_29 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut18 happy_x_2 of { happy_var_2 -> - happyIn16- (AST.JSArrayLiteral (happy_var_2++[AST.JSLiteral ","])- ) `HappyStk` happyRest}--happyReduce_30 = happySpecReduce_1 10# happyReduction_30-happyReduction_30 happy_x_1- = happyIn17- ([(AST.JSElision [])]- )--happyReduce_31 = happySpecReduce_2 10# happyReduction_31-happyReduction_31 happy_x_2- happy_x_1- = case happyOut17 happy_x_1 of { happy_var_1 -> - happyIn17- (happy_var_1 ++ [(AST.JSElision [])]- )}--happyReduce_32 = happySpecReduce_2 11# happyReduction_32-happyReduction_32 happy_x_2- happy_x_1- = case happyOut17 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_2 of { happy_var_2 -> - happyIn18- ((happy_var_1++happy_var_2) {- ElementList -}- )}}--happyReduce_33 = happyReduce 4# 11# happyReduction_33-happyReduction_33 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut18 happy_x_1 of { happy_var_1 -> - case happyOut17 happy_x_3 of { happy_var_3 -> - case happyOut41 happy_x_4 of { happy_var_4 -> - happyIn18- ((happy_var_1++[(AST.JSElision [])]++happy_var_3++happy_var_4) {- ElementList -}- ) `HappyStk` happyRest}}}--happyReduce_34 = happySpecReduce_3 11# happyReduction_34-happyReduction_34 happy_x_3- happy_x_2- happy_x_1- = case happyOut18 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_3 of { happy_var_3 -> - happyIn18- ((happy_var_1++[(AST.JSElision [])]++happy_var_3) {- ElementList -}- )}}--happyReduce_35 = happySpecReduce_1 11# happyReduction_35-happyReduction_35 happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn18- (happy_var_1 {- ElementList -}- )}--happyReduce_36 = happySpecReduce_3 12# happyReduction_36-happyReduction_36 happy_x_3- happy_x_2- happy_x_1- = case happyOut20 happy_x_2 of { happy_var_2 -> - happyIn19- (AST.JSObjectLiteral happy_var_2- )}--happyReduce_37 = happySpecReduce_3 13# happyReduction_37-happyReduction_37 happy_x_3- happy_x_2- happy_x_1- = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_3 of { happy_var_3 -> - happyIn20- ([(AST.JSPropertyNameandValue happy_var_1 happy_var_3)]- )}}--happyReduce_38 = happySpecReduce_3 13# happyReduction_38-happyReduction_38 happy_x_3- happy_x_2- happy_x_1- = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut74 happy_x_3 of { happy_var_3 -> - happyIn20- ([(AST.JSPropertyNameandValue happy_var_1 [happy_var_3])]- )}}--happyReduce_39 = happyReduce 5# 13# happyReduction_39-happyReduction_39 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut20 happy_x_1 of { happy_var_1 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - case happyOut41 happy_x_5 of { happy_var_5 -> - happyIn20- ((happy_var_1 ++ [(AST.JSPropertyNameandValue happy_var_3 happy_var_5)])- ) `HappyStk` happyRest}}}--happyReduce_40 = happyReduce 5# 13# happyReduction_40-happyReduction_40 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut20 happy_x_1 of { happy_var_1 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - case happyOut74 happy_x_5 of { happy_var_5 -> - happyIn20- ((happy_var_1 ++ [(AST.JSPropertyNameandValue happy_var_3 [happy_var_5])])- ) `HappyStk` happyRest}}}--happyReduce_41 = happySpecReduce_2 13# happyReduction_41-happyReduction_41 happy_x_2- happy_x_1- = case happyOut20 happy_x_1 of { happy_var_1 -> - happyIn20- ((happy_var_1 ++ [(AST.JSLiteral ",")])- )}--happyReduce_42 = happySpecReduce_0 13# happyReduction_42-happyReduction_42 = happyIn20- ([]- )--happyReduce_43 = happySpecReduce_1 14# happyReduction_43-happyReduction_43 happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn21- (happy_var_1 {- PropertyName1 -}- )}--happyReduce_44 = happySpecReduce_1 14# happyReduction_44-happyReduction_44 happy_x_1- = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn21- (happy_var_1 {- PropertyName2 -}- )}--happyReduce_45 = happySpecReduce_1 14# happyReduction_45-happyReduction_45 happy_x_1- = case happyOut11 happy_x_1 of { happy_var_1 -> - happyIn21- (happy_var_1 {- PropertyName3 -}- )}--happyReduce_46 = happySpecReduce_1 15# happyReduction_46-happyReduction_46 happy_x_1- = case happyOut14 happy_x_1 of { happy_var_1 -> - happyIn22- ([happy_var_1] {- MemberExpression -}- )}--happyReduce_47 = happySpecReduce_1 15# happyReduction_47-happyReduction_47 happy_x_1- = case happyOut75 happy_x_1 of { happy_var_1 -> - happyIn22- ([happy_var_1] {- MemberExpression -}- )}--happyReduce_48 = happyReduce 4# 15# happyReduction_48-happyReduction_48 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut22 happy_x_1 of { happy_var_1 -> - case happyOut43 happy_x_3 of { happy_var_3 -> - happyIn22- ([AST.JSMemberSquare happy_var_1 happy_var_3]- ) `HappyStk` happyRest}}--happyReduce_49 = happySpecReduce_3 15# happyReduction_49-happyReduction_49 happy_x_3- happy_x_2- happy_x_1- = case happyOut22 happy_x_1 of { happy_var_1 -> - case happyOut15 happy_x_3 of { happy_var_3 -> - happyIn22- ([AST.JSMemberDot happy_var_1 happy_var_3]- )}}--happyReduce_50 = happySpecReduce_3 15# happyReduction_50-happyReduction_50 happy_x_3- happy_x_2- happy_x_1- = case happyOut22 happy_x_2 of { happy_var_2 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn22- ((((AST.JSLiteral "new "):happy_var_2)++[happy_var_3])- )}}--happyReduce_51 = happySpecReduce_1 16# happyReduction_51-happyReduction_51 happy_x_1- = case happyOut22 happy_x_1 of { happy_var_1 -> - happyIn23- (happy_var_1 {- NewExpression -}- )}--happyReduce_52 = happySpecReduce_2 16# happyReduction_52-happyReduction_52 happy_x_2- happy_x_1- = case happyOut23 happy_x_2 of { happy_var_2 -> - happyIn23- ((AST.JSLiteral "new "):happy_var_2- )}--happyReduce_53 = happySpecReduce_2 17# happyReduction_53-happyReduction_53 happy_x_2- happy_x_1- = case happyOut22 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_2 of { happy_var_2 -> - happyIn24- (happy_var_1++[happy_var_2] {- CallExpression -}- )}}--happyReduce_54 = happySpecReduce_2 17# happyReduction_54-happyReduction_54 happy_x_2- happy_x_1- = case happyOut24 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_2 of { happy_var_2 -> - happyIn24- ((happy_var_1++[(AST.JSCallExpression "()" [happy_var_2])])- )}}--happyReduce_55 = happyReduce 4# 17# happyReduction_55-happyReduction_55 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut24 happy_x_1 of { happy_var_1 -> - case happyOut43 happy_x_3 of { happy_var_3 -> - happyIn24- ((happy_var_1++[(AST.JSCallExpression "[]" [happy_var_3])])- ) `HappyStk` happyRest}}--happyReduce_56 = happySpecReduce_3 17# happyReduction_56-happyReduction_56 happy_x_3- happy_x_2- happy_x_1- = case happyOut24 happy_x_1 of { happy_var_1 -> - case happyOut15 happy_x_3 of { happy_var_3 -> - happyIn24- ((happy_var_1++[(AST.JSCallExpression "." [happy_var_3])])- )}}--happyReduce_57 = happySpecReduce_2 18# happyReduction_57-happyReduction_57 happy_x_2- happy_x_1- = happyIn25- ((AST.JSArguments [])- )--happyReduce_58 = happySpecReduce_3 18# happyReduction_58-happyReduction_58 happy_x_3- happy_x_2- happy_x_1- = case happyOut26 happy_x_2 of { happy_var_2 -> - happyIn25- ((AST.JSArguments happy_var_2)- )}--happyReduce_59 = happySpecReduce_1 19# happyReduction_59-happyReduction_59 happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn26- ([happy_var_1] {- ArgumentList -}- )}--happyReduce_60 = happySpecReduce_3 19# happyReduction_60-happyReduction_60 happy_x_3- happy_x_2- happy_x_1- = case happyOut26 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_3 of { happy_var_3 -> - happyIn26- (happy_var_1++[happy_var_3] {- ArgumentList2 -}- )}}--happyReduce_61 = happySpecReduce_1 20# happyReduction_61-happyReduction_61 happy_x_1- = case happyOut23 happy_x_1 of { happy_var_1 -> - happyIn27- (happy_var_1 {- LeftHandSideExpression1 -}- )}--happyReduce_62 = happySpecReduce_1 20# happyReduction_62-happyReduction_62 happy_x_1- = case happyOut24 happy_x_1 of { happy_var_1 -> - happyIn27- (happy_var_1 {- LeftHandSideExpression12 -}- )}--happyReduce_63 = happySpecReduce_1 21# happyReduction_63-happyReduction_63 happy_x_1- = case happyOut27 happy_x_1 of { happy_var_1 -> - happyIn28- (happy_var_1 {- PostfixExpression -}- )}--happyReduce_64 = happySpecReduce_2 21# happyReduction_64-happyReduction_64 happy_x_2- happy_x_1- = case happyOut28 happy_x_1 of { happy_var_1 -> - happyIn28- ([(AST.JSExpressionPostfix "++" happy_var_1)]- )}--happyReduce_65 = happySpecReduce_2 21# happyReduction_65-happyReduction_65 happy_x_2- happy_x_1- = case happyOut28 happy_x_1 of { happy_var_1 -> - happyIn28- ([(AST.JSExpressionPostfix "--" happy_var_1)]- )}--happyReduce_66 = happySpecReduce_1 22# happyReduction_66-happyReduction_66 happy_x_1- = case happyOut28 happy_x_1 of { happy_var_1 -> - happyIn29- (happy_var_1 {- UnaryExpression -}- )}--happyReduce_67 = happySpecReduce_2 22# happyReduction_67-happyReduction_67 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn29- (((AST.JSUnary "delete "):happy_var_2)- )}--happyReduce_68 = happySpecReduce_2 22# happyReduction_68-happyReduction_68 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn29- (((AST.JSUnary "void "):happy_var_2)- )}--happyReduce_69 = happySpecReduce_2 22# happyReduction_69-happyReduction_69 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn29- (((AST.JSUnary "typeof "):happy_var_2)- )}--happyReduce_70 = happySpecReduce_2 22# happyReduction_70-happyReduction_70 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn29- (((AST.JSUnary "++"):happy_var_2)- )}--happyReduce_71 = happySpecReduce_2 22# happyReduction_71-happyReduction_71 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn29- (((AST.JSUnary "--"):happy_var_2)- )}--happyReduce_72 = happySpecReduce_2 22# happyReduction_72-happyReduction_72 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn29- (((AST.JSUnary "+"):happy_var_2)- )}--happyReduce_73 = happySpecReduce_2 22# happyReduction_73-happyReduction_73 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn29- (((AST.JSUnary "-"):happy_var_2)- )}--happyReduce_74 = happySpecReduce_2 22# happyReduction_74-happyReduction_74 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn29- (((AST.JSUnary "~"):happy_var_2)- )}--happyReduce_75 = happySpecReduce_2 22# happyReduction_75-happyReduction_75 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn29- (((AST.JSUnary "!"):happy_var_2)- )}--happyReduce_76 = happySpecReduce_1 23# happyReduction_76-happyReduction_76 happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 -> - happyIn30- (happy_var_1 {- MultiplicativeExpression -}- )}--happyReduce_77 = happySpecReduce_3 23# happyReduction_77-happyReduction_77 happy_x_3- happy_x_2- happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 -> - case happyOut30 happy_x_3 of { happy_var_3 -> - happyIn30- ([(AST.JSExpressionBinary "*" happy_var_1 happy_var_3)]- )}}--happyReduce_78 = happySpecReduce_3 23# happyReduction_78-happyReduction_78 happy_x_3- happy_x_2- happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 -> - case happyOut30 happy_x_3 of { happy_var_3 -> - happyIn30- ([(AST.JSExpressionBinary "/" happy_var_1 happy_var_3)]- )}}--happyReduce_79 = happySpecReduce_3 23# happyReduction_79-happyReduction_79 happy_x_3- happy_x_2- happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 -> - case happyOut30 happy_x_3 of { happy_var_3 -> - happyIn30- ([(AST.JSExpressionBinary "%" happy_var_1 happy_var_3)]- )}}--happyReduce_80 = happySpecReduce_3 24# happyReduction_80-happyReduction_80 happy_x_3- happy_x_2- happy_x_1- = case happyOut31 happy_x_1 of { happy_var_1 -> - case happyOut30 happy_x_3 of { happy_var_3 -> - happyIn31- ([(AST.JSExpressionBinary "+" happy_var_1 happy_var_3)]- )}}--happyReduce_81 = happySpecReduce_3 24# happyReduction_81-happyReduction_81 happy_x_3- happy_x_2- happy_x_1- = case happyOut31 happy_x_1 of { happy_var_1 -> - case happyOut30 happy_x_3 of { happy_var_3 -> - happyIn31- ([(AST.JSExpressionBinary "-" happy_var_1 happy_var_3)]- )}}--happyReduce_82 = happySpecReduce_1 24# happyReduction_82-happyReduction_82 happy_x_1- = case happyOut30 happy_x_1 of { happy_var_1 -> - happyIn31- (happy_var_1 {- (goRegExp happy_var_1)-} {- AdditiveExpression -}- )}--happyReduce_83 = happySpecReduce_3 25# happyReduction_83-happyReduction_83 happy_x_3- happy_x_2- happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 -> - case happyOut31 happy_x_3 of { happy_var_3 -> - happyIn32- ([(AST.JSExpressionBinary "<<" happy_var_1 happy_var_3)]- )}}--happyReduce_84 = happySpecReduce_3 25# happyReduction_84-happyReduction_84 happy_x_3- happy_x_2- happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 -> - case happyOut31 happy_x_3 of { happy_var_3 -> - happyIn32- ([(AST.JSExpressionBinary ">>" happy_var_1 happy_var_3)]- )}}--happyReduce_85 = happySpecReduce_3 25# happyReduction_85-happyReduction_85 happy_x_3- happy_x_2- happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 -> - case happyOut31 happy_x_3 of { happy_var_3 -> - happyIn32- ([(AST.JSExpressionBinary ">>>" happy_var_1 happy_var_3)]- )}}--happyReduce_86 = happySpecReduce_1 25# happyReduction_86-happyReduction_86 happy_x_1- = case happyOut31 happy_x_1 of { happy_var_1 -> - happyIn32- (happy_var_1 {- ShiftExpression -}- )}--happyReduce_87 = happySpecReduce_1 26# happyReduction_87-happyReduction_87 happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn33- (happy_var_1 {- RelationalExpression -}- )}--happyReduce_88 = happySpecReduce_3 26# happyReduction_88-happyReduction_88 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_3 of { happy_var_3 -> - happyIn33- ([(AST.JSExpressionBinary "<" happy_var_1 happy_var_3)]- )}}--happyReduce_89 = happySpecReduce_3 26# happyReduction_89-happyReduction_89 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_3 of { happy_var_3 -> - happyIn33- ([(AST.JSExpressionBinary ">" happy_var_1 happy_var_3)]- )}}--happyReduce_90 = happySpecReduce_3 26# happyReduction_90-happyReduction_90 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_3 of { happy_var_3 -> - happyIn33- ([(AST.JSExpressionBinary "<=" happy_var_1 happy_var_3)]- )}}--happyReduce_91 = happySpecReduce_3 26# happyReduction_91-happyReduction_91 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_3 of { happy_var_3 -> - happyIn33- ([(AST.JSExpressionBinary ">=" happy_var_1 happy_var_3)]- )}}--happyReduce_92 = happySpecReduce_3 26# happyReduction_92-happyReduction_92 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_3 of { happy_var_3 -> - happyIn33- ([(AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_3)]- )}}--happyReduce_93 = happySpecReduce_3 26# happyReduction_93-happyReduction_93 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_3 of { happy_var_3 -> - happyIn33- ([(AST.JSExpressionBinary " in " happy_var_1 happy_var_3)]- )}}--happyReduce_94 = happySpecReduce_1 27# happyReduction_94-happyReduction_94 happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - happyIn34- (happy_var_1 {- EqualityExpression -}- )}--happyReduce_95 = happySpecReduce_3 27# happyReduction_95-happyReduction_95 happy_x_3- happy_x_2- happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - happyIn34- ([(AST.JSExpressionBinary "==" happy_var_1 happy_var_3)]- )}}--happyReduce_96 = happySpecReduce_3 27# happyReduction_96-happyReduction_96 happy_x_3- happy_x_2- happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - happyIn34- ([(AST.JSExpressionBinary "!=" happy_var_1 happy_var_3)]- )}}--happyReduce_97 = happySpecReduce_3 27# happyReduction_97-happyReduction_97 happy_x_3- happy_x_2- happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - happyIn34- ([(AST.JSExpressionBinary "===" happy_var_1 happy_var_3)]- )}}--happyReduce_98 = happySpecReduce_3 27# happyReduction_98-happyReduction_98 happy_x_3- happy_x_2- happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - happyIn34- ([(AST.JSExpressionBinary "!==" happy_var_1 happy_var_3)]- )}}--happyReduce_99 = happySpecReduce_1 28# happyReduction_99-happyReduction_99 happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - happyIn35- (happy_var_1 {- BitwiseAndExpression -}- )}--happyReduce_100 = happySpecReduce_3 28# happyReduction_100-happyReduction_100 happy_x_3- happy_x_2- happy_x_1- = case happyOut35 happy_x_1 of { happy_var_1 -> - case happyOut34 happy_x_3 of { happy_var_3 -> - happyIn35- ([(AST.JSExpressionBinary "&" happy_var_1 happy_var_3)]- )}}--happyReduce_101 = happySpecReduce_1 29# happyReduction_101-happyReduction_101 happy_x_1- = case happyOut35 happy_x_1 of { happy_var_1 -> - happyIn36- (happy_var_1 {- BitwiseXOrExpression -}- )}--happyReduce_102 = happySpecReduce_3 29# happyReduction_102-happyReduction_102 happy_x_3- happy_x_2- happy_x_1- = case happyOut36 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - happyIn36- ([(AST.JSExpressionBinary "^" happy_var_1 happy_var_3)]- )}}--happyReduce_103 = happySpecReduce_1 30# happyReduction_103-happyReduction_103 happy_x_1- = case happyOut36 happy_x_1 of { happy_var_1 -> - happyIn37- (happy_var_1 {- BitwiseOrExpression -}- )}--happyReduce_104 = happySpecReduce_3 30# happyReduction_104-happyReduction_104 happy_x_3- happy_x_2- happy_x_1- = case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn37- ([(AST.JSExpressionBinary "|" happy_var_1 happy_var_3)]- )}}--happyReduce_105 = happySpecReduce_1 31# happyReduction_105-happyReduction_105 happy_x_1- = case happyOut37 happy_x_1 of { happy_var_1 -> - happyIn38- (happy_var_1 {- LogicalAndExpression -}- )}--happyReduce_106 = happySpecReduce_3 31# happyReduction_106-happyReduction_106 happy_x_3- happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut37 happy_x_3 of { happy_var_3 -> - happyIn38- ([(AST.JSExpressionBinary "&&" happy_var_1 happy_var_3)]- )}}--happyReduce_107 = happySpecReduce_1 32# happyReduction_107-happyReduction_107 happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - happyIn39- (happy_var_1 {- LogicalOrExpression -}- )}--happyReduce_108 = happySpecReduce_3 32# happyReduction_108-happyReduction_108 happy_x_3- happy_x_2- happy_x_1- = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut38 happy_x_3 of { happy_var_3 -> - happyIn39- ([(AST.JSExpressionBinary "||" happy_var_1 happy_var_3)]- )}}--happyReduce_109 = happySpecReduce_1 33# happyReduction_109-happyReduction_109 happy_x_1- = case happyOut39 happy_x_1 of { happy_var_1 -> - happyIn40- (happy_var_1 {- ConditionalExpression -}- )}--happyReduce_110 = happyReduce 5# 33# happyReduction_110-happyReduction_110 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_3 of { happy_var_3 -> - case happyOut41 happy_x_5 of { happy_var_5 -> - happyIn40- ([AST.JSExpressionTernary happy_var_1 happy_var_3 happy_var_5]- ) `HappyStk` happyRest}}}--happyReduce_111 = happySpecReduce_1 34# happyReduction_111-happyReduction_111 happy_x_1- = case happyOut40 happy_x_1 of { happy_var_1 -> - happyIn41- (happy_var_1 {- AssignmentExpression -}- )}--happyReduce_112 = happySpecReduce_3 34# happyReduction_112-happyReduction_112 happy_x_3- happy_x_2- happy_x_1- = case happyOut27 happy_x_1 of { happy_var_1 -> - case happyOut42 happy_x_2 of { happy_var_2 -> - case happyOut41 happy_x_3 of { happy_var_3 -> - happyIn41- ((happy_var_1++[happy_var_2]++happy_var_3)- )}}}--happyReduce_113 = happySpecReduce_1 35# happyReduction_113-happyReduction_113 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn42- (AST.JSOperator (token_literal happy_var_1)- )}--happyReduce_114 = happySpecReduce_1 35# happyReduction_114-happyReduction_114 happy_x_1- = happyIn42- (AST.JSOperator "="- )--happyReduce_115 = happySpecReduce_1 36# happyReduction_115-happyReduction_115 happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn43- (AST.JSExpression happy_var_1 {- Expression -}- )}--happyReduce_116 = happySpecReduce_3 36# happyReduction_116-happyReduction_116 happy_x_3- happy_x_2- happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_3 of { happy_var_3 -> - happyIn43- (flattenExpression happy_var_1 happy_var_3- )}}--happyReduce_117 = happySpecReduce_1 37# happyReduction_117-happyReduction_117 happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 -> - happyIn44- ([happy_var_1] {- ExpressionOpt -}- )}--happyReduce_118 = happySpecReduce_0 37# happyReduction_118-happyReduction_118 = happyIn44- ([] {- ExpressionOpt -}- )--happyReduce_119 = happySpecReduce_1 38# happyReduction_119-happyReduction_119 happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - happyIn45- (happy_var_1 {- Statement1 -}- )}--happyReduce_120 = happySpecReduce_1 38# happyReduction_120-happyReduction_120 happy_x_1- = case happyOut54 happy_x_1 of { happy_var_1 -> - happyIn45- (happy_var_1 {- Statement3 -}- )}--happyReduce_121 = happySpecReduce_1 39# happyReduction_121-happyReduction_121 happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty1 -}- )}--happyReduce_122 = happySpecReduce_1 39# happyReduction_122-happyReduction_122 happy_x_1- = case happyOut50 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty2 -}- )}--happyReduce_123 = happySpecReduce_1 39# happyReduction_123-happyReduction_123 happy_x_1- = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty5 -}- )}--happyReduce_124 = happySpecReduce_1 39# happyReduction_124-happyReduction_124 happy_x_1- = case happyOut58 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty6 -}- )}--happyReduce_125 = happySpecReduce_1 39# happyReduction_125-happyReduction_125 happy_x_1- = case happyOut59 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty7 -}- )}--happyReduce_126 = happySpecReduce_1 39# happyReduction_126-happyReduction_126 happy_x_1- = case happyOut60 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty8 -}- )}--happyReduce_127 = happySpecReduce_1 39# happyReduction_127-happyReduction_127 happy_x_1- = case happyOut61 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty9 -}- )}--happyReduce_128 = happySpecReduce_1 39# happyReduction_128-happyReduction_128 happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty10 -}- )}--happyReduce_129 = happySpecReduce_1 39# happyReduction_129-happyReduction_129 happy_x_1- = case happyOut68 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty11 -}- )}--happyReduce_130 = happySpecReduce_1 39# happyReduction_130-happyReduction_130 happy_x_1- = case happyOut63 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty12 -}- )}--happyReduce_131 = happySpecReduce_1 39# happyReduction_131-happyReduction_131 happy_x_1- = case happyOut69 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty13 -}- )}--happyReduce_132 = happySpecReduce_1 39# happyReduction_132-happyReduction_132 happy_x_1- = case happyOut70 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty14 -}- )}--happyReduce_133 = happySpecReduce_1 39# happyReduction_133-happyReduction_133 happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- StatementNoEmpty15 -}- )}--happyReduce_134 = happySpecReduce_2 40# happyReduction_134-happyReduction_134 happy_x_2- happy_x_1- = happyIn47- ((AST.JSLiteral ";")- )--happyReduce_135 = happySpecReduce_3 40# happyReduction_135-happyReduction_135 happy_x_3- happy_x_2- happy_x_1- = case happyOut49 happy_x_2 of { happy_var_2 -> - happyIn47- ((if (happy_var_2 == AST.JSStatementList [AST.JSLiteral ";"]) then (AST.JSLiteral ";") else (AST.JSBlock happy_var_2))- )}--happyReduce_136 = happySpecReduce_2 41# happyReduction_136-happyReduction_136 happy_x_2- happy_x_1- = happyIn48- ((AST.JSBlock (AST.JSStatementList []))- )--happyReduce_137 = happySpecReduce_3 41# happyReduction_137-happyReduction_137 happy_x_3- happy_x_2- happy_x_1- = case happyOut49 happy_x_2 of { happy_var_2 -> - happyIn48- ((AST.JSBlock happy_var_2)- )}--happyReduce_138 = happySpecReduce_1 42# happyReduction_138-happyReduction_138 happy_x_1- = case happyOut45 happy_x_1 of { happy_var_1 -> - happyIn49- ((AST.JSStatementList [happy_var_1])- )}--happyReduce_139 = happySpecReduce_2 42# happyReduction_139-happyReduction_139 happy_x_2- happy_x_1- = case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn49- ((combineStatements happy_var_1 happy_var_2)- )}}--happyReduce_140 = happySpecReduce_3 43# happyReduction_140-happyReduction_140 happy_x_3- happy_x_2- happy_x_1- = case happyOut51 happy_x_2 of { happy_var_2 -> - happyIn50- (AST.JSVariables "var" happy_var_2- )}--happyReduce_141 = happySpecReduce_3 43# happyReduction_141-happyReduction_141 happy_x_3- happy_x_2- happy_x_1- = case happyOut51 happy_x_2 of { happy_var_2 -> - happyIn50- (AST.JSVariables "const" happy_var_2- )}--happyReduce_142 = happySpecReduce_1 44# happyReduction_142-happyReduction_142 happy_x_1- = case happyOut52 happy_x_1 of { happy_var_1 -> - happyIn51- ([happy_var_1] {- VariableDeclarationList -}- )}--happyReduce_143 = happySpecReduce_3 44# happyReduction_143-happyReduction_143 happy_x_3- happy_x_2- happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - happyIn51- ((happy_var_1 ++ [happy_var_3]) {- VariableDeclarationList -}- )}}--happyReduce_144 = happySpecReduce_1 45# happyReduction_144-happyReduction_144 happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn52- ((AST.JSVarDecl happy_var_1 [])- )}--happyReduce_145 = happySpecReduce_2 45# happyReduction_145-happyReduction_145 happy_x_2- happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut53 happy_x_2 of { happy_var_2 -> - happyIn52- ((AST.JSVarDecl happy_var_1 happy_var_2)- )}}--happyReduce_146 = happySpecReduce_2 46# happyReduction_146-happyReduction_146 happy_x_2- happy_x_1- = case happyOut41 happy_x_2 of { happy_var_2 -> - happyIn53- (happy_var_2 {- Initializer -}- )}--happyReduce_147 = happySpecReduce_1 47# happyReduction_147-happyReduction_147 happy_x_1- = happyIn54- ((AST.JSLiteral ";")- )--happyReduce_148 = happyReduce 6# 48# happyReduction_148-happyReduction_148 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut43 happy_x_3 of { happy_var_3 -> - case happyOut57 happy_x_5 of { happy_var_5 -> - case happyOut56 happy_x_6 of { happy_var_6 -> - happyIn55- ((if (happy_var_6 /= []) then - (if (length happy_var_6 == 1) then (AST.JSIfElse happy_var_3 happy_var_5 (head happy_var_6)) - else (AST.JSIfElse happy_var_3 (AST.JSBlock (AST.JSStatementList [happy_var_5])) (last happy_var_6))) - else (AST.JSIf happy_var_3 happy_var_5))- ) `HappyStk` happyRest}}}--happyReduce_149 = happySpecReduce_2 49# happyReduction_149-happyReduction_149 happy_x_2- happy_x_1- = case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn56- ([happy_var_2]- )}--happyReduce_150 = happySpecReduce_0 49# happyReduction_150-happyReduction_150 = happyIn56- ([]- )--happyReduce_151 = happySpecReduce_2 50# happyReduction_151-happyReduction_151 happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - happyIn57- ((AST.JSBlock (AST.JSStatementList [happy_var_1]))- )}--happyReduce_152 = happySpecReduce_1 50# happyReduction_152-happyReduction_152 happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - happyIn57- (happy_var_1 {- StatementSemi -}- )}--happyReduce_153 = happySpecReduce_1 50# happyReduction_153-happyReduction_153 happy_x_1- = happyIn57- (AST.JSLiteral ";"- )--happyReduce_154 = happyReduce 7# 51# happyReduction_154-happyReduction_154 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut45 happy_x_2 of { happy_var_2 -> - case happyOut43 happy_x_5 of { happy_var_5 -> - case happyOut7 happy_x_7 of { happy_var_7 -> - happyIn58- ((AST.JSDoWhile happy_var_2 happy_var_5 happy_var_7)- ) `HappyStk` happyRest}}}--happyReduce_155 = happyReduce 5# 51# happyReduction_155-happyReduction_155 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut43 happy_x_3 of { happy_var_3 -> - case happyOut45 happy_x_5 of { happy_var_5 -> - happyIn58- ((AST.JSWhile happy_var_3 happy_var_5)- ) `HappyStk` happyRest}}--happyReduce_156 = happyReduce 9# 51# happyReduction_156-happyReduction_156 (happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut44 happy_x_3 of { happy_var_3 -> - case happyOut44 happy_x_5 of { happy_var_5 -> - case happyOut44 happy_x_7 of { happy_var_7 -> - case happyOut45 happy_x_9 of { happy_var_9 -> - happyIn58- ((AST.JSFor happy_var_3 happy_var_5 happy_var_7 happy_var_9)- ) `HappyStk` happyRest}}}}--happyReduce_157 = happyReduce 10# 51# happyReduction_157-happyReduction_157 (happy_x_10 `HappyStk`- happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut51 happy_x_4 of { happy_var_4 -> - case happyOut44 happy_x_6 of { happy_var_6 -> - case happyOut44 happy_x_8 of { happy_var_8 -> - case happyOut45 happy_x_10 of { happy_var_10 -> - happyIn58- ((AST.JSForVar happy_var_4 happy_var_6 happy_var_8 happy_var_10)- ) `HappyStk` happyRest}}}}--happyReduce_158 = happyReduce 7# 51# happyReduction_158-happyReduction_158 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut27 happy_x_3 of { happy_var_3 -> - case happyOut43 happy_x_5 of { happy_var_5 -> - case happyOut45 happy_x_7 of { happy_var_7 -> - happyIn58- ((AST.JSForIn happy_var_3 happy_var_5 happy_var_7)- ) `HappyStk` happyRest}}}--happyReduce_159 = happyReduce 8# 51# happyReduction_159-happyReduction_159 (happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut52 happy_x_4 of { happy_var_4 -> - case happyOut43 happy_x_6 of { happy_var_6 -> - case happyOut45 happy_x_8 of { happy_var_8 -> - happyIn58- ((AST.JSForVarIn happy_var_4 happy_var_6 happy_var_8)- ) `HappyStk` happyRest}}}--happyReduce_160 = happySpecReduce_2 52# happyReduction_160-happyReduction_160 happy_x_2- happy_x_1- = case happyOut7 happy_x_2 of { happy_var_2 -> - happyIn59- ((AST.JSContinue [happy_var_2])- )}--happyReduce_161 = happySpecReduce_3 52# happyReduction_161-happyReduction_161 happy_x_3- happy_x_2- happy_x_1- = case happyOut15 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_3 of { happy_var_3 -> - happyIn59- ((AST.JSContinue [happy_var_2,happy_var_3])- )}}--happyReduce_162 = happySpecReduce_2 53# happyReduction_162-happyReduction_162 happy_x_2- happy_x_1- = case happyOut7 happy_x_2 of { happy_var_2 -> - happyIn60- ((AST.JSBreak [] [happy_var_2])- )}--happyReduce_163 = happySpecReduce_3 53# happyReduction_163-happyReduction_163 happy_x_3- happy_x_2- happy_x_1- = case happyOut15 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_3 of { happy_var_3 -> - happyIn60- ((AST.JSBreak [happy_var_2] [happy_var_3])- )}}--happyReduce_164 = happySpecReduce_2 54# happyReduction_164-happyReduction_164 happy_x_2- happy_x_1- = case happyOut7 happy_x_2 of { happy_var_2 -> - happyIn61- ((AST.JSReturn [happy_var_2])- )}--happyReduce_165 = happySpecReduce_3 54# happyReduction_165-happyReduction_165 happy_x_3- happy_x_2- happy_x_1- = case happyOut43 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_3 of { happy_var_3 -> - happyIn61- ((AST.JSReturn [happy_var_2,happy_var_3])- )}}--happyReduce_166 = happyReduce 6# 55# happyReduction_166-happyReduction_166 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut43 happy_x_3 of { happy_var_3 -> - case happyOut45 happy_x_5 of { happy_var_5 -> - case happyOut7 happy_x_6 of { happy_var_6 -> - happyIn62- ((AST.JSWith happy_var_3 [happy_var_5,happy_var_6])- ) `HappyStk` happyRest}}}--happyReduce_167 = happyReduce 5# 56# happyReduction_167-happyReduction_167 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut43 happy_x_3 of { happy_var_3 -> - case happyOut64 happy_x_5 of { happy_var_5 -> - happyIn63- ((AST.JSSwitch happy_var_3 happy_var_5)- ) `HappyStk` happyRest}}--happyReduce_168 = happySpecReduce_2 57# happyReduction_168-happyReduction_168 happy_x_2- happy_x_1- = happyIn64- ([]- )--happyReduce_169 = happySpecReduce_3 57# happyReduction_169-happyReduction_169 happy_x_3- happy_x_2- happy_x_1- = case happyOut65 happy_x_2 of { happy_var_2 -> - happyIn64- (happy_var_2 {- CaseBlock2 -}- )}--happyReduce_170 = happyReduce 4# 57# happyReduction_170-happyReduction_170 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut67 happy_x_3 of { happy_var_3 -> - happyIn64- ((happy_var_2++[happy_var_3]) {- CaseBlock3 -}- ) `HappyStk` happyRest}}--happyReduce_171 = happyReduce 5# 57# happyReduction_171-happyReduction_171 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut67 happy_x_3 of { happy_var_3 -> - case happyOut65 happy_x_4 of { happy_var_4 -> - happyIn64- ((happy_var_2++(happy_var_3:happy_var_4)) {- CaseBlock4 -}- ) `HappyStk` happyRest}}}--happyReduce_172 = happyReduce 4# 57# happyReduction_172-happyReduction_172 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut67 happy_x_2 of { happy_var_2 -> - case happyOut65 happy_x_3 of { happy_var_3 -> - happyIn64- ((happy_var_2:happy_var_3) {- CaseBlock5 -}- ) `HappyStk` happyRest}}--happyReduce_173 = happySpecReduce_3 57# happyReduction_173-happyReduction_173 happy_x_3- happy_x_2- happy_x_1- = case happyOut67 happy_x_2 of { happy_var_2 -> - happyIn64- ([happy_var_2] {- CaseBlock6 -}- )}--happyReduce_174 = happySpecReduce_1 58# happyReduction_174-happyReduction_174 happy_x_1- = case happyOut66 happy_x_1 of { happy_var_1 -> - happyIn65- ([happy_var_1] {- CaseClauses1 -}- )}--happyReduce_175 = happySpecReduce_2 58# happyReduction_175-happyReduction_175 happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut66 happy_x_2 of { happy_var_2 -> - happyIn65- ((happy_var_1++[happy_var_2]) {- CaseClauses2 -}- )}}--happyReduce_176 = happyReduce 4# 59# happyReduction_176-happyReduction_176 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut43 happy_x_2 of { happy_var_2 -> - case happyOut49 happy_x_4 of { happy_var_4 -> - happyIn66- ((AST.JSCase happy_var_2 happy_var_4)- ) `HappyStk` happyRest}}--happyReduce_177 = happySpecReduce_3 59# happyReduction_177-happyReduction_177 happy_x_3- happy_x_2- happy_x_1- = case happyOut43 happy_x_2 of { happy_var_2 -> - happyIn66- ((AST.JSCase happy_var_2 (AST.JSStatementList []))- )}--happyReduce_178 = happySpecReduce_2 60# happyReduction_178-happyReduction_178 happy_x_2- happy_x_1- = happyIn67- ((AST.JSDefault (AST.JSStatementList []))- )--happyReduce_179 = happySpecReduce_3 60# happyReduction_179-happyReduction_179 happy_x_3- happy_x_2- happy_x_1- = case happyOut49 happy_x_3 of { happy_var_3 -> - happyIn67- ((AST.JSDefault happy_var_3)- )}--happyReduce_180 = happySpecReduce_3 61# happyReduction_180-happyReduction_180 happy_x_3- happy_x_2- happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_3 of { happy_var_3 -> - happyIn68- ((AST.JSLabelled happy_var_1 happy_var_3)- )}}--happyReduce_181 = happySpecReduce_2 62# happyReduction_181-happyReduction_181 happy_x_2- happy_x_1- = case happyOut43 happy_x_2 of { happy_var_2 -> - happyIn69- ((AST.JSThrow happy_var_2)- )}--happyReduce_182 = happySpecReduce_3 63# happyReduction_182-happyReduction_182 happy_x_3- happy_x_2- happy_x_1- = case happyOut48 happy_x_2 of { happy_var_2 -> - case happyOut71 happy_x_3 of { happy_var_3 -> - happyIn70- ((AST.JSTry happy_var_2 happy_var_3) {- TryStatement1 -}- )}}--happyReduce_183 = happySpecReduce_3 63# happyReduction_183-happyReduction_183 happy_x_3- happy_x_2- happy_x_1- = case happyOut48 happy_x_2 of { happy_var_2 -> - case happyOut73 happy_x_3 of { happy_var_3 -> - happyIn70- ((AST.JSTry happy_var_2 [happy_var_3]) {- TryStatement2 -}- )}}--happyReduce_184 = happyReduce 4# 63# happyReduction_184-happyReduction_184 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut48 happy_x_2 of { happy_var_2 -> - case happyOut71 happy_x_3 of { happy_var_3 -> - case happyOut73 happy_x_4 of { happy_var_4 -> - happyIn70- ((AST.JSTry happy_var_2 (happy_var_3++[happy_var_4])) {- TryStatement3 -}- ) `HappyStk` happyRest}}}--happyReduce_185 = happySpecReduce_1 64# happyReduction_185-happyReduction_185 happy_x_1- = case happyOut72 happy_x_1 of { happy_var_1 -> - happyIn71- ([happy_var_1] {- Catches 1 -}- )}--happyReduce_186 = happySpecReduce_2 64# happyReduction_186-happyReduction_186 happy_x_2- happy_x_1- = case happyOut71 happy_x_1 of { happy_var_1 -> - case happyOut72 happy_x_2 of { happy_var_2 -> - happyIn71- ((happy_var_1++[happy_var_2]) {- Catches 2 -}- )}}--happyReduce_187 = happyReduce 5# 65# happyReduction_187-happyReduction_187 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut15 happy_x_3 of { happy_var_3 -> - case happyOut48 happy_x_5 of { happy_var_5 -> - happyIn72- ((AST.JSCatch happy_var_3 [] happy_var_5)- ) `HappyStk` happyRest}}--happyReduce_188 = happyReduce 7# 65# happyReduction_188-happyReduction_188 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut15 happy_x_3 of { happy_var_3 -> - case happyOut40 happy_x_5 of { happy_var_5 -> - case happyOut48 happy_x_7 of { happy_var_7 -> - happyIn72- ((AST.JSCatch happy_var_3 happy_var_5 happy_var_7)- ) `HappyStk` happyRest}}}--happyReduce_189 = happySpecReduce_2 66# happyReduction_189-happyReduction_189 happy_x_2- happy_x_1- = case happyOut48 happy_x_2 of { happy_var_2 -> - happyIn73- ((AST.JSFinally happy_var_2)- )}--happyReduce_190 = happyReduce 8# 67# happyReduction_190-happyReduction_190 (happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut15 happy_x_2 of { happy_var_2 -> - case happyOut77 happy_x_4 of { happy_var_4 -> - case happyOut78 happy_x_7 of { happy_var_7 -> - happyIn74- ((AST.JSFunction happy_var_2 happy_var_4 happy_var_7)- ) `HappyStk` happyRest}}}--happyReduce_191 = happyReduce 7# 67# happyReduction_191-happyReduction_191 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut15 happy_x_2 of { happy_var_2 -> - case happyOut78 happy_x_6 of { happy_var_6 -> - happyIn74- ((AST.JSFunction happy_var_2 [] happy_var_6)- ) `HappyStk` happyRest}}--happyReduce_192 = happyReduce 7# 68# happyReduction_192-happyReduction_192 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut76 happy_x_2 of { happy_var_2 -> - case happyOut78 happy_x_6 of { happy_var_6 -> - happyIn75- ((AST.JSFunctionExpression happy_var_2 [] happy_var_6)- ) `HappyStk` happyRest}}--happyReduce_193 = happyReduce 8# 68# happyReduction_193-happyReduction_193 (happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut76 happy_x_2 of { happy_var_2 -> - case happyOut77 happy_x_4 of { happy_var_4 -> - case happyOut78 happy_x_7 of { happy_var_7 -> - happyIn75- ((AST.JSFunctionExpression happy_var_2 happy_var_4 happy_var_7)- ) `HappyStk` happyRest}}}--happyReduce_194 = happySpecReduce_1 69# happyReduction_194-happyReduction_194 happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn76- ([happy_var_1] {- IdentifierOpt -}- )}--happyReduce_195 = happySpecReduce_0 69# happyReduction_195-happyReduction_195 = happyIn76- ([] {- IdentifierOpt -}- )--happyReduce_196 = happySpecReduce_1 70# happyReduction_196-happyReduction_196 happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn77- ([happy_var_1] {- FormalParameterList -}- )}--happyReduce_197 = happySpecReduce_3 70# happyReduction_197-happyReduction_197 happy_x_3- happy_x_2- happy_x_1- = case happyOut77 happy_x_1 of { happy_var_1 -> - case happyOut15 happy_x_3 of { happy_var_3 -> - happyIn77- ((happy_var_1++[happy_var_3])- )}}--happyReduce_198 = happySpecReduce_1 71# happyReduction_198-happyReduction_198 happy_x_1- = case happyOut80 happy_x_1 of { happy_var_1 -> - happyIn78- ((AST.JSFunctionBody [happy_var_1])- )}--happyReduce_199 = happySpecReduce_0 71# happyReduction_199-happyReduction_199 = happyIn78- ((AST.JSFunctionBody [])- )--happyReduce_200 = happySpecReduce_1 72# happyReduction_200-happyReduction_200 happy_x_1- = case happyOut81 happy_x_1 of { happy_var_1 -> - happyIn79- (happy_var_1 {- Program -}- )}--happyReduce_201 = happySpecReduce_1 73# happyReduction_201-happyReduction_201 happy_x_1- = case happyOut82 happy_x_1 of { happy_var_1 -> - happyIn80- ((AST.JSSourceElements [happy_var_1])- )}--happyReduce_202 = happySpecReduce_2 73# happyReduction_202-happyReduction_202 happy_x_2- happy_x_1- = case happyOut80 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_2 of { happy_var_2 -> - happyIn80- ((combineSourceElements happy_var_1 happy_var_2)- )}}--happyReduce_203 = happySpecReduce_1 74# happyReduction_203-happyReduction_203 happy_x_1- = case happyOut82 happy_x_1 of { happy_var_1 -> - happyIn81- ((AST.JSSourceElementsTop [happy_var_1])- )}--happyReduce_204 = happySpecReduce_2 74# happyReduction_204-happyReduction_204 happy_x_2- happy_x_1- = case happyOut81 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_2 of { happy_var_2 -> - happyIn81- ((combineSourceElementsTop happy_var_1 happy_var_2)- )}}--happyReduce_205 = happySpecReduce_1 75# happyReduction_205-happyReduction_205 happy_x_1- = case happyOut45 happy_x_1 of { happy_var_1 -> - happyIn82- (happy_var_1 {- SourceElement1 -}- )}--happyReduce_206 = happySpecReduce_1 75# happyReduction_206-happyReduction_206 happy_x_1- = case happyOut74 happy_x_1 of { happy_var_1 -> - happyIn82- (happy_var_1 {- SourceElement2 -}- )}--happyNewToken action sts stk- = lexCont(\tk -> - let cont i = happyDoAction i tk action sts stk in- case tk of {- EOFToken {} -> happyDoAction 76# tk action sts stk;- SemiColonToken {} -> cont 1#;- CommaToken {} -> cont 2#;- HookToken {} -> cont 3#;- ColonToken {} -> cont 4#;- OrToken {} -> cont 5#;- AndToken {} -> cont 6#;- BitwiseOrToken {} -> cont 7#;- BitwiseXorToken {} -> cont 8#;- BitwiseAndToken {} -> cont 9#;- StrictEqToken {} -> cont 10#;- EqToken {} -> cont 11#;- SimpleAssignToken {} -> cont 12#;- StrictNeToken {} -> cont 13#;- NeToken {} -> cont 14#;- LshToken {} -> cont 15#;- LeToken {} -> cont 16#;- LtToken {} -> cont 17#;- UrshToken {} -> cont 18#;- RshToken {} -> cont 19#;- GeToken {} -> cont 20#;- GtToken {} -> cont 21#;- IncrementToken {} -> cont 22#;- DecrementToken {} -> cont 23#;- PlusToken {} -> cont 24#;- MinusToken {} -> cont 25#;- MulToken {} -> cont 26#;- DivToken {} -> cont 27#;- ModToken {} -> cont 28#;- NotToken {} -> cont 29#;- BitwiseNotToken {} -> cont 30#;- DotToken {} -> cont 31#;- LeftBracketToken {} -> cont 32#;- RightBracketToken {} -> cont 33#;- LeftCurlyToken {} -> cont 34#;- RightCurlyToken {} -> cont 35#;- LeftParenToken {} -> cont 36#;- RightParenToken {} -> cont 37#;- CondcommentEndToken {} -> cont 38#;- BreakToken {} -> cont 39#;- CaseToken {} -> cont 40#;- CatchToken {} -> cont 41#;- ConstToken {} -> cont 42#;- ContinueToken {} -> cont 43#;- DebuggerToken {} -> cont 44#;- DefaultToken {} -> cont 45#;- DeleteToken {} -> cont 46#;- DoToken {} -> cont 47#;- ElseToken {} -> cont 48#;- EnumToken {} -> cont 49#;- FalseToken {} -> cont 50#;- FinallyToken {} -> cont 51#;- ForToken {} -> cont 52#;- FunctionToken {} -> cont 53#;- IfToken {} -> cont 54#;- InToken {} -> cont 55#;- InstanceofToken {} -> cont 56#;- NewToken {} -> cont 57#;- NullToken {} -> cont 58#;- ReturnToken {} -> cont 59#;- SwitchToken {} -> cont 60#;- ThisToken {} -> cont 61#;- ThrowToken {} -> cont 62#;- TrueToken {} -> cont 63#;- TryToken {} -> cont 64#;- TypeofToken {} -> cont 65#;- VarToken {} -> cont 66#;- VoidToken {} -> cont 67#;- WhileToken {} -> cont 68#;- WithToken {} -> cont 69#;- IdentifierToken {} -> cont 70#;- DecimalToken {} -> cont 71#;- HexIntegerToken {} -> cont 72#;- StringToken {} -> cont 73#;- RegExToken {} -> cont 74#;- AssignToken {} -> cont 75#;- _ -> happyError' tk- })--happyError_ tk = happyError' tk--happyThen :: () => P a -> (a -> P b) -> P b-happyThen = (thenP)-happyReturn :: () => a -> P a-happyReturn = (returnP)-happyThen1 = happyThen-happyReturn1 :: () => a -> P a-happyReturn1 = happyReturn-happyError' :: () => (Token) -> P a-happyError' tk = parseError tk--parseProgram = happySomeParser where- happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut79 x))--parseLiteral = happySomeParser where- happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut8 x))--parsePrimaryExpression = happySomeParser where- happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut14 x))--parseStatement = happySomeParser where- happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut45 x))--happySeq = happyDontSeq---combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineSourceElements (AST.JSSourceElements xs) x = (AST.JSSourceElements (xs++[x]) )--combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineSourceElementsTop (AST.JSSourceElementsTop xs) x = (AST.JSSourceElementsTop (xs++[x]) )--combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineStatements (AST.JSStatementList xs) (AST.JSStatementList ys) = (AST.JSStatementList (xs++ys) )-combineStatements (AST.JSStatementList xs) y = (AST.JSStatementList (xs++[y]) )--parseError :: Token -> P a -parseError = throwError . UnexpectedToken --flattenExpression :: AST.JSNode -> [AST.JSNode] -> AST.JSNode-flattenExpression (AST.JSExpression xs) e = AST.JSExpression (xs++litComma++e)- where- litComma :: [AST.JSNode]- litComma = [(AST.JSLiteral ",")]-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<built-in>" #-}-{-# LINE 1 "<command-line>" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp --{-# LINE 30 "templates/GenericTemplate.hs" #-}---data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList------{-# LINE 51 "templates/GenericTemplate.hs" #-}--{-# LINE 61 "templates/GenericTemplate.hs" #-}--{-# LINE 70 "templates/GenericTemplate.hs" #-}--infixr 9 `HappyStk`-data HappyStk a = HappyStk a (HappyStk a)---------------------------------------------------------------------------------- starting the parse--happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll---------------------------------------------------------------------------------- Accepting the parse---- If the current token is 0#, it means we've just accepted a partial--- parse (a %partial parser). We must ignore the saved token on the top of--- the stack in this case.-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =- happyReturn1 ans-happyAccept j tk st sts (HappyStk ans _) = - (happyTcHack j (happyTcHack st)) (happyReturn1 ans)---------------------------------------------------------------------------------- Arrays only: do the next action----happyDoAction i tk st- = {- nothing -}--- case action of- 0# -> {- nothing -}- happyFail i tk st- -1# -> {- nothing -}- happyAccept i tk st- n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}-- (happyReduceArr Happy_Data_Array.! rule) i tk st- where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))- n -> {- nothing -}--- happyShift new_state i tk st- where (new_state) = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))- where (off) = indexShortOffAddr happyActOffsets st- (off_i) = (off Happy_GHC_Exts.+# i)- check = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#))- then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==# i)- else False- (action)- | check = indexShortOffAddr happyTable off_i- | otherwise = indexShortOffAddr happyDefActions st--{-# LINE 130 "templates/GenericTemplate.hs" #-}---indexShortOffAddr (HappyA# arr) off =- Happy_GHC_Exts.narrow16Int# i- where- i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)- high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))- low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))- off' = off Happy_GHC_Exts.*# 2#------data HappyAddr = HappyA# Happy_GHC_Exts.Addr#------------------------------------------------------------------------------------- HappyState data type (not arrays)--{-# LINE 163 "templates/GenericTemplate.hs" #-}---------------------------------------------------------------------------------- Shifting a token--happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =- let (i) = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in--- trace "shifting the error token" $- happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)--happyShift new_state i tk st sts stk =- happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)---- happyReduce is specialised for the common cases.--happySpecReduce_0 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_0 nt fn j tk st@((action)) sts stk- = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)--happySpecReduce_1 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')- = let r = fn v1 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_2 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')- = let r = fn v1 v2 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_3 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')- = let r = fn v1 v2 v3 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happyReduce k i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyReduce k nt fn j tk st sts stk- = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of- sts1@((HappyCons (st1@(action)) (_))) ->- let r = fn stk in -- it doesn't hurt to always seq here...- happyDoSeq r (happyGoto nt j tk st1 sts1 r)--happyMonadReduce k nt fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyMonadReduce k nt fn j tk st sts stk =- happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))- where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))- drop_stk = happyDropStk k stk--happyMonad2Reduce k nt fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyMonad2Reduce k nt fn j tk st sts stk =- happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))- where (sts1@((HappyCons (st1@(action)) (_)))) = happyDrop k (HappyCons (st) (sts))- drop_stk = happyDropStk k stk-- (off) = indexShortOffAddr happyGotoOffsets st1- (off_i) = (off Happy_GHC_Exts.+# nt)- (new_state) = indexShortOffAddr happyTable off_i-----happyDrop 0# l = l-happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t--happyDropStk 0# l = l-happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs---------------------------------------------------------------------------------- Moving to a new state after a reduction---happyGoto nt j tk st = - {- nothing -}- happyDoAction j tk new_state- where (off) = indexShortOffAddr happyGotoOffsets st- (off_i) = (off Happy_GHC_Exts.+# nt)- (new_state) = indexShortOffAddr happyTable off_i------------------------------------------------------------------------------------- Error recovery (0# is the error token)---- parse error if we are in recovery and we fail again-happyFail 0# tk old_st _ stk =--- trace "failing" $ - happyError_ tk--{- We don't need state discarding for our restricted implementation of- "error". In fact, it can cause some bogus parses, so I've disabled it- for now --SDM---- discard a state-happyFail 0# tk old_st (HappyCons ((action)) (sts)) - (saved_tok `HappyStk` _ `HappyStk` stk) =--- trace ("discarding state, depth " ++ show (length stk)) $- happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))--}---- Enter error recovery: generate an error token,--- save the old token and carry on.-happyFail i tk (action) sts stk =--- trace "entering error recovery" $- happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)---- Internal happy errors:--notHappyAtAll :: a-notHappyAtAll = error "Internal Happy error\n"---------------------------------------------------------------------------------- Hack to get the typechecker to accept our action functions---happyTcHack :: Happy_GHC_Exts.Int# -> a -> a-happyTcHack x y = y-{-# INLINE happyTcHack #-}----------------------------------------------------------------------------------- Seq-ing. If the --strict flag is given, then Happy emits --- happySeq = happyDoSeq--- otherwise it emits--- happySeq = happyDontSeq--happyDoSeq, happyDontSeq :: a -> b -> b-happyDoSeq a b = a `seq` b-happyDontSeq a b = b---------------------------------------------------------------------------------- Don't inline any functions from the template. GHC has a nasty habit--- of deciding to inline happyGoto everywhere, which increases the size of--- the generated parser quite a bit.---{-# NOINLINE happyDoAction #-}-{-# NOINLINE happyTable #-}-{-# NOINLINE happyCheck #-}-{-# NOINLINE happyActOffsets #-}-{-# NOINLINE happyGotoOffsets #-}-{-# NOINLINE happyDefActions #-}--{-# NOINLINE happyShift #-}-{-# NOINLINE happySpecReduce_0 #-}-{-# NOINLINE happySpecReduce_1 #-}-{-# NOINLINE happySpecReduce_2 #-}-{-# NOINLINE happySpecReduce_3 #-}-{-# NOINLINE happyReduce #-}-{-# NOINLINE happyMonadReduce #-}-{-# NOINLINE happyGoto #-}-{-# NOINLINE happyFail #-}---- end of Happy Template.
dist/build/Language/JavaScript/Parser/Grammar5.hs view
@@ -901,13 +901,14 @@ happyReduce_4 = happySpecReduce_1 0# happyReduction_4 happyReduction_4 happy_x_1- = happyIn7- (AST.JSLiteral ";"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn7+ (AST.NS (AST.JSLiteral ";") (ss happy_var_1)+ )} happyReduce_5 = happySpecReduce_0 0# happyReduction_5 happyReduction_5 = happyIn7- (AST.JSLiteral ""+ (AST.NS (AST.JSLiteral "") SpanEmpty ) happyReduce_6 = happySpecReduce_1 1# happyReduction_6@@ -947,55 +948,59 @@ happyReduce_11 = happySpecReduce_1 2# happyReduction_11 happyReduction_11 happy_x_1- = happyIn9- (AST.JSLiteral "null"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn9+ (AST.NS (AST.JSLiteral "null") (ss happy_var_1)+ )} happyReduce_12 = happySpecReduce_1 3# happyReduction_12 happyReduction_12 happy_x_1- = happyIn10- (AST.JSLiteral "true"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn10+ (AST.NS (AST.JSLiteral "true") (ss happy_var_1)+ )} happyReduce_13 = happySpecReduce_1 3# happyReduction_13 happyReduction_13 happy_x_1- = happyIn10- (AST.JSLiteral "false"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn10+ (AST.NS (AST.JSLiteral "false") (ss happy_var_1)+ )} happyReduce_14 = happySpecReduce_1 4# happyReduction_14 happyReduction_14 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn11- (AST.JSDecimal (token_literal happy_var_1)+ (AST.NS (AST.JSDecimal (token_literal happy_var_1)) (ss happy_var_1) )} happyReduce_15 = happySpecReduce_1 4# happyReduction_15 happyReduction_15 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn11- (AST.JSHexInteger (token_literal happy_var_1)+ (AST.NS (AST.JSHexInteger (token_literal happy_var_1)) (ss happy_var_1) )} happyReduce_16 = happySpecReduce_1 5# happyReduction_16 happyReduction_16 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn12- (AST.JSStringLiteral (token_delimiter happy_var_1) (token_literal happy_var_1)+ (AST.NS (AST.JSStringLiteral (token_delimiter happy_var_1) (token_literal happy_var_1)) (ss happy_var_1) )} happyReduce_17 = happySpecReduce_1 6# happyReduction_17 happyReduction_17 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn13- (AST.JSRegEx (token_literal happy_var_1)+ (AST.NS (AST.JSRegEx (token_literal happy_var_1)) (ss happy_var_1) )} happyReduce_18 = happySpecReduce_1 7# happyReduction_18 happyReduction_18 happy_x_1- = happyIn14- (AST.JSLiteral "this"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn14+ (AST.NS (AST.JSLiteral "this") (ss happy_var_1)+ )} happyReduce_19 = happySpecReduce_1 7# happyReduction_19 happyReduction_19 happy_x_1@@ -1029,29 +1034,32 @@ happyReduction_23 happy_x_3 happy_x_2 happy_x_1- = case happyOut55 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut55 happy_x_2 of { happy_var_2 -> happyIn14- (AST.JSExpressionParen happy_var_2- )}+ (AST.NS (AST.JSExpressionParen happy_var_2) (ss happy_var_1)+ )}} happyReduce_24 = happySpecReduce_1 8# happyReduction_24 happyReduction_24 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn15- (AST.JSIdentifier (token_literal happy_var_1)+ (AST.NS (AST.JSIdentifier (token_literal happy_var_1)) (ss happy_var_1) )} happyReduce_25 = happySpecReduce_1 8# happyReduction_25 happyReduction_25 happy_x_1- = happyIn15- (AST.JSIdentifier "get"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn15+ (AST.NS (AST.JSIdentifier "get") (ss happy_var_1)+ )} happyReduce_26 = happySpecReduce_1 8# happyReduction_26 happyReduction_26 happy_x_1- = happyIn15- (AST.JSIdentifier "set"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn15+ (AST.NS (AST.JSIdentifier "set") (ss happy_var_1)+ )} happyReduce_27 = happySpecReduce_1 9# happyReduction_27 happyReduction_27 happy_x_1@@ -1062,233 +1070,269 @@ happyReduce_28 = happySpecReduce_1 9# happyReduction_28 happyReduction_28 happy_x_1- = happyIn16- (AST.JSIdentifier "break"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "break") (ss happy_var_1)+ )} happyReduce_29 = happySpecReduce_1 9# happyReduction_29 happyReduction_29 happy_x_1- = happyIn16- (AST.JSIdentifier "case"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "case") (ss happy_var_1)+ )} happyReduce_30 = happySpecReduce_1 9# happyReduction_30 happyReduction_30 happy_x_1- = happyIn16- (AST.JSIdentifier "catch"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "catch") (ss happy_var_1)+ )} happyReduce_31 = happySpecReduce_1 9# happyReduction_31 happyReduction_31 happy_x_1- = happyIn16- (AST.JSIdentifier "const"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "const") (ss happy_var_1)+ )} happyReduce_32 = happySpecReduce_1 9# happyReduction_32 happyReduction_32 happy_x_1- = happyIn16- (AST.JSIdentifier "continue"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "continue") (ss happy_var_1)+ )} happyReduce_33 = happySpecReduce_1 9# happyReduction_33 happyReduction_33 happy_x_1- = happyIn16- (AST.JSIdentifier "debugger"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "debugger") (ss happy_var_1)+ )} happyReduce_34 = happySpecReduce_1 9# happyReduction_34 happyReduction_34 happy_x_1- = happyIn16- (AST.JSIdentifier "default"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "default") (ss happy_var_1)+ )} happyReduce_35 = happySpecReduce_1 9# happyReduction_35 happyReduction_35 happy_x_1- = happyIn16- (AST.JSIdentifier "delete"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "delete") (ss happy_var_1)+ )} happyReduce_36 = happySpecReduce_1 9# happyReduction_36 happyReduction_36 happy_x_1- = happyIn16- (AST.JSIdentifier "do"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "do") (ss happy_var_1)+ )} happyReduce_37 = happySpecReduce_1 9# happyReduction_37 happyReduction_37 happy_x_1- = happyIn16- (AST.JSIdentifier "else"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "else") (ss happy_var_1)+ )} happyReduce_38 = happySpecReduce_1 9# happyReduction_38 happyReduction_38 happy_x_1- = happyIn16- (AST.JSIdentifier "enum"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "enum") (ss happy_var_1)+ )} happyReduce_39 = happySpecReduce_1 9# happyReduction_39 happyReduction_39 happy_x_1- = happyIn16- (AST.JSIdentifier "false"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "false") (ss happy_var_1)+ )} happyReduce_40 = happySpecReduce_1 9# happyReduction_40 happyReduction_40 happy_x_1- = happyIn16- (AST.JSIdentifier "finally"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "finally") (ss happy_var_1)+ )} happyReduce_41 = happySpecReduce_1 9# happyReduction_41 happyReduction_41 happy_x_1- = happyIn16- (AST.JSIdentifier "for"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "for") (ss happy_var_1)+ )} happyReduce_42 = happySpecReduce_1 9# happyReduction_42 happyReduction_42 happy_x_1- = happyIn16- (AST.JSIdentifier "function"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "function") (ss happy_var_1)+ )} happyReduce_43 = happySpecReduce_1 9# happyReduction_43 happyReduction_43 happy_x_1- = happyIn16- (AST.JSIdentifier "get"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "get") (ss happy_var_1)+ )} happyReduce_44 = happySpecReduce_1 9# happyReduction_44 happyReduction_44 happy_x_1- = happyIn16- (AST.JSIdentifier "if"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "if") (ss happy_var_1)+ )} happyReduce_45 = happySpecReduce_1 9# happyReduction_45 happyReduction_45 happy_x_1- = happyIn16- (AST.JSIdentifier "in"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "in") (ss happy_var_1)+ )} happyReduce_46 = happySpecReduce_1 9# happyReduction_46 happyReduction_46 happy_x_1- = happyIn16- (AST.JSIdentifier "instanceof"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "instanceof") (ss happy_var_1)+ )} happyReduce_47 = happySpecReduce_1 9# happyReduction_47 happyReduction_47 happy_x_1- = happyIn16- (AST.JSIdentifier "new"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "new") (ss happy_var_1)+ )} happyReduce_48 = happySpecReduce_1 9# happyReduction_48 happyReduction_48 happy_x_1- = happyIn16- (AST.JSIdentifier "null"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "null") (ss happy_var_1)+ )} happyReduce_49 = happySpecReduce_1 9# happyReduction_49 happyReduction_49 happy_x_1- = happyIn16- (AST.JSIdentifier "return"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "return") (ss happy_var_1)+ )} happyReduce_50 = happySpecReduce_1 9# happyReduction_50 happyReduction_50 happy_x_1- = happyIn16- (AST.JSIdentifier "set"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "set") (ss happy_var_1)+ )} happyReduce_51 = happySpecReduce_1 9# happyReduction_51 happyReduction_51 happy_x_1- = happyIn16- (AST.JSIdentifier "switch"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "switch") (ss happy_var_1)+ )} happyReduce_52 = happySpecReduce_1 9# happyReduction_52 happyReduction_52 happy_x_1- = happyIn16- (AST.JSIdentifier "this"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "this") (ss happy_var_1)+ )} happyReduce_53 = happySpecReduce_1 9# happyReduction_53 happyReduction_53 happy_x_1- = happyIn16- (AST.JSIdentifier "throw"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "throw") (ss happy_var_1)+ )} happyReduce_54 = happySpecReduce_1 9# happyReduction_54 happyReduction_54 happy_x_1- = happyIn16- (AST.JSIdentifier "true"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "true") (ss happy_var_1)+ )} happyReduce_55 = happySpecReduce_1 9# happyReduction_55 happyReduction_55 happy_x_1- = happyIn16- (AST.JSIdentifier "try"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "try") (ss happy_var_1)+ )} happyReduce_56 = happySpecReduce_1 9# happyReduction_56 happyReduction_56 happy_x_1- = happyIn16- (AST.JSIdentifier "typeof"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "typeof") (ss happy_var_1)+ )} happyReduce_57 = happySpecReduce_1 9# happyReduction_57 happyReduction_57 happy_x_1- = happyIn16- (AST.JSIdentifier "var"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "var") (ss happy_var_1)+ )} happyReduce_58 = happySpecReduce_1 9# happyReduction_58 happyReduction_58 happy_x_1- = happyIn16- (AST.JSIdentifier "void"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "void") (ss happy_var_1)+ )} happyReduce_59 = happySpecReduce_1 9# happyReduction_59 happyReduction_59 happy_x_1- = happyIn16- (AST.JSIdentifier "while"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "while") (ss happy_var_1)+ )} happyReduce_60 = happySpecReduce_1 9# happyReduction_60 happyReduction_60 happy_x_1- = happyIn16- (AST.JSIdentifier "with"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (AST.NS (AST.JSIdentifier "with") (ss happy_var_1)+ )} happyReduce_61 = happySpecReduce_1 9# happyReduction_61 happyReduction_61 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn16- (AST.JSIdentifier (token_literal happy_var_1)+ (AST.NS (AST.JSIdentifier (token_literal happy_var_1)) (ss happy_var_1) )} happyReduce_62 = happySpecReduce_2 10# happyReduction_62 happyReduction_62 happy_x_2 happy_x_1- = happyIn17- (AST.JSArrayLiteral []- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn17+ (AST.NS (AST.JSArrayLiteral []) (ss happy_var_1)+ )} happyReduce_63 = happySpecReduce_3 10# happyReduction_63 happyReduction_63 happy_x_3 happy_x_2 happy_x_1- = case happyOut19 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut19 happy_x_2 of { happy_var_2 -> happyIn17- (AST.JSArrayLiteral happy_var_2- )}+ (AST.NS (AST.JSArrayLiteral happy_var_2) (ss happy_var_1)+ )}} happyReduce_64 = happySpecReduce_3 10# happyReduction_64 happyReduction_64 happy_x_3 happy_x_2 happy_x_1- = case happyOut18 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut18 happy_x_2 of { happy_var_2 -> happyIn17- (AST.JSArrayLiteral happy_var_2- )}+ (AST.NS (AST.JSArrayLiteral happy_var_2) (ss happy_var_1)+ )}} happyReduce_65 = happyReduce 5# 10# happyReduction_65 happyReduction_65 (happy_x_5 `HappyStk`@@ -1297,11 +1341,12 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut18 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut18 happy_x_2 of { happy_var_2 -> case happyOut19 happy_x_4 of { happy_var_4 -> happyIn17- (AST.JSArrayLiteral (happy_var_2++happy_var_4)- ) `HappyStk` happyRest}}+ (AST.NS (AST.JSArrayLiteral (happy_var_2++happy_var_4)) (ss happy_var_1)+ ) `HappyStk` happyRest}}} happyReduce_66 = happyReduce 4# 10# happyReduction_66 happyReduction_66 (happy_x_4 `HappyStk`@@ -1309,10 +1354,12 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut18 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut18 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { happy_var_3 -> happyIn17- (AST.JSArrayLiteral (happy_var_2++[AST.JSLiteral ","])- ) `HappyStk` happyRest}+ (AST.NS (AST.JSArrayLiteral (happy_var_2++[AST.NS (AST.JSLiteral ",") (ss happy_var_3)])) (ss happy_var_1)+ ) `HappyStk` happyRest}}} happyReduce_67 = happySpecReduce_2 11# happyReduction_67 happyReduction_67 happy_x_2@@ -1320,7 +1367,7 @@ = case happyOut19 happy_x_1 of { happy_var_1 -> case happyOut52 happy_x_2 of { happy_var_2 -> happyIn18- ((happy_var_1++happy_var_2) {- ElementList -}+ (((happy_var_1)++(happy_var_2)) {- ElementList -} )}} happyReduce_68 = happySpecReduce_1 11# happyReduction_68@@ -1337,26 +1384,28 @@ happy_x_1 `HappyStk` happyRest) = case happyOut18 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { happy_var_2 -> case happyOut19 happy_x_3 of { happy_var_3 -> case happyOut52 happy_x_4 of { happy_var_4 -> happyIn18- ((happy_var_1++[(AST.JSElision [])]++happy_var_3++happy_var_4) {- ElementList -}- ) `HappyStk` happyRest}}}+ (((happy_var_1)++[(AST.NS (AST.JSElision []) (ss happy_var_2))]++(happy_var_3)++(happy_var_4)) {- ElementList -}+ ) `HappyStk` happyRest}}}} happyReduce_70 = happySpecReduce_3 11# happyReduction_70 happyReduction_70 happy_x_3 happy_x_2 happy_x_1 = case happyOut18 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { happy_var_2 -> case happyOut52 happy_x_3 of { happy_var_3 -> happyIn18- ((happy_var_1++[(AST.JSElision [])]++happy_var_3) {- ElementList -}- )}}+ (((happy_var_1)++[(AST.NS (AST.JSElision []) (ss happy_var_2))]++(happy_var_3)) {- ElementList -}+ )}}} happyReduce_71 = happySpecReduce_1 12# happyReduction_71 happyReduction_71 happy_x_1 = happyIn19- ([(AST.JSElision [])]+ ([AST.NS (AST.JSElision []) SpanEmpty] ) happyReduce_72 = happySpecReduce_2 12# happyReduction_72@@ -1364,24 +1413,26 @@ happy_x_1 = case happyOut19 happy_x_1 of { happy_var_1 -> happyIn19- (happy_var_1 ++ [(AST.JSElision [])]+ ((happy_var_1 ++ [(AST.NS (AST.JSElision []) SpanEmpty)]) )} happyReduce_73 = happySpecReduce_2 13# happyReduction_73 happyReduction_73 happy_x_2 happy_x_1- = happyIn20- (AST.JSObjectLiteral []- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn20+ (AST.NS (AST.JSObjectLiteral []) (ss happy_var_1)+ )} happyReduce_74 = happySpecReduce_3 13# happyReduction_74 happyReduction_74 happy_x_3 happy_x_2 happy_x_1- = case happyOut21 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut21 happy_x_2 of { happy_var_2 -> happyIn20- (AST.JSObjectLiteral happy_var_2- )}+ (AST.NS (AST.JSObjectLiteral happy_var_2) (ss happy_var_1)+ )}} happyReduce_75 = happyReduce 4# 13# happyReduction_75 happyReduction_75 (happy_x_4 `HappyStk`@@ -1389,10 +1440,12 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut21 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut21 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { happy_var_3 -> happyIn20- (AST.JSObjectLiteral (happy_var_2++[AST.JSLiteral ","])- ) `HappyStk` happyRest}+ (AST.NS (AST.JSObjectLiteral (happy_var_2++[AST.NS (AST.JSLiteral ",") (ss happy_var_3)])) (ss happy_var_1)+ ) `HappyStk` happyRest}}} happyReduce_76 = happySpecReduce_1 14# happyReduction_76 happyReduction_76 happy_x_1@@ -1418,7 +1471,7 @@ = case happyOut23 happy_x_1 of { happy_var_1 -> case happyOut52 happy_x_3 of { happy_var_3 -> happyIn22- ((AST.JSPropertyNameandValue happy_var_1 happy_var_3)+ ((AST.NS (AST.JSPropertyNameandValue happy_var_1 happy_var_3) (ex happy_var_1)) )}} happyReduce_79 = happyReduce 7# 15# happyReduction_79@@ -1430,11 +1483,12 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut23 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut23 happy_x_2 of { happy_var_2 -> case happyOut97 happy_x_6 of { happy_var_6 -> happyIn22- ((AST.JSPropertyAccessor "get" happy_var_2 [] happy_var_6)- ) `HappyStk` happyRest}}+ ((AST.NS (AST.JSPropertyAccessor "get" happy_var_2 [] happy_var_6) (ss happy_var_1))+ ) `HappyStk` happyRest}}} happyReduce_80 = happyReduce 8# 15# happyReduction_80 happyReduction_80 (happy_x_8 `HappyStk`@@ -1446,12 +1500,13 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut23 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut23 happy_x_2 of { happy_var_2 -> case happyOut24 happy_x_4 of { happy_var_4 -> case happyOut97 happy_x_7 of { happy_var_7 -> happyIn22- ((AST.JSPropertyAccessor "set" happy_var_2 [happy_var_4] happy_var_7)- ) `HappyStk` happyRest}}}+ ((AST.NS (AST.JSPropertyAccessor "set" happy_var_2 [happy_var_4] happy_var_7) (ss happy_var_1))+ ) `HappyStk` happyRest}}}} happyReduce_81 = happySpecReduce_1 16# happyReduction_81 happyReduction_81 happy_x_1@@ -1504,7 +1559,7 @@ = case happyOut25 happy_x_1 of { happy_var_1 -> case happyOut55 happy_x_3 of { happy_var_3 -> happyIn25- ([AST.JSMemberSquare happy_var_1 happy_var_3]+ ([AST.NS (AST.JSMemberSquare happy_var_1 happy_var_3) (mex happy_var_1)] ) `HappyStk` happyRest}} happyReduce_88 = happySpecReduce_3 18# happyReduction_88@@ -1514,18 +1569,19 @@ = case happyOut25 happy_x_1 of { happy_var_1 -> case happyOut16 happy_x_3 of { happy_var_3 -> happyIn25- ([AST.JSMemberDot happy_var_1 happy_var_3]+ ([AST.NS (AST.JSMemberDot happy_var_1 happy_var_3) (mex happy_var_1)] )}} happyReduce_89 = happySpecReduce_3 18# happyReduction_89 happyReduction_89 happy_x_3 happy_x_2 happy_x_1- = case happyOut25 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut25 happy_x_2 of { happy_var_2 -> case happyOut28 happy_x_3 of { happy_var_3 -> happyIn25- ((((AST.JSLiteral "new "):happy_var_2)++[happy_var_3])- )}}+ ((((AST.NS (AST.JSLiteral "new ") (ss happy_var_1)):happy_var_2)++[happy_var_3])+ )}}} happyReduce_90 = happySpecReduce_1 19# happyReduction_90 happyReduction_90 happy_x_1@@ -1537,10 +1593,11 @@ happyReduce_91 = happySpecReduce_2 19# happyReduction_91 happyReduction_91 happy_x_2 happy_x_1- = case happyOut26 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut26 happy_x_2 of { happy_var_2 -> happyIn26- ((AST.JSLiteral "new "):happy_var_2- )}+ ((AST.NS (AST.JSLiteral "new ") (ss happy_var_1)):happy_var_2+ )}} happyReduce_92 = happySpecReduce_2 20# happyReduction_92 happyReduction_92 happy_x_2@@ -1557,7 +1614,7 @@ = case happyOut27 happy_x_1 of { happy_var_1 -> case happyOut28 happy_x_2 of { happy_var_2 -> happyIn27- ((happy_var_1++[(AST.JSCallExpression "()" [happy_var_2])])+ ((happy_var_1++[(AST.NS (AST.JSCallExpression "()" [happy_var_2]) (mex happy_var_1))]) )}} happyReduce_94 = happyReduce 4# 20# happyReduction_94@@ -1569,7 +1626,7 @@ = case happyOut27 happy_x_1 of { happy_var_1 -> case happyOut55 happy_x_3 of { happy_var_3 -> happyIn27- ((happy_var_1++[(AST.JSCallExpression "[]" [happy_var_3])])+ ((happy_var_1++[(AST.NS (AST.JSCallExpression "[]" [happy_var_3]) (mex happy_var_1))]) ) `HappyStk` happyRest}} happyReduce_95 = happySpecReduce_3 20# happyReduction_95@@ -1579,24 +1636,26 @@ = case happyOut27 happy_x_1 of { happy_var_1 -> case happyOut16 happy_x_3 of { happy_var_3 -> happyIn27- ((happy_var_1++[(AST.JSCallExpression "." [happy_var_3])])+ ((happy_var_1++[(AST.NS (AST.JSCallExpression "." [happy_var_3]) (mex happy_var_1))]) )}} happyReduce_96 = happySpecReduce_2 21# happyReduction_96 happyReduction_96 happy_x_2 happy_x_1- = happyIn28- ((AST.JSArguments [])- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn28+ ((AST.NS (AST.JSArguments []) (ss happy_var_1))+ )} happyReduce_97 = happySpecReduce_3 21# happyReduction_97 happyReduction_97 happy_x_3 happy_x_2 happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut29 happy_x_2 of { happy_var_2 -> happyIn28- ((AST.JSArguments happy_var_2)- )}+ ((AST.NS (AST.JSArguments happy_var_2) (ss happy_var_1))+ )}} happyReduce_98 = happySpecReduce_1 22# happyReduction_98 happyReduction_98 happy_x_1@@ -1641,7 +1700,7 @@ happy_x_1 = case happyOut31 happy_x_1 of { happy_var_1 -> happyIn31- ([(AST.JSExpressionPostfix "++" happy_var_1)]+ ([(AST.NS (AST.JSExpressionPostfix "++" happy_var_1) (mex happy_var_1))] )} happyReduce_104 = happySpecReduce_2 24# happyReduction_104@@ -1649,7 +1708,7 @@ happy_x_1 = case happyOut31 happy_x_1 of { happy_var_1 -> happyIn31- ([(AST.JSExpressionPostfix "--" happy_var_1)]+ ([(AST.NS (AST.JSExpressionPostfix "--" happy_var_1) (mex happy_var_1))] )} happyReduce_105 = happySpecReduce_1 25# happyReduction_105@@ -1662,74 +1721,83 @@ happyReduce_106 = happySpecReduce_2 25# happyReduction_106 happyReduction_106 happy_x_2 happy_x_1- = case happyOut32 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> happyIn32- (((AST.JSUnary "delete "):happy_var_2)- )}+ (((AST.NS (AST.JSUnary "delete ") (ss happy_var_1)):happy_var_2)+ )}} happyReduce_107 = happySpecReduce_2 25# happyReduction_107 happyReduction_107 happy_x_2 happy_x_1- = case happyOut32 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> happyIn32- (((AST.JSUnary "void "):happy_var_2)- )}+ (((AST.NS (AST.JSUnary "void ") (ss happy_var_1)):happy_var_2)+ )}} happyReduce_108 = happySpecReduce_2 25# happyReduction_108 happyReduction_108 happy_x_2 happy_x_1- = case happyOut32 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> happyIn32- (((AST.JSUnary "typeof "):happy_var_2)- )}+ (((AST.NS (AST.JSUnary "typeof ") (ss happy_var_1)):happy_var_2)+ )}} happyReduce_109 = happySpecReduce_2 25# happyReduction_109 happyReduction_109 happy_x_2 happy_x_1- = case happyOut32 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> happyIn32- (((AST.JSUnary "++"):happy_var_2)- )}+ (((AST.NS (AST.JSUnary "++") (ss happy_var_1)):happy_var_2)+ )}} happyReduce_110 = happySpecReduce_2 25# happyReduction_110 happyReduction_110 happy_x_2 happy_x_1- = case happyOut32 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> happyIn32- (((AST.JSUnary "--"):happy_var_2)- )}+ (((AST.NS (AST.JSUnary "--") (ss happy_var_1)):happy_var_2)+ )}} happyReduce_111 = happySpecReduce_2 25# happyReduction_111 happyReduction_111 happy_x_2 happy_x_1- = case happyOut32 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> happyIn32- (((AST.JSUnary "+"):happy_var_2)- )}+ (((AST.NS (AST.JSUnary "+") (ss happy_var_1)):happy_var_2)+ )}} happyReduce_112 = happySpecReduce_2 25# happyReduction_112 happyReduction_112 happy_x_2 happy_x_1- = case happyOut32 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> happyIn32- (((AST.JSUnary "-"):happy_var_2)- )}+ (((AST.NS (AST.JSUnary "-") (ss happy_var_1)):happy_var_2)+ )}} happyReduce_113 = happySpecReduce_2 25# happyReduction_113 happyReduction_113 happy_x_2 happy_x_1- = case happyOut32 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> happyIn32- (((AST.JSUnary "~"):happy_var_2)- )}+ (((AST.NS (AST.JSUnary "~") (ss happy_var_1)):happy_var_2)+ )}} happyReduce_114 = happySpecReduce_2 25# happyReduction_114 happyReduction_114 happy_x_2 happy_x_1- = case happyOut32 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> happyIn32- (((AST.JSUnary "!"):happy_var_2)- )}+ (((AST.NS (AST.JSUnary "!") (ss happy_var_1)):happy_var_2)+ )}} happyReduce_115 = happySpecReduce_1 26# happyReduction_115 happyReduction_115 happy_x_1@@ -1745,7 +1813,7 @@ = case happyOut33 happy_x_1 of { happy_var_1 -> case happyOut32 happy_x_3 of { happy_var_3 -> happyIn33- ([(AST.JSExpressionBinary "*" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "*" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_117 = happySpecReduce_3 26# happyReduction_117@@ -1755,7 +1823,7 @@ = case happyOut33 happy_x_1 of { happy_var_1 -> case happyOut32 happy_x_3 of { happy_var_3 -> happyIn33- ([(AST.JSExpressionBinary "/" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "/" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_118 = happySpecReduce_3 26# happyReduction_118@@ -1765,7 +1833,7 @@ = case happyOut33 happy_x_1 of { happy_var_1 -> case happyOut32 happy_x_3 of { happy_var_3 -> happyIn33- ([(AST.JSExpressionBinary "%" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "%" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_119 = happySpecReduce_3 27# happyReduction_119@@ -1775,7 +1843,7 @@ = case happyOut34 happy_x_1 of { happy_var_1 -> case happyOut33 happy_x_3 of { happy_var_3 -> happyIn34- ([(AST.JSExpressionBinary "+" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "+" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_120 = happySpecReduce_3 27# happyReduction_120@@ -1785,7 +1853,7 @@ = case happyOut34 happy_x_1 of { happy_var_1 -> case happyOut33 happy_x_3 of { happy_var_3 -> happyIn34- ([(AST.JSExpressionBinary "-" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "-" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_121 = happySpecReduce_1 27# happyReduction_121@@ -1802,7 +1870,7 @@ = case happyOut35 happy_x_1 of { happy_var_1 -> case happyOut34 happy_x_3 of { happy_var_3 -> happyIn35- ([(AST.JSExpressionBinary "<<" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "<<" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_123 = happySpecReduce_3 28# happyReduction_123@@ -1812,7 +1880,7 @@ = case happyOut35 happy_x_1 of { happy_var_1 -> case happyOut34 happy_x_3 of { happy_var_3 -> happyIn35- ([(AST.JSExpressionBinary ">>" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary ">>" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_124 = happySpecReduce_3 28# happyReduction_124@@ -1822,7 +1890,7 @@ = case happyOut35 happy_x_1 of { happy_var_1 -> case happyOut34 happy_x_3 of { happy_var_3 -> happyIn35- ([(AST.JSExpressionBinary ">>>" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary ">>>" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_125 = happySpecReduce_1 28# happyReduction_125@@ -1846,7 +1914,7 @@ = case happyOut36 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn36- ([(AST.JSExpressionBinary "<" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "<" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_128 = happySpecReduce_3 29# happyReduction_128@@ -1856,7 +1924,7 @@ = case happyOut36 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn36- ([(AST.JSExpressionBinary ">" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary ">" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_129 = happySpecReduce_3 29# happyReduction_129@@ -1866,7 +1934,7 @@ = case happyOut36 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn36- ([(AST.JSExpressionBinary "<=" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "<=" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_130 = happySpecReduce_3 29# happyReduction_130@@ -1876,7 +1944,7 @@ = case happyOut36 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn36- ([(AST.JSExpressionBinary ">=" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary ">=" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_131 = happySpecReduce_3 29# happyReduction_131@@ -1886,7 +1954,7 @@ = case happyOut36 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn36- ([(AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_132 = happySpecReduce_3 29# happyReduction_132@@ -1896,7 +1964,7 @@ = case happyOut36 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn36- ([(AST.JSExpressionBinary " in " happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary " in " happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_133 = happySpecReduce_1 30# happyReduction_133@@ -1913,7 +1981,7 @@ = case happyOut37 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn37- ([(AST.JSExpressionBinary "<" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "<" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_135 = happySpecReduce_3 30# happyReduction_135@@ -1923,7 +1991,7 @@ = case happyOut37 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn37- ([(AST.JSExpressionBinary ">" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary ">" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_136 = happySpecReduce_3 30# happyReduction_136@@ -1933,7 +2001,7 @@ = case happyOut37 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn37- ([(AST.JSExpressionBinary "<=" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "<=" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_137 = happySpecReduce_3 30# happyReduction_137@@ -1943,7 +2011,7 @@ = case happyOut37 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn37- ([(AST.JSExpressionBinary ">=" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary ">=" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_138 = happySpecReduce_3 30# happyReduction_138@@ -1953,7 +2021,7 @@ = case happyOut37 happy_x_1 of { happy_var_1 -> case happyOut35 happy_x_3 of { happy_var_3 -> happyIn37- ([(AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_139 = happySpecReduce_1 31# happyReduction_139@@ -1970,7 +2038,7 @@ = case happyOut38 happy_x_1 of { happy_var_1 -> case happyOut36 happy_x_3 of { happy_var_3 -> happyIn38- ([(AST.JSExpressionBinary "==" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "==" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_141 = happySpecReduce_3 31# happyReduction_141@@ -1980,7 +2048,7 @@ = case happyOut38 happy_x_1 of { happy_var_1 -> case happyOut36 happy_x_3 of { happy_var_3 -> happyIn38- ([(AST.JSExpressionBinary "!=" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "!=" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_142 = happySpecReduce_3 31# happyReduction_142@@ -1990,7 +2058,7 @@ = case happyOut38 happy_x_1 of { happy_var_1 -> case happyOut36 happy_x_3 of { happy_var_3 -> happyIn38- ([(AST.JSExpressionBinary "===" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "===" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_143 = happySpecReduce_3 31# happyReduction_143@@ -2000,7 +2068,7 @@ = case happyOut38 happy_x_1 of { happy_var_1 -> case happyOut36 happy_x_3 of { happy_var_3 -> happyIn38- ([(AST.JSExpressionBinary "!==" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "!==" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_144 = happySpecReduce_1 32# happyReduction_144@@ -2017,7 +2085,7 @@ = case happyOut39 happy_x_1 of { happy_var_1 -> case happyOut36 happy_x_3 of { happy_var_3 -> happyIn39- ([(AST.JSExpressionBinary "==" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "==" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_146 = happySpecReduce_3 32# happyReduction_146@@ -2027,7 +2095,7 @@ = case happyOut39 happy_x_1 of { happy_var_1 -> case happyOut36 happy_x_3 of { happy_var_3 -> happyIn39- ([(AST.JSExpressionBinary "!=" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "!=" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_147 = happySpecReduce_3 32# happyReduction_147@@ -2037,7 +2105,7 @@ = case happyOut39 happy_x_1 of { happy_var_1 -> case happyOut36 happy_x_3 of { happy_var_3 -> happyIn39- ([(AST.JSExpressionBinary "===" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "===" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_148 = happySpecReduce_3 32# happyReduction_148@@ -2047,7 +2115,7 @@ = case happyOut39 happy_x_1 of { happy_var_1 -> case happyOut36 happy_x_3 of { happy_var_3 -> happyIn39- ([(AST.JSExpressionBinary "!==" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "!==" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_149 = happySpecReduce_1 33# happyReduction_149@@ -2064,7 +2132,7 @@ = case happyOut40 happy_x_1 of { happy_var_1 -> case happyOut38 happy_x_3 of { happy_var_3 -> happyIn40- ([(AST.JSExpressionBinary "&" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "&" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_151 = happySpecReduce_1 34# happyReduction_151@@ -2081,7 +2149,7 @@ = case happyOut41 happy_x_1 of { happy_var_1 -> case happyOut39 happy_x_3 of { happy_var_3 -> happyIn41- ([(AST.JSExpressionBinary "&" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "&" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_153 = happySpecReduce_1 35# happyReduction_153@@ -2098,7 +2166,7 @@ = case happyOut42 happy_x_1 of { happy_var_1 -> case happyOut40 happy_x_3 of { happy_var_3 -> happyIn42- ([(AST.JSExpressionBinary "^" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "^" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_155 = happySpecReduce_1 36# happyReduction_155@@ -2115,7 +2183,7 @@ = case happyOut43 happy_x_1 of { happy_var_1 -> case happyOut41 happy_x_3 of { happy_var_3 -> happyIn43- ([(AST.JSExpressionBinary "^" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "^" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_157 = happySpecReduce_1 37# happyReduction_157@@ -2132,7 +2200,7 @@ = case happyOut44 happy_x_1 of { happy_var_1 -> case happyOut42 happy_x_3 of { happy_var_3 -> happyIn44- ([(AST.JSExpressionBinary "|" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "|" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_159 = happySpecReduce_1 38# happyReduction_159@@ -2149,7 +2217,7 @@ = case happyOut45 happy_x_1 of { happy_var_1 -> case happyOut43 happy_x_3 of { happy_var_3 -> happyIn45- ([(AST.JSExpressionBinary "|" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "|" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_161 = happySpecReduce_1 39# happyReduction_161@@ -2166,7 +2234,7 @@ = case happyOut46 happy_x_1 of { happy_var_1 -> case happyOut44 happy_x_3 of { happy_var_3 -> happyIn46- ([(AST.JSExpressionBinary "&&" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "&&" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_163 = happySpecReduce_1 40# happyReduction_163@@ -2183,7 +2251,7 @@ = case happyOut47 happy_x_1 of { happy_var_1 -> case happyOut45 happy_x_3 of { happy_var_3 -> happyIn47- ([(AST.JSExpressionBinary "&&" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "&&" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_165 = happySpecReduce_1 41# happyReduction_165@@ -2200,7 +2268,7 @@ = case happyOut48 happy_x_1 of { happy_var_1 -> case happyOut46 happy_x_3 of { happy_var_3 -> happyIn48- ([(AST.JSExpressionBinary "||" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "||" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_167 = happySpecReduce_1 42# happyReduction_167@@ -2217,7 +2285,7 @@ = case happyOut49 happy_x_1 of { happy_var_1 -> case happyOut47 happy_x_3 of { happy_var_3 -> happyIn49- ([(AST.JSExpressionBinary "||" happy_var_1 happy_var_3)]+ ([(AST.NS (AST.JSExpressionBinary "||" happy_var_1 happy_var_3) (mex happy_var_1))] )}} happyReduce_169 = happySpecReduce_1 43# happyReduction_169@@ -2238,7 +2306,7 @@ case happyOut52 happy_x_3 of { happy_var_3 -> case happyOut52 happy_x_5 of { happy_var_5 -> happyIn50- ([AST.JSExpressionTernary happy_var_1 happy_var_3 happy_var_5]+ ([AST.NS (AST.JSExpressionTernary happy_var_1 happy_var_3 happy_var_5) (mex happy_var_1)] ) `HappyStk` happyRest}}} happyReduce_171 = happySpecReduce_1 44# happyReduction_171@@ -2259,7 +2327,7 @@ case happyOut53 happy_x_3 of { happy_var_3 -> case happyOut53 happy_x_5 of { happy_var_5 -> happyIn51- ([AST.JSExpressionTernary happy_var_1 happy_var_3 happy_var_5]+ ([AST.NS (AST.JSExpressionTernary happy_var_1 happy_var_3 happy_var_5) (mex happy_var_1)] ) `HappyStk` happyRest}}} happyReduce_173 = happySpecReduce_1 45# happyReduction_173@@ -2302,20 +2370,21 @@ happyReduction_177 happy_x_1 = case happyOutTok happy_x_1 of { happy_var_1 -> happyIn54- (AST.JSOperator (token_literal happy_var_1)+ (AST.NS (AST.JSOperator (token_literal happy_var_1)) (ss happy_var_1) )} happyReduce_178 = happySpecReduce_1 47# happyReduction_178 happyReduction_178 happy_x_1- = happyIn54- (AST.JSOperator "="- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn54+ (AST.NS (AST.JSOperator "=") (ss happy_var_1)+ )} happyReduce_179 = happySpecReduce_1 48# happyReduction_179 happyReduction_179 happy_x_1 = case happyOut52 happy_x_1 of { happy_var_1 -> happyIn55- (AST.JSExpression happy_var_1 {- Expression -}+ (AST.NS (AST.JSExpression happy_var_1) (mex happy_var_1) {- Expression -} )} happyReduce_180 = happySpecReduce_3 48# happyReduction_180@@ -2332,7 +2401,7 @@ happyReduction_181 happy_x_1 = case happyOut53 happy_x_1 of { happy_var_1 -> happyIn56- (AST.JSExpression happy_var_1 {- Expression -}+ (AST.NS (AST.JSExpression happy_var_1) (mex happy_var_1) {- Expression -} )} happyReduce_182 = happySpecReduce_3 49# happyReduction_182@@ -2484,40 +2553,44 @@ happyReduce_203 = happySpecReduce_2 54# happyReduction_203 happyReduction_203 happy_x_2 happy_x_1- = happyIn61- ((AST.JSLiteral ";")- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn61+ ((AST.NS (AST.JSStatementBlock (AST.NS (AST.JSStatementList []) (ss happy_var_1))) (ss happy_var_1))+ )} happyReduce_204 = happySpecReduce_3 54# happyReduction_204 happyReduction_204 happy_x_3 happy_x_2 happy_x_1- = case happyOut63 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_2 of { happy_var_2 -> happyIn61- ((if (happy_var_2 == AST.JSStatementList [AST.JSLiteral ";"]) then (AST.JSLiteral ";") else (AST.JSBlock happy_var_2))- )}+ ((AST.NS (AST.JSStatementBlock happy_var_2) (ss happy_var_1))+ )}} happyReduce_205 = happySpecReduce_2 55# happyReduction_205 happyReduction_205 happy_x_2 happy_x_1- = happyIn62- ((AST.JSBlock (AST.JSStatementList []))- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn62+ ((AST.NS (AST.JSBlock (AST.NS (AST.JSStatementList []) (ss happy_var_1))) (ss happy_var_1))+ )} happyReduce_206 = happySpecReduce_3 55# happyReduction_206 happyReduction_206 happy_x_3 happy_x_2 happy_x_1- = case happyOut63 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_2 of { happy_var_2 -> happyIn62- ((AST.JSBlock happy_var_2)- )}+ ((AST.NS (AST.JSBlock happy_var_2) (ss happy_var_1))+ )}} happyReduce_207 = happySpecReduce_1 56# happyReduction_207 happyReduction_207 happy_x_1 = case happyOut59 happy_x_1 of { happy_var_1 -> happyIn63- ((AST.JSStatementList [happy_var_1])+ ((AST.NS (AST.JSStatementList [happy_var_1]) (ex happy_var_1)) )} happyReduce_208 = happySpecReduce_2 56# happyReduction_208@@ -2533,19 +2606,21 @@ happyReduction_209 happy_x_3 happy_x_2 happy_x_1- = case happyOut65 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut65 happy_x_2 of { happy_var_2 -> happyIn64- (AST.JSVariables "var" happy_var_2- )}+ (AST.NS (AST.JSVariables "var" happy_var_2) (ss happy_var_1)+ )}} happyReduce_210 = happySpecReduce_3 57# happyReduction_210 happyReduction_210 happy_x_3 happy_x_2 happy_x_1- = case happyOut65 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut65 happy_x_2 of { happy_var_2 -> happyIn64- (AST.JSVariables "const" happy_var_2- )}+ (AST.NS (AST.JSVariables "const" happy_var_2) (ss happy_var_1)+ )}} happyReduce_211 = happySpecReduce_1 58# happyReduction_211 happyReduction_211 happy_x_1@@ -2585,7 +2660,7 @@ happyReduction_215 happy_x_1 = case happyOut15 happy_x_1 of { happy_var_1 -> happyIn67- ((AST.JSVarDecl happy_var_1 [])+ ((AST.NS (AST.JSVarDecl happy_var_1 []) (ex happy_var_1) ) )} happyReduce_216 = happySpecReduce_2 60# happyReduction_216@@ -2594,7 +2669,7 @@ = case happyOut15 happy_x_1 of { happy_var_1 -> case happyOut69 happy_x_2 of { happy_var_2 -> happyIn67- ((AST.JSVarDecl happy_var_1 happy_var_2)+ ((AST.NS (AST.JSVarDecl happy_var_1 happy_var_2) (ex happy_var_1)) )}} happyReduce_217 = happySpecReduce_2 61# happyReduction_217@@ -2603,14 +2678,14 @@ = case happyOut15 happy_x_1 of { happy_var_1 -> case happyOut70 happy_x_2 of { happy_var_2 -> happyIn68- ((AST.JSVarDecl happy_var_1 happy_var_2)+ ((AST.NS (AST.JSVarDecl happy_var_1 happy_var_2) (ex happy_var_1)) )}} happyReduce_218 = happySpecReduce_1 61# happyReduction_218 happyReduction_218 happy_x_1 = case happyOut15 happy_x_1 of { happy_var_1 -> happyIn68- ((AST.JSVarDecl happy_var_1 [])+ ((AST.NS (AST.JSVarDecl happy_var_1 []) (ex happy_var_1)) )} happyReduce_219 = happySpecReduce_2 62# happyReduction_219@@ -2631,9 +2706,10 @@ happyReduce_221 = happySpecReduce_1 64# happyReduction_221 happyReduction_221 happy_x_1- = happyIn71- ((AST.JSLiteral ";")- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn71+ ((AST.NS (AST.JSLiteral ";") (ss happy_var_1))+ )} happyReduce_222 = happySpecReduce_1 65# happyReduction_222 happyReduction_222 happy_x_1@@ -2650,15 +2726,30 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut55 happy_x_3 of { happy_var_3 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut55 happy_x_3 of { happy_var_3 -> case happyOut75 happy_x_5 of { happy_var_5 -> case happyOut74 happy_x_6 of { happy_var_6 -> happyIn73 ((if (happy_var_6 /= []) then - (if (length happy_var_6 == 1) then (AST.JSIfElse happy_var_3 happy_var_5 (head happy_var_6)) - else (AST.JSIfElse happy_var_3 (AST.JSBlock (AST.JSStatementList [happy_var_5])) (last happy_var_6))) - else (AST.JSIf happy_var_3 happy_var_5))- ) `HappyStk` happyRest}}}+ (if (length happy_var_6 == 1) + then + (AST.NS (AST.JSIfElse happy_var_3 happy_var_5 (head happy_var_6)) (ss happy_var_1)) + else + (AST.NS + (AST.JSIfElse + happy_var_3 + (AST.NS + (AST.JSBlock (AST.NS (AST.JSStatementList [happy_var_5]) (ss happy_var_1)) ) + (ss happy_var_1) + )+ (last happy_var_6)+ ) + (ss happy_var_1)+ ) + ) + else (AST.NS (AST.JSIf happy_var_3 happy_var_5) (ss happy_var_1)))+ ) `HappyStk` happyRest}}}} happyReduce_224 = happySpecReduce_2 67# happyReduction_224 happyReduction_224 happy_x_2@@ -2678,7 +2769,7 @@ happy_x_1 = case happyOut60 happy_x_1 of { happy_var_1 -> happyIn75- ((AST.JSBlock (AST.JSStatementList [happy_var_1]))+ ((AST.NS (AST.JSBlock (AST.NS (AST.JSStatementList [happy_var_1]) (ex happy_var_1))) (ex happy_var_1)) )} happyReduce_227 = happySpecReduce_1 68# happyReduction_227@@ -2690,9 +2781,10 @@ happyReduce_228 = happySpecReduce_1 68# happyReduction_228 happyReduction_228 happy_x_1- = happyIn75- (AST.JSLiteral ";"- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn75+ (AST.NS (AST.JSLiteral ";") (ss happy_var_1)+ )} happyReduce_229 = happyReduce 7# 69# happyReduction_229 happyReduction_229 (happy_x_7 `HappyStk`@@ -2703,12 +2795,13 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut59 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut59 happy_x_2 of { happy_var_2 -> case happyOut55 happy_x_5 of { happy_var_5 -> case happyOut7 happy_x_7 of { happy_var_7 -> happyIn76- ((AST.JSDoWhile happy_var_2 happy_var_5 happy_var_7)- ) `HappyStk` happyRest}}}+ ((AST.NS (AST.JSDoWhile happy_var_2 happy_var_5 happy_var_7) (ss happy_var_1))+ ) `HappyStk` happyRest}}}} happyReduce_230 = happyReduce 5# 69# happyReduction_230 happyReduction_230 (happy_x_5 `HappyStk`@@ -2717,11 +2810,12 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut55 happy_x_3 of { happy_var_3 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut55 happy_x_3 of { happy_var_3 -> case happyOut59 happy_x_5 of { happy_var_5 -> happyIn76- ((AST.JSWhile happy_var_3 happy_var_5)- ) `HappyStk` happyRest}}+ ((AST.NS (AST.JSWhile happy_var_3 happy_var_5) (ss happy_var_1))+ ) `HappyStk` happyRest}}} happyReduce_231 = happyReduce 9# 69# happyReduction_231 happyReduction_231 (happy_x_9 `HappyStk`@@ -2734,13 +2828,14 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut58 happy_x_3 of { happy_var_3 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut58 happy_x_3 of { happy_var_3 -> case happyOut57 happy_x_5 of { happy_var_5 -> case happyOut57 happy_x_7 of { happy_var_7 -> case happyOut59 happy_x_9 of { happy_var_9 -> happyIn76- ((AST.JSFor happy_var_3 happy_var_5 happy_var_7 happy_var_9)- ) `HappyStk` happyRest}}}}+ ((AST.NS (AST.JSFor happy_var_3 happy_var_5 happy_var_7 happy_var_9) (ss happy_var_1))+ ) `HappyStk` happyRest}}}}} happyReduce_232 = happyReduce 10# 69# happyReduction_232 happyReduction_232 (happy_x_10 `HappyStk`@@ -2754,13 +2849,14 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut66 happy_x_4 of { happy_var_4 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut66 happy_x_4 of { happy_var_4 -> case happyOut57 happy_x_6 of { happy_var_6 -> case happyOut57 happy_x_8 of { happy_var_8 -> case happyOut59 happy_x_10 of { happy_var_10 -> happyIn76- ((AST.JSForVar happy_var_4 happy_var_6 happy_var_8 happy_var_10)- ) `HappyStk` happyRest}}}}+ ((AST.NS (AST.JSForVar happy_var_4 happy_var_6 happy_var_8 happy_var_10) (ss happy_var_1))+ ) `HappyStk` happyRest}}}}} happyReduce_233 = happyReduce 7# 69# happyReduction_233 happyReduction_233 (happy_x_7 `HappyStk`@@ -2771,12 +2867,13 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut30 happy_x_3 of { happy_var_3 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut30 happy_x_3 of { happy_var_3 -> case happyOut55 happy_x_5 of { happy_var_5 -> case happyOut59 happy_x_7 of { happy_var_7 -> happyIn76- ((AST.JSForIn happy_var_3 happy_var_5 happy_var_7)- ) `HappyStk` happyRest}}}+ ((AST.NS (AST.JSForIn happy_var_3 happy_var_5 happy_var_7) (ss happy_var_1))+ ) `HappyStk` happyRest}}}} happyReduce_234 = happyReduce 8# 69# happyReduction_234 happyReduction_234 (happy_x_8 `HappyStk`@@ -2788,66 +2885,73 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut68 happy_x_4 of { happy_var_4 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut68 happy_x_4 of { happy_var_4 -> case happyOut55 happy_x_6 of { happy_var_6 -> case happyOut59 happy_x_8 of { happy_var_8 -> happyIn76- ((AST.JSForVarIn happy_var_4 happy_var_6 happy_var_8)- ) `HappyStk` happyRest}}}+ ((AST.NS (AST.JSForVarIn happy_var_4 happy_var_6 happy_var_8) (ss happy_var_1))+ ) `HappyStk` happyRest}}}} happyReduce_235 = happySpecReduce_2 70# happyReduction_235 happyReduction_235 happy_x_2 happy_x_1- = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut7 happy_x_2 of { happy_var_2 -> happyIn77- ((AST.JSContinue [happy_var_2])- )}+ ((AST.NS (AST.JSContinue [happy_var_2]) (ss happy_var_1))+ )}} happyReduce_236 = happySpecReduce_3 70# happyReduction_236 happyReduction_236 happy_x_3 happy_x_2 happy_x_1- = case happyOut15 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_2 of { happy_var_2 -> case happyOut7 happy_x_3 of { happy_var_3 -> happyIn77- ((AST.JSContinue [happy_var_2,happy_var_3])- )}}+ ((AST.NS (AST.JSContinue [happy_var_2,happy_var_3]) (ss happy_var_1))+ )}}} happyReduce_237 = happySpecReduce_2 71# happyReduction_237 happyReduction_237 happy_x_2 happy_x_1- = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut7 happy_x_2 of { happy_var_2 -> happyIn78- ((AST.JSBreak [] [happy_var_2])- )}+ ((AST.NS (AST.JSBreak [] [happy_var_2]) (ss happy_var_1))+ )}} happyReduce_238 = happySpecReduce_3 71# happyReduction_238 happyReduction_238 happy_x_3 happy_x_2 happy_x_1- = case happyOut15 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_2 of { happy_var_2 -> case happyOut7 happy_x_3 of { happy_var_3 -> happyIn78- ((AST.JSBreak [happy_var_2] [happy_var_3])- )}}+ ((AST.NS (AST.JSBreak [happy_var_2] [happy_var_3]) (ss happy_var_1))+ )}}} happyReduce_239 = happySpecReduce_2 72# happyReduction_239 happyReduction_239 happy_x_2 happy_x_1- = case happyOut7 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut7 happy_x_2 of { happy_var_2 -> happyIn79- ((AST.JSReturn [happy_var_2])- )}+ ((AST.NS (AST.JSReturn [happy_var_2]) (ss happy_var_1))+ )}} happyReduce_240 = happySpecReduce_3 72# happyReduction_240 happyReduction_240 happy_x_3 happy_x_2 happy_x_1- = case happyOut55 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut55 happy_x_2 of { happy_var_2 -> case happyOut7 happy_x_3 of { happy_var_3 -> happyIn79- ((AST.JSReturn [happy_var_2,happy_var_3])- )}}+ ((AST.NS (AST.JSReturn [happy_var_2,happy_var_3]) (ss happy_var_1))+ )}}} happyReduce_241 = happyReduce 6# 73# happyReduction_241 happyReduction_241 (happy_x_6 `HappyStk`@@ -2857,12 +2961,13 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut55 happy_x_3 of { happy_var_3 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut55 happy_x_3 of { happy_var_3 -> case happyOut59 happy_x_5 of { happy_var_5 -> case happyOut7 happy_x_6 of { happy_var_6 -> happyIn80- ((AST.JSWith happy_var_3 [happy_var_5,happy_var_6])- ) `HappyStk` happyRest}}}+ ((AST.NS (AST.JSWith happy_var_3 [happy_var_5,happy_var_6]) (ss happy_var_1))+ ) `HappyStk` happyRest}}}} happyReduce_242 = happyReduce 5# 74# happyReduction_242 happyReduction_242 (happy_x_5 `HappyStk`@@ -2871,11 +2976,12 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut55 happy_x_3 of { happy_var_3 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut55 happy_x_3 of { happy_var_3 -> case happyOut82 happy_x_5 of { happy_var_5 -> happyIn81- ((AST.JSSwitch happy_var_3 happy_var_5)- ) `HappyStk` happyRest}}+ ((AST.NS (AST.JSSwitch happy_var_3 happy_var_5) (ss happy_var_1))+ ) `HappyStk` happyRest}}} happyReduce_243 = happySpecReduce_3 75# happyReduction_243 happyReduction_243 happy_x_3@@ -2927,36 +3033,40 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut55 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut55 happy_x_2 of { happy_var_2 -> case happyOut63 happy_x_4 of { happy_var_4 -> happyIn84- ((AST.JSCase happy_var_2 happy_var_4)- ) `HappyStk` happyRest}}+ ((AST.NS (AST.JSCase happy_var_2 happy_var_4) (ss happy_var_1))+ ) `HappyStk` happyRest}}} happyReduce_249 = happySpecReduce_3 77# happyReduction_249 happyReduction_249 happy_x_3 happy_x_2 happy_x_1- = case happyOut55 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut55 happy_x_2 of { happy_var_2 -> happyIn84- ((AST.JSCase happy_var_2 (AST.JSStatementList []))- )}+ ((AST.NS (AST.JSCase happy_var_2 (AST.NS (AST.JSStatementList []) (ss happy_var_1))) (ss happy_var_1))+ )}} happyReduce_250 = happySpecReduce_2 78# happyReduction_250 happyReduction_250 happy_x_2 happy_x_1- = happyIn85- ((AST.JSDefault (AST.JSStatementList []))- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((AST.NS (AST.JSDefault (AST.NS (AST.JSStatementList []) (ss happy_var_1))) (ss happy_var_1))+ )} happyReduce_251 = happySpecReduce_3 78# happyReduction_251 happyReduction_251 happy_x_3 happy_x_2 happy_x_1- = case happyOut63 happy_x_3 of { happy_var_3 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_3 of { happy_var_3 -> happyIn85- ((AST.JSDefault happy_var_3)- )}+ ((AST.NS (AST.JSDefault happy_var_3) (ss happy_var_1))+ )}} happyReduce_252 = happySpecReduce_3 79# happyReduction_252 happyReduction_252 happy_x_3@@ -2965,36 +3075,39 @@ = case happyOut15 happy_x_1 of { happy_var_1 -> case happyOut59 happy_x_3 of { happy_var_3 -> happyIn86- ((AST.JSLabelled happy_var_1 happy_var_3)+ ((AST.NS (AST.JSLabelled happy_var_1 happy_var_3) (ex happy_var_1)) )}} happyReduce_253 = happySpecReduce_2 80# happyReduction_253 happyReduction_253 happy_x_2 happy_x_1- = case happyOut55 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut55 happy_x_2 of { happy_var_2 -> happyIn87- ((AST.JSThrow happy_var_2)- )}+ ((AST.NS (AST.JSThrow happy_var_2) (ss happy_var_1))+ )}} happyReduce_254 = happySpecReduce_3 81# happyReduction_254 happyReduction_254 happy_x_3 happy_x_2 happy_x_1- = case happyOut62 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> case happyOut89 happy_x_3 of { happy_var_3 -> happyIn88- ((AST.JSTry happy_var_2 happy_var_3) {- TryStatement1 -}- )}}+ ((AST.NS (AST.JSTry happy_var_2 happy_var_3) (ss happy_var_1)) {- TryStatement1 -}+ )}}} happyReduce_255 = happySpecReduce_3 81# happyReduction_255 happyReduction_255 happy_x_3 happy_x_2 happy_x_1- = case happyOut62 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> case happyOut91 happy_x_3 of { happy_var_3 -> happyIn88- ((AST.JSTry happy_var_2 [happy_var_3]) {- TryStatement2 -}- )}}+ ((AST.NS (AST.JSTry happy_var_2 [happy_var_3]) (ss happy_var_1)) {- TryStatement2 -}+ )}}} happyReduce_256 = happyReduce 4# 81# happyReduction_256 happyReduction_256 (happy_x_4 `HappyStk`@@ -3002,12 +3115,13 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut62 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> case happyOut89 happy_x_3 of { happy_var_3 -> case happyOut91 happy_x_4 of { happy_var_4 -> happyIn88- ((AST.JSTry happy_var_2 (happy_var_3++[happy_var_4])) {- TryStatement3 -}- ) `HappyStk` happyRest}}}+ ((AST.NS (AST.JSTry happy_var_2 (happy_var_3++[happy_var_4])) (ss happy_var_1)) {- TryStatement3 -}+ ) `HappyStk` happyRest}}}} happyReduce_257 = happySpecReduce_1 82# happyReduction_257 happyReduction_257 happy_x_1@@ -3032,11 +3146,12 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut15 happy_x_3 of { happy_var_3 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_3 of { happy_var_3 -> case happyOut62 happy_x_5 of { happy_var_5 -> happyIn90- ((AST.JSCatch happy_var_3 [] happy_var_5)- ) `HappyStk` happyRest}}+ ((AST.NS (AST.JSCatch happy_var_3 [] happy_var_5) (ss happy_var_1))+ ) `HappyStk` happyRest}}} happyReduce_260 = happyReduce 7# 83# happyReduction_260 happyReduction_260 (happy_x_7 `HappyStk`@@ -3047,27 +3162,30 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut15 happy_x_3 of { happy_var_3 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_3 of { happy_var_3 -> case happyOut50 happy_x_5 of { happy_var_5 -> case happyOut62 happy_x_7 of { happy_var_7 -> happyIn90- ((AST.JSCatch happy_var_3 happy_var_5 happy_var_7)- ) `HappyStk` happyRest}}}+ ((AST.NS (AST.JSCatch happy_var_3 happy_var_5 happy_var_7) (ss happy_var_1))+ ) `HappyStk` happyRest}}}} happyReduce_261 = happySpecReduce_2 84# happyReduction_261 happyReduction_261 happy_x_2 happy_x_1- = case happyOut62 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_2 of { happy_var_2 -> happyIn91- ((AST.JSFinally happy_var_2)- )}+ ((AST.NS (AST.JSFinally happy_var_2) (ss happy_var_1))+ )}} happyReduce_262 = happySpecReduce_2 85# happyReduction_262 happyReduction_262 happy_x_2 happy_x_1- = happyIn92- ((AST.JSLiteral "debugger")- )+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn92+ ((AST.NS (AST.JSLiteral "debugger") (ss happy_var_1))+ )} happyReduce_263 = happyReduce 8# 86# happyReduction_263 happyReduction_263 (happy_x_8 `HappyStk`@@ -3079,12 +3197,13 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut15 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_2 of { happy_var_2 -> case happyOut96 happy_x_4 of { happy_var_4 -> case happyOut97 happy_x_7 of { happy_var_7 -> happyIn93- ((AST.JSFunction happy_var_2 happy_var_4 happy_var_7)- ) `HappyStk` happyRest}}}+ ((AST.NS (AST.JSFunction happy_var_2 happy_var_4 happy_var_7) (ss happy_var_1))+ ) `HappyStk` happyRest}}}} happyReduce_264 = happyReduce 7# 86# happyReduction_264 happyReduction_264 (happy_x_7 `HappyStk`@@ -3095,11 +3214,12 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut15 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_2 of { happy_var_2 -> case happyOut97 happy_x_6 of { happy_var_6 -> happyIn93- ((AST.JSFunction happy_var_2 [] happy_var_6)- ) `HappyStk` happyRest}}+ ((AST.NS (AST.JSFunction happy_var_2 [] happy_var_6) (ss happy_var_1))+ ) `HappyStk` happyRest}}} happyReduce_265 = happyReduce 7# 87# happyReduction_265 happyReduction_265 (happy_x_7 `HappyStk`@@ -3110,11 +3230,12 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut95 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> case happyOut97 happy_x_6 of { happy_var_6 -> happyIn94- ((AST.JSFunctionExpression happy_var_2 [] happy_var_6)- ) `HappyStk` happyRest}}+ ((AST.NS (AST.JSFunctionExpression happy_var_2 [] happy_var_6) (ss happy_var_1))+ ) `HappyStk` happyRest}}} happyReduce_266 = happyReduce 8# 87# happyReduction_266 happyReduction_266 (happy_x_8 `HappyStk`@@ -3126,12 +3247,13 @@ happy_x_2 `HappyStk` happy_x_1 `HappyStk` happyRest)- = case happyOut95 happy_x_2 of { happy_var_2 -> + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> case happyOut96 happy_x_4 of { happy_var_4 -> case happyOut97 happy_x_7 of { happy_var_7 -> happyIn94- ((AST.JSFunctionExpression happy_var_2 happy_var_4 happy_var_7)- ) `HappyStk` happyRest}}}+ ((AST.NS (AST.JSFunctionExpression happy_var_2 happy_var_4 happy_var_7) (ss happy_var_1))+ ) `HappyStk` happyRest}}}} happyReduce_267 = happySpecReduce_1 88# happyReduction_267 happyReduction_267 happy_x_1@@ -3166,12 +3288,12 @@ happyReduction_271 happy_x_1 = case happyOut99 happy_x_1 of { happy_var_1 -> happyIn97- ((AST.JSFunctionBody [happy_var_1])+ ((AST.NS (AST.JSFunctionBody [happy_var_1]) (ex happy_var_1)) )} happyReduce_272 = happySpecReduce_0 90# happyReduction_272 happyReduction_272 = happyIn97- ((AST.JSFunctionBody [])+ ((AST.NS (AST.JSFunctionBody []) SpanEmpty) ) happyReduce_273 = happySpecReduce_1 91# happyReduction_273@@ -3185,7 +3307,7 @@ happyReduction_274 happy_x_1 = case happyOut101 happy_x_1 of { happy_var_1 -> happyIn99- ((AST.JSSourceElements [happy_var_1])+ ((AST.NS (AST.JSSourceElements [happy_var_1]) (ex happy_var_1)) )} happyReduce_275 = happySpecReduce_2 92# happyReduction_275@@ -3201,7 +3323,7 @@ happyReduction_276 happy_x_1 = case happyOut101 happy_x_1 of { happy_var_1 -> happyIn100- ((AST.JSSourceElementsTop [happy_var_1])+ ((AST.NS (AST.JSSourceElementsTop [happy_var_1]) (ex happy_var_1)) )} happyReduce_277 = happySpecReduce_2 93# happyReduction_277@@ -3340,24 +3462,59 @@ happySeq = happyDontSeq +-- combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode+-- combineSourceElements (AST.JSSourceElements xs) x = (AST.JSSourceElements (xs++[x] (ss $1)) ) combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineSourceElements (AST.JSSourceElements xs) x = (AST.JSSourceElements (xs++[x]) )+combineSourceElements (AST.NS (AST.JSSourceElements xs) s1) x1@(AST.NS x s2) = (AST.NS (AST.JSSourceElements (xs++[x1])) s1) +-- combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode+-- combineSourceElementsTop (AST.JSSourceElementsTop xs) x = (AST.JSSourceElementsTop (xs++[x] (ss $1)) ) combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineSourceElementsTop (AST.JSSourceElementsTop xs) x = (AST.JSSourceElementsTop (xs++[x]) )+combineSourceElementsTop (AST.NS (AST.JSSourceElementsTop xs) s1) x1@(AST.NS x s2) = (AST.NS (AST.JSSourceElementsTop (xs++[x1])) s1) +-- combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode+-- combineStatements (AST.JSStatementList xs) (AST.JSStatementList ys) = (AST.JSStatementList (xs++ys) )+-- combineStatements (AST.JSStatementList xs) y = (AST.JSStatementList (xs++[y]) ) combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineStatements (AST.JSStatementList xs) (AST.JSStatementList ys) = (AST.JSStatementList (xs++ys) )-combineStatements (AST.JSStatementList xs) y = (AST.JSStatementList (xs++[y]) )+combineStatements (AST.NS (AST.JSStatementList xs) s1) (AST.NS (AST.JSStatementList ys) s2) = (AST.NS (AST.JSStatementList (xs++ys) ) s1)+combineStatements (AST.NS (AST.JSStatementList xs) s1) y = (AST.NS (AST.JSStatementList (xs++[y])) s1) parseError :: Token -> P a parseError = throwError . UnexpectedToken +-- flattenExpression :: AST.JSNode -> [AST.JSNode] -> AST.JSNode+-- flattenExpression (AST.JSExpression xs) e = AST.JSExpression (xs++litComma++e)+-- where+-- litComma :: [AST.JSNode]+-- litComma = [(AST.JSLiteral ",")] flattenExpression :: AST.JSNode -> [AST.JSNode] -> AST.JSNode-flattenExpression (AST.JSExpression xs) e = AST.JSExpression (xs++litComma++e)+flattenExpression (AST.NS (AST.JSExpression xs) s1) e = (AST.NS (AST.JSExpression (xs++litComma++e)) s1) where litComma :: [AST.JSNode]- litComma = [(AST.JSLiteral ",")]+ litComma = [AST.NS (AST.JSLiteral ",") SpanEmpty]++mex :: [AST.JSNode] -> SrcSpan+mex [] = SpanEmpty+mex xs = ex (head xs)++ex :: AST.JSNode -> SrcSpan+ex (AST.NS _node span) = span++ss token = toSrcSpan (token_span token) ++{-+ex :: AST.JSNode -> AST.JSNode+ex (AST.NS node span) = node++mex :: [AST.JSNode] -> [AST.JSNode]+mex xs = map ex xs++combine :: [AST.JSNode] -> AST.JSNode+combine [] = AST.NSS [] SpanEmpty+combine xs = AST.NSS (mex xs) span+ where+ (AST.NS _ span) = head xs+-} {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "<built-in>" #-}
language-javascript.cabal view
@@ -1,5 +1,5 @@ Name: language-javascript-Version: 0.3.0+Version: 0.4.0 Synopsis: Parser for JavaScript Description: Parses Javascript into an Abstract Syntax Tree (AST). Initially intended as frontend to hjsmin. Homepage: https://github.com/alanz/language-javascript@@ -33,7 +33,7 @@ Exposed-modules: Language.JavaScript.Parser Language.JavaScript.Parser.Parser Language.JavaScript.Parser.Lexer- Language.JavaScript.Parser.Grammar+ -- Language.JavaScript.Parser.Grammar Language.JavaScript.Parser.Grammar5 Language.JavaScript.Parser.AST Other-modules: Language.JavaScript.Parser.LexerUtils
runtests.hs view
@@ -162,18 +162,18 @@ , testCase "AssignExpression1" (testStmt "x|=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"|=\",JSDecimal \"1\"])") - , testCase "Block1" (testStmt "{}" "Right (JSLiteral \";\")")- , testCase "Block2" (testStmt "{x=1}" "Right (JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]]))")- , testCase "Block3" (testStmt "{x=1;y=2}" "Right (JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"y\",JSOperator \"=\",JSDecimal \"2\"]]))")- , testCase "Block4" (testStmt "{{}}" "Right (JSLiteral \";\")")- , testCase "Block5" (testStmt "{{{}}}" "Right (JSLiteral \";\")") + , testCase "Block1" (testStmt "{}" "Right (JSStatementBlock (JSStatementList []))")+ , testCase "Block2" (testStmt "{x=1}" "Right (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]]))")+ , testCase "Block3" (testStmt "{x=1;y=2}" "Right (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"y\",JSOperator \"=\",JSDecimal \"2\"]]))")+ , testCase "Block4" (testStmt "{{}}" "Right (JSStatementBlock (JSStatementList [JSStatementBlock (JSStatementList [])]))")+ , testCase "Block5" (testStmt "{{{}}}" "Right (JSStatementBlock (JSStatementList [JSStatementBlock (JSStatementList [JSStatementBlock (JSStatementList [])])]))") - , testCase "If1" (testStmt "if (1) {}" "Right (JSIf (JSExpression [JSDecimal \"1\"]) (JSLiteral \";\"))") + , testCase "If1" (testStmt "if (1) {}" "Right (JSIf (JSExpression [JSDecimal \"1\"]) (JSStatementBlock (JSStatementList [])))") - , testCase "IfElse1" (testStmt "if (1) {} else {}" "Right (JSIfElse (JSExpression [JSDecimal \"1\"]) (JSLiteral \";\") (JSLiteral \";\"))")- , testCase "IfElse2" (testStmt "if (1) x=1; else {}" "Right (JSIfElse (JSExpression [JSDecimal \"1\"]) (JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])) (JSLiteral \";\"))")+ , testCase "IfElse1" (testStmt "if (1) {} else {}" "Right (JSIfElse (JSExpression [JSDecimal \"1\"]) (JSStatementBlock (JSStatementList [])) (JSStatementBlock (JSStatementList [])))")+ , testCase "IfElse2" (testStmt "if (1) x=1; else {}" "Right (JSIfElse (JSExpression [JSDecimal \"1\"]) (JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])) (JSStatementBlock (JSStatementList [])))") - , testCase "DoWhile1" (testStmt "do {x=1} while (true);" "Right (JSDoWhile (JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])) (JSExpression [JSLiteral \"true\"]) (JSLiteral \";\"))")+ , testCase "DoWhile1" (testStmt "do {x=1} while (true);" "Right (JSDoWhile (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])) (JSExpression [JSLiteral \"true\"]) (JSLiteral \";\"))") , testCase "While1" (testStmt "while(true);" "Right (JSWhile (JSExpression [JSLiteral \"true\"]) (JSLiteral \";\"))") , testCase "For1" (testStmt "for(;;);" "Right (JSFor [] [] [] (JSLiteral \";\"))")@@ -181,11 +181,11 @@ , testCase "ForVar1" (testStmt "for(var x;;);" "Right (JSForVar [JSVarDecl (JSIdentifier \"x\") []] [] [] (JSLiteral \";\"))") , testCase "ForVar2" (testStmt "for(var x=1;;);" "Right (JSForVar [JSVarDecl (JSIdentifier \"x\") [JSDecimal \"1\"]] [] [] (JSLiteral \";\"))") - , testCase "ForVar2" (testStmt "for(var x;y;z){}" "Right (JSForVar [JSVarDecl (JSIdentifier \"x\") []] [JSExpression [JSIdentifier \"y\"]] [JSExpression [JSIdentifier \"z\"]] (JSLiteral \";\"))") + , testCase "ForVar2" (testStmt "for(var x;y;z){}" "Right (JSForVar [JSVarDecl (JSIdentifier \"x\") []] [JSExpression [JSIdentifier \"y\"]] [JSExpression [JSIdentifier \"z\"]] (JSStatementBlock (JSStatementList [])))") - , testCase "ForIn1" (testStmt "for(x in 5){}" "Right (JSForIn [JSIdentifier \"x\"] (JSExpression [JSDecimal \"5\"]) (JSLiteral \";\"))")+ , testCase "ForIn1" (testStmt "for(x in 5){}" "Right (JSForIn [JSIdentifier \"x\"] (JSExpression [JSDecimal \"5\"]) (JSStatementBlock (JSStatementList [])))") - , testCase "ForVarIn1" (testStmt "for(var x in 5){}" "Right (JSForVarIn (JSVarDecl (JSIdentifier \"x\") []) (JSExpression [JSDecimal \"5\"]) (JSLiteral \";\"))")+ , testCase "ForVarIn1" (testStmt "for(var x in 5){}" "Right (JSForVarIn (JSVarDecl (JSIdentifier \"x\") []) (JSExpression [JSDecimal \"5\"]) (JSStatementBlock (JSStatementList [])))") , testCase "Var1" (testStmt "var x=1;" "Right (JSVariables \"var\" [JSVarDecl (JSIdentifier \"x\") [JSDecimal \"1\"]])") , testCase "Var2" (testStmt "const x=1,y=2;" "Right (JSVariables \"const\" [JSVarDecl (JSIdentifier \"x\") [JSDecimal \"1\"],JSVarDecl (JSIdentifier \"y\") [JSDecimal \"2\"]])")@@ -199,7 +199,7 @@ , testCase "Return1" (testStmt "return;" "Right (JSReturn [JSLiteral \";\"])") , testCase "Return2" (testStmt "return x;" "Right (JSReturn [JSExpression [JSIdentifier \"x\"],JSLiteral \";\"])") - , testCase "With1" (testStmt "with (x) {};" "Right (JSWith (JSExpression [JSIdentifier \"x\"]) [JSLiteral \";\",JSLiteral \";\"])")+ , testCase "With1" (testStmt "with (x) {};" "Right (JSWith (JSExpression [JSIdentifier \"x\"]) [JSStatementBlock (JSStatementList []),JSLiteral \";\"])") , testCase "Labelled1" (testStmt "abc:x=1" "Right (JSLabelled (JSIdentifier \"abc\") (JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]))") @@ -242,7 +242,7 @@ , testCase "05_regex4" (testProg "x=i(/^$/g,\"\\\\$&\")" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSIdentifier \"i\",JSArguments [[JSRegEx \"/^$/g\"],[JSStringLiteral '\"' \"\\\\\\\\$&\"]]]])") - , testCase "05_regex5" (testProg "if(/^[a-z]/.test(t)){consts+=t.toUpperCase();keywords[t]=i}else consts+=(/^\\W/.test(t)?opTypeNames[t]:t);" "Right (JSSourceElementsTop [JSIfElse (JSExpression [JSMemberDot [JSRegEx \"/^[a-z]/\"] (JSIdentifier \"test\"),JSArguments [[JSIdentifier \"t\"]]]) (JSBlock (JSStatementList [JSExpression [JSIdentifier \"consts\",JSOperator \"+=\",JSMemberDot [JSIdentifier \"t\"] (JSIdentifier \"toUpperCase\"),JSArguments []],JSLiteral \";\",JSExpression [JSMemberSquare [JSIdentifier \"keywords\"] (JSExpression [JSIdentifier \"t\"]),JSOperator \"=\",JSIdentifier \"i\"]])) (JSExpression [JSIdentifier \"consts\",JSOperator \"+=\",JSExpressionParen (JSExpression [JSExpressionTernary [JSMemberDot [JSRegEx \"/^\\\\W/\"] (JSIdentifier \"test\"),JSArguments [[JSIdentifier \"t\"]]] [JSMemberSquare [JSIdentifier \"opTypeNames\"] (JSExpression [JSIdentifier \"t\"])] [JSIdentifier \"t\"]])]),JSLiteral \";\"])")+ , testCase "05_regex5" (testProg "if(/^[a-z]/.test(t)){consts+=t.toUpperCase();keywords[t]=i}else consts+=(/^\\W/.test(t)?opTypeNames[t]:t);" "Right (JSSourceElementsTop [JSIfElse (JSExpression [JSMemberDot [JSRegEx \"/^[a-z]/\"] (JSIdentifier \"test\"),JSArguments [[JSIdentifier \"t\"]]]) (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"consts\",JSOperator \"+=\",JSMemberDot [JSIdentifier \"t\"] (JSIdentifier \"toUpperCase\"),JSArguments []],JSLiteral \";\",JSExpression [JSMemberSquare [JSIdentifier \"keywords\"] (JSExpression [JSIdentifier \"t\"]),JSOperator \"=\",JSIdentifier \"i\"]])) (JSExpression [JSIdentifier \"consts\",JSOperator \"+=\",JSExpressionParen (JSExpression [JSExpressionTernary [JSMemberDot [JSRegEx \"/^\\\\W/\"] (JSIdentifier \"test\"),JSArguments [[JSIdentifier \"t\"]]] [JSMemberSquare [JSIdentifier \"opTypeNames\"] (JSExpression [JSIdentifier \"t\"])] [JSIdentifier \"t\"]])]),JSLiteral \";\"])") , testCase "if_semi" (testProg "if(x);x=1" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"x\"]) (JSLiteral \";\"),JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])") @@ -272,35 +272,40 @@ , testCase "bug2.b" (testProg "function() {\nz = function z(o) {\nreturn r;\n};}" "Right (JSSourceElementsTop [JSExpression [JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"z\",JSOperator \"=\",JSFunctionExpression [JSIdentifier \"z\"] [JSIdentifier \"o\"] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSIdentifier \"r\"],JSLiteral \";\"]]])],JSLiteral \";\"]])]])") - , testCase "02_sm.js" (testProg "{zero}\none1;two\n{three\nfour;five;\n{\nsix;{seven;}\n}\n}" "Right (JSSourceElementsTop [JSBlock (JSStatementList [JSExpression [JSIdentifier \"zero\"]]),JSExpression [JSIdentifier \"one1\"],JSLiteral \";\",JSExpression [JSIdentifier \"two\"],JSBlock (JSStatementList [JSExpression [JSIdentifier \"three\"],JSExpression [JSIdentifier \"four\"],JSLiteral \";\",JSExpression [JSIdentifier \"five\"],JSLiteral \";\",JSBlock (JSStatementList [JSExpression [JSIdentifier \"six\"],JSLiteral \";\",JSBlock (JSStatementList [JSExpression [JSIdentifier \"seven\"],JSLiteral \";\"])])])])")+ , testCase "02_sm.js" (testProg "{zero}\none1;two\n{three\nfour;five;\n{\nsix;{seven;}\n}\n}" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"zero\"]]),JSExpression [JSIdentifier \"one1\"],JSLiteral \";\",JSExpression [JSIdentifier \"two\"],JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"three\"],JSExpression [JSIdentifier \"four\"],JSLiteral \";\",JSExpression [JSIdentifier \"five\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"six\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"seven\"],JSLiteral \";\"])])])])") - , testCase "02_sm.js.2" (testProg "{zero}\nget;two\n{three\nfour;set;\n{\nsix;{seven;}\n}\n}" "Right (JSSourceElementsTop [JSBlock (JSStatementList [JSExpression [JSIdentifier \"zero\"]]),JSExpression [JSIdentifier \"get\"],JSLiteral \";\",JSExpression [JSIdentifier \"two\"],JSBlock (JSStatementList [JSExpression [JSIdentifier \"three\"],JSExpression [JSIdentifier \"four\"],JSLiteral \";\",JSExpression [JSIdentifier \"set\"],JSLiteral \";\",JSBlock (JSStatementList [JSExpression [JSIdentifier \"six\"],JSLiteral \";\",JSBlock (JSStatementList [JSExpression [JSIdentifier \"seven\"],JSLiteral \";\"])])])])")+ , testCase "02_sm.js.2" (testProg "{zero}\nget;two\n{three\nfour;set;\n{\nsix;{seven;}\n}\n}" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"zero\"]]),JSExpression [JSIdentifier \"get\"],JSLiteral \";\",JSExpression [JSIdentifier \"two\"],JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"three\"],JSExpression [JSIdentifier \"four\"],JSLiteral \";\",JSExpression [JSIdentifier \"set\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"six\"],JSLiteral \";\",JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"seven\"],JSLiteral \";\"])])])])") + , testCase "loc1" (testProgUn "x = 1\n y=2;" "Right (NS (JSSourceElementsTop [NS (JSExpression [NS (JSIdentifier \"x\") (SpanPoint {span_filename = \"\", span_row = 1, span_column = 1}),NS (JSOperator \"=\") (SpanPoint {span_filename = \"\", span_row = 1, span_column = 3}),NS (JSDecimal \"1\") (SpanPoint {span_filename = \"\", span_row = 1, span_column = 5})]) (SpanPoint {span_filename = \"\", span_row = 1, span_column = 1}),NS (JSExpression [NS (JSIdentifier \"y\") (SpanPoint {span_filename = \"\", span_row = 2, span_column = 3}),NS (JSOperator \"=\") (SpanPoint {span_filename = \"\", span_row = 2, span_column = 4}),NS (JSDecimal \"2\") (SpanPoint {span_filename = \"\", span_row = 2, span_column = 5})]) (SpanPoint {span_filename = \"\", span_row = 2, span_column = 3}),NS (JSLiteral \";\") (SpanPoint {span_filename = \"\", span_row = 2, span_column = 6})]) (SpanPoint {span_filename = \"\", span_row = 1, span_column = 1}))")+ ] srcHelloWorld = "Hello" caseHelloWorld = "JSSourceElementsTop [JSExpression [JSIdentifier \"Hello\"]]" -- @=? (show $ parse srcHelloWorld "src")- @=? (show $ readJs srcHelloWorld)+ @=? (showStripped $ readJs srcHelloWorld) -- --------------------------------------------------------------------- -- Test utilities -testLiteral literal expected = expected @=? (show $ parseUsing parseLiteral literal "src")+testLiteral literal expected = expected @=? (showStrippedMaybe $ parseUsing parseLiteral literal "src") -testPE str expected = expected @=? (show $ parseUsing parsePrimaryExpression str "src")+testPE str expected = expected @=? (showStrippedMaybe $ parseUsing parsePrimaryExpression str "src") -testStmt str expected = expected @=? (show $ parseUsing parseStatement str "src")+testStmt str expected = expected @=? (showStrippedMaybe $ parseUsing parseStatement str "src") -testProg str expected = expected @=? (show $ parseUsing parseProgram str "src")---testProg str expected = expected @=? (show $ readJs str )+--testProg str expected = expected @=? (show $ parseUsing parseProgram str "src")+testProg str expected = expected @=? (showStrippedMaybe $ parseUsing parseProgram str "src") +testProgUn str expected = expected @=? (show $ parseUsing parseProgram str "src")++ testFile fileName expected = do res <- parseFile fileName -- expected @=? (liftM show $ parseFile fileName)- (expected @=? (show res))+ (expected @=? (showStripped res)) -- Set emacs mode
src/Language/JavaScript/Parser.hs view
@@ -1,8 +1,10 @@ module Language.JavaScript.Parser (- parse- , readJs - , parseFile + PA.parse+ , PA.readJs + , PA.parseFile + , PA.showStripped + , PA.showStrippedMaybe , JSNode(..) , ParseError(..) -- Source locations @@ -18,7 +20,7 @@ import Language.JavaScript.Parser.AST import Language.JavaScript.Parser.ParseError-import Language.JavaScript.Parser.Parser+import qualified Language.JavaScript.Parser.Parser as PA import Language.JavaScript.Parser.ParserMonad import Language.JavaScript.Parser.SrcLocation
src/Language/JavaScript/Parser/AST.hs view
@@ -1,61 +1,145 @@ {-# LANGUAGE DeriveDataTypeable #-}-module Language.JavaScript.Parser.AST (JSNode(..)) where+module Language.JavaScript.Parser.AST + (+ Node (..)+ , JSNode(..)+ , SrcSpan (..)+ , showStripped + ) where import Data.Data+import Data.List+import Language.JavaScript.Parser.SrcLocation (SrcSpan(..)) -- --------------------------------------------------------------------- -data JSNode = JSArguments [[JSNode]] - | JSArrayLiteral [JSNode]- | JSBlock JSNode- | JSBreak [JSNode] [JSNode]- | JSCallExpression String [JSNode] -- type : ., (), []; rest - | JSCase JSNode JSNode- | JSCatch JSNode [JSNode] JSNode- | JSContinue [JSNode]- | JSDecimal String -- Was Integer - | JSDefault JSNode- | JSDoWhile JSNode JSNode JSNode- | JSElision [JSNode] - | JSEmpty JSNode- | JSExpression [JSNode]- | JSExpressionBinary String [JSNode] [JSNode]- | JSExpressionParen JSNode- | JSExpressionPostfix String [JSNode]- | JSExpressionTernary [JSNode] [JSNode] [JSNode]+data JSNode = NS Node SrcSpan+ deriving (Show, Eq, Read, Data, Typeable)++data Node = JSArguments [[JSNode]] + | JSArrayLiteral [JSNode] + | JSBlock JSNode + | JSBreak [JSNode] [JSNode] + | JSCallExpression String [JSNode] -- type : ., (), []; rest + | JSCase JSNode JSNode + | JSCatch JSNode [JSNode] JSNode + | JSContinue [JSNode] + | JSDecimal String -- Was Integer + | JSDefault JSNode + | JSDoWhile JSNode JSNode JSNode + | JSElision [JSNode] + | JSEmpty JSNode + | JSExpression [JSNode] + | JSExpressionBinary String [JSNode] [JSNode] + | JSExpressionParen JSNode + | JSExpressionPostfix String [JSNode] + | JSExpressionTernary [JSNode] [JSNode] [JSNode] | JSFinally JSNode - | JSFor [JSNode] [JSNode] [JSNode] JSNode - | JSForIn [JSNode] JSNode JSNode- | JSForVar [JSNode] [JSNode] [JSNode] JSNode + | JSFor [JSNode] [JSNode] [JSNode] JSNode + | JSForIn [JSNode] JSNode JSNode + | JSForVar [JSNode] [JSNode] [JSNode] JSNode | JSForVarIn JSNode JSNode JSNode - | JSFunction JSNode [JSNode] JSNode -- name, parameter list, body- | JSFunctionBody [JSNode]- | JSFunctionExpression [JSNode] [JSNode] JSNode -- name, parameter list, body - | JSHexInteger String -- Was Integer - | JSIdentifier String- | JSIf JSNode JSNode + | JSFunction JSNode [JSNode] JSNode -- name, parameter list, body+ | JSFunctionBody [JSNode] + | JSFunctionExpression [JSNode] [JSNode] JSNode -- name, parameter list, body + | JSHexInteger String -- Was Integer + | JSIdentifier String + | JSIf JSNode JSNode | JSIfElse JSNode JSNode JSNode | JSLabelled JSNode JSNode | JSLiteral String - | JSMemberDot [JSNode] JSNode- | JSMemberSquare [JSNode] JSNode+ | JSMemberDot [JSNode] JSNode + | JSMemberSquare [JSNode] JSNode | JSObjectLiteral [JSNode] | JSOperator String - | JSPropertyNameandValue JSNode [JSNode]- | JSPropertyAccessor String JSNode [JSNode] JSNode- | JSRegEx String- | JSReturn [JSNode]- | JSSourceElements [JSNode]- | JSSourceElementsTop [JSNode]- | JSStatementList [JSNode]- | JSStringLiteral Char [Char]- | JSSwitch JSNode [JSNode]+ | JSPropertyNameandValue JSNode [JSNode] + | JSPropertyAccessor String JSNode [JSNode] JSNode + | JSRegEx String + | JSReturn [JSNode] + | JSSourceElements [JSNode] + | JSSourceElementsTop [JSNode] + | JSStatementBlock JSNode + | JSStatementList [JSNode] + | JSStringLiteral Char [Char] + | JSSwitch JSNode [JSNode] | JSThrow JSNode | JSTry JSNode [JSNode] | JSUnary String - | JSVarDecl JSNode [JSNode]+ | JSVarDecl JSNode [JSNode] | JSVariables String [JSNode] - | JSWhile JSNode JSNode- | JSWith JSNode [JSNode]+ | JSWhile JSNode JSNode + | JSWith JSNode [JSNode] deriving (Show, Eq, Read, Data, Typeable) +-- Strip out the location info, leaving the original JSNode text representation+showStripped :: JSNode -> String+showStripped = ss++-- Alias for internal use+ss :: JSNode -> String+ss (NS node _) = showStrippedNode node++sss :: [JSNode] -> String+--sss xs = "[" ++ (concatMap ss xs) ++ "]"+sss xs = "[" ++ (concat (intersperse "," $ map ss xs)) ++ "]"++ssss :: [[JSNode]] -> String+--ssss xss = "[" ++ (concatMap sss xss) ++ "]"+ssss xss = "[" ++ (concat (intersperse "," $ map sss xss)) ++ "]"++showStrippedNode :: Node -> String+showStrippedNode (JSArguments xss) = "JSArguments " ++ ssss xss+showStrippedNode (JSArrayLiteral xs) = "JSArrayLiteral " ++ sss xs+showStrippedNode (JSBlock x) = "JSBlock (" ++ ss x ++ ")"+showStrippedNode (JSBreak x1s x2s) = "JSBreak " ++ sss x1s ++ " " ++ sss x2s+showStrippedNode (JSCallExpression s xs) = "JSCallExpression " ++ show s ++ " " ++ sss xs+showStrippedNode (JSCase x1 x2) = "JSCase (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"+showStrippedNode (JSCatch x1 x2s x3) = "JSCatch (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")"+showStrippedNode (JSContinue xs) = "JSContinue " ++ sss xs+showStrippedNode (JSDecimal s) = "JSDecimal " ++ show s+showStrippedNode (JSDefault x) = "JSDefault (" ++ ss x ++ ")"+showStrippedNode (JSDoWhile x1 x2 x3) = "JSDoWhile (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"+showStrippedNode (JSElision xs) = "JSElision " ++ sss xs+showStrippedNode (JSEmpty x) = "JSEmpty (" ++ ss x ++ ")"+showStrippedNode (JSExpression xs) = "JSExpression " ++ sss xs+showStrippedNode (JSExpressionBinary s x2s x3s) = "JSExpressionBinary " ++ show s ++ " " ++ sss x2s ++ " " ++ sss x3s+showStrippedNode (JSExpressionParen x) = "JSExpressionParen (" ++ ss x ++ ")"+showStrippedNode (JSExpressionPostfix s xs) = "JSExpressionPostfix " ++ show s ++ " " ++ sss xs+showStrippedNode (JSExpressionTernary x1s x2s x3s) = "JSExpressionTernary " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s+showStrippedNode (JSFinally x) = "JSFinally (" ++ ss x ++ ")"+showStrippedNode (JSFor x1s x2s x3s x4) = "JSFor " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s ++ " (" ++ ss x4 ++ ")"+showStrippedNode (JSForIn x1s x2 x3) = "JSForIn " ++ sss x1s ++ " (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"+showStrippedNode (JSForVar x1s x2s x3s x4) = "JSForVar " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s ++ " (" ++ ss x4 ++ ")"+showStrippedNode (JSForVarIn x1 x2 x3) = "JSForVarIn (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"+showStrippedNode (JSFunction x1 x2s x3) = "JSFunction (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")"+showStrippedNode (JSFunctionBody xs) = "JSFunctionBody " ++ sss xs+showStrippedNode (JSFunctionExpression x1s x2s x3) = "JSFunctionExpression " ++ sss x1s ++ " " ++ sss x2s ++ " (" ++ ss x3 ++ ")"+showStrippedNode (JSHexInteger s) = "JSHexInteger " ++ show s+showStrippedNode (JSIdentifier s) = "JSIdentifier " ++ show s+showStrippedNode (JSIf x1 x2) = "JSIf (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"+showStrippedNode (JSIfElse x1 x2 x3) = "JSIfElse (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"+showStrippedNode (JSLabelled x1 x2) = "JSLabelled (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"+showStrippedNode (JSLiteral s) = "JSLiteral " ++ show s+showStrippedNode (JSMemberDot x1s x2) = "JSMemberDot " ++ sss x1s ++ " (" ++ ss x2 ++ ")"+showStrippedNode (JSMemberSquare x1s x2) = "JSMemberSquare " ++ sss x1s ++ " (" ++ ss x2 ++ ")"+showStrippedNode (JSObjectLiteral xs) = "JSObjectLiteral " ++ sss xs+showStrippedNode (JSOperator s) = "JSOperator " ++ show s+showStrippedNode (JSPropertyNameandValue x1 x2s) = "JSPropertyNameandValue (" ++ ss x1 ++ ") " ++ sss x2s+showStrippedNode (JSPropertyAccessor s x1 x2s x3) = "JSPropertyAccessor " ++ show s ++ " (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")"+showStrippedNode (JSRegEx s) = "JSRegEx " ++ show s+showStrippedNode (JSReturn xs) = "JSReturn " ++ sss xs+showStrippedNode (JSSourceElements xs) = "JSSourceElements " ++ sss xs+showStrippedNode (JSSourceElementsTop xs) = "JSSourceElementsTop " ++ sss xs+showStrippedNode (JSStatementBlock x) = "JSStatementBlock (" ++ ss x ++ ")"+showStrippedNode (JSStatementList xs) = "JSStatementList " ++ sss xs+showStrippedNode (JSStringLiteral c s) = "JSStringLiteral " ++ show c ++ " " ++ show s+showStrippedNode (JSSwitch x x2s) = "JSSwitch (" ++ ss x ++ ") " ++ sss x2s+showStrippedNode (JSThrow x) = "JSThrow (" ++ ss x ++ ")"+showStrippedNode (JSTry x1 x2s) = "JSTry (" ++ ss x1 ++ ") " ++ sss x2s+showStrippedNode (JSUnary s) = "JSUnary " ++ show s+showStrippedNode (JSVarDecl x1 x2s) = "JSVarDecl (" ++ ss x1 ++ ") " ++ sss x2s+showStrippedNode (JSVariables s xs) = "JSVariables " ++ show s ++ " " ++ sss xs+showStrippedNode (JSWhile x1 x2) = "JSWhile (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"+showStrippedNode (JSWith x1 x2s) = "JSWith (" ++ ss x1 ++ ") " ++ sss x2s++-- EOF
− src/Language/JavaScript/Parser/Grammar.y
@@ -1,739 +0,0 @@-{-module Language.JavaScript.Parser.Grammar (- parseProgram- , parseLiteral- , parsePrimaryExpression- , parseStatement- ) where--import Control.Monad.Error.Class (throwError)-import Data.Char-import Language.JavaScript.Parser.Lexer-import Language.JavaScript.Parser.ParserMonad-import Language.JavaScript.Parser.SrcLocation-import qualified Language.JavaScript.Parser.AST as AST--}---- The name of the generated function to be exported from the module-%name parseProgram Program-%name parseLiteral Literal-%name parsePrimaryExpression PrimaryExpression-%name parseStatement Statement--%tokentype { Token }-%error { parseError }-%monad { P } { thenP } { returnP }-%lexer { lexCont } { EOFToken {} }---%token -- ';' { SemiColonToken {} }- ',' { CommaToken {} }- '?' { HookToken {} }- ':' { ColonToken {} }- '||' { OrToken {} }- '&&' { AndToken {} }- '|' { BitwiseOrToken {} }- '^' { BitwiseXorToken {} }- '&' { BitwiseAndToken {} }- '===' { StrictEqToken {} }- '==' { EqToken {} }- '=' { SimpleAssignToken {} }- '!==' { StrictNeToken {} }- '!=' { NeToken {} }- '<<' { LshToken {} }- '<=' { LeToken {} }- '<' { LtToken {} }- '>>>' { UrshToken {} }- '>>' { RshToken {} }- '>=' { GeToken {} }- '>' { GtToken {} }- '++' { IncrementToken {} }- '--' { DecrementToken {} }- '+' { PlusToken {} }- '-' { MinusToken {} }- '*' { MulToken {} }- '/' { DivToken {} }- '%' { ModToken {} }- '!' { NotToken {} }- '~' { BitwiseNotToken {} }- '.' { DotToken {} }- '[' { LeftBracketToken {} }- ']' { RightBracketToken {} }- '{' { LeftCurlyToken {} }- '}' { RightCurlyToken {} }- '(' { LeftParenToken {} }- ')' { RightParenToken {} }- '@*/' { CondcommentEndToken {} }- - 'break' { BreakToken {} }- 'case' { CaseToken {} }- 'catch' { CatchToken {} }- 'const' { ConstToken {} }- 'continue' { ContinueToken {} }- 'debugger' { DebuggerToken {} }- 'default' { DefaultToken {} }- 'delete' { DeleteToken {} }- 'do' { DoToken {} }- 'else' { ElseToken {} }- 'enum' { EnumToken {} }- 'false' { FalseToken {} }- 'finally' { FinallyToken {} }- 'for' { ForToken {} }- 'function' { FunctionToken {} }- 'if' { IfToken {} }- 'in' { InToken {} }- 'instanceof' { InstanceofToken {} }- 'new' { NewToken {} }- 'null' { NullToken {} }- 'return' { ReturnToken {} }- 'switch' { SwitchToken {} }- 'this' { ThisToken {} }- 'throw' { ThrowToken {} }- 'true' { TrueToken {} }- 'try' { TryToken {} }- 'typeof' { TypeofToken {} }- 'var' { VarToken {} }- 'void' { VoidToken {} }- 'while' { WhileToken {} }- 'with' { WithToken {} }- - - 'ident' { IdentifierToken {} }- 'decimal' { DecimalToken {} }- 'hexinteger' { HexIntegerToken {} }- 'string' { StringToken {} }- 'regex' { RegExToken {} }- 'assign' { AssignToken {} }---%%----- ----------------------------------------------------------------------- Start of GOLD Grammar for Javascript, used as a base--- ------------------------------------------------------------------------ "Name" = 'JavaScript Grammar'--- "Author" = 'M.Schnoor-Matriciani'--- "Version" = '0.9'--- "About" = 'JavaScript Grammar, Subset of ECMA Edition 3'---- "Start Symbol" = <Program>--- "Case Sensitive" = 'True'- --- ! ------------------------------------------------- Sets---- {ID Head} = {Letter} + [_] + [$]--- {ID Tail} = {Alphanumeric} + [_] + [$]--- {String Chars1} = {Printable} + {HT} - ["\] --- {String Chars2} = {Printable} + {HT} - [\''] --- {Hex Digit} = {Digit} + [ABCDEF] + [abcdef]--- {RegExp Chars} = {Letter}+{Digit}+['^']+['$']+['*']+['+']+['?']+['{']+['}']+['|']+['-']+['.']+[',']+['#']+['[']+[']']+['_']+['<']+['>']--- {Non Terminator} = {String Chars1} - {CR} - {LF}--- {Non Zero Digits}={Digit}-[0]---- ! ------------------------------------------------- Terminals---- Identifier = {ID Head}{ID Tail}*--- StringLiteral = '"' ( {String Chars1} | '\' {Printable} )* '"' | '' ( {String Chars2} | '\' {Printable} )* ''---- HexIntegerLiteral = '0x' {Hex Digit}+---- RegExp = '/' ({RegExp Chars} | '\' {Non Terminator})+ '/' ( 'g' | 'i' | 'm' )*--- DecimalLiteral= {Non Zero Digits}+ '.' {Digit}* ('e' | 'E' ) {Non Zero Digits}+ {Digit}* | {Non Zero Digits}+ '.' {Digit}* | '0' '.' {Digit}+ ('e' | 'E' ) {Non Zero Digits}+ {Digit}* | {Non Zero Digits}+ {Digit}* | '0' | '0' '.' {Digit}+---- Comment Start = '/*'--- Comment End = '*/'--- Comment Line = '//'----- ! ------------------------------------------------- Rules------ ------------------------------------------------------------------------ Sort out automatically inserted semi-colons--AutoSemi : ';' { AST.JSLiteral ";"}- | { AST.JSLiteral ""}- --- ------------------------------------------------------------------------- <Literal> ::= <Null Literal>--- | <Boolean Literal>--- | <Numeric Literal>--- | StringLiteral-Literal : NullLiteral {$1}- | BooleanLiteral {$1}- | NumericLiteral {$1}- | StringLiteral {$1}---NullLiteral : 'null' { AST.JSLiteral "null" }--BooleanLiteral : 'true' { AST.JSLiteral "true" }- | 'false' { AST.JSLiteral "false" }---- <Numeric Literal> ::= DecimalLiteral--- | HexIntegerLiteral-NumericLiteral : 'decimal' { AST.JSDecimal (token_literal $1)}- | 'hexinteger' { AST.JSHexInteger (token_literal $1)}--StringLiteral : 'string' {AST.JSStringLiteral (token_delimiter $1) (token_literal $1)}---- <Regular Expression Literal> ::= RegExp -RegularExpressionLiteral : 'regex' {AST.JSRegEx (token_literal $1)}---- <Primary Expression> ::= 'this'--- | Identifier--- | <Literal> --- | <Array Literal>--- | <Object Literal>--- | '(' <Expression> ')'--- | <Regular Expression Literal>-PrimaryExpression :: { AST.JSNode }-PrimaryExpression : 'this' { AST.JSLiteral "this" }- | Identifier { $1 {- PrimaryExpression1 -}}- | Literal { $1 {- PrimaryExpression2 -}}- | ArrayLiteral { $1 {- PrimaryExpression3 -}}- | ObjectLiteral { $1 {- PrimaryExpression4 -}}- | '(' Expression ')' { AST.JSExpressionParen $2 }- | RegularExpressionLiteral { $1 {- PrimaryExpression5 -}} -- Not in ECMA ed 5?- -Identifier : 'ident' { AST.JSIdentifier (token_literal $1) }---- <Array Literal> ::= '[' ']'--- | '[' <Elision> ']'--- | '[' <Element List> ']'--- | '[' <Element List> ',' <Elision> ']'-ArrayLiteral : '[' ']' { AST.JSArrayLiteral [] }- | '[' Elision ']' { AST.JSArrayLiteral $2 }- | '[' ElementList ']' { AST.JSArrayLiteral $2 }- | '[' ElementList ',' Elision ']' { AST.JSArrayLiteral ($2++$4) }- | '[' ElementList ',' ']' { AST.JSArrayLiteral ($2++[AST.JSLiteral ","]) }---- <Elision> ::= ','--- | <Elision> ','-Elision : ',' { [(AST.JSElision [])] }- | Elision ',' { $1 ++ [(AST.JSElision [])] }----- <Element List> ::= <Elision> <Assignment Expression>--- | <Element List> ',' <Elision> <Assignment Expression>--- | <Element List> ',' <Assignment Expression>--- | <Assignment Expression>-ElementList : Elision AssignmentExpression { ($1++$2) {- ElementList -}}- | ElementList ',' Elision AssignmentExpression { ($1++[(AST.JSElision [])]++$3++$4) {- ElementList -}}- | ElementList ',' AssignmentExpression { ($1++[(AST.JSElision [])]++$3) {- ElementList -}}- | AssignmentExpression { $1 {- ElementList -}}---- <Object Literal> ::= '{' <Property Name and Value List> '}'-ObjectLiteral :: { AST.JSNode }-ObjectLiteral : '{' PropertyNameandValueList '}' { AST.JSObjectLiteral $2 }---- <Property Name and Value List> ::= <Property Name> ':' <Assignment Expression>--- | <Property Name and Value List> ',' <Property Name> ':' <Assignment Expression>---- Seems we can have function declarations in the value part too --- TODO: And can end with a comma-PropertyNameandValueList :: { [ AST.JSNode ] }-PropertyNameandValueList : PropertyName ':' AssignmentExpression { [(AST.JSPropertyNameandValue $1 $3)] }- | PropertyName ':' FunctionDeclaration { [(AST.JSPropertyNameandValue $1 [$3])] }- | PropertyNameandValueList ',' PropertyName ':' AssignmentExpression - { ($1 ++ [(AST.JSPropertyNameandValue $3 $5)]) } - | PropertyNameandValueList ',' PropertyName ':' FunctionDeclaration - { ($1 ++ [(AST.JSPropertyNameandValue $3 [$5])]) } - | PropertyNameandValueList ',' - { ($1 ++ [(AST.JSLiteral ",")]) } - | { [] } ----- <Property Name> ::= Identifier--- | StringLiteral--- | <Numeric Literal>-PropertyName : Identifier { $1 {- PropertyName1 -}}- | StringLiteral { $1 {- PropertyName2 -}}- | NumericLiteral { $1 {- PropertyName3 -}}---- <Member Expression > ::= <Primary Expression>--- | <Function Expression>--- | <Member Expression> '[' <Expression> ']'--- | <Member Expression> '.' Identifier--- | 'new' <Member Expression> <Arguments>-MemberExpression :: { [AST.JSNode] }-MemberExpression : PrimaryExpression { [$1] {- MemberExpression -}} - | FunctionExpression { [$1] {- MemberExpression -}}- | MemberExpression '[' Expression ']' { [AST.JSMemberSquare $1 $3] }- | MemberExpression '.' Identifier { [AST.JSMemberDot $1 $3] } - | 'new' MemberExpression Arguments { (((AST.JSLiteral "new "):$2)++[$3])}---- <New Expression> ::= <Member Expression>--- | new <New Expression>-NewExpression : MemberExpression {$1 {- NewExpression -}} - | 'new' NewExpression { (AST.JSLiteral "new "):$2 }---- <Call Expression> ::= <Member Expression> <Arguments>--- | <Call Expression> <Arguments> --- | <Call Expression> '[' <Expression> ']'--- | <Call Expression> '.' Identifier-CallExpression :: { [AST.JSNode] }-CallExpression : MemberExpression Arguments { $1++[$2] {- CallExpression -} } - | CallExpression Arguments { ($1++[(AST.JSCallExpression "()" [$2])]) }- | CallExpression '[' Expression ']' { ($1++[(AST.JSCallExpression "[]" [$3])]) }- | CallExpression '.' Identifier { ($1++[(AST.JSCallExpression "." [$3])]) }----- <Arguments> ::= '(' ')'--- | '(' <Argument List> ')'-Arguments : '(' ')' { (AST.JSArguments []) } - | '(' ArgumentList ')' { (AST.JSArguments $2) }---- <Argument List> ::= <Assignment Expression>--- | <Argument List> ',' <Assignment Expression>-ArgumentList :: { [[AST.JSNode]] }-ArgumentList : AssignmentExpression { [$1] {- ArgumentList -}}- | ArgumentList ',' AssignmentExpression { $1++[$3] {- ArgumentList2 -} }----- <Left Hand Side Expression> ::= <New Expression> --- | <Call Expression>-LeftHandSideExpression : NewExpression { $1 {- LeftHandSideExpression1 -}}- | CallExpression { $1 {- LeftHandSideExpression12 -}} ---- <Postfix Expression> ::= <Left Hand Side Expression>--- | <Postfix Expression> '++'--- | <Postfix Expression> '--'-PostfixExpression : LeftHandSideExpression { $1 {- PostfixExpression -} } - | PostfixExpression '++' {[(AST.JSExpressionPostfix "++" $1)]}- | PostfixExpression '--' {[(AST.JSExpressionPostfix "--" $1)]}---- <Unary Expression> ::= <Postfix Expression>--- | 'delete' <Unary Expression>--- | 'void' <Unary Expression>--- | 'typeof' <Unary Expression>--- | '++' <Unary Expression>--- | '--' <Unary Expression>--- | '+' <Unary Expression>--- | '-' <Unary Expression>--- | '~' <Unary Expression>--- | '!' <Unary Expression>-UnaryExpression :: { [AST.JSNode] }-UnaryExpression : PostfixExpression { $1 {- UnaryExpression -} } - | 'delete' UnaryExpression { ((AST.JSUnary "delete "):$2)}- | 'void' UnaryExpression { ((AST.JSUnary "void "):$2)}- | 'typeof' UnaryExpression { ((AST.JSUnary "typeof "):$2)}- | '++' UnaryExpression { ((AST.JSUnary "++"):$2) } - | '--' UnaryExpression { ((AST.JSUnary "--"):$2)}- | '+' UnaryExpression { ((AST.JSUnary "+"):$2)}- | '-' UnaryExpression { ((AST.JSUnary "-"):$2)}- | '~' UnaryExpression { ((AST.JSUnary "~"):$2)}- | '!' UnaryExpression { ((AST.JSUnary "!"):$2)}----- <Multiplicative Expression> ::= <Unary Expression>--- | <Unary Expression> '*' <Multiplicative Expression> --- | <Unary Expression> '/' <Multiplicative Expression> --- | <Unary Expression> '%' <Multiplicative Expression> -MultiplicativeExpression :: { [AST.JSNode] }-MultiplicativeExpression : UnaryExpression { $1 {- MultiplicativeExpression -}} - | UnaryExpression '*' MultiplicativeExpression { [(AST.JSExpressionBinary "*" $1 $3)]}- | UnaryExpression '/' MultiplicativeExpression { [(AST.JSExpressionBinary "/" $1 $3)]}- | UnaryExpression '%' MultiplicativeExpression { [(AST.JSExpressionBinary "%" $1 $3)]}---- <Additive Expression> ::= <Additive Expression>'+'<Multiplicative Expression> --- | <Additive Expression>'-'<Multiplicative Expression> --- | <Multiplicative Expression> -AdditiveExpression :: { [AST.JSNode] }-AdditiveExpression : AdditiveExpression '+' MultiplicativeExpression { [(AST.JSExpressionBinary "+" $1 $3)]}- | AdditiveExpression '-' MultiplicativeExpression { [(AST.JSExpressionBinary "-" $1 $3)]}- | MultiplicativeExpression { $1 {- (goRegExp $1)-} {- AdditiveExpression -} } ------ <Shift Expression> ::= <Shift Expression> '<<' <Additive Expression>--- | <Shift Expression> '>>' <Additive Expression>--- | <Shift Expression> '>>>' <Additive Expression>--- | <Additive Expression>-ShiftExpression :: { [AST.JSNode] }-ShiftExpression : ShiftExpression '<<' AdditiveExpression { [(AST.JSExpressionBinary "<<" $1 $3)]}- | ShiftExpression '>>' AdditiveExpression { [(AST.JSExpressionBinary ">>" $1 $3)]}- | ShiftExpression '>>>' AdditiveExpression { [(AST.JSExpressionBinary ">>>" $1 $3)]}- | AdditiveExpression { $1 {- ShiftExpression -}} ---- <Relational Expression>::= <Shift Expression> --- | <Relational Expression> '<' <Shift Expression> --- | <Relational Expression> '>' <Shift Expression> --- | <Relational Expression> '<=' <Shift Expression> --- | <Relational Expression> '>=' <Shift Expression> --- | <Relational Expression> 'instanceof' <Shift Expression> -RelationalExpression :: { [AST.JSNode] }-RelationalExpression : ShiftExpression { $1 {- RelationalExpression -}} - | RelationalExpression '<' ShiftExpression { [(AST.JSExpressionBinary "<" $1 $3)]}- | RelationalExpression '>' ShiftExpression { [(AST.JSExpressionBinary ">" $1 $3)]}- | RelationalExpression '<=' ShiftExpression { [(AST.JSExpressionBinary "<=" $1 $3)]}- | RelationalExpression '>=' ShiftExpression { [(AST.JSExpressionBinary ">=" $1 $3)]}- | RelationalExpression 'instanceof' ShiftExpression { [(AST.JSExpressionBinary " instanceof " $1 $3)]}- -- Strictly speaking should have all the NoIn variants of expressions, - -- but we assume syntax is checked so no problem. Cross fingers. - | RelationalExpression 'in' ShiftExpression { [(AST.JSExpressionBinary " in " $1 $3)]}- ---- <Equality Expression> ::= <Relational Expression>--- | <Equality Expression> '==' <Relational Expression>--- | <Equality Expression> '!=' <Relational Expression>--- | <Equality Expression> '===' <Relational Expression>--- | <Equality Expression> '!==' <Relational Expression>-EqualityExpression :: { [AST.JSNode] }-EqualityExpression : RelationalExpression { $1 {- EqualityExpression -} } - | EqualityExpression '==' RelationalExpression { [(AST.JSExpressionBinary "==" $1 $3)]}- | EqualityExpression '!=' RelationalExpression { [(AST.JSExpressionBinary "!=" $1 $3)]}- | EqualityExpression '===' RelationalExpression { [(AST.JSExpressionBinary "===" $1 $3)]}- | EqualityExpression '!==' RelationalExpression { [(AST.JSExpressionBinary "!==" $1 $3)]}----- <Bitwise And Expression> ::= <Equality Expression>--- | <Bitwise And Expression> '&' <Equality Expression>-BitwiseAndExpression :: { [AST.JSNode] }-BitwiseAndExpression : EqualityExpression { $1 {- BitwiseAndExpression -} } - | BitwiseAndExpression '&' EqualityExpression { [(AST.JSExpressionBinary "&" $1 $3)]}---- <Bitwise XOr Expression> ::= <Bitwise And Expression>--- | <Bitwise XOr Expression> '^' <Bitwise And Expression>-BitwiseXOrExpression :: { [AST.JSNode] }-BitwiseXOrExpression : BitwiseAndExpression { $1 {- BitwiseXOrExpression -} } - | BitwiseXOrExpression '^' BitwiseAndExpression { [(AST.JSExpressionBinary "^" $1 $3)]}---- <Bitwise Or Expression> ::= <Bitwise XOr Expression>--- | <Bitwise Or Expression> '|' <Bitwise XOr Expression>-BitwiseOrExpression :: { [AST.JSNode] }-BitwiseOrExpression : BitwiseXOrExpression { $1 {- BitwiseOrExpression -} } - | BitwiseOrExpression '|' BitwiseXOrExpression { [(AST.JSExpressionBinary "|" $1 $3)]}---- <Logical And Expression> ::= <Bitwise Or Expression>--- | <Logical And Expression> '&&' <Bitwise Or Expression>-LogicalAndExpression :: { [AST.JSNode] }-LogicalAndExpression : BitwiseOrExpression { $1 {- LogicalAndExpression -} } - | LogicalAndExpression '&&' BitwiseOrExpression { [(AST.JSExpressionBinary "&&" $1 $3)]}---- <Logical Or Expression> ::= <Logical And Expression>--- | <Logical Or Expression> '||' <Logical And Expression>-LogicalOrExpression :: { [AST.JSNode] }-LogicalOrExpression : LogicalAndExpression { $1 {- LogicalOrExpression -} } - | LogicalOrExpression '||' LogicalAndExpression { [(AST.JSExpressionBinary "||" $1 $3)]}---- <Conditional Expression> ::= <Logical Or Expression> --- | <Logical Or Expression> '?' <Assignment Expression> ':' <Assignment Expression>-ConditionalExpression :: { [AST.JSNode] }-ConditionalExpression : LogicalOrExpression { $1 {- ConditionalExpression -} }- | LogicalOrExpression '?' AssignmentExpression ':' AssignmentExpression - { [AST.JSExpressionTernary $1 $3 $5] } - - --- <Assignment Expression> ::= <Conditional Expression>--- | <Left Hand Side Expression> <Assignment Operator> <Assignment Expression> -AssignmentExpression :: { [AST.JSNode] }-AssignmentExpression : ConditionalExpression { $1 {- AssignmentExpression -}} - | LeftHandSideExpression AssignmentOperator AssignmentExpression - { ($1++[$2]++$3) }- --- <Assignment Operator> ::= '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '>>>=' | '&=' | '^=' | '|='-AssignmentOperator :: { AST.JSNode }-AssignmentOperator : 'assign' { AST.JSOperator (token_literal $1) }- | '=' { AST.JSOperator "=" }---- <Expression> ::= <Assignment Expression>--- | <Expression> ',' <Assignment Expression>-Expression :: { AST.JSNode }-Expression : AssignmentExpression { AST.JSExpression $1 {- Expression -} } - | Expression ',' AssignmentExpression { flattenExpression $1 $3 }--ExpressionOpt :: { [AST.JSNode] }-ExpressionOpt : Expression { [$1] {- ExpressionOpt -}}- | { [] {- ExpressionOpt -}}- --- <Statement> ::= <Block>--- | <Variable Statement>--- | <Empty Statement>--- | <If Statement>--- | <If Else Statement>--- | <Iteration Statement>--- | <Continue Statement>--- | <Break Statement>--- | <Return Statement>--- | <With Statement>--- | <Labelled Statement>--- | <Switch Statement>--- | <Throw Statement>--- | <Try Statement>--- | <Expression> -Statement :: { AST.JSNode }-Statement : StatementNoEmpty { $1 {- Statement1 -}}- | EmptyStatement { $1 {- Statement3 -}}--StatementNoEmpty :: { AST.JSNode }-StatementNoEmpty : StatementBlock { $1 {- StatementNoEmpty1 -}}- | VariableStatement { $1 {- StatementNoEmpty2 -}}- -- | EmptyStatement { $1 {- StatementNoEmpty3 -}}- -- | IfStatement { $1 {- StatementNoEmpty4 -}}- | IfElseStatement { $1 {- StatementNoEmpty5 -}}- | IterationStatement { $1 {- StatementNoEmpty6 -}}- | ContinueStatement { $1 {- StatementNoEmpty7 -}}- | BreakStatement { $1 {- StatementNoEmpty8 -}}- | ReturnStatement { $1 {- StatementNoEmpty9 -}}- | WithStatement { $1 {- StatementNoEmpty10 -}}- | LabelledStatement { $1 {- StatementNoEmpty11 -}}- | SwitchStatement { $1 {- StatementNoEmpty12 -}}- | ThrowStatement { $1 {- StatementNoEmpty13 -}}- | TryStatement { $1 {- StatementNoEmpty14 -}}- | Expression { $1 {- StatementNoEmpty15 -}}--StatementBlock : '{' '}' { (AST.JSLiteral ";") }- | '{' StatementList '}' { (if ($2 == AST.JSStatementList [AST.JSLiteral ";"]) then (AST.JSLiteral ";") else (AST.JSBlock $2)) }--Block : '{' '}' { (AST.JSBlock (AST.JSStatementList [])) }- | '{' StatementList '}' { (AST.JSBlock $2) }--StatementList :: { AST.JSNode }-StatementList : Statement { (AST.JSStatementList [$1]) }- | StatementList Statement { (combineStatements $1 $2) }---- <Variable Statement> ::= var <Variable Declaration List> ';'-VariableStatement : 'var' VariableDeclarationList AutoSemi { AST.JSVariables "var" $2 }- | 'const' VariableDeclarationList AutoSemi { AST.JSVariables "const" $2 }---- <Variable Declaration List> ::= <Variable Declaration>--- | <Variable Declaration List> ',' <Variable Declaration>-VariableDeclarationList :: { [AST.JSNode] }-VariableDeclarationList : VariableDeclaration { [$1] {- VariableDeclarationList -}}- | VariableDeclarationList ',' VariableDeclaration { ($1 ++ [$3]) {- VariableDeclarationList -}}--VariableDeclaration :: { AST.JSNode }-VariableDeclaration : Identifier { (AST.JSVarDecl $1 [])}- | Identifier Initializer { (AST.JSVarDecl $1 $2)}---- <Initializer> ::= '=' <Assignment Expression>-Initializer : '=' AssignmentExpression { $2 {- Initializer -}}--EmptyStatement : ';' { (AST.JSLiteral ";") }---{---- <If Statement> ::= 'if' '(' <Expression> ')' <Statement> -IfStatement : 'if' '(' Expression ')' Statement { (AST.JSIf $3 $5) }---- <If Else Statement> ::= 'if' '(' <Expression> ')' <Statement> 'else' <Statement>-IfElseStatement : 'if' '(' Expression ')' StatementSemi 'else' Statement { (AST.JSIfElse $3 $5 $7) }--}--{--IfElseStatement : 'if' '(' Expression ')' Statement ';' 'else' Statement - { (AST.JSIfElse $3 (AST.JSBlock (AST.JSStatementList [$5])) $8) }- | 'if' '(' Expression ')' Statement 'else' Statement - { (AST.JSIfElse $3 $5 $7) }- | 'if' '(' Expression ')' Statement { (AST.JSIf $3 $5) }--} ---IfElseStatement :: { AST.JSNode }-IfElseStatement : 'if' '(' Expression ')' StatementSemi IfElseRest - { (if ($6 /= []) then - (if (length $6 == 1) then (AST.JSIfElse $3 $5 (head $6)) - else (AST.JSIfElse $3 (AST.JSBlock (AST.JSStatementList [$5])) (last $6))) - else (AST.JSIf $3 $5)) }-- -IfElseRest :: { [AST.JSNode] } -IfElseRest : -- ';' 'else' Statement { [$3,$3] } -- Horrible, but a type-compliant signal nevertheless- {- | -} 'else' Statement { [$2] }- | { [] } --{--ElsePart : 'else' { 1 }- | ';' 'else' { 2 }--}-StatementSemi : StatementNoEmpty ';' { (AST.JSBlock (AST.JSStatementList [$1])) } - | StatementNoEmpty { $1 {- StatementSemi -}}- | ';' { AST.JSLiteral ";" } ----- <Iteration Statement> ::= 'do' <Statement> 'while' '(' <Expression> ')' ';'--- | 'while' '(' <Expression> ')' <Statement> --- | 'for' '(' <Expression> ';' <Expression> ';' <Expression> ')' <Statement> --- | 'for' '(' 'var' <Variable Declaration List> ';' <Expression> ';' <Expression> ')' <Statement> --- | 'for' '(' <Left Hand Side Expression> in <Expression> ')' <Statement> --- | 'for' '(' 'var' <Variable Declaration> in <Expression> ')' <Statement> -IterationStatement :: { AST.JSNode }-IterationStatement : 'do' Statement 'while' '(' Expression ')' AutoSemi { (AST.JSDoWhile $2 $5 $7) } - | 'while' '(' Expression ')' Statement { (AST.JSWhile $3 $5) }- | 'for' '(' ExpressionOpt ';' ExpressionOpt ';' ExpressionOpt ')' Statement { (AST.JSFor $3 $5 $7 $9) }- | 'for' '(' 'var' VariableDeclarationList ';' ExpressionOpt ';' ExpressionOpt ')' Statement - { (AST.JSForVar $4 $6 $8 $10) }- | 'for' '(' LeftHandSideExpression 'in' Expression ')' Statement - { (AST.JSForIn $3 $5 $7) }- | 'for' '(' 'var' VariableDeclaration 'in' Expression ')' Statement- { (AST.JSForVarIn $4 $6 $8) }---- <Continue Statement> ::= 'continue' ';'--- | 'continue' Identifier ';'-ContinueStatement : 'continue' AutoSemi { (AST.JSContinue [$2]) } - | 'continue' Identifier AutoSemi { (AST.JSContinue [$2,$3]) } ---- <Break Statement> ::= 'break' ';'--- | 'break' Identifier ';'-BreakStatement : 'break' AutoSemi { (AST.JSBreak [] [$2]) } - | 'break' Identifier AutoSemi { (AST.JSBreak [$2] [$3]) } ---- <Return Statement> ::= 'return' ';'--- | 'return' <Expression> ';'-ReturnStatement : 'return' AutoSemi { (AST.JSReturn [$2]) } - | 'return' Expression AutoSemi { (AST.JSReturn [$2,$3]) } ---- <With Statement> ::= 'with' '(' <Expression> ')' <Statement> ';'-WithStatement : 'with' '(' Expression ')' Statement AutoSemi { (AST.JSWith $3 [$5,$6]) }---- <Switch Statement> ::= 'switch' '(' <Expression> ')' <Case Block> -SwitchStatement : 'switch' '(' Expression ')' CaseBlock { (AST.JSSwitch $3 $5) } ---- <Case Block> ::= '{' '}'--- | '{' <Case Clauses> '}'--- | '{' <Case Clauses> <Default Clause> '}'--- | '{' <Case Clauses> <Default Clause> <Case Clauses> '}'--- | '{' <Default Clause> <Case Clauses> '}'--- | '{' <Default Clause> '}'-CaseBlock :: { [AST.JSNode] }-CaseBlock : '{' '}' { [] }- | '{' CaseClauses '}' { $2 {- CaseBlock2 -}}- | '{' CaseClauses DefaultClause '}' { ($2++[$3]) {- CaseBlock3 -}}- | '{' CaseClauses DefaultClause CaseClauses '}' { ($2++($3:$4)) {- CaseBlock4 -}}- | '{' DefaultClause CaseClauses '}' { ($2:$3) {- CaseBlock5 -}}- | '{' DefaultClause '}' { [$2] {- CaseBlock6 -}}---- <Case Clauses> ::= <Case Clause>--- | <Case Clauses> <Case Clause>-CaseClauses :: { [AST.JSNode] }-CaseClauses : CaseClause { [$1] {- CaseClauses1 -}}- | CaseClauses CaseClause { ($1++[$2]) {- CaseClauses2 -}}---- <Case Clause> ::= 'case' <Expression> ':' <Statement List>--- | 'case' <Expression> ':'-CaseClause :: { AST.JSNode }-CaseClause : 'case' Expression ':' StatementList { (AST.JSCase $2 $4) }- | 'case' Expression ':' { (AST.JSCase $2 (AST.JSStatementList [])) }---- <Default Clause> ::= 'default' ':' --- | 'default' ':' <Statement List>-DefaultClause :: { AST.JSNode }-DefaultClause : 'default' ':' { (AST.JSDefault (AST.JSStatementList [])) }- | 'default' ':' StatementList { (AST.JSDefault $3) }---- <Labelled Statement> ::= Identifier ':' <Statement> -LabelledStatement : Identifier ':' Statement { (AST.JSLabelled $1 $3) }---- <Throw Statement> ::= 'throw' <Expression>-ThrowStatement : 'throw' Expression { (AST.JSThrow $2) }---- Note: worked in updated syntax as per https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch--- i.e., 0 or more catches, then an optional finally--- <Try Statement> ::= 'try' <Block> <Catch>--- | 'try' <Block> <Finally>--- | 'try' <Block> <Catch> <Finally>-TryStatement : 'try' Block Catches { (AST.JSTry $2 $3) {- TryStatement1 -} }- | 'try' Block Finally { (AST.JSTry $2 [$3]) {- TryStatement2 -} }- | 'try' Block Catches Finally { (AST.JSTry $2 ($3++[$4])) {- TryStatement3 -} }--Catches :: { [AST.JSNode] }-Catches : Catch { [$1] {- Catches 1 -} }- | Catches Catch { ($1++[$2]) {- Catches 2 -} }---- Note: worked in updated syntax as per https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch--- <Catch> ::= 'catch' '(' Identifier ')' <Block>--- becomes--- <Catch> ::= 'catch' '(' Identifier ')' <Block>--- | 'catch' '(' Identifier 'if' ConditionalExpression ')' <Block>-Catch : 'catch' '(' Identifier ')' Block { (AST.JSCatch $3 [] $5) }- | 'catch' '(' Identifier 'if' ConditionalExpression ')' Block { (AST.JSCatch $3 $5 $7) }---- <Finally> ::= 'finally' <Block>-Finally : 'finally' Block { (AST.JSFinally $2) }---- <Function Declaration> ::= 'function' Identifier '(' <Formal Parameter List> ')' '{' <Function Body> '}'--- | 'function' Identifier '(' ')' '{' <Function Body> '}'-FunctionDeclaration :: { AST.JSNode }-FunctionDeclaration : 'function' Identifier '(' FormalParameterList ')' '{' FunctionBody '}'- { (AST.JSFunction $2 $4 $7) }- | 'function' Identifier '(' ')' '{' FunctionBody '}'- { (AST.JSFunction $2 [] $6) }---- <Function Expression> ::= 'function' '(' ')' '{' <Function Body> '}'--- | 'function' '(' <Formal Parameter List> ')' '{' <Function Body> '}'-FunctionExpression :: { AST.JSNode }-FunctionExpression : 'function' IdentifierOpt '(' ')' '{' FunctionBody '}' { (AST.JSFunctionExpression $2 [] $6) }- | 'function' IdentifierOpt '(' FormalParameterList ')' '{' FunctionBody '}' { (AST.JSFunctionExpression $2 $4 $7) }--IdentifierOpt :: { [AST.JSNode] }-IdentifierOpt : Identifier { [$1] {- IdentifierOpt -}}- | { [] {- IdentifierOpt -}}---- <Formal Parameter List> ::= Identifier--- | <Formal Parameter List> ',' Identifier-FormalParameterList :: { [AST.JSNode] }-FormalParameterList : Identifier { [$1] {- FormalParameterList -}}- | FormalParameterList ',' Identifier { ($1++[$3]) }---- <Function Body> ::= <Source Elements>--- | -FunctionBody :: { AST.JSNode }-FunctionBody : SourceElements { (AST.JSFunctionBody [$1]) }- | { (AST.JSFunctionBody []) } ---- <Program> ::= <Source Elements>-Program : SourceElementsTop { $1 {- Program -}}---- <Source Elements> ::= <Source Element>--- | <Source Elements> <Source Element>-SourceElements :: { AST.JSNode }-SourceElements : SourceElement { (AST.JSSourceElements [$1]) }- | SourceElements SourceElement { (combineSourceElements $1 $2) }--SourceElementsTop :: { AST.JSNode }-SourceElementsTop : SourceElement { (AST.JSSourceElementsTop [$1]) }- | SourceElementsTop SourceElement { (combineSourceElementsTop $1 $2) }----- <Source Element> ::= <Statement>--- | <Function Declaration>-SourceElement :: { AST.JSNode }-SourceElement : Statement { $1 {- SourceElement1 -} }- | FunctionDeclaration { $1 {- SourceElement2 -} } --{--combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineSourceElements (AST.JSSourceElements xs) x = (AST.JSSourceElements (xs++[x]) )--combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineSourceElementsTop (AST.JSSourceElementsTop xs) x = (AST.JSSourceElementsTop (xs++[x]) )--combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineStatements (AST.JSStatementList xs) (AST.JSStatementList ys) = (AST.JSStatementList (xs++ys) )-combineStatements (AST.JSStatementList xs) y = (AST.JSStatementList (xs++[y]) )--parseError :: Token -> P a -parseError = throwError . UnexpectedToken --flattenExpression :: AST.JSNode -> [AST.JSNode] -> AST.JSNode-flattenExpression (AST.JSExpression xs) e = AST.JSExpression (xs++litComma++e)- where- litComma :: [AST.JSNode]- litComma = [(AST.JSLiteral ",")]---}---- Set emacs mode--- Local Variables: --- mode:haskell--- End:
src/Language/JavaScript/Parser/Grammar5.y view
@@ -162,8 +162,8 @@ -- Sort out automatically inserted semi-colons AutoSemi :: { AST.JSNode }-AutoSemi : ';' { AST.JSLiteral ";"}- | { AST.JSLiteral ""}+AutoSemi : ';' { AST.NS (AST.JSLiteral ";") (ss $1)}+ | { AST.NS (AST.JSLiteral "") SpanEmpty } -- --------------------------------------------------------------------- @@ -180,24 +180,24 @@ | RegularExpressionLiteral {$1} NullLiteral :: { AST.JSNode }-NullLiteral : 'null' { AST.JSLiteral "null" }+NullLiteral : 'null' { AST.NS (AST.JSLiteral "null") (ss $1) } BooleanLiteral :: { AST.JSNode }-BooleanLiteral : 'true' { AST.JSLiteral "true" }- | 'false' { AST.JSLiteral "false" }+BooleanLiteral : 'true' { AST.NS (AST.JSLiteral "true") (ss $1)}+ | 'false' { AST.NS (AST.JSLiteral "false") (ss $1)} -- <Numeric Literal> ::= DecimalLiteral -- | HexIntegerLiteral NumericLiteral :: { AST.JSNode }-NumericLiteral : 'decimal' { AST.JSDecimal (token_literal $1)}- | 'hexinteger' { AST.JSHexInteger (token_literal $1)}+NumericLiteral : 'decimal' { AST.NS (AST.JSDecimal (token_literal $1)) (ss $1)}+ | 'hexinteger' { AST.NS (AST.JSHexInteger (token_literal $1)) (ss $1)} StringLiteral :: { AST.JSNode }-StringLiteral : 'string' {AST.JSStringLiteral (token_delimiter $1) (token_literal $1)}+StringLiteral : 'string' { AST.NS (AST.JSStringLiteral (token_delimiter $1) (token_literal $1)) (ss $1)} -- <Regular Expression Literal> ::= RegExp RegularExpressionLiteral :: { AST.JSNode }-RegularExpressionLiteral : 'regex' {AST.JSRegEx (token_literal $1)}+RegularExpressionLiteral : 'regex' { AST.NS (AST.JSRegEx (token_literal $1)) (ss $1)} -- PrimaryExpression : See 11.1 -- this@@ -207,12 +207,12 @@ -- ObjectLiteral -- ( Expression ) PrimaryExpression :: { AST.JSNode }-PrimaryExpression : 'this' { AST.JSLiteral "this" }+PrimaryExpression : 'this' { AST.NS (AST.JSLiteral "this") (ss $1) } | Identifier { $1 {- PrimaryExpression1 -}} | Literal { $1 {- PrimaryExpression2 -}} | ArrayLiteral { $1 {- PrimaryExpression3 -}} | ObjectLiteral { $1 {- PrimaryExpression4 -}}- | '(' Expression ')' { AST.JSExpressionParen $2 }+ | '(' Expression ')' { AST.NS (AST.JSExpressionParen $2) (ss $1) } -- Identifier :: See 7.6 -- IdentifierName but not ReservedWord@@ -220,47 +220,47 @@ -- IdentifierStart -- IdentifierName IdentifierPart Identifier :: { AST.JSNode }-Identifier : 'ident' { AST.JSIdentifier (token_literal $1) }- | 'get' { AST.JSIdentifier "get" } - | 'set' { AST.JSIdentifier "set" } +Identifier : 'ident' { AST.NS (AST.JSIdentifier (token_literal $1)) (ss $1) }+ | 'get' { AST.NS (AST.JSIdentifier "get") (ss $1) } + | 'set' { AST.NS (AST.JSIdentifier "set") (ss $1) } -- TODO: make this include any reserved word too, including future ones IdentifierName :: { AST.JSNode } IdentifierName : Identifier {$1}- | 'break' { AST.JSIdentifier "break" } - | 'case' { AST.JSIdentifier "case" }- | 'catch' { AST.JSIdentifier "catch" }- | 'const' { AST.JSIdentifier "const" }- | 'continue' { AST.JSIdentifier "continue" }- | 'debugger' { AST.JSIdentifier "debugger" }- | 'default' { AST.JSIdentifier "default" }- | 'delete' { AST.JSIdentifier "delete" }- | 'do' { AST.JSIdentifier "do" }- | 'else' { AST.JSIdentifier "else" }- | 'enum' { AST.JSIdentifier "enum" }- | 'false' { AST.JSIdentifier "false" }- | 'finally' { AST.JSIdentifier "finally" }- | 'for' { AST.JSIdentifier "for" }- | 'function' { AST.JSIdentifier "function" }- | 'get' { AST.JSIdentifier "get" }- | 'if' { AST.JSIdentifier "if" }- | 'in' { AST.JSIdentifier "in" }- | 'instanceof' { AST.JSIdentifier "instanceof" }- | 'new' { AST.JSIdentifier "new" }- | 'null' { AST.JSIdentifier "null" }- | 'return' { AST.JSIdentifier "return" }- | 'set' { AST.JSIdentifier "set" }- | 'switch' { AST.JSIdentifier "switch" }- | 'this' { AST.JSIdentifier "this" }- | 'throw' { AST.JSIdentifier "throw" }- | 'true' { AST.JSIdentifier "true" }- | 'try' { AST.JSIdentifier "try" }- | 'typeof' { AST.JSIdentifier "typeof" }- | 'var' { AST.JSIdentifier "var" }- | 'void' { AST.JSIdentifier "void" }- | 'while' { AST.JSIdentifier "while" }- | 'with' { AST.JSIdentifier "with" }- | 'future' { AST.JSIdentifier (token_literal $1) } + | 'break' { AST.NS (AST.JSIdentifier "break") (ss $1) } + | 'case' { AST.NS (AST.JSIdentifier "case") (ss $1) }+ | 'catch' { AST.NS (AST.JSIdentifier "catch") (ss $1) }+ | 'const' { AST.NS (AST.JSIdentifier "const") (ss $1) }+ | 'continue' { AST.NS (AST.JSIdentifier "continue") (ss $1) }+ | 'debugger' { AST.NS (AST.JSIdentifier "debugger") (ss $1) }+ | 'default' { AST.NS (AST.JSIdentifier "default") (ss $1) }+ | 'delete' { AST.NS (AST.JSIdentifier "delete") (ss $1) }+ | 'do' { AST.NS (AST.JSIdentifier "do") (ss $1) }+ | 'else' { AST.NS (AST.JSIdentifier "else") (ss $1) }+ | 'enum' { AST.NS (AST.JSIdentifier "enum") (ss $1) }+ | 'false' { AST.NS (AST.JSIdentifier "false") (ss $1) }+ | 'finally' { AST.NS (AST.JSIdentifier "finally") (ss $1) }+ | 'for' { AST.NS (AST.JSIdentifier "for") (ss $1)}+ | 'function' { AST.NS (AST.JSIdentifier "function") (ss $1) }+ | 'get' { AST.NS (AST.JSIdentifier "get") (ss $1) }+ | 'if' { AST.NS (AST.JSIdentifier "if") (ss $1) }+ | 'in' { AST.NS (AST.JSIdentifier "in") (ss $1) }+ | 'instanceof' { AST.NS (AST.JSIdentifier "instanceof") (ss $1) }+ | 'new' { AST.NS (AST.JSIdentifier "new") (ss $1) }+ | 'null' { AST.NS (AST.JSIdentifier "null") (ss $1) }+ | 'return' { AST.NS (AST.JSIdentifier "return") (ss $1) }+ | 'set' { AST.NS (AST.JSIdentifier "set") (ss $1) }+ | 'switch' { AST.NS (AST.JSIdentifier "switch") (ss $1) }+ | 'this' { AST.NS (AST.JSIdentifier "this") (ss $1) }+ | 'throw' { AST.NS (AST.JSIdentifier "throw") (ss $1) }+ | 'true' { AST.NS (AST.JSIdentifier "true") (ss $1) }+ | 'try' { AST.NS (AST.JSIdentifier "try") (ss $1) }+ | 'typeof' { AST.NS (AST.JSIdentifier "typeof") (ss $1) }+ | 'var' { AST.NS (AST.JSIdentifier "var") (ss $1) }+ | 'void' { AST.NS (AST.JSIdentifier "void") (ss $1) }+ | 'while' { AST.NS (AST.JSIdentifier "while") (ss $1) }+ | 'with' { AST.NS (AST.JSIdentifier "with") (ss $1) }+ | 'future' { AST.NS (AST.JSIdentifier (token_literal $1)) (ss $1) } @@ -269,36 +269,36 @@ -- [ ElementList ] -- [ ElementList , Elisionopt ] ArrayLiteral :: { AST.JSNode }-ArrayLiteral : '[' ']' { AST.JSArrayLiteral [] }- | '[' Elision ']' { AST.JSArrayLiteral $2 }- | '[' ElementList ']' { AST.JSArrayLiteral $2 }- | '[' ElementList ',' Elision ']' { AST.JSArrayLiteral ($2++$4) }- | '[' ElementList ',' ']' { AST.JSArrayLiteral ($2++[AST.JSLiteral ","]) }+ArrayLiteral : '[' ']' { AST.NS (AST.JSArrayLiteral []) (ss $1) }+ | '[' Elision ']' { AST.NS (AST.JSArrayLiteral $2) (ss $1) }+ | '[' ElementList ']' { AST.NS (AST.JSArrayLiteral $2) (ss $1) }+ | '[' ElementList ',' Elision ']' { AST.NS (AST.JSArrayLiteral ($2++$4)) (ss $1) }+ | '[' ElementList ',' ']' { AST.NS (AST.JSArrayLiteral ($2++[AST.NS (AST.JSLiteral ",") (ss $3)])) (ss $1) } -- ElementList : See 11.1.4 -- Elisionopt AssignmentExpression -- ElementList , Elisionopt AssignmentExpression ElementList :: { [AST.JSNode] }-ElementList : Elision AssignmentExpression { ($1++$2) {- ElementList -}}+ElementList : Elision AssignmentExpression { (($1)++($2)) {- ElementList -}} | AssignmentExpression { $1 {- ElementList -}}- | ElementList ',' Elision AssignmentExpression { ($1++[(AST.JSElision [])]++$3++$4) {- ElementList -}}- | ElementList ',' AssignmentExpression { ($1++[(AST.JSElision [])]++$3) {- ElementList -}}+ | ElementList ',' Elision AssignmentExpression { (($1)++[(AST.NS (AST.JSElision []) (ss $2))]++($3)++($4)) {- ElementList -}}+ | ElementList ',' AssignmentExpression { (($1)++[(AST.NS (AST.JSElision []) (ss $2))]++($3)) {- ElementList -}} -- Elision : See 11.1.4 -- , -- Elision , Elision :: { [AST.JSNode] }-Elision : ',' { [(AST.JSElision [])] }- | Elision ',' { $1 ++ [(AST.JSElision [])] }+Elision : ',' { [AST.NS (AST.JSElision []) SpanEmpty] }+ | Elision ',' { ($1 ++ [(AST.NS (AST.JSElision []) SpanEmpty)]) } -- ObjectLiteral : See 11.1.5 -- { } -- { PropertyNameAndValueList } -- { PropertyNameAndValueList , } ObjectLiteral :: { AST.JSNode }-ObjectLiteral : '{' '}' { AST.JSObjectLiteral [] }- | '{' PropertyNameandValueList '}' { AST.JSObjectLiteral $2 } - | '{' PropertyNameandValueList ',' '}' { AST.JSObjectLiteral ($2++[AST.JSLiteral ","]) } +ObjectLiteral : '{' '}' { AST.NS (AST.JSObjectLiteral []) (ss $1)}+ | '{' PropertyNameandValueList '}' { AST.NS (AST.JSObjectLiteral $2) (ss $1)} + | '{' PropertyNameandValueList ',' '}' { AST.NS (AST.JSObjectLiteral ($2++[AST.NS (AST.JSLiteral ",") (ss $3)])) (ss $1)} -- <Property Name and Value List> ::= <Property Name> ':' <Assignment Expression> -- | <Property Name and Value List> ',' <Property Name> ':' <Assignment Expression>@@ -317,12 +317,12 @@ -- set PropertyName( PropertySetParameterList ) { FunctionBody } -- TODO: not clear if get/set are keywords, or just used in a specific context. Puzzling. PropertyAssignment :: { AST.JSNode }-PropertyAssignment : PropertyName ':' AssignmentExpression { (AST.JSPropertyNameandValue $1 $3) }+PropertyAssignment : PropertyName ':' AssignmentExpression { (AST.NS (AST.JSPropertyNameandValue $1 $3) (ex $1)) } -- Should be "get" in next, but is not a Token- | 'get' PropertyName '(' ')' '{' FunctionBody '}' { (AST.JSPropertyAccessor "get" $2 [] $6) }+ | 'get' PropertyName '(' ')' '{' FunctionBody '}' { (AST.NS (AST.JSPropertyAccessor "get" $2 [] $6) (ss $1)) } -- Should be "set" in next, but is not a Token | 'set' PropertyName '(' PropertySetParameterList ')' '{' FunctionBody '}' - { (AST.JSPropertyAccessor "set" $2 [$4] $7) }+ { (AST.NS (AST.JSPropertyAccessor "set" $2 [$4] $7) (ss $1)) } -- PropertyName : See 11.1.5 -- IdentifierName@@ -347,18 +347,16 @@ MemberExpression :: { [AST.JSNode] } MemberExpression : PrimaryExpression { [$1] {- MemberExpression -}} | FunctionExpression { [$1] {- MemberExpression -}}- | MemberExpression '[' Expression ']' { [AST.JSMemberSquare $1 $3] }- | MemberExpression '.' IdentifierName { [AST.JSMemberDot $1 $3] } - | 'new' MemberExpression Arguments { (((AST.JSLiteral "new "):$2)++[$3])}---- MARK --+ | MemberExpression '[' Expression ']' { [AST.NS (AST.JSMemberSquare $1 $3) (mex $1)] }+ | MemberExpression '.' IdentifierName { [AST.NS (AST.JSMemberDot $1 $3) (mex $1)] } + | 'new' MemberExpression Arguments { (((AST.NS (AST.JSLiteral "new ") (ss $1)):$2)++[$3])} -- NewExpression : See 11.2 -- MemberExpression -- new NewExpression NewExpression :: { [AST.JSNode] } NewExpression : MemberExpression {$1 {- NewExpression -}} - | 'new' NewExpression { (AST.JSLiteral "new "):$2 }+ | 'new' NewExpression { (AST.NS (AST.JSLiteral "new ") (ss $1)):$2 } -- CallExpression : See 11.2 -- MemberExpression Arguments@@ -367,16 +365,16 @@ -- CallExpression . IdentifierName CallExpression :: { [AST.JSNode] } CallExpression : MemberExpression Arguments { $1++[$2] {- CallExpression -} } - | CallExpression Arguments { ($1++[(AST.JSCallExpression "()" [$2])]) }- | CallExpression '[' Expression ']' { ($1++[(AST.JSCallExpression "[]" [$3])]) }- | CallExpression '.' IdentifierName { ($1++[(AST.JSCallExpression "." [$3])]) }+ | CallExpression Arguments { ($1++[(AST.NS (AST.JSCallExpression "()" [$2]) (mex $1))]) }+ | CallExpression '[' Expression ']' { ($1++[(AST.NS (AST.JSCallExpression "[]" [$3]) (mex $1))]) }+ | CallExpression '.' IdentifierName { ($1++[(AST.NS (AST.JSCallExpression "." [$3]) (mex $1))]) } -- Arguments : See 11.2 -- () -- ( ArgumentList ) Arguments :: { AST.JSNode }-Arguments : '(' ')' { (AST.JSArguments []) } - | '(' ArgumentList ')' { (AST.JSArguments $2) }+Arguments : '(' ')' { (AST.NS (AST.JSArguments []) (ss $1)) } + | '(' ArgumentList ')' { (AST.NS (AST.JSArguments $2) (ss $1)) } -- ArgumentList : See 11.2 -- AssignmentExpression@@ -400,8 +398,8 @@ -- LeftHandSideExpression -- PostfixExpression :: { [AST.JSNode] } PostfixExpression : LeftHandSideExpression { $1 {- PostfixExpression -} } - | PostfixExpression '++' {[(AST.JSExpressionPostfix "++" $1)]}- | PostfixExpression '--' {[(AST.JSExpressionPostfix "--" $1)]}+ | PostfixExpression '++' {[(AST.NS (AST.JSExpressionPostfix "++" $1) (mex $1))]}+ | PostfixExpression '--' {[(AST.NS (AST.JSExpressionPostfix "--" $1) (mex $1))]} -- UnaryExpression : See 11.4 -- PostfixExpression@@ -416,15 +414,15 @@ -- ! UnaryExpression UnaryExpression :: { [AST.JSNode] } UnaryExpression : PostfixExpression { $1 {- UnaryExpression -} } - | 'delete' UnaryExpression { ((AST.JSUnary "delete "):$2)}- | 'void' UnaryExpression { ((AST.JSUnary "void "):$2)}- | 'typeof' UnaryExpression { ((AST.JSUnary "typeof "):$2)}- | '++' UnaryExpression { ((AST.JSUnary "++"):$2) } - | '--' UnaryExpression { ((AST.JSUnary "--"):$2)}- | '+' UnaryExpression { ((AST.JSUnary "+"):$2)}- | '-' UnaryExpression { ((AST.JSUnary "-"):$2)}- | '~' UnaryExpression { ((AST.JSUnary "~"):$2)}- | '!' UnaryExpression { ((AST.JSUnary "!"):$2)}+ | 'delete' UnaryExpression { ((AST.NS (AST.JSUnary "delete ") (ss $1)):$2)}+ | 'void' UnaryExpression { ((AST.NS (AST.JSUnary "void ") (ss $1)):$2)}+ | 'typeof' UnaryExpression { ((AST.NS (AST.JSUnary "typeof ") (ss $1)):$2)}+ | '++' UnaryExpression { ((AST.NS (AST.JSUnary "++") (ss $1)):$2) } + | '--' UnaryExpression { ((AST.NS (AST.JSUnary "--") (ss $1)):$2)}+ | '+' UnaryExpression { ((AST.NS (AST.JSUnary "+") (ss $1)):$2)}+ | '-' UnaryExpression { ((AST.NS (AST.JSUnary "-") (ss $1)):$2)}+ | '~' UnaryExpression { ((AST.NS (AST.JSUnary "~") (ss $1)):$2)}+ | '!' UnaryExpression { ((AST.NS (AST.JSUnary "!") (ss $1)):$2)} -- MultiplicativeExpression : See 11.5 -- UnaryExpression@@ -433,17 +431,17 @@ -- MultiplicativeExpression % UnaryExpression MultiplicativeExpression :: { [AST.JSNode] } MultiplicativeExpression : UnaryExpression { $1 {- MultiplicativeExpression -}} - | MultiplicativeExpression '*' UnaryExpression { [(AST.JSExpressionBinary "*" $1 $3)]}- | MultiplicativeExpression '/' UnaryExpression { [(AST.JSExpressionBinary "/" $1 $3)]}- | MultiplicativeExpression '%' UnaryExpression { [(AST.JSExpressionBinary "%" $1 $3)]}+ | MultiplicativeExpression '*' UnaryExpression { [(AST.NS (AST.JSExpressionBinary "*" $1 $3) (mex $1))]}+ | MultiplicativeExpression '/' UnaryExpression { [(AST.NS (AST.JSExpressionBinary "/" $1 $3) (mex $1))]}+ | MultiplicativeExpression '%' UnaryExpression { [(AST.NS (AST.JSExpressionBinary "%" $1 $3) (mex $1))]} -- AdditiveExpression : See 11.6 -- MultiplicativeExpression -- AdditiveExpression + MultiplicativeExpression -- AdditiveExpression - MultiplicativeExpression AdditiveExpression :: { [AST.JSNode] }-AdditiveExpression : AdditiveExpression '+' MultiplicativeExpression { [(AST.JSExpressionBinary "+" $1 $3)]}- | AdditiveExpression '-' MultiplicativeExpression { [(AST.JSExpressionBinary "-" $1 $3)]}+AdditiveExpression : AdditiveExpression '+' MultiplicativeExpression { [(AST.NS (AST.JSExpressionBinary "+" $1 $3) (mex $1))]}+ | AdditiveExpression '-' MultiplicativeExpression { [(AST.NS (AST.JSExpressionBinary "-" $1 $3) (mex $1))]} | MultiplicativeExpression { $1 {- (goRegExp $1)-} {- AdditiveExpression -} } -- ShiftExpression : See 11.7@@ -452,9 +450,9 @@ -- ShiftExpression >> AdditiveExpression -- ShiftExpression >>> AdditiveExpression ShiftExpression :: { [AST.JSNode] }-ShiftExpression : ShiftExpression '<<' AdditiveExpression { [(AST.JSExpressionBinary "<<" $1 $3)]}- | ShiftExpression '>>' AdditiveExpression { [(AST.JSExpressionBinary ">>" $1 $3)]}- | ShiftExpression '>>>' AdditiveExpression { [(AST.JSExpressionBinary ">>>" $1 $3)]}+ShiftExpression : ShiftExpression '<<' AdditiveExpression { [(AST.NS (AST.JSExpressionBinary "<<" $1 $3) (mex $1))]}+ | ShiftExpression '>>' AdditiveExpression { [(AST.NS (AST.JSExpressionBinary ">>" $1 $3) (mex $1))]}+ | ShiftExpression '>>>' AdditiveExpression { [(AST.NS (AST.JSExpressionBinary ">>>" $1 $3) (mex $1))]} | AdditiveExpression { $1 {- ShiftExpression -}} -- RelationalExpression : See 11.8@@ -467,12 +465,12 @@ -- RelationalExpression in ShiftExpression RelationalExpression :: { [AST.JSNode] } RelationalExpression : ShiftExpression { $1 {- RelationalExpression -}} - | RelationalExpression '<' ShiftExpression { [(AST.JSExpressionBinary "<" $1 $3)]}- | RelationalExpression '>' ShiftExpression { [(AST.JSExpressionBinary ">" $1 $3)]}- | RelationalExpression '<=' ShiftExpression { [(AST.JSExpressionBinary "<=" $1 $3)]}- | RelationalExpression '>=' ShiftExpression { [(AST.JSExpressionBinary ">=" $1 $3)]}- | RelationalExpression 'instanceof' ShiftExpression { [(AST.JSExpressionBinary " instanceof " $1 $3)]}- | RelationalExpression 'in' ShiftExpression { [(AST.JSExpressionBinary " in " $1 $3)]}+ | RelationalExpression '<' ShiftExpression { [(AST.NS (AST.JSExpressionBinary "<" $1 $3) (mex $1))]}+ | RelationalExpression '>' ShiftExpression { [(AST.NS (AST.JSExpressionBinary ">" $1 $3) (mex $1))]}+ | RelationalExpression '<=' ShiftExpression { [(AST.NS (AST.JSExpressionBinary "<=" $1 $3) (mex $1))]}+ | RelationalExpression '>=' ShiftExpression { [(AST.NS (AST.JSExpressionBinary ">=" $1 $3) (mex $1))]}+ | RelationalExpression 'instanceof' ShiftExpression { [(AST.NS (AST.JSExpressionBinary " instanceof " $1 $3) (mex $1))]}+ | RelationalExpression 'in' ShiftExpression { [(AST.NS (AST.JSExpressionBinary " in " $1 $3) (mex $1))]} -- RelationalExpressionNoIn : See 11.8 -- ShiftExpression@@ -483,11 +481,11 @@ -- RelationalExpressionNoIn instanceof ShiftExpression RelationalExpressionNoIn :: { [AST.JSNode] } RelationalExpressionNoIn : ShiftExpression { $1 {- RelationalExpressionNoIn -}} - | RelationalExpressionNoIn '<' ShiftExpression { [(AST.JSExpressionBinary "<" $1 $3)]}- | RelationalExpressionNoIn '>' ShiftExpression { [(AST.JSExpressionBinary ">" $1 $3)]}- | RelationalExpressionNoIn '<=' ShiftExpression { [(AST.JSExpressionBinary "<=" $1 $3)]}- | RelationalExpressionNoIn '>=' ShiftExpression { [(AST.JSExpressionBinary ">=" $1 $3)]}- | RelationalExpressionNoIn 'instanceof' ShiftExpression { [(AST.JSExpressionBinary " instanceof " $1 $3)]}+ | RelationalExpressionNoIn '<' ShiftExpression { [(AST.NS (AST.JSExpressionBinary "<" $1 $3) (mex $1))]}+ | RelationalExpressionNoIn '>' ShiftExpression { [(AST.NS (AST.JSExpressionBinary ">" $1 $3) (mex $1))]}+ | RelationalExpressionNoIn '<=' ShiftExpression { [(AST.NS (AST.JSExpressionBinary "<=" $1 $3) (mex $1))]}+ | RelationalExpressionNoIn '>=' ShiftExpression { [(AST.NS (AST.JSExpressionBinary ">=" $1 $3) (mex $1))]}+ | RelationalExpressionNoIn 'instanceof' ShiftExpression { [(AST.NS (AST.JSExpressionBinary " instanceof " $1 $3) (mex $1))]} -- EqualityExpression : See 11.9 -- RelationalExpression@@ -497,10 +495,10 @@ -- EqualityExpression !== RelationalExpression EqualityExpression :: { [AST.JSNode] } EqualityExpression : RelationalExpression { $1 {- EqualityExpression -} } - | EqualityExpression '==' RelationalExpression { [(AST.JSExpressionBinary "==" $1 $3)]}- | EqualityExpression '!=' RelationalExpression { [(AST.JSExpressionBinary "!=" $1 $3)]}- | EqualityExpression '===' RelationalExpression { [(AST.JSExpressionBinary "===" $1 $3)]}- | EqualityExpression '!==' RelationalExpression { [(AST.JSExpressionBinary "!==" $1 $3)]}+ | EqualityExpression '==' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "==" $1 $3) (mex $1))]}+ | EqualityExpression '!=' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "!=" $1 $3) (mex $1))]}+ | EqualityExpression '===' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "===" $1 $3) (mex $1))]}+ | EqualityExpression '!==' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "!==" $1 $3) (mex $1))]} -- EqualityExpressionNoIn : See 11.9 -- RelationalExpressionNoIn@@ -510,80 +508,80 @@ -- EqualityExpressionNoIn !== RelationalExpressionNoIn EqualityExpressionNoIn :: { [AST.JSNode] } EqualityExpressionNoIn : RelationalExpressionNoIn { $1 {- EqualityExpressionNoIn -} } - | EqualityExpressionNoIn '==' RelationalExpression { [(AST.JSExpressionBinary "==" $1 $3)]}- | EqualityExpressionNoIn '!=' RelationalExpression { [(AST.JSExpressionBinary "!=" $1 $3)]}- | EqualityExpressionNoIn '===' RelationalExpression { [(AST.JSExpressionBinary "===" $1 $3)]}- | EqualityExpressionNoIn '!==' RelationalExpression { [(AST.JSExpressionBinary "!==" $1 $3)]}+ | EqualityExpressionNoIn '==' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "==" $1 $3) (mex $1))]}+ | EqualityExpressionNoIn '!=' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "!=" $1 $3) (mex $1))]}+ | EqualityExpressionNoIn '===' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "===" $1 $3) (mex $1))]}+ | EqualityExpressionNoIn '!==' RelationalExpression { [(AST.NS (AST.JSExpressionBinary "!==" $1 $3) (mex $1))]} -- BitwiseANDExpression : See 11.10 -- EqualityExpression -- BitwiseANDExpression & EqualityExpression BitwiseAndExpression :: { [AST.JSNode] } BitwiseAndExpression : EqualityExpression { $1 {- BitwiseAndExpression -} } - | BitwiseAndExpression '&' EqualityExpression { [(AST.JSExpressionBinary "&" $1 $3)]}+ | BitwiseAndExpression '&' EqualityExpression { [(AST.NS (AST.JSExpressionBinary "&" $1 $3) (mex $1))]} -- BitwiseANDExpressionNoIn : See 11.10 -- EqualityExpressionNoIn -- BitwiseANDExpressionNoIn & EqualityExpressionNoIn BitwiseAndExpressionNoIn :: { [AST.JSNode] } BitwiseAndExpressionNoIn : EqualityExpressionNoIn { $1 {- BitwiseAndExpression -} } - | BitwiseAndExpressionNoIn '&' EqualityExpressionNoIn { [(AST.JSExpressionBinary "&" $1 $3)]}+ | BitwiseAndExpressionNoIn '&' EqualityExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "&" $1 $3) (mex $1))]} -- BitwiseXORExpression : See 11.10 -- BitwiseANDExpression -- BitwiseXORExpression ^ BitwiseANDExpression BitwiseXOrExpression :: { [AST.JSNode] } BitwiseXOrExpression : BitwiseAndExpression { $1 {- BitwiseXOrExpression -} } - | BitwiseXOrExpression '^' BitwiseAndExpression { [(AST.JSExpressionBinary "^" $1 $3)]}+ | BitwiseXOrExpression '^' BitwiseAndExpression { [(AST.NS (AST.JSExpressionBinary "^" $1 $3) (mex $1))]} -- BitwiseXORExpressionNoIn : See 11.10 -- BitwiseANDExpressionNoIn -- BitwiseXORExpressionNoIn ^ BitwiseANDExpressionNoIn BitwiseXOrExpressionNoIn :: { [AST.JSNode] } BitwiseXOrExpressionNoIn : BitwiseAndExpressionNoIn { $1 {- BitwiseXOrExpression -} } - | BitwiseXOrExpressionNoIn '^' BitwiseAndExpressionNoIn { [(AST.JSExpressionBinary "^" $1 $3)]}+ | BitwiseXOrExpressionNoIn '^' BitwiseAndExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "^" $1 $3) (mex $1))]} -- BitwiseORExpression : See 11.10 -- BitwiseXORExpression -- BitwiseORExpression | BitwiseXORExpression BitwiseOrExpression :: { [AST.JSNode] } BitwiseOrExpression : BitwiseXOrExpression { $1 {- BitwiseOrExpression -} } - | BitwiseOrExpression '|' BitwiseXOrExpression { [(AST.JSExpressionBinary "|" $1 $3)]}+ | BitwiseOrExpression '|' BitwiseXOrExpression { [(AST.NS (AST.JSExpressionBinary "|" $1 $3) (mex $1))]} -- BitwiseORExpressionNoIn : See 11.10 -- BitwiseXORExpressionNoIn -- BitwiseORExpressionNoIn | BitwiseXORExpressionNoIn BitwiseOrExpressionNoIn :: { [AST.JSNode] } BitwiseOrExpressionNoIn : BitwiseXOrExpressionNoIn { $1 {- BitwiseOrExpression -} } - | BitwiseOrExpressionNoIn '|' BitwiseXOrExpressionNoIn { [(AST.JSExpressionBinary "|" $1 $3)]}+ | BitwiseOrExpressionNoIn '|' BitwiseXOrExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "|" $1 $3) (mex $1))]} -- LogicalANDExpression : See 11.11 -- BitwiseORExpression -- LogicalANDExpression && BitwiseORExpression LogicalAndExpression :: { [AST.JSNode] } LogicalAndExpression : BitwiseOrExpression { $1 {- LogicalAndExpression -} } - | LogicalAndExpression '&&' BitwiseOrExpression { [(AST.JSExpressionBinary "&&" $1 $3)]}+ | LogicalAndExpression '&&' BitwiseOrExpression { [(AST.NS (AST.JSExpressionBinary "&&" $1 $3) (mex $1))]} -- LogicalANDExpressionNoIn : See 11.11 -- BitwiseORExpressionNoIn -- LogicalANDExpressionNoIn && BitwiseORExpressionNoIn LogicalAndExpressionNoIn :: { [AST.JSNode] } LogicalAndExpressionNoIn : BitwiseOrExpressionNoIn { $1 {- LogicalAndExpression -} } - | LogicalAndExpressionNoIn '&&' BitwiseOrExpressionNoIn { [(AST.JSExpressionBinary "&&" $1 $3)]}+ | LogicalAndExpressionNoIn '&&' BitwiseOrExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "&&" $1 $3) (mex $1))]} -- LogicalORExpression : See 11.11 -- LogicalANDExpression -- LogicalORExpression || LogicalANDExpression LogicalOrExpression :: { [AST.JSNode] } LogicalOrExpression : LogicalAndExpression { $1 {- LogicalOrExpression -} } - | LogicalOrExpression '||' LogicalAndExpression { [(AST.JSExpressionBinary "||" $1 $3)]}+ | LogicalOrExpression '||' LogicalAndExpression { [(AST.NS (AST.JSExpressionBinary "||" $1 $3) (mex $1))]} -- LogicalORExpressionNoIn : See 11.11 -- LogicalANDExpressionNoIn -- LogicalORExpressionNoIn || LogicalANDExpressionNoIn LogicalOrExpressionNoIn :: { [AST.JSNode] } LogicalOrExpressionNoIn : LogicalAndExpressionNoIn { $1 {- LogicalOrExpression -} } - | LogicalOrExpressionNoIn '||' LogicalAndExpressionNoIn { [(AST.JSExpressionBinary "||" $1 $3)]}+ | LogicalOrExpressionNoIn '||' LogicalAndExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "||" $1 $3) (mex $1))]} -- ConditionalExpression : See 11.12 -- LogicalORExpression@@ -591,7 +589,7 @@ ConditionalExpression :: { [AST.JSNode] } ConditionalExpression : LogicalOrExpression { $1 {- ConditionalExpression -} } | LogicalOrExpression '?' AssignmentExpression ':' AssignmentExpression - { [AST.JSExpressionTernary $1 $3 $5] } + { [AST.NS (AST.JSExpressionTernary $1 $3 $5) (mex $1)] } -- ConditionalExpressionNoIn : See 11.12 -- LogicalORExpressionNoIn@@ -599,7 +597,7 @@ ConditionalExpressionNoIn :: { [AST.JSNode] } ConditionalExpressionNoIn : LogicalOrExpressionNoIn { $1 {- ConditionalExpression -} } | LogicalOrExpressionNoIn '?' AssignmentExpressionNoIn ':' AssignmentExpressionNoIn- { [AST.JSExpressionTernary $1 $3 $5] } + { [AST.NS (AST.JSExpressionTernary $1 $3 $5) (mex $1)] } -- AssignmentExpression : See 11.13 -- ConditionalExpression@@ -620,21 +618,21 @@ -- AssignmentOperator : one of See 11.13 -- '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '>>>=' | '&=' | '^=' | '|=' AssignmentOperator :: { AST.JSNode }-AssignmentOperator : 'assign' { AST.JSOperator (token_literal $1) }- | '=' { AST.JSOperator "=" }+AssignmentOperator : 'assign' { AST.NS (AST.JSOperator (token_literal $1)) (ss $1) }+ | '=' { AST.NS (AST.JSOperator "=") (ss $1)} -- Expression : See 11.14 -- AssignmentExpression -- Expression , AssignmentExpression Expression :: { AST.JSNode }-Expression : AssignmentExpression { AST.JSExpression $1 {- Expression -} } +Expression : AssignmentExpression { AST.NS (AST.JSExpression $1) (mex $1) {- Expression -} } | Expression ',' AssignmentExpression { flattenExpression $1 $3 } -- ExpressionNoIn : See 11.14 -- AssignmentExpressionNoIn -- ExpressionNoIn , AssignmentExpressionNoIn ExpressionNoIn :: { AST.JSNode }-ExpressionNoIn : AssignmentExpressionNoIn { AST.JSExpression $1 {- Expression -} } +ExpressionNoIn : AssignmentExpressionNoIn { AST.NS (AST.JSExpression $1) (mex $1) {- Expression -} } | ExpressionNoIn ',' AssignmentExpressionNoIn { flattenExpression $1 $3 } -- TODO: still required?@@ -684,28 +682,35 @@ | TryStatement { $1 {- StatementNoEmpty14 -}} | DebuggerStatement { $1 {- StatementNoEmpty15 -}} +-- FIXME: not producing true reflection of parse, doing minimisation transformationsa in place+-- StatementBlock :: { AST.JSNode }+-- StatementBlock : '{' '}' { (AST.NS (AST.JSLiteral ";") (ss $1)) }+-- | '{' StatementList '}' { (if ($2 == AST.JSStatementList [AST.JSLiteral ";"]) +-- then (AST.NS (AST.JSLiteral ";") (ss $1)) +-- else (AST.NS (AST.JSBlock $2 ) (ss $1))) +-- } StatementBlock :: { AST.JSNode }-StatementBlock : '{' '}' { (AST.JSLiteral ";") }- | '{' StatementList '}' { (if ($2 == AST.JSStatementList [AST.JSLiteral ";"]) then (AST.JSLiteral ";") else (AST.JSBlock $2)) }+StatementBlock : '{' '}' { (AST.NS (AST.JSStatementBlock (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) }+ | '{' StatementList '}' { (AST.NS (AST.JSStatementBlock $2) (ss $1)) } -- Block : See 12.1 -- { StatementListopt } Block :: { AST.JSNode }-Block : '{' '}' { (AST.JSBlock (AST.JSStatementList [])) }- | '{' StatementList '}' { (AST.JSBlock $2) }+Block : '{' '}' { (AST.NS (AST.JSBlock (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) }+ | '{' StatementList '}' { (AST.NS (AST.JSBlock $2) (ss $1)) } -- StatementList : See 12.1 -- Statement -- StatementList Statement StatementList :: { AST.JSNode }-StatementList : Statement { (AST.JSStatementList [$1]) }+StatementList : Statement { (AST.NS (AST.JSStatementList [$1]) (ex $1)) } | StatementList Statement { (combineStatements $1 $2) } -- VariableStatement : See 12.2 -- var VariableDeclarationList ; VariableStatement :: { AST.JSNode }-VariableStatement : 'var' VariableDeclarationList AutoSemi { AST.JSVariables "var" $2 }- | 'const' VariableDeclarationList AutoSemi { AST.JSVariables "const" $2 }+VariableStatement : 'var' VariableDeclarationList AutoSemi { AST.NS (AST.JSVariables "var" $2) (ss $1)}+ | 'const' VariableDeclarationList AutoSemi { AST.NS (AST.JSVariables "const" $2) (ss $1)} -- VariableDeclarationList : See 12.2 -- VariableDeclaration@@ -724,14 +729,14 @@ -- VariableDeclaration : See 12.2 -- Identifier Initialiseropt VariableDeclaration :: { AST.JSNode }-VariableDeclaration : Identifier { (AST.JSVarDecl $1 [])}- | Identifier Initializer { (AST.JSVarDecl $1 $2)}+VariableDeclaration : Identifier { (AST.NS (AST.JSVarDecl $1 []) (ex $1) )}+ | Identifier Initializer { (AST.NS (AST.JSVarDecl $1 $2) (ex $1))} -- VariableDeclarationNoIn : See 12.2 -- Identifier InitialiserNoInopt VariableDeclarationNoIn :: { AST.JSNode }-VariableDeclarationNoIn : Identifier InitializerNoIn { (AST.JSVarDecl $1 $2) }- | Identifier { (AST.JSVarDecl $1 []) }+VariableDeclarationNoIn : Identifier InitializerNoIn { (AST.NS (AST.JSVarDecl $1 $2) (ex $1)) }+ | Identifier { (AST.NS (AST.JSVarDecl $1 []) (ex $1)) } -- Initialiser : See 12.2 -- = AssignmentExpression@@ -746,7 +751,7 @@ -- EmptyStatement : See 12.3 -- ; EmptyStatement :: { AST.JSNode }-EmptyStatement : ';' { (AST.JSLiteral ";") }+EmptyStatement : ';' { (AST.NS (AST.JSLiteral ";") (ss $1)) } -- ExpressionStatement : See 12.4 -- [lookahead ∉ {{, function}] Expression ;@@ -763,18 +768,32 @@ IfStatement :: { AST.JSNode } IfStatement : 'if' '(' Expression ')' StatementSemi IfElseRest { (if ($6 /= []) then - (if (length $6 == 1) then (AST.JSIfElse $3 $5 (head $6)) - else (AST.JSIfElse $3 (AST.JSBlock (AST.JSStatementList [$5])) (last $6))) - else (AST.JSIf $3 $5)) }+ (if (length $6 == 1) + then + (AST.NS (AST.JSIfElse $3 $5 (head $6)) (ss $1)) + else + (AST.NS + (AST.JSIfElse + $3 + (AST.NS + (AST.JSBlock (AST.NS (AST.JSStatementList [$5]) (ss $1)) ) + (ss $1) + )+ (last $6)+ ) + (ss $1)+ ) + ) + else (AST.NS (AST.JSIf $3 $5) (ss $1))) } IfElseRest :: { [AST.JSNode] } IfElseRest : 'else' Statement { [$2] } | { [] } StatementSemi :: { AST.JSNode }-StatementSemi : StatementNoEmpty ';' { (AST.JSBlock (AST.JSStatementList [$1])) } +StatementSemi : StatementNoEmpty ';' { (AST.NS (AST.JSBlock (AST.NS (AST.JSStatementList [$1]) (ex $1))) (ex $1)) } | StatementNoEmpty { $1 {- StatementSemi -}}- | ';' { AST.JSLiteral ";" } + | ';' { AST.NS (AST.JSLiteral ";") (ss $1) } -- IterationStatement : See 12.6@@ -785,46 +804,49 @@ -- for ( LeftHandSideExpression in Expression ) Statement -- for ( var VariableDeclarationNoIn in Expression ) Statement IterationStatement :: { AST.JSNode }-IterationStatement : 'do' Statement 'while' '(' Expression ')' AutoSemi { (AST.JSDoWhile $2 $5 $7) } - | 'while' '(' Expression ')' Statement { (AST.JSWhile $3 $5) }- | 'for' '(' ExpressionNoInOpt ';' ExpressionOpt ';' ExpressionOpt ')' Statement { (AST.JSFor $3 $5 $7 $9) }+IterationStatement : 'do' Statement 'while' '(' Expression ')' AutoSemi + { (AST.NS (AST.JSDoWhile $2 $5 $7) (ss $1)) } + | 'while' '(' Expression ')' Statement + { (AST.NS (AST.JSWhile $3 $5) (ss $1)) }+ | 'for' '(' ExpressionNoInOpt ';' ExpressionOpt ';' ExpressionOpt ')' Statement + { (AST.NS (AST.JSFor $3 $5 $7 $9) (ss $1)) } | 'for' '(' 'var' VariableDeclarationListNoIn ';' ExpressionOpt ';' ExpressionOpt ')' Statement - { (AST.JSForVar $4 $6 $8 $10) }+ { (AST.NS (AST.JSForVar $4 $6 $8 $10) (ss $1)) } | 'for' '(' LeftHandSideExpression 'in' Expression ')' Statement - { (AST.JSForIn $3 $5 $7) }+ { (AST.NS (AST.JSForIn $3 $5 $7) (ss $1)) } | 'for' '(' 'var' VariableDeclarationNoIn 'in' Expression ')' Statement- { (AST.JSForVarIn $4 $6 $8) }+ { (AST.NS (AST.JSForVarIn $4 $6 $8) (ss $1)) } -- ContinueStatement : See 12.7 -- continue [no LineTerminator here] Identifieropt ; -- TODO: deal with [no LineTerminator here] ContinueStatement :: { AST.JSNode }-ContinueStatement : 'continue' AutoSemi { (AST.JSContinue [$2]) } - | 'continue' Identifier AutoSemi { (AST.JSContinue [$2,$3]) } +ContinueStatement : 'continue' AutoSemi { (AST.NS (AST.JSContinue [$2]) (ss $1)) } + | 'continue' Identifier AutoSemi { (AST.NS (AST.JSContinue [$2,$3]) (ss $1)) } -- BreakStatement : See 12.8 -- break [no LineTerminator here] Identifieropt ; -- TODO: deal with [no LineTerminator here] BreakStatement :: { AST.JSNode }-BreakStatement : 'break' AutoSemi { (AST.JSBreak [] [$2]) } - | 'break' Identifier AutoSemi { (AST.JSBreak [$2] [$3]) } +BreakStatement : 'break' AutoSemi { (AST.NS (AST.JSBreak [] [$2]) (ss $1)) } + | 'break' Identifier AutoSemi { (AST.NS (AST.JSBreak [$2] [$3]) (ss $1)) } -- ReturnStatement : See 12.9 -- return [no LineTerminator here] Expressionopt ; -- TODO: deal with [no LineTerminator here] ReturnStatement :: { AST.JSNode }-ReturnStatement : 'return' AutoSemi { (AST.JSReturn [$2]) } - | 'return' Expression AutoSemi { (AST.JSReturn [$2,$3]) } +ReturnStatement : 'return' AutoSemi { (AST.NS (AST.JSReturn [$2]) (ss $1)) } + | 'return' Expression AutoSemi { (AST.NS (AST.JSReturn [$2,$3]) (ss $1)) } -- WithStatement : See 12.10 -- with ( Expression ) Statement WithStatement :: { AST.JSNode }-WithStatement : 'with' '(' Expression ')' Statement AutoSemi { (AST.JSWith $3 [$5,$6]) }+WithStatement : 'with' '(' Expression ')' Statement AutoSemi { (AST.NS (AST.JSWith $3 [$5,$6]) (ss $1)) } -- SwitchStatement : See 12.11 -- switch ( Expression ) CaseBlock SwitchStatement :: { AST.JSNode }-SwitchStatement : 'switch' '(' Expression ')' CaseBlock { (AST.JSSwitch $3 $5) } +SwitchStatement : 'switch' '(' Expression ')' CaseBlock { (AST.NS (AST.JSSwitch $3 $5) (ss $1)) } -- CaseBlock : See 12.11 -- { CaseClausesopt }@@ -844,26 +866,26 @@ -- CaseClause : See 12.11 -- case Expression : StatementListopt CaseClause :: { AST.JSNode }-CaseClause : 'case' Expression ':' StatementList { (AST.JSCase $2 $4) }- | 'case' Expression ':' { (AST.JSCase $2 (AST.JSStatementList [])) }+CaseClause : 'case' Expression ':' StatementList { (AST.NS (AST.JSCase $2 $4) (ss $1)) }+ | 'case' Expression ':' { (AST.NS (AST.JSCase $2 (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) } -- DefaultClause : See 12.11 -- default : StatementListopt DefaultClause :: { AST.JSNode }-DefaultClause : 'default' ':' { (AST.JSDefault (AST.JSStatementList [])) }- | 'default' ':' StatementList { (AST.JSDefault $3) }+DefaultClause : 'default' ':' { (AST.NS (AST.JSDefault (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) }+ | 'default' ':' StatementList { (AST.NS (AST.JSDefault $3) (ss $1)) } -- LabelledStatement : See 12.12 -- Identifier : Statement LabelledStatement :: { AST.JSNode }-LabelledStatement : Identifier ':' Statement { (AST.JSLabelled $1 $3) }+LabelledStatement : Identifier ':' Statement { (AST.NS (AST.JSLabelled $1 $3) (ex $1)) } -- ThrowStatement : See 12.13 -- throw [no LineTerminator here] Expression ; -- TODO : sort out no LineTerminator here -- Does it need a semi at the end? ThrowStatement :: { AST.JSNode }-ThrowStatement : 'throw' Expression { (AST.JSThrow $2) }+ThrowStatement : 'throw' Expression { (AST.NS (AST.JSThrow $2) (ss $1)) } -- Note: worked in updated syntax as per https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch -- i.e., 0 or more catches, then an optional finally@@ -872,9 +894,9 @@ -- try Block Finally -- try Block Catch Finally TryStatement :: { AST.JSNode }-TryStatement : 'try' Block Catches { (AST.JSTry $2 $3) {- TryStatement1 -} }- | 'try' Block Finally { (AST.JSTry $2 [$3]) {- TryStatement2 -} }- | 'try' Block Catches Finally { (AST.JSTry $2 ($3++[$4])) {- TryStatement3 -} }+TryStatement : 'try' Block Catches { (AST.NS (AST.JSTry $2 $3) (ss $1)) {- TryStatement1 -} }+ | 'try' Block Finally { (AST.NS (AST.JSTry $2 [$3]) (ss $1)) {- TryStatement2 -} }+ | 'try' Block Catches Finally { (AST.NS (AST.JSTry $2 ($3++[$4])) (ss $1)) {- TryStatement3 -} } Catches :: { [AST.JSNode] } Catches : Catch { [$1] {- Catches 1 -} }@@ -886,32 +908,34 @@ -- <Catch> ::= 'catch' '(' Identifier ')' <Block> -- | 'catch' '(' Identifier 'if' ConditionalExpression ')' <Block> Catch :: { AST.JSNode }-Catch : 'catch' '(' Identifier ')' Block { (AST.JSCatch $3 [] $5) }- | 'catch' '(' Identifier 'if' ConditionalExpression ')' Block { (AST.JSCatch $3 $5 $7) }+Catch : 'catch' '(' Identifier ')' Block { (AST.NS (AST.JSCatch $3 [] $5) (ss $1)) }+ | 'catch' '(' Identifier 'if' ConditionalExpression ')' Block { (AST.NS (AST.JSCatch $3 $5 $7) (ss $1)) } -- Finally : See 12.14 -- finally Block Finally :: { AST.JSNode }-Finally : 'finally' Block { (AST.JSFinally $2) }+Finally : 'finally' Block { (AST.NS (AST.JSFinally $2) (ss $1)) } -- DebuggerStatement : See 12.15 -- debugger ; DebuggerStatement :: { AST.JSNode }-DebuggerStatement : 'debugger' AutoSemi { (AST.JSLiteral "debugger") }+DebuggerStatement : 'debugger' AutoSemi { (AST.NS (AST.JSLiteral "debugger") (ss $1)) } -- FunctionDeclaration : See clause 13 -- function Identifier ( FormalParameterListopt ) { FunctionBody } FunctionDeclaration :: { AST.JSNode } FunctionDeclaration : 'function' Identifier '(' FormalParameterList ')' '{' FunctionBody '}'- { (AST.JSFunction $2 $4 $7) }+ { (AST.NS (AST.JSFunction $2 $4 $7) (ss $1)) } | 'function' Identifier '(' ')' '{' FunctionBody '}'- { (AST.JSFunction $2 [] $6) }+ { (AST.NS (AST.JSFunction $2 [] $6) (ss $1)) } -- FunctionExpression : See clause 13 -- function Identifieropt ( FormalParameterListopt ) { FunctionBody } FunctionExpression :: { AST.JSNode }-FunctionExpression : 'function' IdentifierOpt '(' ')' '{' FunctionBody '}' { (AST.JSFunctionExpression $2 [] $6) }- | 'function' IdentifierOpt '(' FormalParameterList ')' '{' FunctionBody '}' { (AST.JSFunctionExpression $2 $4 $7) }+FunctionExpression : 'function' IdentifierOpt '(' ')' '{' FunctionBody '}' + { (AST.NS (AST.JSFunctionExpression $2 [] $6) (ss $1)) }+ | 'function' IdentifierOpt '(' FormalParameterList ')' '{' FunctionBody '}' + { (AST.NS (AST.JSFunctionExpression $2 $4 $7) (ss $1)) } IdentifierOpt :: { [AST.JSNode] } IdentifierOpt : Identifier { [$1] {- IdentifierOpt -}}@@ -927,11 +951,12 @@ -- FunctionBody : See clause 13 -- SourceElementsopt FunctionBody :: { AST.JSNode }-FunctionBody : SourceElements { (AST.JSFunctionBody [$1]) }- | { (AST.JSFunctionBody []) } +FunctionBody : SourceElements { (AST.NS (AST.JSFunctionBody [$1]) (ex $1)) }+ | { (AST.NS (AST.JSFunctionBody []) SpanEmpty) } -- Program : See clause 14 -- SourceElementsopt+ Program :: { AST.JSNode } Program : SourceElementsTop { $1 {- Program -}} @@ -939,11 +964,11 @@ -- SourceElement -- SourceElements SourceElement SourceElements :: { AST.JSNode }-SourceElements : SourceElement { (AST.JSSourceElements [$1]) }+SourceElements : SourceElement { (AST.NS (AST.JSSourceElements [$1]) (ex $1)) } | SourceElements SourceElement { (combineSourceElements $1 $2) } SourceElementsTop :: { AST.JSNode }-SourceElementsTop : SourceElement { (AST.JSSourceElementsTop [$1]) }+SourceElementsTop : SourceElement { (AST.NS (AST.JSSourceElementsTop [$1]) (ex $1)) } | SourceElementsTop SourceElement { (combineSourceElementsTop $1 $2) } -- SourceElement :@@ -955,26 +980,60 @@ { +-- combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode+-- combineSourceElements (AST.JSSourceElements xs) x = (AST.JSSourceElements (xs++[x] (ss $1)) ) combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineSourceElements (AST.JSSourceElements xs) x = (AST.JSSourceElements (xs++[x]) )+combineSourceElements (AST.NS (AST.JSSourceElements xs) s1) x1@(AST.NS x s2) = (AST.NS (AST.JSSourceElements (xs++[x1])) s1) +-- combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode+-- combineSourceElementsTop (AST.JSSourceElementsTop xs) x = (AST.JSSourceElementsTop (xs++[x] (ss $1)) ) combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineSourceElementsTop (AST.JSSourceElementsTop xs) x = (AST.JSSourceElementsTop (xs++[x]) )+combineSourceElementsTop (AST.NS (AST.JSSourceElementsTop xs) s1) x1@(AST.NS x s2) = (AST.NS (AST.JSSourceElementsTop (xs++[x1])) s1) +-- combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode+-- combineStatements (AST.JSStatementList xs) (AST.JSStatementList ys) = (AST.JSStatementList (xs++ys) )+-- combineStatements (AST.JSStatementList xs) y = (AST.JSStatementList (xs++[y]) ) combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode-combineStatements (AST.JSStatementList xs) (AST.JSStatementList ys) = (AST.JSStatementList (xs++ys) )-combineStatements (AST.JSStatementList xs) y = (AST.JSStatementList (xs++[y]) )+combineStatements (AST.NS (AST.JSStatementList xs) s1) (AST.NS (AST.JSStatementList ys) s2) = (AST.NS (AST.JSStatementList (xs++ys) ) s1)+combineStatements (AST.NS (AST.JSStatementList xs) s1) y = (AST.NS (AST.JSStatementList (xs++[y])) s1) parseError :: Token -> P a parseError = throwError . UnexpectedToken +-- flattenExpression :: AST.JSNode -> [AST.JSNode] -> AST.JSNode+-- flattenExpression (AST.JSExpression xs) e = AST.JSExpression (xs++litComma++e)+-- where+-- litComma :: [AST.JSNode]+-- litComma = [(AST.JSLiteral ",")] flattenExpression :: AST.JSNode -> [AST.JSNode] -> AST.JSNode-flattenExpression (AST.JSExpression xs) e = AST.JSExpression (xs++litComma++e)+flattenExpression (AST.NS (AST.JSExpression xs) s1) e = (AST.NS (AST.JSExpression (xs++litComma++e)) s1) where litComma :: [AST.JSNode]- litComma = [(AST.JSLiteral ",")]+ litComma = [AST.NS (AST.JSLiteral ",") SpanEmpty] +mex :: [AST.JSNode] -> SrcSpan+mex [] = SpanEmpty+mex xs = ex (head xs) +ex :: AST.JSNode -> SrcSpan+ex (AST.NS _node span) = span++ss token = toSrcSpan (token_span token) ++{-+ex :: AST.JSNode -> AST.JSNode+ex (AST.NS node span) = node++mex :: [AST.JSNode] -> [AST.JSNode]+mex xs = map ex xs++combine :: [AST.JSNode] -> AST.JSNode+combine [] = AST.NSS [] SpanEmpty+combine xs = AST.NSS (mex xs) span+ where+ (AST.NS _ span) = head xs+-}+ } -- Set emacs mode
src/Language/JavaScript/Parser/Parser.hs view
@@ -6,6 +6,8 @@ -- * Parsing expressions -- parseExpr , parseUsing+ , showStripped + , showStrippedMaybe ) where import Language.JavaScript.Parser.ParseError@@ -52,6 +54,12 @@ x <- readFile (filename) return $ readJs x +showStripped ast = AST.showStripped ast ++showStrippedMaybe maybeAst = do+ case maybeAst of+ Left msg -> "Left (" ++ show msg ++ ")"+ Right p -> "Right (" ++ AST.showStripped p ++ ")" -- | Parse one compound statement, or a sequence of simple statements. -- Generally used for interactive input, such as from the command line of an interpreter.
src/Language/JavaScript/Parser/ParserMonad.hs view
@@ -110,8 +110,8 @@ execParser = evalStateT execParserKeepComments :: P a -> ParseState -> Either ParseError (a, [Token])-execParserKeepComments parser state = - evalStateT (parser >>= \x -> getComments >>= \c -> return (x, c)) state+execParserKeepComments parser astate = + evalStateT (parser >>= \x -> getComments >>= \c -> return (x, c)) astate runParser :: P a -> ParseState -> Either ParseError (a, ParseState) runParser = runStateT
src/Language/JavaScript/Parser/SrcLocation.hs view
@@ -21,9 +21,10 @@ SrcLocation (..), SrcSpan (..), Span (..),- -- spanning,+ toSrcSpan,+ spanning, mkSrcSpan,- -- combineSrcSpans,+ combineSrcSpans, initialSrcLocation, spanStartPoint, -- * Modification@@ -66,6 +67,7 @@ -- and column. data SrcLocation = Sloc { sloc_filename :: !String+ , sloc_address :: {-# UNPACK #-} !Int -- address (number of characters preceding the token) , sloc_row :: {-# UNPACK #-} !Int , sloc_column :: {-# UNPACK #-} !Int } @@ -104,11 +106,20 @@ instance Span SrcSpan where getSpan = id +-- ++AZ++ adding this+instance Span AlexPosn where + getSpan ap = toSrcSpan (ap,'\n',"")++toSrcSpan :: AlexSpan -> SrcSpan+toSrcSpan ((AlexPn _addr line col),_,_) = SpanPoint { span_filename = "", span_row = line, span_column = col}+-- ++AZ++ end+ -- | Construct the initial source location for a file. initialSrcLocation :: String -> SrcLocation initialSrcLocation filename = Sloc { sloc_filename = filename+ , sloc_address = 1 , sloc_row = 1 , sloc_column = 1 }@@ -170,9 +181,35 @@ } -- | No span information. | SpanEmpty - deriving (Eq,Ord,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Read,Typeable,Data) +{-+instance Show SrcSpan where+ show (s@(SpanCoLinear filename row start end)) = + -- showChar '('.showString filename.shows row.shows start.shows end.showChar ')' -- ("foo.txt" 12 4 5)+ showChar '(' . showChar ')' -- ("foo.txt" 12 4 5) + show (s@(SpanMultiLine filename sr sc er ec)) = + showChar '('.showString filename.shows sr.shows sc.shows er.shows ec.showChar ')' -- ("foo.txt" 12 4 13 5)+ show (s@(SpanPoint filename r c)) = + showChar '('.showString filename.shows r.shows c.showChar ')' -- ("foo.txt" 12 4)+ show (SpanEmpty) = showString "()" -- ()+ -}+ +--instance Read SrcSpan where+-- readsPrec _ str = [+ +{- +instance Read a => Read Tree a where+ readsPrec _ str = [(Leave x, t’) | ("Leave", t) <- reads str,+ (x, t’) <- reads t] +++ [((Node i r d), t’’’) |+ ("Node", t) <- reads str,+ (i, t’) <- reads t,+ (r, t’’) <- reads t’,+ (d, t’’’) <- reads t’’]+-}+ instance Span SrcLocation where getSpan loc@(Sloc {}) = SpanPoint