diff --git a/README b/README
--- a/README
+++ b/README
@@ -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.
diff --git a/dist/build/Language/JavaScript/Parser/Grammar.hs b/dist/build/Language/JavaScript/Parser/Grammar.hs
deleted file mode 100644
--- a/dist/build/Language/JavaScript/Parser/Grammar.hs
+++ /dev/null
@@ -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.
diff --git a/dist/build/Language/JavaScript/Parser/Grammar5.hs b/dist/build/Language/JavaScript/Parser/Grammar5.hs
--- a/dist/build/Language/JavaScript/Parser/Grammar5.hs
+++ b/dist/build/Language/JavaScript/Parser/Grammar5.hs
@@ -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>" #-}
diff --git a/language-javascript.cabal b/language-javascript.cabal
--- a/language-javascript.cabal
+++ b/language-javascript.cabal
@@ -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
diff --git a/runtests.hs b/runtests.hs
--- a/runtests.hs
+++ b/runtests.hs
@@ -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
diff --git a/src/Language/JavaScript/Parser.hs b/src/Language/JavaScript/Parser.hs
--- a/src/Language/JavaScript/Parser.hs
+++ b/src/Language/JavaScript/Parser.hs
@@ -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
 
diff --git a/src/Language/JavaScript/Parser/AST.hs b/src/Language/JavaScript/Parser/AST.hs
--- a/src/Language/JavaScript/Parser/AST.hs
+++ b/src/Language/JavaScript/Parser/AST.hs
@@ -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
diff --git a/src/Language/JavaScript/Parser/Grammar.y b/src/Language/JavaScript/Parser/Grammar.y
deleted file mode 100644
--- a/src/Language/JavaScript/Parser/Grammar.y
+++ /dev/null
@@ -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:             
diff --git a/src/Language/JavaScript/Parser/Grammar5.y b/src/Language/JavaScript/Parser/Grammar5.y
--- a/src/Language/JavaScript/Parser/Grammar5.y
+++ b/src/Language/JavaScript/Parser/Grammar5.y
@@ -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
diff --git a/src/Language/JavaScript/Parser/Parser.hs b/src/Language/JavaScript/Parser/Parser.hs
--- a/src/Language/JavaScript/Parser/Parser.hs
+++ b/src/Language/JavaScript/Parser/Parser.hs
@@ -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. 
diff --git a/src/Language/JavaScript/Parser/ParserMonad.hs b/src/Language/JavaScript/Parser/ParserMonad.hs
--- a/src/Language/JavaScript/Parser/ParserMonad.hs
+++ b/src/Language/JavaScript/Parser/ParserMonad.hs
@@ -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 
diff --git a/src/Language/JavaScript/Parser/SrcLocation.hs b/src/Language/JavaScript/Parser/SrcLocation.hs
--- a/src/Language/JavaScript/Parser/SrcLocation.hs
+++ b/src/Language/JavaScript/Parser/SrcLocation.hs
@@ -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 
