language-javascript 0.4.10 → 0.5.0
raw patch · 15 files changed
+6586/−4885 lines, 15 filesdep +blaze-builderdep +bytestringdep +utf8-stringPVP ok
version bump matches the API change (PVP)
Dependencies added: blaze-builder, bytestring, utf8-string
API changes (from Hackage documentation)
- Language.JavaScript.Parser: AlexPn :: !Int -> !Int -> !Int -> AlexPosn
- Language.JavaScript.Parser: JSEmpty :: JSNode -> Node
- Language.JavaScript.Parser: JSIfElse :: JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: NS :: Node -> SrcSpan -> JSNode
- Language.JavaScript.Parser: ParseState :: !AlexPosn -> String -> !Char -> [Byte] -> !Int -> !Token -> [Token] -> ParseState
- Language.JavaScript.Parser: SpanCoLinear :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
- Language.JavaScript.Parser: SpanEmpty :: SrcSpan
- Language.JavaScript.Parser: SpanMultiLine :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
- Language.JavaScript.Parser: SpanPoint :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
- Language.JavaScript.Parser: StrError :: String -> ParseError
- Language.JavaScript.Parser: UnexpectedChar :: Char -> AlexPosn -> ParseError
- Language.JavaScript.Parser: UnexpectedToken :: Token -> ParseError
- Language.JavaScript.Parser: alex_bytes :: ParseState -> [Byte]
- Language.JavaScript.Parser: alex_chr :: ParseState -> !Char
- Language.JavaScript.Parser: alex_inp :: ParseState -> String
- Language.JavaScript.Parser: alex_pos :: ParseState -> !AlexPosn
- Language.JavaScript.Parser: alex_scd :: ParseState -> !Int
- Language.JavaScript.Parser: comments :: ParseState -> [Token]
- Language.JavaScript.Parser: data AlexPosn
- Language.JavaScript.Parser: data ParseError
- Language.JavaScript.Parser: data ParseState
- Language.JavaScript.Parser: data SrcSpan
- Language.JavaScript.Parser: previousToken :: ParseState -> !Token
- Language.JavaScript.Parser: span_column :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser: span_end_column :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser: span_end_row :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser: span_filename :: SrcSpan -> !String
- Language.JavaScript.Parser: span_row :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser: span_start_column :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser: span_start_row :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser: type AlexSpan = (AlexPosn, Char, String)
- Language.JavaScript.Parser: type P a = StateT ParseState (Either ParseError) a
- Language.JavaScript.Parser.AST: AlexPn :: !Int -> !Int -> !Int -> AlexPosn
- Language.JavaScript.Parser.AST: JSEmpty :: JSNode -> Node
- Language.JavaScript.Parser.AST: JSIfElse :: JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: NS :: Node -> SrcSpan -> JSNode
- Language.JavaScript.Parser.AST: SpanCoLinear :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
- Language.JavaScript.Parser.AST: SpanEmpty :: SrcSpan
- Language.JavaScript.Parser.AST: SpanMultiLine :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
- Language.JavaScript.Parser.AST: SpanPoint :: !String -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> SrcSpan
- Language.JavaScript.Parser.AST: data AlexPosn
- Language.JavaScript.Parser.AST: data SrcSpan
- Language.JavaScript.Parser.AST: span_column :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser.AST: span_end_column :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser.AST: span_end_row :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser.AST: span_filename :: SrcSpan -> !String
- Language.JavaScript.Parser.AST: span_row :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser.AST: span_start_column :: SrcSpan -> {-# UNPACK #-} !Int
- Language.JavaScript.Parser.AST: span_start_row :: SrcSpan -> {-# UNPACK #-} !Int
+ Language.JavaScript.Parser: NN :: Node -> JSNode
+ Language.JavaScript.Parser: NT :: Node -> TokenPosn -> [CommentAnnotation] -> JSNode
+ Language.JavaScript.Parser: TokenPn :: !Int -> !Int -> !Int -> TokenPosn
+ Language.JavaScript.Parser: data TokenPosn
+ Language.JavaScript.Parser: renderJS :: JSNode -> Builder
+ Language.JavaScript.Parser: renderToString :: JSNode -> String
+ Language.JavaScript.Parser: tokenPosnEmpty :: TokenPosn
+ Language.JavaScript.Parser.AST: NN :: Node -> JSNode
+ Language.JavaScript.Parser.AST: NT :: Node -> TokenPosn -> [CommentAnnotation] -> JSNode
+ Language.JavaScript.Parser.Grammar5: fp :: JSNode -> JSNode
+ Language.JavaScript.Parser.Lexer: AlexPn :: !Int -> !Int -> !Int -> AlexPosn
+ Language.JavaScript.Parser.Lexer: TailToken :: !TokenPosn -> ![CommentAnnotation] -> Token
+ Language.JavaScript.Parser.Lexer: WsToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
+ Language.JavaScript.Parser.Lexer: alexError :: String -> Alex a
+ Language.JavaScript.Parser.Lexer: data Alex a
+ Language.JavaScript.Parser.Lexer: data AlexPosn
+ Language.JavaScript.Parser.Lexer: instance Eq AlexPosn
+ Language.JavaScript.Parser.Lexer: instance Monad Alex
+ Language.JavaScript.Parser.Lexer: instance Show AlexPosn
+ Language.JavaScript.Parser.Lexer: runAlex :: String -> Alex a -> Either String a
+ Language.JavaScript.Parser.Lexer: token_comment :: Token -> ![CommentAnnotation]
+ Language.JavaScript.Pretty.Printer: renderJS :: JSNode -> Builder
+ Language.JavaScript.Pretty.Printer: renderToString :: JSNode -> String
- Language.JavaScript.Parser: JSArguments :: [[JSNode]] -> Node
+ Language.JavaScript.Parser: JSArguments :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser: JSArrayLiteral :: [JSNode] -> Node
+ Language.JavaScript.Parser: JSArrayLiteral :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser: JSBlock :: JSNode -> Node
+ Language.JavaScript.Parser: JSBlock :: [JSNode] -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser: JSBreak :: [JSNode] -> [JSNode] -> Node
+ Language.JavaScript.Parser: JSBreak :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser: JSCallExpression :: String -> [JSNode] -> Node
+ Language.JavaScript.Parser: JSCallExpression :: String -> [JSNode] -> [JSNode] -> [JSNode] -> Node
- Language.JavaScript.Parser: JSCase :: JSNode -> JSNode -> Node
+ Language.JavaScript.Parser: JSCase :: JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSCatch :: JSNode -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser: JSCatch :: JSNode -> JSNode -> JSNode -> [JSNode] -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSContinue :: [JSNode] -> Node
+ Language.JavaScript.Parser: JSContinue :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser: JSDefault :: JSNode -> Node
+ Language.JavaScript.Parser: JSDefault :: JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSDoWhile :: JSNode -> JSNode -> JSNode -> Node
+ Language.JavaScript.Parser: JSDoWhile :: JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSElision :: [JSNode] -> Node
+ Language.JavaScript.Parser: JSElision :: JSNode -> Node
- Language.JavaScript.Parser: JSExpressionBinary :: String -> [JSNode] -> [JSNode] -> Node
+ Language.JavaScript.Parser: JSExpressionBinary :: String -> [JSNode] -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser: JSExpressionParen :: JSNode -> Node
+ Language.JavaScript.Parser: JSExpressionParen :: JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSExpressionPostfix :: String -> [JSNode] -> Node
+ Language.JavaScript.Parser: JSExpressionPostfix :: String -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser: JSExpressionTernary :: [JSNode] -> [JSNode] -> [JSNode] -> Node
+ Language.JavaScript.Parser: JSExpressionTernary :: [JSNode] -> JSNode -> [JSNode] -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser: JSFinally :: JSNode -> Node
+ Language.JavaScript.Parser: JSFinally :: JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSFor :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser: JSFor :: JSNode -> JSNode -> [JSNode] -> JSNode -> [JSNode] -> JSNode -> [JSNode] -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSForIn :: [JSNode] -> JSNode -> JSNode -> Node
+ Language.JavaScript.Parser: JSForIn :: JSNode -> JSNode -> [JSNode] -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSForVar :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser: JSForVar :: JSNode -> JSNode -> JSNode -> [JSNode] -> JSNode -> [JSNode] -> JSNode -> [JSNode] -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSForVarIn :: JSNode -> JSNode -> JSNode -> Node
+ Language.JavaScript.Parser: JSForVarIn :: JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSFunction :: JSNode -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser: JSFunction :: JSNode -> JSNode -> JSNode -> [JSNode] -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSFunctionExpression :: [JSNode] -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser: JSFunctionExpression :: JSNode -> [JSNode] -> JSNode -> [JSNode] -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSIf :: JSNode -> JSNode -> Node
+ Language.JavaScript.Parser: JSIf :: JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser: JSLabelled :: JSNode -> JSNode -> Node
+ Language.JavaScript.Parser: JSLabelled :: JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSMemberDot :: [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser: JSMemberDot :: [JSNode] -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSMemberSquare :: [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser: JSMemberSquare :: [JSNode] -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSObjectLiteral :: [JSNode] -> Node
+ Language.JavaScript.Parser: JSObjectLiteral :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser: JSOperator :: String -> Node
+ Language.JavaScript.Parser: JSOperator :: JSNode -> Node
- Language.JavaScript.Parser: JSPropertyAccessor :: String -> JSNode -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser: JSPropertyAccessor :: JSNode -> JSNode -> JSNode -> [JSNode] -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSPropertyNameandValue :: JSNode -> [JSNode] -> Node
+ Language.JavaScript.Parser: JSPropertyNameandValue :: JSNode -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser: JSReturn :: [JSNode] -> Node
+ Language.JavaScript.Parser: JSReturn :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser: JSStatementBlock :: JSNode -> Node
+ Language.JavaScript.Parser: JSStatementBlock :: JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSSwitch :: JSNode -> [JSNode] -> Node
+ Language.JavaScript.Parser: JSSwitch :: JSNode -> JSNode -> JSNode -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser: JSThrow :: JSNode -> Node
+ Language.JavaScript.Parser: JSThrow :: JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSTry :: JSNode -> [JSNode] -> Node
+ Language.JavaScript.Parser: JSTry :: JSNode -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser: JSUnary :: String -> Node
+ Language.JavaScript.Parser: JSUnary :: String -> JSNode -> Node
- Language.JavaScript.Parser: JSVariables :: String -> [JSNode] -> Node
+ Language.JavaScript.Parser: JSVariables :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser: JSWhile :: JSNode -> JSNode -> Node
+ Language.JavaScript.Parser: JSWhile :: JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser: JSWith :: JSNode -> [JSNode] -> Node
+ Language.JavaScript.Parser: JSWith :: JSNode -> JSNode -> JSNode -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser: parse :: String -> String -> Either ParseError JSNode
+ Language.JavaScript.Parser: parse :: String -> String -> Either String JSNode
- Language.JavaScript.Parser: showStrippedMaybe :: Show a => Either a JSNode -> [Char]
+ Language.JavaScript.Parser: showStrippedMaybe :: Show a => Either a JSNode -> String
- Language.JavaScript.Parser.AST: JSArguments :: [[JSNode]] -> Node
+ Language.JavaScript.Parser.AST: JSArguments :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSArrayLiteral :: [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSArrayLiteral :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSBlock :: JSNode -> Node
+ Language.JavaScript.Parser.AST: JSBlock :: [JSNode] -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser.AST: JSBreak :: [JSNode] -> [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSBreak :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSCallExpression :: String -> [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSCallExpression :: String -> [JSNode] -> [JSNode] -> [JSNode] -> Node
- Language.JavaScript.Parser.AST: JSCase :: JSNode -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSCase :: JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSCatch :: JSNode -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSCatch :: JSNode -> JSNode -> JSNode -> [JSNode] -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSContinue :: [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSContinue :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSDefault :: JSNode -> Node
+ Language.JavaScript.Parser.AST: JSDefault :: JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSDoWhile :: JSNode -> JSNode -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSDoWhile :: JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSElision :: [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSElision :: JSNode -> Node
- Language.JavaScript.Parser.AST: JSExpressionBinary :: String -> [JSNode] -> [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSExpressionBinary :: String -> [JSNode] -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser.AST: JSExpressionParen :: JSNode -> Node
+ Language.JavaScript.Parser.AST: JSExpressionParen :: JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSExpressionPostfix :: String -> [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSExpressionPostfix :: String -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSExpressionTernary :: [JSNode] -> [JSNode] -> [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSExpressionTernary :: [JSNode] -> JSNode -> [JSNode] -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser.AST: JSFinally :: JSNode -> Node
+ Language.JavaScript.Parser.AST: JSFinally :: JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSFor :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSFor :: JSNode -> JSNode -> [JSNode] -> JSNode -> [JSNode] -> JSNode -> [JSNode] -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSForIn :: [JSNode] -> JSNode -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSForIn :: JSNode -> JSNode -> [JSNode] -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSForVar :: [JSNode] -> [JSNode] -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSForVar :: JSNode -> JSNode -> JSNode -> [JSNode] -> JSNode -> [JSNode] -> JSNode -> [JSNode] -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSForVarIn :: JSNode -> JSNode -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSForVarIn :: JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSFunction :: JSNode -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSFunction :: JSNode -> JSNode -> JSNode -> [JSNode] -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSFunctionExpression :: [JSNode] -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSFunctionExpression :: JSNode -> [JSNode] -> JSNode -> [JSNode] -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSIf :: JSNode -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSIf :: JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser.AST: JSLabelled :: JSNode -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSLabelled :: JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSMemberDot :: [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSMemberDot :: [JSNode] -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSMemberSquare :: [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSMemberSquare :: [JSNode] -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSObjectLiteral :: [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSObjectLiteral :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSOperator :: String -> Node
+ Language.JavaScript.Parser.AST: JSOperator :: JSNode -> Node
- Language.JavaScript.Parser.AST: JSPropertyAccessor :: String -> JSNode -> [JSNode] -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSPropertyAccessor :: JSNode -> JSNode -> JSNode -> [JSNode] -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSPropertyNameandValue :: JSNode -> [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSPropertyNameandValue :: JSNode -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser.AST: JSReturn :: [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSReturn :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSStatementBlock :: JSNode -> Node
+ Language.JavaScript.Parser.AST: JSStatementBlock :: JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSSwitch :: JSNode -> [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSSwitch :: JSNode -> JSNode -> JSNode -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser.AST: JSThrow :: JSNode -> Node
+ Language.JavaScript.Parser.AST: JSThrow :: JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSTry :: JSNode -> [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSTry :: JSNode -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser.AST: JSUnary :: String -> Node
+ Language.JavaScript.Parser.AST: JSUnary :: String -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSVariables :: String -> [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSVariables :: JSNode -> [JSNode] -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSWhile :: JSNode -> JSNode -> Node
+ Language.JavaScript.Parser.AST: JSWhile :: JSNode -> JSNode -> JSNode -> JSNode -> JSNode -> Node
- Language.JavaScript.Parser.AST: JSWith :: JSNode -> [JSNode] -> Node
+ Language.JavaScript.Parser.AST: JSWith :: JSNode -> JSNode -> JSNode -> JSNode -> [JSNode] -> Node
- Language.JavaScript.Parser.Grammar5: parseLiteral :: P JSNode
+ Language.JavaScript.Parser.Grammar5: parseLiteral :: Alex JSNode
- Language.JavaScript.Parser.Grammar5: parsePrimaryExpression :: P JSNode
+ Language.JavaScript.Parser.Grammar5: parsePrimaryExpression :: Alex JSNode
- Language.JavaScript.Parser.Grammar5: parseProgram :: P JSNode
+ Language.JavaScript.Parser.Grammar5: parseProgram :: Alex JSNode
- Language.JavaScript.Parser.Grammar5: parseStatement :: P JSNode
+ Language.JavaScript.Parser.Grammar5: parseStatement :: Alex JSNode
- Language.JavaScript.Parser.Lexer: AndToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: AndToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: AssignToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: AssignToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: BitwiseAndToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: BitwiseAndToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: BitwiseNotToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: BitwiseNotToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: BitwiseOrToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: BitwiseOrToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: BitwiseXorToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: BitwiseXorToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: BreakToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: BreakToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: CaseToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: CaseToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: CatchToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: CatchToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: ColonToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: ColonToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: CommaToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: CommaToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: CommentToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: CommentToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: CondcommentEndToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: CondcommentEndToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: ConstToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: ConstToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: ContinueToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: ContinueToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: DebuggerToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: DebuggerToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: DecimalToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: DecimalToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: DecrementToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: DecrementToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: DefaultToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: DefaultToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: DeleteToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: DeleteToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: DivToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: DivToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: DoToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: DoToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: DotToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: DotToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: EOFToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: EOFToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: ElseToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: ElseToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: EnumToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: EnumToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: EqToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: EqToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: FalseToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: FalseToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: FinallyToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: FinallyToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: ForToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: ForToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: FunctionToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: FunctionToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: FutureToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: FutureToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: GeToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: GeToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: GetToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: GetToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: GtToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: GtToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: HexIntegerToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: HexIntegerToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: HookToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: HookToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: IdentifierToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: IdentifierToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: IfToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: IfToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: InToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: InToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: IncrementToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: IncrementToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: InstanceofToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: InstanceofToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: LeToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: LeToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: LeftBracketToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: LeftBracketToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: LeftCurlyToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: LeftCurlyToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: LeftParenToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: LeftParenToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: LshToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: LshToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: LtToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: LtToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: MinusToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: MinusToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: ModToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: ModToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: MulToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: MulToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: NeToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: NeToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: NewToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: NewToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: NotToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: NotToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: NullToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: NullToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: OrToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: OrToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: PlusToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: PlusToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: RegExToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: RegExToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: ReturnToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: ReturnToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: RightBracketToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: RightBracketToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: RightCurlyToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: RightCurlyToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: RightParenToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: RightParenToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: RshToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: RshToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: SemiColonToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: SemiColonToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: SetToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: SetToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: SimpleAssignToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: SimpleAssignToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: StrictEqToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: StrictEqToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: StrictNeToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: StrictNeToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: StringToken :: !AlexSpan -> !String -> !Char -> Token
+ Language.JavaScript.Parser.Lexer: StringToken :: !TokenPosn -> !String -> !Char -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: SwitchToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: SwitchToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: ThisToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: ThisToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: ThrowToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: ThrowToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: TrueToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: TrueToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: TryToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: TryToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: TypeofToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: TypeofToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: UrshToken :: !AlexSpan -> Token
+ Language.JavaScript.Parser.Lexer: UrshToken :: !TokenPosn -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: VarToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: VarToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: VoidToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: VoidToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: WhileToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: WhileToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: WithToken :: !AlexSpan -> !String -> Token
+ Language.JavaScript.Parser.Lexer: WithToken :: !TokenPosn -> !String -> ![CommentAnnotation] -> Token
- Language.JavaScript.Parser.Lexer: lexCont :: (Token -> P a) -> P a
+ Language.JavaScript.Parser.Lexer: lexCont :: (Token -> Alex b) -> Alex b
- Language.JavaScript.Parser.Lexer: token_span :: Token -> !AlexSpan
+ Language.JavaScript.Parser.Lexer: token_span :: Token -> !TokenPosn
- Language.JavaScript.Parser.Parser: parse :: String -> String -> Either ParseError JSNode
+ Language.JavaScript.Parser.Parser: parse :: String -> String -> Either String JSNode
- Language.JavaScript.Parser.Parser: parseUsing :: P JSNode -> String -> String -> Either ParseError JSNode
+ Language.JavaScript.Parser.Parser: parseUsing :: Alex JSNode -> String -> String -> Either String JSNode
- Language.JavaScript.Parser.Parser: showStrippedMaybe :: Show a => Either a JSNode -> [Char]
+ Language.JavaScript.Parser.Parser: showStrippedMaybe :: Show a => Either a JSNode -> String
Files
- README +3/−0
- dist/build/Language/JavaScript/Parser/Grammar5.hs +4605/−3510
- language-javascript.cabal +9/−4
- runtests.hs +510/−113
- src/Language/JavaScript/Parser.hs +8/−8
- src/Language/JavaScript/Parser/AST.hs +105/−101
- src/Language/JavaScript/Parser/Grammar5.y +535/−354
- src/Language/JavaScript/Parser/Lexer.hs +380/−99
- src/Language/JavaScript/Parser/LexerUtils.hs +29/−71
- src/Language/JavaScript/Parser/ParseError.hs +11/−10
- src/Language/JavaScript/Parser/Parser.hs +30/−43
- src/Language/JavaScript/Parser/ParserMonad.hs +21/−165
- src/Language/JavaScript/Parser/SrcLocation.hs +13/−289
- src/Language/JavaScript/Parser/Token.hs +106/−118
- src/Language/JavaScript/Pretty/Printer.hs +221/−0
README view
@@ -35,6 +35,9 @@ Changes +0.5.0 Rework AST to allow full round-trip parsing and output of+ JavaScript. Breaks AST compatibility with prior versions+ 0.4.10 Moved Lexer.x into a separate directory, and made a script to call alex to generate Lexer.hs. This means alex is not required at install time
dist/build/Language/JavaScript/Parser/Grammar5.hs view
@@ -5,3516 +5,4611 @@ , 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.9--newtype HappyAbsSyn = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = Happy_GHC_Exts.Any-#else-type HappyAny = forall a . a-#endif-happyIn7 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn7 #-}-happyOut7 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut7 #-}-happyIn8 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn8 #-}-happyOut8 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut8 #-}-happyIn9 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn9 #-}-happyOut9 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut9 #-}-happyIn10 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn10 #-}-happyOut10 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut10 #-}-happyIn11 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn11 #-}-happyOut11 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut11 #-}-happyIn12 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn12 #-}-happyOut12 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut12 #-}-happyIn13 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn13 #-}-happyOut13 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut13 #-}-happyIn14 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn14 #-}-happyOut14 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut14 #-}-happyIn15 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn15 #-}-happyOut15 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut15 #-}-happyIn16 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn16 #-}-happyOut16 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut16 #-}-happyIn17 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn17 #-}-happyOut17 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut17 #-}-happyIn18 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn18 #-}-happyOut18 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut18 #-}-happyIn19 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn19 #-}-happyOut19 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut19 #-}-happyIn20 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn20 #-}-happyOut20 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut20 #-}-happyIn21 :: ([ AST.JSNode ]) -> (HappyAbsSyn )-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn21 #-}-happyOut21 :: (HappyAbsSyn ) -> ([ AST.JSNode ])-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut21 #-}-happyIn22 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn22 #-}-happyOut22 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut22 #-}-happyIn23 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn23 #-}-happyOut23 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut23 #-}-happyIn24 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn24 #-}-happyOut24 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut24 #-}-happyIn25 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn25 #-}-happyOut25 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut25 #-}-happyIn26 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn26 #-}-happyOut26 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut26 #-}-happyIn27 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn27 #-}-happyOut27 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut27 #-}-happyIn28 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn28 #-}-happyOut28 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut28 #-}-happyIn29 :: ([[AST.JSNode]]) -> (HappyAbsSyn )-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn29 #-}-happyOut29 :: (HappyAbsSyn ) -> ([[AST.JSNode]])-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut29 #-}-happyIn30 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn30 #-}-happyOut30 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut30 #-}-happyIn31 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn31 #-}-happyOut31 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut31 #-}-happyIn32 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn32 #-}-happyOut32 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut32 #-}-happyIn33 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn33 #-}-happyOut33 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut33 #-}-happyIn34 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn34 #-}-happyOut34 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut34 #-}-happyIn35 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn35 #-}-happyOut35 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut35 #-}-happyIn36 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn36 #-}-happyOut36 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut36 #-}-happyIn37 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn37 #-}-happyOut37 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut37 #-}-happyIn38 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn38 #-}-happyOut38 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut38 #-}-happyIn39 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn39 #-}-happyOut39 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut39 #-}-happyIn40 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn40 #-}-happyOut40 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut40 #-}-happyIn41 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn41 #-}-happyOut41 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut41 #-}-happyIn42 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn42 #-}-happyOut42 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut42 #-}-happyIn43 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn43 #-}-happyOut43 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut43 #-}-happyIn44 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn44 #-}-happyOut44 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut44 #-}-happyIn45 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn45 #-}-happyOut45 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut45 #-}-happyIn46 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn46 #-}-happyOut46 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut46 #-}-happyIn47 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut47 #-}-happyIn48 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut48 #-}-happyIn49 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut49 #-}-happyIn50 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut50 #-}-happyIn51 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut51 #-}-happyIn52 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut52 #-}-happyIn53 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut53 #-}-happyIn54 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut54 #-}-happyIn55 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut55 #-}-happyIn56 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut56 #-}-happyIn57 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut57 #-}-happyIn58 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn58 #-}-happyOut58 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut58 #-}-happyIn59 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn59 #-}-happyOut59 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut59 #-}-happyIn60 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn60 #-}-happyOut60 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut60 #-}-happyIn61 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn61 #-}-happyOut61 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut61 #-}-happyIn62 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn62 #-}-happyOut62 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut62 #-}-happyIn63 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn63 #-}-happyOut63 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut63 #-}-happyIn64 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn64 #-}-happyOut64 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut64 #-}-happyIn65 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn65 #-}-happyOut65 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut65 #-}-happyIn66 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn66 #-}-happyOut66 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut66 #-}-happyIn67 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn67 #-}-happyOut67 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut67 #-}-happyIn68 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn68 #-}-happyOut68 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut68 #-}-happyIn69 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn69 #-}-happyOut69 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut69 #-}-happyIn70 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn70 #-}-happyOut70 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut70 #-}-happyIn71 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn71 #-}-happyOut71 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut71 #-}-happyIn72 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn72 #-}-happyOut72 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut72 #-}-happyIn73 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn73 #-}-happyOut73 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut73 #-}-happyIn74 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn74 #-}-happyOut74 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut74 #-}-happyIn75 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn75 #-}-happyOut75 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut75 #-}-happyIn76 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn76 #-}-happyOut76 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut76 #-}-happyIn77 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn77 #-}-happyOut77 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut77 #-}-happyIn78 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn78 #-}-happyOut78 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut78 #-}-happyIn79 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn79 #-}-happyOut79 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut79 #-}-happyIn80 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn80 #-}-happyOut80 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut80 #-}-happyIn81 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn81 #-}-happyOut81 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut81 #-}-happyIn82 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn82 #-}-happyOut82 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut82 #-}-happyIn83 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn83 #-}-happyOut83 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut83 #-}-happyIn84 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn84 #-}-happyOut84 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut84 #-}-happyIn85 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn85 #-}-happyOut85 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut85 #-}-happyIn86 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn86 #-}-happyOut86 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut86 #-}-happyIn87 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn87 #-}-happyOut87 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut87 #-}-happyIn88 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn88 #-}-happyOut88 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut88 #-}-happyIn89 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn89 #-}-happyOut89 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut89 #-}-happyIn90 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn90 #-}-happyOut90 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut90 #-}-happyIn91 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn91 #-}-happyOut91 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut91 #-}-happyIn92 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn92 #-}-happyOut92 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut92 #-}-happyIn93 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn93 #-}-happyOut93 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut93 #-}-happyIn94 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn94 #-}-happyOut94 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut94 #-}-happyIn95 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn95 #-}-happyOut95 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut95 #-}-happyIn96 :: ([AST.JSNode]) -> (HappyAbsSyn )-happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn96 #-}-happyOut96 :: (HappyAbsSyn ) -> ([AST.JSNode])-happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut96 #-}-happyIn97 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn97 #-}-happyOut97 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut97 #-}-happyIn98 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn98 #-}-happyOut98 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut98 #-}-happyIn99 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn99 #-}-happyOut99 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut99 #-}-happyIn100 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn100 #-}-happyOut100 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut100 #-}-happyIn101 :: (AST.JSNode) -> (HappyAbsSyn )-happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn101 #-}-happyOut101 :: (HappyAbsSyn ) -> (AST.JSNode)-happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut101 #-}-happyInTok :: (Token) -> (HappyAbsSyn )-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn ) -> (Token)-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOutTok #-}---happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\x2d\x1b\xa4\x02\x9e\x1d\xf6\x1a\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x02\x00\x00\x00\x00\x4f\x01\x00\x00\x49\x01\x1d\x00\xcc\x01\x00\x00\xee\x00\xb9\x01\xe9\x00\xab\x03\x9d\x01\x77\x02\x70\x02\x6b\x02\x6a\x02\x13\x01\x00\x00\x00\x00\x6f\x02\x25\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\xc1\x1c\x16\x18\x66\x1d\x37\x00\x65\x00\x37\x00\x6e\x02\x66\x1d\xf6\x1a\x00\x00\x49\x02\x65\x00\x00\x00\x48\x02\x82\x1d\x00\x00\x64\x1b\x00\x00\x44\x02\x00\x00\x66\x1d\x00\x00\x41\x02\x66\x1d\x65\x00\x66\x1d\x43\x02\x40\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\xf1\x1d\x17\x02\x00\x00\x00\x00\x17\x02\xbf\x1a\x00\x00\x65\x00\x3d\x02\x37\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x5b\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\xd2\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x1d\x66\x1d\x00\x00\x00\x00\x51\x02\xca\x01\x00\x00\x00\x00\xfc\xff\x3e\x19\x57\x02\x66\x1d\x00\x00\xc5\x01\x07\x01\x00\x00\x66\x1d\x00\x00\x2f\x1d\x11\x02\x00\x00\x00\x00\x00\x00\x54\x02\xc3\x01\x00\x00\x54\x02\xcb\x00\x4f\x02\x47\x02\x46\x02\x00\x00\x07\x19\xca\x17\xd0\x18\x65\x00\xd0\x18\x99\x18\x66\x1d\x88\x1a\x42\x02\x21\x02\xaf\x00\x20\x02\x82\x1d\x3f\x02\x62\x18\x1d\x02\x3c\x02\x66\x1d\x3a\x02\x12\x02\x66\x1d\x65\x00\x66\x1d\x0e\x02\x0c\x02\x7b\x00\x8a\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x00\x00\x00\x00\x66\x1d\x00\x00\x00\x00\x00\x00\x19\x1e\x66\x1d\xf8\x1c\x00\x00\x19\x1e\x66\x1d\x88\x1a\x00\x00\x2b\x00\x00\x00\x7d\x17\x2e\x17\xca\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x00\xee\x00\xa4\x01\xa4\x01\xa4\x01\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xab\x03\xab\x03\xab\x03\xab\x03\x9d\x01\x26\x02\x22\x02\x24\x02\x23\x02\x1f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x53\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x00\x00\x00\x01\x02\x06\x00\xe9\x00\x39\x03\x7a\x01\x1b\x02\x1a\x02\x13\x02\x15\x02\x0c\x01\x00\x00\x00\x00\x14\x02\x10\x02\x65\x00\xc6\x00\x00\x00\x00\x00\xb6\x00\xdf\x16\x00\x00\xfc\xff\x00\x00\x00\x00\xf1\x01\xf2\x01\x00\x00\x00\x00\x66\x1d\xa9\x00\xa1\x00\xef\x01\xee\x01\x66\x1d\xc8\x1d\x00\x00\xb8\x00\x74\x00\x00\x00\x8e\x00\xed\x01\x69\x00\xec\x01\x00\x00\x00\x00\x00\x00\xe4\x01\x65\x00\x88\x1a\x88\x1a\x00\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\xe1\x01\x51\x1a\xfe\x01\xaf\x01\xce\x01\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x66\x1d\x00\x00\x1c\x1c\x00\x00\x00\x00\x66\x1d\x00\x00\x66\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x14\x00\x1d\x00\x00\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xab\x03\xab\x03\xab\x03\xab\x03\x7a\x01\xff\x01\xfd\x01\xfa\x01\xf7\x01\xfb\x01\x00\x00\xf9\x01\xf8\x01\x66\x1d\x66\x1d\x65\x00\x00\x00\x66\x1d\xf6\x01\xbc\x01\x00\x00\x00\x00\xcd\x01\x75\x00\x00\x00\xe6\x01\x00\x00\xc0\x01\xcb\x01\x1a\x1a\x65\x00\xc6\x01\x1a\x1a\xc4\x01\x1a\x1a\xb1\x01\x1a\x1a\x00\x00\x1a\x1a\x00\x00\xaa\x01\x1a\x1a\xbe\x01\x00\x00\xb4\x01\x66\x1d\xe8\x00\x00\x00\x66\x1d\x00\x00\xe3\x19\x00\x00\x00\x00\x00\x00\xab\x01\x0e\x00\x66\x1d\x66\x1d\xe3\x19\xa0\x01\x00\x00\x00\x00\x00\x00\x80\x01\xe3\x19\x66\x1d\x00\x00\x2e\x00\x00\x00\x7b\x01\x00\x00\x99\x01\x5d\x01\x00\x00\xac\x19\x7c\x01\x00\x00\x78\x01\x00\x00\x00\x00\x76\x01\x00\x00\x00\x00\x00\x00\x74\x01\x56\x01\x75\x19\xd1\x00\x75\x19\x51\x01\x00\x00\x75\x19\x00\x00\x75\x19\x75\x19\x00\x00\x75\x19\x00\x00\x00\x00\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x35\x02\xb2\x01\xcc\x17\x48\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\x5f\x01\x00\x00\x4a\x01\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x16\x9c\x16\x80\x16\x61\x16\x45\x16\x29\x16\xf4\x0a\x81\x03\xc7\x0d\xe1\x00\x8f\x00\xdf\x00\x47\x01\x0a\x16\xf1\x08\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\xd7\x16\x00\x00\x50\x03\x00\x00\x00\x00\x00\x00\x96\x0d\x00\x00\x0e\x01\xee\x15\x51\x00\xd2\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x09\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x0d\x34\x0d\x00\x00\x00\x00\x05\x01\x41\x01\x00\x00\x00\x00\x06\x01\x86\x04\x00\x00\x03\x0d\x00\x00\x3f\x01\x28\x01\x00\x00\xd2\x0c\x00\x00\xc1\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x01\x39\x01\x00\x00\x2c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x08\x00\x00\xb2\x00\x4d\x00\x96\x00\x24\x01\xb3\x15\x43\x08\x00\x00\x00\x00\x02\x00\x00\x00\xd7\x16\x00\x00\x50\x03\x00\x00\x00\x00\xa1\x0c\x00\x00\xe3\x00\x97\x15\x47\x00\x7b\x15\x00\x00\x00\x00\x00\x00\x48\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x10\xee\x0f\xcc\x10\x23\x11\x7a\x11\xc8\x11\x0e\x12\x12\x13\xf0\x12\xd1\x12\xaf\x12\x76\x14\x57\x14\x35\x14\x16\x14\xf4\x13\xd5\x13\xcd\x14\xae\x14\x92\x14\x05\x15\xe9\x14\x5c\x15\x40\x15\x24\x15\x00\x00\x00\x00\xc1\x0f\x00\x00\x00\x00\x00\x00\x86\x01\x70\x0c\x43\x0c\x00\x00\x5e\x01\x12\x0c\xec\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x07\x00\x00\x36\x01\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x94\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x67\x0f\xde\x16\x00\x00\x0f\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x3e\x07\xe7\x06\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x87\x00\x9f\x09\x78\x00\x00\x00\x00\x00\x8f\x0a\x38\x0f\x0a\x0f\xa0\x10\xf7\x10\x4e\x11\xa5\x11\xeb\x11\x90\x12\x6e\x12\x4f\x12\x2d\x12\xb3\x13\x94\x13\x72\x13\x53\x13\x31\x13\xdc\x0e\xb4\x0b\x83\x0b\x00\x00\xae\x0e\x00\x00\x00\x00\x81\x0e\x00\x00\x54\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x0b\x5c\x0a\x07\x00\x00\x00\x25\x0e\x00\x00\x0a\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\xd7\x01\x34\x00\x00\x00\x79\x01\x00\x00\x1b\x01\x00\x00\x93\x02\x00\x00\xbd\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x08\x00\x75\x10\xdc\x00\x00\x00\x21\x0b\x00\x00\x90\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x0a\xf7\x0d\x39\x06\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x05\xf6\x09\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\xff\x2f\x04\xb4\xff\xd8\x03\x00\x00\x00\x00\x8b\x05\x00\x00\x34\x05\xdd\x04\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\x00\x00"#--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xeb\xff\xf9\xff\xf8\xff\xf7\xff\xf6\xff\xf5\xff\xaa\xff\xec\xff\xea\xff\xe9\xff\xa5\xff\x9b\xff\x9a\xff\x99\xff\x96\xff\x8c\xff\x86\xff\x82\xff\x81\xff\x74\xff\x6a\xff\x66\xff\x62\xff\x5e\xff\x5a\xff\x56\xff\x52\xff\x4c\xff\x21\xff\x00\x00\x44\xff\x42\xff\x41\xff\x43\xff\x40\xff\x3f\xff\x3e\xff\x3d\xff\x3c\xff\x3b\xff\x3a\xff\x38\xff\x39\xff\x37\xff\x36\xff\x35\xff\xa9\xff\x22\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\x00\x00\x00\x00\xf2\xff\x00\x00\xf3\xfe\xe6\xff\x00\x00\x00\x00\xf4\xff\xfa\xff\xe5\xff\x00\x00\xed\xff\x00\x00\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\xf1\xff\xf0\xff\xef\xff\xee\xff\x00\x00\xec\xff\x00\x00\x00\x00\xe9\xfe\xe8\xfe\x00\x00\xee\xfe\xeb\xfe\xf3\xfe\x00\x00\x00\x00\xea\xfe\xac\xff\xad\xff\xe4\xff\xae\xff\x00\x00\xb3\xff\x00\x00\xb6\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\xda\xff\xd9\xff\xd8\xff\xd7\xff\xd6\xff\xd5\xff\xe6\xff\xd3\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xe5\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\xc2\xff\x00\x00\x00\x00\x99\xff\x94\xff\x28\xff\xfa\xff\x2c\xff\x93\xff\x00\x00\x00\x00\x02\xff\x00\x00\x10\xff\xfa\xff\xa5\xff\xa4\xff\x00\x00\xf4\xfe\x45\xff\x00\x00\x95\xff\xf9\xfe\x14\xff\xfa\xff\xfa\xff\x12\xff\xfa\xff\x00\x00\xf7\xff\xf6\xff\xec\xff\x30\xff\x00\x00\xb6\xff\xe3\xff\xe0\xff\xdf\xff\xde\xff\xdc\xff\xdb\xff\xf2\xff\xd6\xff\xd5\xff\xd3\xff\xd0\xff\xf4\xff\xce\xff\xcc\xff\xed\xff\xca\xff\xf3\xff\xc8\xff\xc7\xff\xc6\xff\xc5\xff\xc4\xff\xc3\xff\x00\x00\x00\x00\xbb\xff\xb8\xff\xc1\xff\x8e\xff\x8d\xff\x8f\xff\x90\xff\x91\xff\x92\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\x98\xff\x97\xff\x00\x00\x4d\xff\x4e\xff\xa2\xff\x00\x00\x00\x00\x00\x00\xa3\xff\x00\x00\x00\x00\x00\x00\x03\xff\x00\x00\xa7\xff\xd4\xff\xcd\xff\x00\x00\x9d\xff\x9f\xff\x00\x00\xa0\xff\x51\xff\x89\xff\x8a\xff\x8b\xff\x87\xff\x88\xff\x84\xff\x83\xff\x85\xff\x7c\xff\x7b\xff\x7f\xff\x7d\xff\x80\xff\x7e\xff\x72\xff\x70\xff\x73\xff\x71\xff\x69\xff\x65\xff\x61\xff\x5d\xff\x59\xff\x00\x00\x4b\xff\xbc\xff\xb7\xff\xc0\xff\x00\x00\xbf\xff\x2f\xff\x33\xff\xe8\xff\x11\xff\x2d\xff\x00\x00\x13\xff\x00\x00\x99\xff\x7a\xff\x6f\xff\x68\xff\x64\xff\x60\xff\x5c\xff\x58\xff\x54\xff\x50\xff\x4a\xff\x46\xff\x00\x00\x00\x00\x00\x00\xa6\xff\x0f\xff\x00\x00\x00\x00\x32\xff\x01\xff\xfe\xfe\x00\xff\x00\x00\x00\x00\x2e\xff\x27\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xff\x00\x00\x00\x00\xf2\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xb2\xff\xb4\xff\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x24\xff\xfa\xfe\x00\x00\xfd\xfe\xff\xfe\x31\xff\x00\x00\x00\x00\x25\xff\x00\x00\x2a\xff\x47\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\x2b\xff\x00\x00\xb9\xff\xbd\xff\x00\x00\xa1\xff\x00\x00\x9e\xff\xa8\xff\x9c\xff\x55\xff\xba\xff\xbe\xff\x00\x00\x00\x00\x99\xff\x4f\xff\x75\xff\x78\xff\x76\xff\x79\xff\x77\xff\x6d\xff\x6b\xff\x6e\xff\x6c\xff\x67\xff\x63\xff\x5f\xff\x5b\xff\x57\xff\x00\x00\x49\xff\x48\xff\x00\x00\x00\x00\x47\xff\x00\x00\x26\xff\x00\x00\x1c\xff\x1e\xff\x1b\xff\x0d\xff\x08\xff\x00\x00\x19\xff\xfa\xff\xab\xff\x00\x00\x00\x00\xef\xfe\x00\x00\x00\x00\xef\xfe\x00\x00\xef\xfe\x00\x00\xf0\xfe\xed\xfe\xef\xfe\xf1\xfe\x00\x00\xef\xfe\x00\x00\x0e\xff\x00\x00\x00\x00\x00\x00\x0a\xff\x00\x00\x20\xff\x00\x00\x1d\xff\x23\xff\x29\xff\x00\x00\x00\x00\x47\xff\x00\x00\x00\x00\xfa\xff\x1a\xff\x16\xff\x53\xff\x00\x00\x00\x00\x47\xff\x1f\xff\x00\x00\x09\xff\x08\xff\x0c\xff\x00\x00\x00\x00\xfc\xfe\xef\xfe\x00\x00\xf6\xfe\x00\x00\xec\xfe\xf7\xfe\x00\x00\xf8\xfe\xf5\xfe\xb0\xff\x00\x00\x00\x00\x05\xff\x00\x00\x06\xff\x00\x00\x15\xff\x00\x00\x18\xff\x00\x00\x07\xff\x0b\xff\x04\xff\xfb\xfe\xaf\xff\x17\xff"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x4d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x08\x00\x0a\x00\x08\x00\x08\x00\x0d\x00\x08\x00\x02\x00\x08\x00\x0c\x00\x12\x00\x13\x00\x14\x00\x02\x00\x08\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x08\x00\x1f\x00\x02\x00\x21\x00\x37\x00\x23\x00\x29\x00\x25\x00\x00\x00\x27\x00\x0c\x00\x29\x00\x02\x00\x2b\x00\x02\x00\x2d\x00\x33\x00\x02\x00\x30\x00\x04\x00\x25\x00\x08\x00\x34\x00\x35\x00\x36\x00\x01\x00\x25\x00\x39\x00\x08\x00\x08\x00\x11\x00\x38\x00\x37\x00\x21\x00\x40\x00\x41\x00\x42\x00\x3d\x00\x3c\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x21\x00\x43\x00\x25\x00\x08\x00\x4f\x00\x50\x00\x51\x00\x4d\x00\x02\x00\x08\x00\x55\x00\x56\x00\x57\x00\x08\x00\x58\x00\x5a\x00\x58\x00\x5c\x00\x59\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x59\x00\x0a\x00\x4d\x00\x02\x00\x0d\x00\x36\x00\x3b\x00\x58\x00\x3d\x00\x12\x00\x13\x00\x14\x00\x3d\x00\x23\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x02\x00\x1f\x00\x48\x00\x21\x00\x3a\x00\x23\x00\x3c\x00\x25\x00\x00\x00\x27\x00\x3a\x00\x29\x00\x3c\x00\x2b\x00\x3a\x00\x2d\x00\x3c\x00\x25\x00\x30\x00\x02\x00\x4c\x00\x4d\x00\x34\x00\x35\x00\x36\x00\x00\x00\x08\x00\x39\x00\x25\x00\x25\x00\x36\x00\x21\x00\x2f\x00\x08\x00\x40\x00\x41\x00\x42\x00\x3d\x00\x02\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x02\x00\x37\x00\x48\x00\x4f\x00\x50\x00\x51\x00\x3d\x00\x00\x00\x25\x00\x55\x00\x56\x00\x57\x00\x3f\x00\x02\x00\x5a\x00\x08\x00\x5c\x00\x48\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x25\x00\x0a\x00\x02\x00\x3a\x00\x0d\x00\x3c\x00\x02\x00\x02\x00\x25\x00\x12\x00\x13\x00\x14\x00\x4b\x00\x24\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x25\x00\x1f\x00\x25\x00\x21\x00\x00\x00\x23\x00\x00\x00\x25\x00\x08\x00\x27\x00\x36\x00\x29\x00\x08\x00\x2b\x00\x08\x00\x2d\x00\x25\x00\x3d\x00\x30\x00\x36\x00\x25\x00\x25\x00\x34\x00\x35\x00\x36\x00\x23\x00\x3d\x00\x39\x00\x48\x00\x0f\x00\x28\x00\x37\x00\x12\x00\x13\x00\x40\x00\x41\x00\x42\x00\x48\x00\x2f\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x1a\x00\x1b\x00\x1c\x00\x23\x00\x4f\x00\x50\x00\x51\x00\x03\x00\x28\x00\x05\x00\x55\x00\x56\x00\x57\x00\x2d\x00\x03\x00\x5a\x00\x05\x00\x5c\x00\x37\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x00\x00\x0a\x00\x1f\x00\x20\x00\x0d\x00\x4d\x00\x4e\x00\x24\x00\x00\x00\x12\x00\x13\x00\x14\x00\x4c\x00\x4d\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x1f\x00\x00\x00\x21\x00\x15\x00\x23\x00\x00\x00\x25\x00\x00\x00\x27\x00\x3e\x00\x29\x00\x37\x00\x2b\x00\x00\x00\x2d\x00\x04\x00\x05\x00\x30\x00\x2f\x00\x08\x00\x09\x00\x34\x00\x35\x00\x36\x00\x04\x00\x05\x00\x39\x00\x10\x00\x08\x00\x09\x00\x52\x00\x53\x00\x54\x00\x40\x00\x41\x00\x42\x00\x10\x00\x15\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x08\x00\x09\x00\x1f\x00\x20\x00\x4f\x00\x50\x00\x51\x00\x24\x00\x1f\x00\x20\x00\x55\x00\x56\x00\x57\x00\x24\x00\x15\x00\x5a\x00\x25\x00\x5c\x00\x22\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x25\x00\x0a\x00\x0a\x00\x0b\x00\x0d\x00\x0d\x00\x0e\x00\x53\x00\x54\x00\x12\x00\x13\x00\x14\x00\x08\x00\x09\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x23\x00\x1f\x00\x23\x00\x21\x00\x23\x00\x23\x00\x04\x00\x25\x00\x23\x00\x27\x00\x01\x00\x29\x00\x28\x00\x2b\x00\x25\x00\x2d\x00\x0a\x00\x0b\x00\x30\x00\x0d\x00\x0e\x00\x01\x00\x34\x00\x35\x00\x36\x00\x01\x00\x02\x00\x39\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x40\x00\x41\x00\x42\x00\x18\x00\x19\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x01\x00\x02\x00\x01\x00\x02\x00\x4f\x00\x50\x00\x51\x00\x01\x00\x02\x00\x23\x00\x55\x00\x56\x00\x57\x00\x18\x00\x19\x00\x5a\x00\x23\x00\x5c\x00\x22\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x22\x00\x0a\x00\x16\x00\x17\x00\x0d\x00\x25\x00\x22\x00\x01\x00\x22\x00\x12\x00\x13\x00\x14\x00\x30\x00\x22\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x28\x00\x1f\x00\x01\x00\x21\x00\x01\x00\x23\x00\x02\x00\x25\x00\x06\x00\x27\x00\x04\x00\x29\x00\x07\x00\x2b\x00\x22\x00\x2d\x00\x08\x00\x38\x00\x30\x00\x09\x00\x25\x00\x0c\x00\x34\x00\x35\x00\x36\x00\x22\x00\x22\x00\x39\x00\x01\x00\x24\x00\x24\x00\x22\x00\x24\x00\x02\x00\x40\x00\x41\x00\x42\x00\x07\x00\x06\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x08\x00\x04\x00\x09\x00\x24\x00\x4f\x00\x50\x00\x51\x00\x06\x00\x08\x00\x07\x00\x55\x00\x56\x00\x57\x00\x09\x00\x24\x00\x5a\x00\x24\x00\x5c\x00\x22\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x04\x00\x0a\x00\x04\x00\x24\x00\x0d\x00\x04\x00\x24\x00\x24\x00\x04\x00\x12\x00\x13\x00\x14\x00\x04\x00\x04\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x04\x00\x1f\x00\x01\x00\x21\x00\x46\x00\x23\x00\x02\x00\x25\x00\x24\x00\x27\x00\x0c\x00\x29\x00\x04\x00\x2b\x00\x24\x00\x2d\x00\x22\x00\x24\x00\x30\x00\x4f\x00\x24\x00\x24\x00\x34\x00\x35\x00\x36\x00\x24\x00\x24\x00\x39\x00\x01\x00\x06\x00\x02\x00\x07\x00\x01\x00\x4f\x00\x40\x00\x41\x00\x42\x00\x08\x00\x04\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x09\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\x57\x00\xff\xff\xff\xff\xff\xff\x5b\x00\xff\xff\x5d\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\x32\x00\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\x3b\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x41\x00\xff\xff\xff\xff\x55\x00\x56\x00\x57\x00\xff\xff\xff\xff\x49\x00\x4a\x00\x4b\x00\x4c\x00\x5e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\x56\x00\x57\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x5e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\x39\x00\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\x0e\x00\x0f\x00\x10\x00\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\x38\x00\x39\x00\x10\x00\x11\x00\xff\xff\xff\xff\x14\x00\x15\x00\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\x38\x00\x39\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\x41\x00\x42\x00\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\x04\x00\x05\x00\x35\x00\x36\x00\x08\x00\x09\x00\x39\x00\xff\xff\xff\xff\xff\xff\x0e\x00\x0f\x00\x10\x00\xff\xff\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x57\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x57\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x57\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x32\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\x57\x00\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\xff\xff\xff\xff\x31\x00\xff\xff\x33\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\x57\x00\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\x57\x00\x27\x00\xff\xff\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x30\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\x57\x00\x28\x00\xff\xff\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x57\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\x57\x00\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x57\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x57\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x57\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\x57\x00\x29\x00\xff\xff\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\xff\xff\x2d\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x57\x00\x2b\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\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\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x57\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\xff\xff\x21\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\x57\x00\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\x57\x00\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\x1f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\x57\x00\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\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\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\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\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\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\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\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\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\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\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\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\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\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\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\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\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\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\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\x57\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x13\x00\x14\x00\xff\xff\xff\xff\x17\x00\x18\x00\x19\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x01\x00\x0a\x00\x04\x00\x05\x00\x0d\x00\xff\xff\x08\x00\x09\x00\xff\xff\x12\x00\x13\x00\xff\xff\xff\xff\x0f\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\x57\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\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\x4b\x00\x4c\x00\xff\xff\xff\xff\x57\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\xff\xff\x4f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x01\x00\x4f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\xff\xff\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\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\x4b\x00\x4c\x00\x01\x00\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x01\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x04\x00\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x04\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x02\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x36\x00\xff\xff\xff\xff\x02\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\x02\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\x02\x00\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x25\x00\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\x20\x00\x3d\x00\x22\x00\x3f\x00\x24\x00\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\x20\x00\x3d\x00\x22\x00\x3f\x00\x24\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x23\x00\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x23\x00\xff\xff\x4e\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#--happyTable :: HappyAddr-happyTable = HappyA# "\x00\x00\xd9\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xa5\x00\x0e\x00\x67\x00\x54\x01\x0f\x00\x68\x01\xd9\x00\x98\x00\xf5\x00\x10\x00\x11\x00\x12\x00\xd9\x00\x54\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xa5\x00\x1a\x00\xd9\x00\x1b\x00\xf6\x01\x1c\x00\x47\x01\x1d\x00\xd1\x01\x1e\x00\xf5\x00\x1f\x00\xd9\x00\x20\x00\xd9\x00\x21\x00\x48\x01\xd9\x00\x22\x00\xee\x01\xd6\x01\xaf\x01\x61\x00\x24\x00\x25\x00\x06\x00\xd0\x01\x26\x00\x68\x01\xbc\x01\xb0\x01\x7e\x01\xde\x01\x85\x01\x27\x00\x28\x00\x29\x00\xca\x01\x7f\x01\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x88\x01\xc6\x01\xd1\x01\x98\x00\x30\x00\x31\x00\x32\x00\xf6\x00\x51\x01\x98\x00\x33\x00\x62\x00\x34\x00\x98\x00\x68\x00\xe9\x01\x68\x00\xb9\x01\x55\x01\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x57\x01\x0e\x00\xf6\x00\xb4\x01\x0f\x00\x49\x00\x69\x01\x68\x00\x6a\x01\x10\x00\x11\x00\x12\x00\x4e\x00\x52\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x26\x01\x1a\x00\x59\x00\x1b\x00\x99\x00\x1c\x00\x9a\x00\x1d\x00\xc0\x01\x1e\x00\xac\x00\x1f\x00\x9a\x00\x20\x00\x99\x00\x21\x00\x9a\x00\xb5\x01\x22\x00\xb4\x01\xec\x01\xc4\x01\x61\x00\x24\x00\x25\x00\xaa\x00\x98\x00\x26\x00\x57\x01\xc2\x01\x49\x00\x27\x01\x7c\x01\xab\x00\x27\x00\x28\x00\x29\x00\x4e\x00\xd9\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x49\x00\xd9\x00\xc3\x01\x59\x00\x30\x00\x31\x00\x32\x00\x4e\x00\xad\x00\xb7\x01\x33\x00\x62\x00\x34\x00\xa5\x01\xd9\x00\xe0\x01\xae\x00\xb9\x01\x59\x00\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5f\x01\x0e\x00\xd9\x00\xac\x00\x0f\x00\x9a\x00\x86\x01\xd9\x00\x60\x01\x10\x00\x11\x00\x12\x00\xaa\x01\xf3\xfe\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x67\x01\x1a\x00\x59\x01\x1b\x00\xaa\x00\x1c\x00\xad\x00\x1d\x00\xac\x01\x1e\x00\x49\x00\x1f\x00\xab\x00\x20\x00\xae\x00\x21\x00\x68\x01\x4e\x00\x22\x00\x49\x00\x87\x01\x2a\x01\x61\x00\x24\x00\x25\x00\xf5\x01\x4e\x00\x26\x00\x59\x00\xea\x00\xc6\x01\x61\x01\xeb\x00\xec\x00\x27\x00\x28\x00\x29\x00\x59\x00\x7c\x01\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xef\x00\xf0\x00\xf1\x00\xdc\x01\x30\x00\x31\x00\x32\x00\x6e\x01\xc6\x01\x6f\x01\x33\x00\x62\x00\x34\x00\xdd\x01\xda\x00\xe2\x01\xdb\x00\xb9\x01\x9c\x00\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xa9\x00\x0e\x00\xfc\x00\xfd\x00\x0f\x00\xd9\x01\xda\x01\xfa\x00\x2a\x01\x10\x00\x11\x00\x12\x00\xc3\x01\xc4\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x2b\x01\x1a\x00\x2d\x01\x1b\x00\x3e\x01\x1c\x00\x3f\x01\x1d\x00\x48\x01\x1e\x00\x49\x01\x1f\x00\x9c\x00\x20\x00\xa9\x00\x21\x00\x6a\x00\x6b\x00\x22\x00\xf3\x00\x6c\x00\x6d\x00\x61\x00\x24\x00\x25\x00\x6a\x00\x6b\x00\x26\x00\x4d\x01\x6c\x00\x6d\x00\x43\x01\x44\x01\x45\x01\x27\x00\x28\x00\x29\x00\x4e\x01\xf6\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x6c\x00\x00\x01\xf8\x00\xf9\x00\x30\x00\x31\x00\x32\x00\xfa\x00\xfc\x00\xfd\x00\x33\x00\x62\x00\x34\x00\xfa\x00\xfa\x00\xe5\x01\xf3\x01\xb9\x01\x9e\x00\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xeb\x01\x0e\x00\x74\x01\x75\x01\x0f\x00\x76\x01\x77\x01\x63\x01\x64\x01\x10\x00\x11\x00\x12\x00\x6c\x00\x07\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xf8\x01\x1a\x00\xe7\x01\x1b\x00\xe8\x01\x1c\x00\xec\x01\x1d\x00\xe9\x01\x1e\x00\x06\x00\x1f\x00\xc6\x01\x20\x00\xf1\x01\x21\x00\xe0\x00\xe1\x00\x22\x00\xe2\x00\xe3\x00\xd7\x01\x61\x00\x24\x00\x25\x00\xa4\x01\xa5\x01\x26\x00\x60\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x27\x00\x28\x00\x29\x00\xed\x00\xee\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x06\x00\x2d\x01\x06\x00\xd9\x00\x30\x00\x31\x00\x32\x00\x06\x00\x2d\x01\xe2\x01\x33\x00\x62\x00\x34\x00\xed\x00\xee\x00\xb8\x01\xe5\x01\xb9\x01\x9e\x00\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xe0\x01\x0e\x00\xf2\x00\xf3\x00\x0f\x00\xc0\x01\xb8\x01\x06\x00\xbc\x01\x10\x00\x11\x00\x12\x00\xc8\x01\xbf\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xc6\x01\x1a\x00\xc9\x01\x1b\x00\xce\x01\x1c\x00\xd9\x00\x1d\x00\x70\x01\x1e\x00\xcf\x01\x1f\x00\x71\x01\x20\x00\xac\x01\x21\x00\x72\x01\xa3\x01\x22\x00\x73\x01\xb2\x01\xa7\x01\x61\x00\x24\x00\x25\x00\xb3\x01\xb6\x01\x26\x00\x6c\x01\x5d\x01\x5e\x01\x9e\x00\x63\x01\x6d\x01\x27\x00\x28\x00\x29\x00\x71\x01\x70\x01\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x72\x01\x84\x01\x73\x01\x7f\x01\x30\x00\x31\x00\x32\x00\xdc\x00\xde\x00\xdd\x00\x33\x00\x62\x00\x34\x00\xdf\x00\x95\x00\xbd\x01\x96\x00\xb9\x01\x9e\x00\xba\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xc9\xff\x0e\x00\xcb\xff\xa0\x00\x0f\x00\xcf\xff\xa5\x00\xa7\x00\xd8\xff\x10\x00\x11\x00\x12\x00\xfe\x00\xad\xff\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\xac\xff\x1a\x00\x06\x00\x1b\x00\x2f\x01\x1c\x00\xd9\x00\x1d\x00\x53\x01\x1e\x00\x4b\x01\x1f\x00\x50\x01\x20\x00\x54\x01\x21\x00\x9e\x00\x95\x00\x22\x00\xff\xff\x96\x00\xa0\x00\x61\x00\x24\x00\x25\x00\xa5\x00\xa7\x00\x26\x00\x06\x00\xdc\x00\xd9\x00\xdd\x00\x06\x00\xff\xff\x27\x00\x28\x00\x29\x00\xde\x00\xfe\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x62\x00\x34\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x64\x00\x65\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x61\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x46\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x52\x00\x00\x00\x00\x00\x33\x00\x62\x00\x34\x00\x00\x00\x00\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xe3\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x61\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x62\x00\x34\x00\x78\x01\x79\x01\x00\x00\x00\x00\x7a\x01\x7b\x01\x69\x00\xa0\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x7c\x01\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x06\x00\x07\x00\x08\x00\xb0\x00\xb1\x00\x0b\x00\x0c\x00\xb2\x00\x6d\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x6e\x00\x6f\x00\x70\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x24\x00\x25\x00\x00\x00\xb4\x00\x26\x00\xe4\x00\xe5\x00\x00\x00\x00\x00\xe6\x00\xe7\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\xe8\x00\xe9\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x24\x00\x25\x00\x00\x00\xf3\x01\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x24\x00\x25\x00\x00\x00\xf5\x01\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x24\x00\x25\x00\x00\x00\x41\x01\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x27\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xf1\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xef\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xd2\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xd7\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xad\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xae\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x27\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x27\x01\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x00\x00\x00\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x6a\x00\x6b\x00\xa7\x01\x25\x00\x6c\x00\x6d\x00\x26\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x00\x00\x28\x00\x29\x00\x00\x00\xa8\x01\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x31\x00\x32\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xa0\x01\x00\x00\xee\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x34\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xa0\x01\x00\x00\xd4\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x34\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xa0\x01\x00\x00\xcb\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x34\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xa0\x01\x00\x00\xa1\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x2f\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x34\x00\x35\x01\x00\x00\x36\x01\x00\x00\x37\x01\x00\x00\x38\x01\x00\x00\x39\x01\x00\x00\x00\x00\x3a\x01\x00\x00\x3b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\xcd\x00\xce\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x34\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\xcf\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xcc\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x8c\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x8d\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x80\x01\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x81\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xff\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x03\x01\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x04\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x06\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x3d\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x40\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x4b\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x34\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xaf\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x8e\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x34\x00\x36\x01\x00\x00\x37\x01\x00\x00\x38\x01\x00\x00\xd3\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x8e\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x00\x00\x36\x01\x34\x00\x37\x01\x00\x00\x38\x01\x00\x00\xc9\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x34\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x88\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x89\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x8a\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x8e\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x00\x00\x36\x01\x34\x00\x37\x01\x00\x00\x38\x01\x00\x00\x8f\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x8e\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x00\x00\x36\x01\x34\x00\x37\x01\x00\x00\x38\x01\x00\x00\x9e\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x8e\x01\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x00\x00\x36\x01\x34\x00\x37\x01\x00\x00\x38\x01\x00\x00\x9f\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x34\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x5b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x60\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x08\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x20\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x21\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\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\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\x20\x00\x00\x00\x22\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x34\x00\xdd\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x35\x01\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x34\x01\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x33\x01\x00\x00\x9b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x32\x01\x00\x00\x9a\x01\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x34\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1a\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x34\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x30\x01\x00\x00\x31\x01\x00\x00\x99\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x34\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x00\x00\x1b\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x34\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x95\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x96\x01\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x97\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x98\x01\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x17\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x18\x01\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x1a\x01\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x90\x01\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\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x91\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x92\x01\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\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x93\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x94\x01\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\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x11\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x12\x01\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\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x13\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x14\x01\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\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x15\x01\x00\x00\x00\x00\x00\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x34\x00\x96\x00\x14\x00\x15\x00\x16\x00\x17\x00\x16\x01\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x0e\x01\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x16\x00\x10\x01\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x0c\x01\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x15\x00\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x09\x01\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x0a\x01\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x97\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x9b\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x97\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\x9b\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd2\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd3\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd5\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd6\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x14\x00\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x00\x36\x00\x0e\x00\x6a\x00\x6b\x00\x0f\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\xa2\x00\xa3\x00\x00\x00\x00\x00\x59\x01\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x66\x01\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x34\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x00\x00\x00\x00\x34\x00\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\x00\x00\xcd\xff\xcd\xff\x00\x00\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\x00\x00\xcd\xff\x00\x00\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\xcd\xff\x00\x00\xcd\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\x00\x00\xd4\xff\xd4\xff\x00\x00\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\x00\x00\xd4\xff\x00\x00\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\xd4\xff\x34\xff\xd4\xff\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x5d\x00\x5e\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\xff\x34\xff\x34\xff\x34\xff\x00\x00\x00\x00\x00\x00\x34\xff\x34\xff\x00\x00\x34\xff\x00\x00\x34\xff\x34\xff\x34\xff\x00\x00\x00\x00\x34\xff\x34\xff\x00\x00\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x00\x00\x34\xff\x00\x00\x34\xff\x34\xff\x34\xff\x34\xff\x00\x00\x00\x00\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x34\xff\x36\x00\x00\x00\x34\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\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\xb6\x00\x3f\x00\x00\x00\x00\x00\xb7\x00\x74\x00\x75\x00\xb8\x00\xb9\x00\xba\x00\x79\x00\xbb\x00\xbc\x00\x7c\x00\x7d\x00\xbd\x00\x7f\x00\xbe\x00\xbf\x00\x82\x00\xc0\x00\x84\x00\x85\x00\xc1\x00\xc2\x00\xc3\x00\x89\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x06\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x60\x00\xfa\xff\x3f\x00\x00\x00\x00\x00\xfa\xff\x00\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\x44\x00\xfa\xff\x00\x00\x00\x00\x46\x00\x00\x00\xfa\xff\x48\x00\x49\x00\xfa\xff\x06\x00\x00\x00\x4b\x00\x4c\x00\xfa\xff\x4e\x00\xfa\xff\x50\x00\xfa\xff\x52\x00\xfa\xff\x54\x00\xfa\xff\x56\x00\xfa\xff\xfa\xff\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\xfa\xff\xfa\xff\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x06\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\xfa\xff\xfa\xff\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\x49\x00\xfa\xff\x36\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x4e\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x59\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x29\x01\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x43\x01\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x67\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x67\x00\x49\x00\x4a\x00\xaa\x01\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x67\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x36\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x43\x00\x00\x00\x44\x00\x45\x00\x00\x00\x00\x00\x46\x00\x00\x00\x47\x00\x67\x00\x49\x00\x4a\x00\x06\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xff\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x02\x01\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x03\x01\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xd4\xff\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x02\x01\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x03\x01\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x24\x01\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x8c\x01\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\xd1\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x83\x01\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x24\x01\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x25\x01\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\xd1\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\xd2\x00\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x60\x00\x00\x00\x3f\x00\x06\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x54\x00\x3d\x01\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x60\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x3d\x00\x4e\x00\x60\x00\x50\x00\x3f\x00\x52\x00\x00\x00\x54\x00\x00\x00\x56\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x00\x00\x46\x00\x00\x00\x00\x00\x48\x00\x49\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x3d\x00\x4e\x00\x60\x00\x50\x00\x3f\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x00\x00\x46\x00\x00\x00\x00\x00\x00\x00\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x4e\x00\x00\x00\x50\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5b\x01\x00\x00\x00\x00\x00\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x72\x00\x00\x00\x94\x00\x00\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x00\x00\x00\x00\x94\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x02\x01\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x03\x01\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyReduceArr = Happy_Data_Array.array (4, 279) [- (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),- (207 , happyReduce_207),- (208 , happyReduce_208),- (209 , happyReduce_209),- (210 , happyReduce_210),- (211 , happyReduce_211),- (212 , happyReduce_212),- (213 , happyReduce_213),- (214 , happyReduce_214),- (215 , happyReduce_215),- (216 , happyReduce_216),- (217 , happyReduce_217),- (218 , happyReduce_218),- (219 , happyReduce_219),- (220 , happyReduce_220),- (221 , happyReduce_221),- (222 , happyReduce_222),- (223 , happyReduce_223),- (224 , happyReduce_224),- (225 , happyReduce_225),- (226 , happyReduce_226),- (227 , happyReduce_227),- (228 , happyReduce_228),- (229 , happyReduce_229),- (230 , happyReduce_230),- (231 , happyReduce_231),- (232 , happyReduce_232),- (233 , happyReduce_233),- (234 , happyReduce_234),- (235 , happyReduce_235),- (236 , happyReduce_236),- (237 , happyReduce_237),- (238 , happyReduce_238),- (239 , happyReduce_239),- (240 , happyReduce_240),- (241 , happyReduce_241),- (242 , happyReduce_242),- (243 , happyReduce_243),- (244 , happyReduce_244),- (245 , happyReduce_245),- (246 , happyReduce_246),- (247 , happyReduce_247),- (248 , happyReduce_248),- (249 , happyReduce_249),- (250 , happyReduce_250),- (251 , happyReduce_251),- (252 , happyReduce_252),- (253 , happyReduce_253),- (254 , happyReduce_254),- (255 , happyReduce_255),- (256 , happyReduce_256),- (257 , happyReduce_257),- (258 , happyReduce_258),- (259 , happyReduce_259),- (260 , happyReduce_260),- (261 , happyReduce_261),- (262 , happyReduce_262),- (263 , happyReduce_263),- (264 , happyReduce_264),- (265 , happyReduce_265),- (266 , happyReduce_266),- (267 , happyReduce_267),- (268 , happyReduce_268),- (269 , happyReduce_269),- (270 , happyReduce_270),- (271 , happyReduce_271),- (272 , happyReduce_272),- (273 , happyReduce_273),- (274 , happyReduce_274),- (275 , happyReduce_275),- (276 , happyReduce_276),- (277 , happyReduce_277),- (278 , happyReduce_278),- (279 , happyReduce_279)- ]--happy_n_terms = 80 :: Int-happy_n_nonterms = 95 :: Int--happyReduce_4 = happySpecReduce_1 0# happyReduction_4-happyReduction_4 happy_x_1- = 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.NS (AST.JSLiteral "") SpanEmpty- )--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 1# happyReduction_10-happyReduction_10 happy_x_1- = case happyOut13 happy_x_1 of { happy_var_1 -> - happyIn8- (happy_var_1- )}--happyReduce_11 = happySpecReduce_1 2# happyReduction_11-happyReduction_11 happy_x_1- = 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- = 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- = 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.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.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.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.NS (AST.JSRegEx (token_literal happy_var_1)) (ss happy_var_1)- )}--happyReduce_18 = happySpecReduce_1 7# happyReduction_18-happyReduction_18 happy_x_1- = 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- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn14- (happy_var_1 {- PrimaryExpression1 -}- )}--happyReduce_20 = happySpecReduce_1 7# happyReduction_20-happyReduction_20 happy_x_1- = case happyOut8 happy_x_1 of { happy_var_1 -> - happyIn14- (happy_var_1 {- PrimaryExpression2 -}- )}--happyReduce_21 = happySpecReduce_1 7# happyReduction_21-happyReduction_21 happy_x_1- = case happyOut17 happy_x_1 of { happy_var_1 -> - happyIn14- (happy_var_1 {- PrimaryExpression3 -}- )}--happyReduce_22 = happySpecReduce_1 7# happyReduction_22-happyReduction_22 happy_x_1- = case happyOut20 happy_x_1 of { happy_var_1 -> - happyIn14- (happy_var_1 {- PrimaryExpression4 -}- )}--happyReduce_23 = happySpecReduce_3 7# happyReduction_23-happyReduction_23 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut55 happy_x_2 of { happy_var_2 -> - happyIn14- (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.NS (AST.JSIdentifier (token_literal happy_var_1)) (ss happy_var_1)- )}--happyReduce_25 = happySpecReduce_1 8# happyReduction_25-happyReduction_25 happy_x_1- = 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- = 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- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn16- (happy_var_1- )}--happyReduce_28 = happySpecReduce_1 9# happyReduction_28-happyReduction_28 happy_x_1- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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- = 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.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- = 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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut19 happy_x_2 of { happy_var_2 -> - happyIn17- (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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut18 happy_x_2 of { happy_var_2 -> - happyIn17- (AST.NS (AST.JSArrayLiteral happy_var_2) (ss happy_var_1)- )}}--happyReduce_65 = happyReduce 5# 10# happyReduction_65-happyReduction_65 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = 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.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`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = 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.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- happy_x_1- = 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 -}- )}}--happyReduce_68 = happySpecReduce_1 11# happyReduction_68-happyReduction_68 happy_x_1- = case happyOut52 happy_x_1 of { happy_var_1 -> - happyIn18- (happy_var_1 {- ElementList -}- )}--happyReduce_69 = happyReduce 4# 11# happyReduction_69-happyReduction_69 (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 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.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.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.NS (AST.JSElision []) SpanEmpty]- )--happyReduce_72 = happySpecReduce_2 12# happyReduction_72-happyReduction_72 happy_x_2- happy_x_1- = case happyOut19 happy_x_1 of { happy_var_1 -> - happyIn19- ((happy_var_1 ++ [(AST.NS (AST.JSElision []) SpanEmpty)])- )}--happyReduce_73 = happySpecReduce_2 13# happyReduction_73-happyReduction_73 happy_x_2- happy_x_1- = 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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut21 happy_x_2 of { happy_var_2 -> - happyIn20- (AST.NS (AST.JSObjectLiteral happy_var_2) (ss happy_var_1)- )}}--happyReduce_75 = happyReduce 4# 13# happyReduction_75-happyReduction_75 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = 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.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- = case happyOut22 happy_x_1 of { happy_var_1 -> - happyIn21- ([happy_var_1] {- PropertyNameandValueList1 -}- )}--happyReduce_77 = happySpecReduce_3 14# happyReduction_77-happyReduction_77 happy_x_3- happy_x_2- happy_x_1- = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut22 happy_x_3 of { happy_var_3 -> - happyIn21- ((happy_var_1 ++ [happy_var_3]) {- PropertyNameandValueList2 -}- )}}--happyReduce_78 = happySpecReduce_3 15# happyReduction_78-happyReduction_78 happy_x_3- happy_x_2- happy_x_1- = case happyOut23 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - happyIn22- ((AST.NS (AST.JSPropertyNameandValue happy_var_1 happy_var_3) (ex happy_var_1))- )}}--happyReduce_79 = happyReduce 7# 15# happyReduction_79-happyReduction_79 (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 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.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`- 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 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.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- = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn23- (happy_var_1 {- PropertyName1 -}- )}--happyReduce_82 = happySpecReduce_1 16# happyReduction_82-happyReduction_82 happy_x_1- = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn23- (happy_var_1 {- PropertyName2 -}- )}--happyReduce_83 = happySpecReduce_1 16# happyReduction_83-happyReduction_83 happy_x_1- = case happyOut11 happy_x_1 of { happy_var_1 -> - happyIn23- (happy_var_1 {- PropertyName3 -}- )}--happyReduce_84 = happySpecReduce_1 17# happyReduction_84-happyReduction_84 happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn24- (happy_var_1 {- PropertySetParameterList -}- )}--happyReduce_85 = happySpecReduce_1 18# happyReduction_85-happyReduction_85 happy_x_1- = case happyOut14 happy_x_1 of { happy_var_1 -> - happyIn25- ([happy_var_1] {- MemberExpression -}- )}--happyReduce_86 = happySpecReduce_1 18# happyReduction_86-happyReduction_86 happy_x_1- = case happyOut94 happy_x_1 of { happy_var_1 -> - happyIn25- ([happy_var_1] {- MemberExpression -}- )}--happyReduce_87 = happyReduce 4# 18# happyReduction_87-happyReduction_87 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut55 happy_x_3 of { happy_var_3 -> - happyIn25- ([AST.NS (AST.JSMemberSquare happy_var_1 happy_var_3) (mex happy_var_1)]- ) `HappyStk` happyRest}}--happyReduce_88 = happySpecReduce_3 18# happyReduction_88-happyReduction_88 happy_x_3- happy_x_2- happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut16 happy_x_3 of { happy_var_3 -> - happyIn25- ([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 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.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- = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn26- (happy_var_1 {- NewExpression -}- )}--happyReduce_91 = happySpecReduce_2 19# happyReduction_91-happyReduction_91 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut26 happy_x_2 of { happy_var_2 -> - happyIn26- ((AST.NS (AST.JSLiteral "new ") (ss happy_var_1)):happy_var_2- )}}--happyReduce_92 = happySpecReduce_2 20# happyReduction_92-happyReduction_92 happy_x_2- happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn27- (happy_var_1++[happy_var_2] {- CallExpression -}- )}}--happyReduce_93 = happySpecReduce_2 20# happyReduction_93-happyReduction_93 happy_x_2- happy_x_1- = case happyOut27 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn27- ((happy_var_1++[(AST.NS (AST.JSCallExpression "()" [happy_var_2]) (mex happy_var_1))])- )}}--happyReduce_94 = happyReduce 4# 20# happyReduction_94-happyReduction_94 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut27 happy_x_1 of { happy_var_1 -> - case happyOut55 happy_x_3 of { happy_var_3 -> - happyIn27- ((happy_var_1++[(AST.NS (AST.JSCallExpression "[]" [happy_var_3]) (mex happy_var_1))])- ) `HappyStk` happyRest}}--happyReduce_95 = happySpecReduce_3 20# happyReduction_95-happyReduction_95 happy_x_3- happy_x_2- happy_x_1- = case happyOut27 happy_x_1 of { happy_var_1 -> - case happyOut16 happy_x_3 of { happy_var_3 -> - happyIn27- ((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- = 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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn28- ((AST.NS (AST.JSArguments happy_var_2) (ss happy_var_1))- )}}--happyReduce_98 = happySpecReduce_1 22# happyReduction_98-happyReduction_98 happy_x_1- = case happyOut52 happy_x_1 of { happy_var_1 -> - happyIn29- ([happy_var_1] {- ArgumentList -}- )}--happyReduce_99 = happySpecReduce_3 22# happyReduction_99-happyReduction_99 happy_x_3- happy_x_2- happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - happyIn29- (happy_var_1++[happy_var_3] {- ArgumentList2 -}- )}}--happyReduce_100 = happySpecReduce_1 23# happyReduction_100-happyReduction_100 happy_x_1- = case happyOut26 happy_x_1 of { happy_var_1 -> - happyIn30- (happy_var_1 {- LeftHandSideExpression1 -}- )}--happyReduce_101 = happySpecReduce_1 23# happyReduction_101-happyReduction_101 happy_x_1- = case happyOut27 happy_x_1 of { happy_var_1 -> - happyIn30- (happy_var_1 {- LeftHandSideExpression12 -}- )}--happyReduce_102 = happySpecReduce_1 24# happyReduction_102-happyReduction_102 happy_x_1- = case happyOut30 happy_x_1 of { happy_var_1 -> - happyIn31- (happy_var_1 {- PostfixExpression -}- )}--happyReduce_103 = happySpecReduce_2 24# happyReduction_103-happyReduction_103 happy_x_2- happy_x_1- = case happyOut31 happy_x_1 of { happy_var_1 -> - happyIn31- ([(AST.NS (AST.JSExpressionPostfix "++" happy_var_1) (mex happy_var_1))]- )}--happyReduce_104 = happySpecReduce_2 24# happyReduction_104-happyReduction_104 happy_x_2- happy_x_1- = case happyOut31 happy_x_1 of { happy_var_1 -> - happyIn31- ([(AST.NS (AST.JSExpressionPostfix "--" happy_var_1) (mex happy_var_1))]- )}--happyReduce_105 = happySpecReduce_1 25# happyReduction_105-happyReduction_105 happy_x_1- = case happyOut31 happy_x_1 of { happy_var_1 -> - happyIn32- (happy_var_1 {- UnaryExpression -}- )}--happyReduce_106 = happySpecReduce_2 25# happyReduction_106-happyReduction_106 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn32- (((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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn32- (((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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn32- (((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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn32- (((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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn32- (((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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn32- (((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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn32- (((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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn32- (((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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn32- (((AST.NS (AST.JSUnary "!") (ss happy_var_1)):happy_var_2)- )}}--happyReduce_115 = happySpecReduce_1 26# happyReduction_115-happyReduction_115 happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn33- (happy_var_1 {- MultiplicativeExpression -}- )}--happyReduce_116 = happySpecReduce_3 26# happyReduction_116-happyReduction_116 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.NS (AST.JSExpressionBinary "*" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_117 = happySpecReduce_3 26# happyReduction_117-happyReduction_117 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.NS (AST.JSExpressionBinary "/" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_118 = happySpecReduce_3 26# happyReduction_118-happyReduction_118 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.NS (AST.JSExpressionBinary "%" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_119 = happySpecReduce_3 27# happyReduction_119-happyReduction_119 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.NS (AST.JSExpressionBinary "+" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_120 = happySpecReduce_3 27# happyReduction_120-happyReduction_120 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.NS (AST.JSExpressionBinary "-" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_121 = happySpecReduce_1 27# happyReduction_121-happyReduction_121 happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - happyIn34- (happy_var_1 {- (goRegExp happy_var_1)-} {- AdditiveExpression -}- )}--happyReduce_122 = happySpecReduce_3 28# happyReduction_122-happyReduction_122 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.NS (AST.JSExpressionBinary "<<" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_123 = happySpecReduce_3 28# happyReduction_123-happyReduction_123 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.NS (AST.JSExpressionBinary ">>" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_124 = happySpecReduce_3 28# happyReduction_124-happyReduction_124 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.NS (AST.JSExpressionBinary ">>>" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_125 = happySpecReduce_1 28# happyReduction_125-happyReduction_125 happy_x_1- = case happyOut34 happy_x_1 of { happy_var_1 -> - happyIn35- (happy_var_1 {- ShiftExpression -}- )}--happyReduce_126 = happySpecReduce_1 29# happyReduction_126-happyReduction_126 happy_x_1- = case happyOut35 happy_x_1 of { happy_var_1 -> - happyIn36- (happy_var_1 {- RelationalExpression -}- )}--happyReduce_127 = happySpecReduce_3 29# happyReduction_127-happyReduction_127 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.NS (AST.JSExpressionBinary "<" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_128 = happySpecReduce_3 29# happyReduction_128-happyReduction_128 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.NS (AST.JSExpressionBinary ">" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_129 = happySpecReduce_3 29# happyReduction_129-happyReduction_129 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.NS (AST.JSExpressionBinary "<=" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_130 = happySpecReduce_3 29# happyReduction_130-happyReduction_130 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.NS (AST.JSExpressionBinary ">=" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_131 = happySpecReduce_3 29# happyReduction_131-happyReduction_131 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.NS (AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_132 = happySpecReduce_3 29# happyReduction_132-happyReduction_132 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.NS (AST.JSExpressionBinary " in " happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_133 = happySpecReduce_1 30# happyReduction_133-happyReduction_133 happy_x_1- = case happyOut35 happy_x_1 of { happy_var_1 -> - happyIn37- (happy_var_1 {- RelationalExpressionNoIn -}- )}--happyReduce_134 = happySpecReduce_3 30# happyReduction_134-happyReduction_134 happy_x_3- happy_x_2- happy_x_1- = case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - happyIn37- ([(AST.NS (AST.JSExpressionBinary "<" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_135 = happySpecReduce_3 30# happyReduction_135-happyReduction_135 happy_x_3- happy_x_2- happy_x_1- = case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - happyIn37- ([(AST.NS (AST.JSExpressionBinary ">" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_136 = happySpecReduce_3 30# happyReduction_136-happyReduction_136 happy_x_3- happy_x_2- happy_x_1- = case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - happyIn37- ([(AST.NS (AST.JSExpressionBinary "<=" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_137 = happySpecReduce_3 30# happyReduction_137-happyReduction_137 happy_x_3- happy_x_2- happy_x_1- = case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - happyIn37- ([(AST.NS (AST.JSExpressionBinary ">=" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_138 = happySpecReduce_3 30# happyReduction_138-happyReduction_138 happy_x_3- happy_x_2- happy_x_1- = case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - happyIn37- ([(AST.NS (AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_139 = happySpecReduce_1 31# happyReduction_139-happyReduction_139 happy_x_1- = case happyOut36 happy_x_1 of { happy_var_1 -> - happyIn38- (happy_var_1 {- EqualityExpression -}- )}--happyReduce_140 = happySpecReduce_3 31# happyReduction_140-happyReduction_140 happy_x_3- happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn38- ([(AST.NS (AST.JSExpressionBinary "==" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_141 = happySpecReduce_3 31# happyReduction_141-happyReduction_141 happy_x_3- happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn38- ([(AST.NS (AST.JSExpressionBinary "!=" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_142 = happySpecReduce_3 31# happyReduction_142-happyReduction_142 happy_x_3- happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn38- ([(AST.NS (AST.JSExpressionBinary "===" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_143 = happySpecReduce_3 31# happyReduction_143-happyReduction_143 happy_x_3- happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn38- ([(AST.NS (AST.JSExpressionBinary "!==" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_144 = happySpecReduce_1 32# happyReduction_144-happyReduction_144 happy_x_1- = case happyOut37 happy_x_1 of { happy_var_1 -> - happyIn39- (happy_var_1 {- EqualityExpressionNoIn -}- )}--happyReduce_145 = happySpecReduce_3 32# happyReduction_145-happyReduction_145 happy_x_3- happy_x_2- happy_x_1- = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn39- ([(AST.NS (AST.JSExpressionBinary "==" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_146 = happySpecReduce_3 32# happyReduction_146-happyReduction_146 happy_x_3- happy_x_2- happy_x_1- = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn39- ([(AST.NS (AST.JSExpressionBinary "!=" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_147 = happySpecReduce_3 32# happyReduction_147-happyReduction_147 happy_x_3- happy_x_2- happy_x_1- = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn39- ([(AST.NS (AST.JSExpressionBinary "===" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_148 = happySpecReduce_3 32# happyReduction_148-happyReduction_148 happy_x_3- happy_x_2- happy_x_1- = case happyOut39 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn39- ([(AST.NS (AST.JSExpressionBinary "!==" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_149 = happySpecReduce_1 33# happyReduction_149-happyReduction_149 happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - happyIn40- (happy_var_1 {- BitwiseAndExpression -}- )}--happyReduce_150 = happySpecReduce_3 33# happyReduction_150-happyReduction_150 happy_x_3- happy_x_2- happy_x_1- = case happyOut40 happy_x_1 of { happy_var_1 -> - case happyOut38 happy_x_3 of { happy_var_3 -> - happyIn40- ([(AST.NS (AST.JSExpressionBinary "&" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_151 = happySpecReduce_1 34# happyReduction_151-happyReduction_151 happy_x_1- = case happyOut39 happy_x_1 of { happy_var_1 -> - happyIn41- (happy_var_1 {- BitwiseAndExpression -}- )}--happyReduce_152 = happySpecReduce_3 34# happyReduction_152-happyReduction_152 happy_x_3- happy_x_2- happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - case happyOut39 happy_x_3 of { happy_var_3 -> - happyIn41- ([(AST.NS (AST.JSExpressionBinary "&" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_153 = happySpecReduce_1 35# happyReduction_153-happyReduction_153 happy_x_1- = case happyOut40 happy_x_1 of { happy_var_1 -> - happyIn42- (happy_var_1 {- BitwiseXOrExpression -}- )}--happyReduce_154 = happySpecReduce_3 35# happyReduction_154-happyReduction_154 happy_x_3- happy_x_2- happy_x_1- = case happyOut42 happy_x_1 of { happy_var_1 -> - case happyOut40 happy_x_3 of { happy_var_3 -> - happyIn42- ([(AST.NS (AST.JSExpressionBinary "^" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_155 = happySpecReduce_1 36# happyReduction_155-happyReduction_155 happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn43- (happy_var_1 {- BitwiseXOrExpression -}- )}--happyReduce_156 = happySpecReduce_3 36# happyReduction_156-happyReduction_156 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- ([(AST.NS (AST.JSExpressionBinary "^" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_157 = happySpecReduce_1 37# happyReduction_157-happyReduction_157 happy_x_1- = case happyOut42 happy_x_1 of { happy_var_1 -> - happyIn44- (happy_var_1 {- BitwiseOrExpression -}- )}--happyReduce_158 = happySpecReduce_3 37# happyReduction_158-happyReduction_158 happy_x_3- happy_x_2- happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut42 happy_x_3 of { happy_var_3 -> - happyIn44- ([(AST.NS (AST.JSExpressionBinary "|" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_159 = happySpecReduce_1 38# happyReduction_159-happyReduction_159 happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 -> - happyIn45- (happy_var_1 {- BitwiseOrExpression -}- )}--happyReduce_160 = happySpecReduce_3 38# happyReduction_160-happyReduction_160 happy_x_3- happy_x_2- happy_x_1- = case happyOut45 happy_x_1 of { happy_var_1 -> - case happyOut43 happy_x_3 of { happy_var_3 -> - happyIn45- ([(AST.NS (AST.JSExpressionBinary "|" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_161 = happySpecReduce_1 39# happyReduction_161-happyReduction_161 happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 -> - happyIn46- (happy_var_1 {- LogicalAndExpression -}- )}--happyReduce_162 = happySpecReduce_3 39# happyReduction_162-happyReduction_162 happy_x_3- happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - case happyOut44 happy_x_3 of { happy_var_3 -> - happyIn46- ([(AST.NS (AST.JSExpressionBinary "&&" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_163 = happySpecReduce_1 40# happyReduction_163-happyReduction_163 happy_x_1- = case happyOut45 happy_x_1 of { happy_var_1 -> - happyIn47- (happy_var_1 {- LogicalAndExpression -}- )}--happyReduce_164 = happySpecReduce_3 40# happyReduction_164-happyReduction_164 happy_x_3- happy_x_2- happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_3 of { happy_var_3 -> - happyIn47- ([(AST.NS (AST.JSExpressionBinary "&&" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_165 = happySpecReduce_1 41# happyReduction_165-happyReduction_165 happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - happyIn48- (happy_var_1 {- LogicalOrExpression -}- )}--happyReduce_166 = happySpecReduce_3 41# happyReduction_166-happyReduction_166 happy_x_3- happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_3 of { happy_var_3 -> - happyIn48- ([(AST.NS (AST.JSExpressionBinary "||" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_167 = happySpecReduce_1 42# happyReduction_167-happyReduction_167 happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 -> - happyIn49- (happy_var_1 {- LogicalOrExpression -}- )}--happyReduce_168 = happySpecReduce_3 42# happyReduction_168-happyReduction_168 happy_x_3- happy_x_2- happy_x_1- = case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut47 happy_x_3 of { happy_var_3 -> - happyIn49- ([(AST.NS (AST.JSExpressionBinary "||" happy_var_1 happy_var_3) (mex happy_var_1))]- )}}--happyReduce_169 = happySpecReduce_1 43# happyReduction_169-happyReduction_169 happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - happyIn50- (happy_var_1 {- ConditionalExpression -}- )}--happyReduce_170 = happyReduce 5# 43# happyReduction_170-happyReduction_170 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - case happyOut52 happy_x_5 of { happy_var_5 -> - happyIn50- ([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-happyReduction_171 happy_x_1- = case happyOut49 happy_x_1 of { happy_var_1 -> - happyIn51- (happy_var_1 {- ConditionalExpression -}- )}--happyReduce_172 = happyReduce 5# 44# happyReduction_172-happyReduction_172 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut53 happy_x_3 of { happy_var_3 -> - case happyOut53 happy_x_5 of { happy_var_5 -> - happyIn51- ([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-happyReduction_173 happy_x_1- = case happyOut50 happy_x_1 of { happy_var_1 -> - happyIn52- (happy_var_1 {- AssignmentExpression -}- )}--happyReduce_174 = happySpecReduce_3 45# happyReduction_174-happyReduction_174 happy_x_3- happy_x_2- happy_x_1- = case happyOut30 happy_x_1 of { happy_var_1 -> - case happyOut54 happy_x_2 of { happy_var_2 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - happyIn52- ((happy_var_1++[happy_var_2]++happy_var_3)- )}}}--happyReduce_175 = happySpecReduce_1 46# happyReduction_175-happyReduction_175 happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - happyIn53- (happy_var_1 {- AssignmentExpression -}- )}--happyReduce_176 = happySpecReduce_3 46# happyReduction_176-happyReduction_176 happy_x_3- happy_x_2- happy_x_1- = case happyOut30 happy_x_1 of { happy_var_1 -> - case happyOut54 happy_x_2 of { happy_var_2 -> - case happyOut53 happy_x_3 of { happy_var_3 -> - happyIn53- ((happy_var_1++[happy_var_2]++happy_var_3)- )}}}--happyReduce_177 = happySpecReduce_1 47# happyReduction_177-happyReduction_177 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn54- (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- = 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.NS (AST.JSExpression happy_var_1) (mex happy_var_1) {- Expression -}- )}--happyReduce_180 = happySpecReduce_3 48# happyReduction_180-happyReduction_180 happy_x_3- happy_x_2- happy_x_1- = case happyOut55 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - happyIn55- (flattenExpression happy_var_1 happy_var_3- )}}--happyReduce_181 = happySpecReduce_1 49# happyReduction_181-happyReduction_181 happy_x_1- = case happyOut53 happy_x_1 of { happy_var_1 -> - happyIn56- (AST.NS (AST.JSExpression happy_var_1) (mex happy_var_1) {- Expression -}- )}--happyReduce_182 = happySpecReduce_3 49# happyReduction_182-happyReduction_182 happy_x_3- happy_x_2- happy_x_1- = case happyOut56 happy_x_1 of { happy_var_1 -> - case happyOut53 happy_x_3 of { happy_var_3 -> - happyIn56- (flattenExpression happy_var_1 happy_var_3- )}}--happyReduce_183 = happySpecReduce_1 50# happyReduction_183-happyReduction_183 happy_x_1- = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn57- ([happy_var_1] {- ExpressionOpt -}- )}--happyReduce_184 = happySpecReduce_0 50# happyReduction_184-happyReduction_184 = happyIn57- ([] {- ExpressionOpt -}- )--happyReduce_185 = happySpecReduce_1 51# happyReduction_185-happyReduction_185 happy_x_1- = case happyOut56 happy_x_1 of { happy_var_1 -> - happyIn58- ([happy_var_1] {- ExpressionOpt -}- )}--happyReduce_186 = happySpecReduce_0 51# happyReduction_186-happyReduction_186 = happyIn58- ([] {- ExpressionOpt -}- )--happyReduce_187 = happySpecReduce_1 52# happyReduction_187-happyReduction_187 happy_x_1- = case happyOut60 happy_x_1 of { happy_var_1 -> - happyIn59- (happy_var_1 {- Statement1 -}- )}--happyReduce_188 = happySpecReduce_1 52# happyReduction_188-happyReduction_188 happy_x_1- = case happyOut71 happy_x_1 of { happy_var_1 -> - happyIn59- (happy_var_1 {- Statement3 -}- )}--happyReduce_189 = happySpecReduce_1 53# happyReduction_189-happyReduction_189 happy_x_1- = case happyOut61 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty1 -}- )}--happyReduce_190 = happySpecReduce_1 53# happyReduction_190-happyReduction_190 happy_x_1- = case happyOut64 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty2 -}- )}--happyReduce_191 = happySpecReduce_1 53# happyReduction_191-happyReduction_191 happy_x_1- = case happyOut72 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty4 -}- )}--happyReduce_192 = happySpecReduce_1 53# happyReduction_192-happyReduction_192 happy_x_1- = case happyOut73 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty5 -}- )}--happyReduce_193 = happySpecReduce_1 53# happyReduction_193-happyReduction_193 happy_x_1- = case happyOut76 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty6 -}- )}--happyReduce_194 = happySpecReduce_1 53# happyReduction_194-happyReduction_194 happy_x_1- = case happyOut77 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty7 -}- )}--happyReduce_195 = happySpecReduce_1 53# happyReduction_195-happyReduction_195 happy_x_1- = case happyOut78 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty8 -}- )}--happyReduce_196 = happySpecReduce_1 53# happyReduction_196-happyReduction_196 happy_x_1- = case happyOut79 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty9 -}- )}--happyReduce_197 = happySpecReduce_1 53# happyReduction_197-happyReduction_197 happy_x_1- = case happyOut80 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty10 -}- )}--happyReduce_198 = happySpecReduce_1 53# happyReduction_198-happyReduction_198 happy_x_1- = case happyOut86 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty11 -}- )}--happyReduce_199 = happySpecReduce_1 53# happyReduction_199-happyReduction_199 happy_x_1- = case happyOut81 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty12 -}- )}--happyReduce_200 = happySpecReduce_1 53# happyReduction_200-happyReduction_200 happy_x_1- = case happyOut87 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty13 -}- )}--happyReduce_201 = happySpecReduce_1 53# happyReduction_201-happyReduction_201 happy_x_1- = case happyOut88 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty14 -}- )}--happyReduce_202 = happySpecReduce_1 53# happyReduction_202-happyReduction_202 happy_x_1- = case happyOut92 happy_x_1 of { happy_var_1 -> - happyIn60- (happy_var_1 {- StatementNoEmpty15 -}- )}--happyReduce_203 = happySpecReduce_2 54# happyReduction_203-happyReduction_203 happy_x_2- happy_x_1- = 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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_2 of { happy_var_2 -> - happyIn61- ((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- = 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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_2 of { happy_var_2 -> - happyIn62- ((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.NS (AST.JSStatementList [happy_var_1]) (ex happy_var_1))- )}--happyReduce_208 = happySpecReduce_2 56# happyReduction_208-happyReduction_208 happy_x_2- happy_x_1- = case happyOut63 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_2 of { happy_var_2 -> - happyIn63- ((combineStatements happy_var_1 happy_var_2)- )}}--happyReduce_209 = happySpecReduce_3 57# happyReduction_209-happyReduction_209 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - happyIn64- (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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - happyIn64- (AST.NS (AST.JSVariables "const" happy_var_2) (ss happy_var_1)- )}}--happyReduce_211 = happySpecReduce_1 58# happyReduction_211-happyReduction_211 happy_x_1- = case happyOut67 happy_x_1 of { happy_var_1 -> - happyIn65- ([happy_var_1] {- VariableDeclarationList -}- )}--happyReduce_212 = happySpecReduce_3 58# happyReduction_212-happyReduction_212 happy_x_3- happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut67 happy_x_3 of { happy_var_3 -> - happyIn65- ((happy_var_1 ++ [happy_var_3]) {- VariableDeclarationList -}- )}}--happyReduce_213 = happySpecReduce_1 59# happyReduction_213-happyReduction_213 happy_x_1- = case happyOut68 happy_x_1 of { happy_var_1 -> - happyIn66- ([happy_var_1] {- VariableDeclarationList -}- )}--happyReduce_214 = happySpecReduce_3 59# happyReduction_214-happyReduction_214 happy_x_3- happy_x_2- happy_x_1- = case happyOut66 happy_x_1 of { happy_var_1 -> - case happyOut68 happy_x_3 of { happy_var_3 -> - happyIn66- ((happy_var_1 ++ [happy_var_3]) {- VariableDeclarationList -}- )}}--happyReduce_215 = happySpecReduce_1 60# happyReduction_215-happyReduction_215 happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn67- ((AST.NS (AST.JSVarDecl happy_var_1 []) (ex happy_var_1) )- )}--happyReduce_216 = happySpecReduce_2 60# happyReduction_216-happyReduction_216 happy_x_2- happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut69 happy_x_2 of { happy_var_2 -> - happyIn67- ((AST.NS (AST.JSVarDecl happy_var_1 happy_var_2) (ex happy_var_1))- )}}--happyReduce_217 = happySpecReduce_2 61# happyReduction_217-happyReduction_217 happy_x_2- happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut70 happy_x_2 of { happy_var_2 -> - happyIn68- ((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.NS (AST.JSVarDecl happy_var_1 []) (ex happy_var_1))- )}--happyReduce_219 = happySpecReduce_2 62# happyReduction_219-happyReduction_219 happy_x_2- happy_x_1- = case happyOut52 happy_x_2 of { happy_var_2 -> - happyIn69- (happy_var_2 {- Initializer -}- )}--happyReduce_220 = happySpecReduce_2 63# happyReduction_220-happyReduction_220 happy_x_2- happy_x_1- = case happyOut53 happy_x_2 of { happy_var_2 -> - happyIn70- (happy_var_2 {- InitializerNoIn -}- )}--happyReduce_221 = happySpecReduce_1 64# happyReduction_221-happyReduction_221 happy_x_1- = 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- = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn72- (happy_var_1 {- ExpressionStatement -}- )}--happyReduce_223 = happyReduce 6# 66# happyReduction_223-happyReduction_223 (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 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.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- happy_x_1- = case happyOut59 happy_x_2 of { happy_var_2 -> - happyIn74- ([happy_var_2]- )}--happyReduce_225 = happySpecReduce_0 67# happyReduction_225-happyReduction_225 = happyIn74- ([]- )--happyReduce_226 = happySpecReduce_2 68# happyReduction_226-happyReduction_226 happy_x_2- happy_x_1- = case happyOut60 happy_x_1 of { happy_var_1 -> - happyIn75- ((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-happyReduction_227 happy_x_1- = case happyOut60 happy_x_1 of { happy_var_1 -> - happyIn75- (happy_var_1 {- StatementSemi -}- )}--happyReduce_228 = happySpecReduce_1 68# happyReduction_228-happyReduction_228 happy_x_1- = 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`- 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 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.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`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = 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.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`- 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 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.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`- 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 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.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`- 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 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.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`- 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 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.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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut7 happy_x_2 of { happy_var_2 -> - happyIn77- ((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 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.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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut7 happy_x_2 of { happy_var_2 -> - happyIn78- ((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 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.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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut7 happy_x_2 of { happy_var_2 -> - happyIn79- ((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 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.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`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = 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.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`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = 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.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- happy_x_2- happy_x_1- = case happyOut83 happy_x_2 of { happy_var_2 -> - happyIn82- (happy_var_2 {- CaseBlock1 -}- )}--happyReduce_244 = happyReduce 5# 75# happyReduction_244-happyReduction_244 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut83 happy_x_2 of { happy_var_2 -> - case happyOut85 happy_x_3 of { happy_var_3 -> - case happyOut83 happy_x_4 of { happy_var_4 -> - happyIn82- ((happy_var_2++(happy_var_3:happy_var_4)) {- CaseBlock2 -}- ) `HappyStk` happyRest}}}--happyReduce_245 = happySpecReduce_1 76# happyReduction_245-happyReduction_245 happy_x_1- = case happyOut84 happy_x_1 of { happy_var_1 -> - happyIn83- ([happy_var_1] {- CaseClauses1 -}- )}--happyReduce_246 = happySpecReduce_2 76# happyReduction_246-happyReduction_246 happy_x_2- happy_x_1- = case happyOut83 happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { happy_var_2 -> - happyIn83- ((happy_var_1++[happy_var_2]) {- CaseClauses2 -}- )}}--happyReduce_247 = happySpecReduce_0 76# happyReduction_247-happyReduction_247 = happyIn83- ([]- )--happyReduce_248 = happyReduce 4# 77# happyReduction_248-happyReduction_248 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = 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.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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut55 happy_x_2 of { happy_var_2 -> - happyIn84- ((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- = 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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_3 of { happy_var_3 -> - happyIn85- ((AST.NS (AST.JSDefault happy_var_3) (ss happy_var_1))- )}}--happyReduce_252 = happySpecReduce_3 79# happyReduction_252-happyReduction_252 happy_x_3- happy_x_2- happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_3 of { happy_var_3 -> - happyIn86- ((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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut55 happy_x_2 of { happy_var_2 -> - happyIn87- ((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 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.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 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.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`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = 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.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- = case happyOut90 happy_x_1 of { happy_var_1 -> - happyIn89- ([happy_var_1] {- Catches 1 -}- )}--happyReduce_258 = happySpecReduce_2 82# happyReduction_258-happyReduction_258 happy_x_2- happy_x_1- = case happyOut89 happy_x_1 of { happy_var_1 -> - case happyOut90 happy_x_2 of { happy_var_2 -> - happyIn89- ((happy_var_1++[happy_var_2]) {- Catches 2 -}- )}}--happyReduce_259 = happyReduce 5# 83# happyReduction_259-happyReduction_259 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = 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.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`- 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 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.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 happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut62 happy_x_2 of { happy_var_2 -> - happyIn91- ((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- = 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`- 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 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.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`- 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 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.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`- 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 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.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`- 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 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.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- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn95- ([happy_var_1] {- IdentifierOpt -}- )}--happyReduce_268 = happySpecReduce_0 88# happyReduction_268-happyReduction_268 = happyIn95- ([] {- IdentifierOpt -}- )--happyReduce_269 = happySpecReduce_1 89# happyReduction_269-happyReduction_269 happy_x_1- = case happyOut15 happy_x_1 of { happy_var_1 -> - happyIn96- ([happy_var_1] {- FormalParameterList -}- )}--happyReduce_270 = happySpecReduce_3 89# happyReduction_270-happyReduction_270 happy_x_3- happy_x_2- happy_x_1- = case happyOut96 happy_x_1 of { happy_var_1 -> - case happyOut15 happy_x_3 of { happy_var_3 -> - happyIn96- ((happy_var_1++[happy_var_3])- )}}--happyReduce_271 = happySpecReduce_1 90# happyReduction_271-happyReduction_271 happy_x_1- = case happyOut99 happy_x_1 of { happy_var_1 -> - happyIn97- ((AST.NS (AST.JSFunctionBody [happy_var_1]) (ex happy_var_1))- )}--happyReduce_272 = happySpecReduce_0 90# happyReduction_272-happyReduction_272 = happyIn97- ((AST.NS (AST.JSFunctionBody []) SpanEmpty)- )--happyReduce_273 = happySpecReduce_1 91# happyReduction_273-happyReduction_273 happy_x_1- = case happyOut100 happy_x_1 of { happy_var_1 -> - happyIn98- (happy_var_1 {- Program -}- )}--happyReduce_274 = happySpecReduce_1 92# happyReduction_274-happyReduction_274 happy_x_1- = case happyOut101 happy_x_1 of { happy_var_1 -> - happyIn99- ((AST.NS (AST.JSSourceElements [happy_var_1]) (ex happy_var_1))- )}--happyReduce_275 = happySpecReduce_2 92# happyReduction_275-happyReduction_275 happy_x_2- happy_x_1- = case happyOut99 happy_x_1 of { happy_var_1 -> - case happyOut101 happy_x_2 of { happy_var_2 -> - happyIn99- ((combineSourceElements happy_var_1 happy_var_2)- )}}--happyReduce_276 = happySpecReduce_1 93# happyReduction_276-happyReduction_276 happy_x_1- = case happyOut101 happy_x_1 of { happy_var_1 -> - happyIn100- ((AST.NS (AST.JSSourceElementsTop [happy_var_1]) (ex happy_var_1))- )}--happyReduce_277 = happySpecReduce_2 93# happyReduction_277-happyReduction_277 happy_x_2- happy_x_1- = case happyOut100 happy_x_1 of { happy_var_1 -> - case happyOut101 happy_x_2 of { happy_var_2 -> - happyIn100- ((combineSourceElementsTop happy_var_1 happy_var_2)- )}}--happyReduce_278 = happySpecReduce_1 94# happyReduction_278-happyReduction_278 happy_x_1- = case happyOut59 happy_x_1 of { happy_var_1 -> - happyIn101- (happy_var_1 {- SourceElement1 -}- )}--happyReduce_279 = happySpecReduce_1 94# happyReduction_279-happyReduction_279 happy_x_1- = case happyOut93 happy_x_1 of { happy_var_1 -> - happyIn101- (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 79# 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#;- GetToken {} -> cont 54#;- IfToken {} -> cont 55#;- InToken {} -> cont 56#;- InstanceofToken {} -> cont 57#;- NewToken {} -> cont 58#;- NullToken {} -> cont 59#;- ReturnToken {} -> cont 60#;- SetToken {} -> cont 61#;- SwitchToken {} -> cont 62#;- ThisToken {} -> cont 63#;- ThrowToken {} -> cont 64#;- TrueToken {} -> cont 65#;- TryToken {} -> cont 66#;- TypeofToken {} -> cont 67#;- VarToken {} -> cont 68#;- VoidToken {} -> cont 69#;- WhileToken {} -> cont 70#;- WithToken {} -> cont 71#;- IdentifierToken {} -> cont 72#;- DecimalToken {} -> cont 73#;- HexIntegerToken {} -> cont 74#;- StringToken {} -> cont 75#;- RegExToken {} -> cont 76#;- AssignToken {} -> cont 77#;- FutureToken {} -> cont 78#;- _ -> happyError' tk- })--happyError_ 79# tk = 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 (happyOut98 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 (happyOut59 x))--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.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.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.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.NS (AST.JSExpression xs) s1) e = (AST.NS (AST.JSExpression (xs++litComma++e)) s1)- where- litComma :: [AST.JSNode]- 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+ -- debug+ , fp+ ) where++-- import Control.Monad.Error.Class (throwError)+import Data.Char+import Language.JavaScript.Parser.Lexer+import Language.JavaScript.Parser.ParseError+import Language.JavaScript.Parser.ParserMonad+import Language.JavaScript.Parser.SrcLocation+import Language.JavaScript.Parser.Token+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.9++newtype HappyAbsSyn = HappyAbsSyn HappyAny+#if __GLASGOW_HASKELL__ >= 607+type HappyAny = Happy_GHC_Exts.Any+#else+type HappyAny = forall a . a+#endif+happyIn7 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn7 #-}+happyOut7 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut7 #-}+happyIn8 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn8 #-}+happyOut8 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut8 #-}+happyIn9 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn9 #-}+happyOut9 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut9 #-}+happyIn10 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn10 #-}+happyOut10 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut10 #-}+happyIn11 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn11 #-}+happyOut11 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut11 #-}+happyIn12 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn12 #-}+happyOut12 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut12 #-}+happyIn13 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn13 #-}+happyOut13 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut13 #-}+happyIn14 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn14 #-}+happyOut14 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut14 #-}+happyIn15 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn15 #-}+happyOut15 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut15 #-}+happyIn16 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn16 #-}+happyOut16 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut16 #-}+happyIn17 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn17 #-}+happyOut17 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut17 #-}+happyIn18 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn18 #-}+happyOut18 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut18 #-}+happyIn19 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn19 #-}+happyOut19 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut19 #-}+happyIn20 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn20 #-}+happyOut20 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut20 #-}+happyIn21 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn21 #-}+happyOut21 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut21 #-}+happyIn22 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn22 #-}+happyOut22 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut22 #-}+happyIn23 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn23 #-}+happyOut23 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut23 #-}+happyIn24 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn24 #-}+happyOut24 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut24 #-}+happyIn25 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn25 #-}+happyOut25 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut25 #-}+happyIn26 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn26 #-}+happyOut26 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut26 #-}+happyIn27 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn27 #-}+happyOut27 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut27 #-}+happyIn28 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn28 #-}+happyOut28 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut28 #-}+happyIn29 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn29 #-}+happyOut29 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut29 #-}+happyIn30 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn30 #-}+happyOut30 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut30 #-}+happyIn31 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn31 #-}+happyOut31 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut31 #-}+happyIn32 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn32 #-}+happyOut32 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut32 #-}+happyIn33 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn33 #-}+happyOut33 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut33 #-}+happyIn34 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn34 #-}+happyOut34 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut34 #-}+happyIn35 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn35 #-}+happyOut35 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut35 #-}+happyIn36 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn36 #-}+happyOut36 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut36 #-}+happyIn37 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn37 #-}+happyOut37 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut37 #-}+happyIn38 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn38 #-}+happyOut38 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut38 #-}+happyIn39 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn39 #-}+happyOut39 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut39 #-}+happyIn40 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn40 #-}+happyOut40 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut40 #-}+happyIn41 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn41 #-}+happyOut41 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut41 #-}+happyIn42 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn42 #-}+happyOut42 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut42 #-}+happyIn43 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn43 #-}+happyOut43 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut43 #-}+happyIn44 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn44 #-}+happyOut44 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut44 #-}+happyIn45 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn45 #-}+happyOut45 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut45 #-}+happyIn46 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn46 #-}+happyOut46 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut46 #-}+happyIn47 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn47 #-}+happyOut47 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut47 #-}+happyIn48 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn48 #-}+happyOut48 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut48 #-}+happyIn49 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn49 #-}+happyOut49 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut49 #-}+happyIn50 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn50 #-}+happyOut50 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut50 #-}+happyIn51 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn51 #-}+happyOut51 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut51 #-}+happyIn52 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn52 #-}+happyOut52 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut52 #-}+happyIn53 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn53 #-}+happyOut53 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut53 #-}+happyIn54 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn54 #-}+happyOut54 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut54 #-}+happyIn55 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn55 #-}+happyOut55 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut55 #-}+happyIn56 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn56 #-}+happyOut56 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut56 #-}+happyIn57 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn57 #-}+happyOut57 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut57 #-}+happyIn58 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn58 #-}+happyOut58 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut58 #-}+happyIn59 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn59 #-}+happyOut59 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut59 #-}+happyIn60 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn60 #-}+happyOut60 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut60 #-}+happyIn61 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn61 #-}+happyOut61 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut61 #-}+happyIn62 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn62 #-}+happyOut62 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut62 #-}+happyIn63 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn63 #-}+happyOut63 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut63 #-}+happyIn64 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn64 #-}+happyOut64 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut64 #-}+happyIn65 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn65 #-}+happyOut65 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut65 #-}+happyIn66 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn66 #-}+happyOut66 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut66 #-}+happyIn67 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn67 #-}+happyOut67 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut67 #-}+happyIn68 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn68 #-}+happyOut68 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut68 #-}+happyIn69 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn69 #-}+happyOut69 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut69 #-}+happyIn70 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn70 #-}+happyOut70 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut70 #-}+happyIn71 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn71 #-}+happyOut71 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut71 #-}+happyIn72 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn72 #-}+happyOut72 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut72 #-}+happyIn73 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn73 #-}+happyOut73 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut73 #-}+happyIn74 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn74 #-}+happyOut74 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut74 #-}+happyIn75 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn75 #-}+happyOut75 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut75 #-}+happyIn76 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn76 #-}+happyOut76 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut76 #-}+happyIn77 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn77 #-}+happyOut77 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut77 #-}+happyIn78 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn78 #-}+happyOut78 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut78 #-}+happyIn79 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn79 #-}+happyOut79 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut79 #-}+happyIn80 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn80 #-}+happyOut80 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut80 #-}+happyIn81 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn81 #-}+happyOut81 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut81 #-}+happyIn82 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn82 #-}+happyOut82 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut82 #-}+happyIn83 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn83 #-}+happyOut83 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut83 #-}+happyIn84 :: ([ AST.JSNode ]) -> (HappyAbsSyn )+happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn84 #-}+happyOut84 :: (HappyAbsSyn ) -> ([ AST.JSNode ])+happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut84 #-}+happyIn85 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn85 #-}+happyOut85 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut85 #-}+happyIn86 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn86 #-}+happyOut86 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut86 #-}+happyIn87 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn87 #-}+happyOut87 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut87 #-}+happyIn88 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn88 #-}+happyOut88 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut88 #-}+happyIn89 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn89 #-}+happyOut89 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut89 #-}+happyIn90 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn90 #-}+happyOut90 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut90 #-}+happyIn91 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn91 #-}+happyOut91 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut91 #-}+happyIn92 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn92 #-}+happyOut92 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut92 #-}+happyIn93 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn93 #-}+happyOut93 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut93 #-}+happyIn94 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn94 #-}+happyOut94 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut94 #-}+happyIn95 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn95 #-}+happyOut95 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut95 #-}+happyIn96 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn96 #-}+happyOut96 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut96 #-}+happyIn97 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn97 #-}+happyOut97 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut97 #-}+happyIn98 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn98 #-}+happyOut98 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut98 #-}+happyIn99 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn99 #-}+happyOut99 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut99 #-}+happyIn100 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn100 #-}+happyOut100 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut100 #-}+happyIn101 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn101 #-}+happyOut101 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut101 #-}+happyIn102 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn102 #-}+happyOut102 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut102 #-}+happyIn103 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn103 #-}+happyOut103 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut103 #-}+happyIn104 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn104 #-}+happyOut104 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut104 #-}+happyIn105 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn105 #-}+happyOut105 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut105 #-}+happyIn106 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn106 #-}+happyOut106 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut106 #-}+happyIn107 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn107 #-}+happyOut107 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut107 #-}+happyIn108 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn108 #-}+happyOut108 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut108 #-}+happyIn109 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn109 #-}+happyOut109 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut109 #-}+happyIn110 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn110 #-}+happyOut110 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut110 #-}+happyIn111 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn111 #-}+happyOut111 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut111 #-}+happyIn112 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn112 #-}+happyOut112 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut112 #-}+happyIn113 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn113 #-}+happyOut113 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut113 #-}+happyIn114 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn114 #-}+happyOut114 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut114 #-}+happyIn115 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn115 #-}+happyOut115 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut115 #-}+happyIn116 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn116 #-}+happyOut116 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut116 #-}+happyIn117 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn117 #-}+happyOut117 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut117 #-}+happyIn118 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn118 #-}+happyOut118 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut118 #-}+happyIn119 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn119 #-}+happyOut119 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut119 #-}+happyIn120 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn120 #-}+happyOut120 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut120 #-}+happyIn121 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn121 #-}+happyOut121 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut121 #-}+happyIn122 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn122 #-}+happyOut122 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut122 #-}+happyIn123 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn123 #-}+happyOut123 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut123 #-}+happyIn124 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn124 #-}+happyOut124 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut124 #-}+happyIn125 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn125 #-}+happyOut125 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut125 #-}+happyIn126 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn126 #-}+happyOut126 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut126 #-}+happyIn127 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn127 #-}+happyOut127 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut127 #-}+happyIn128 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn128 #-}+happyOut128 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut128 #-}+happyIn129 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn129 #-}+happyOut129 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut129 #-}+happyIn130 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn130 #-}+happyOut130 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut130 #-}+happyIn131 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn131 #-}+happyOut131 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut131 #-}+happyIn132 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn132 #-}+happyOut132 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut132 #-}+happyIn133 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn133 #-}+happyOut133 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut133 #-}+happyIn134 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn134 #-}+happyOut134 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut134 #-}+happyIn135 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn135 #-}+happyOut135 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut135 #-}+happyIn136 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn136 #-}+happyOut136 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut136 #-}+happyIn137 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn137 #-}+happyOut137 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut137 #-}+happyIn138 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn138 #-}+happyOut138 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut138 #-}+happyIn139 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn139 #-}+happyOut139 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut139 #-}+happyIn140 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn140 #-}+happyOut140 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut140 #-}+happyIn141 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn141 #-}+happyOut141 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut141 #-}+happyIn142 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn142 #-}+happyOut142 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut142 #-}+happyIn143 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn143 #-}+happyOut143 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut143 #-}+happyIn144 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn144 #-}+happyOut144 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut144 #-}+happyIn145 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn145 #-}+happyOut145 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut145 #-}+happyIn146 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn146 #-}+happyOut146 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut146 #-}+happyIn147 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn147 #-}+happyOut147 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut147 #-}+happyIn148 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn148 #-}+happyOut148 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut148 #-}+happyIn149 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn149 #-}+happyOut149 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut149 #-}+happyIn150 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn150 #-}+happyOut150 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut150 #-}+happyIn151 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn151 #-}+happyOut151 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut151 #-}+happyIn152 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn152 #-}+happyOut152 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut152 #-}+happyIn153 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn153 #-}+happyOut153 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut153 #-}+happyIn154 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn154 #-}+happyOut154 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut154 #-}+happyIn155 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn155 #-}+happyOut155 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut155 #-}+happyIn156 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn156 #-}+happyOut156 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut156 #-}+happyIn157 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn157 #-}+happyOut157 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut157 #-}+happyIn158 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn158 #-}+happyOut158 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut158 #-}+happyIn159 :: ([AST.JSNode]) -> (HappyAbsSyn )+happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn159 #-}+happyOut159 :: (HappyAbsSyn ) -> ([AST.JSNode])+happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut159 #-}+happyIn160 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn160 #-}+happyOut160 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut160 #-}+happyIn161 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn161 #-}+happyOut161 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut161 #-}+happyIn162 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn162 #-}+happyOut162 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut162 #-}+happyIn163 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn163 #-}+happyOut163 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut163 #-}+happyIn164 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn164 #-}+happyOut164 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut164 #-}+happyIn165 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn165 #-}+happyOut165 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut165 #-}+happyIn166 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn166 #-}+happyOut166 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut166 #-}+happyIn167 :: (AST.JSNode) -> (HappyAbsSyn )+happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyIn167 #-}+happyOut167 :: (HappyAbsSyn ) -> (AST.JSNode)+happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut167 #-}+happyInTok :: (Token) -> (HappyAbsSyn )+happyInTok x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyInTok #-}+happyOutTok :: (HappyAbsSyn ) -> (Token)+happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOutTok #-}+++happyActOffsets :: HappyAddr+happyActOffsets = HappyA# "\x52\x2b\xb2\x0f\x92\x13\x52\x2b\xb2\x03\x00\x00\x41\x2d\x61\x2a\x89\x2b\x00\x00\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x7a\x01\x7a\x01\x91\x03\x52\x2b\x91\x03\x91\x03\xef\x00\xef\x00\xde\x28\x91\x03\x91\x03\x41\x2d\x90\x03\x7a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x03\x00\x00\x00\x00\x65\x01\x00\x00\x65\x01\xfc\xff\xa7\x02\x00\x00\xcb\x02\x9b\x02\x5f\x01\x9e\x01\x79\x02\x9c\x03\x97\x03\x96\x03\x8f\x03\x30\x01\x00\x00\x00\x00\x92\x03\x62\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x0f\x4c\x03\x00\x00\x49\x03\x41\x03\x45\x03\x7a\x01\x00\x00\x00\x00\x45\x03\x15\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x89\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x01\x00\x00\x00\x00\x00\x00\x41\x2d\x00\x00\x41\x2d\x41\x2d\x00\x00\x00\x00\x41\x2d\x00\x00\x41\x2d\x00\x00\x41\x2d\x00\x00\x41\x2d\x00\x00\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x2d\x41\x2d\x41\x2d\x00\x00\x00\x00\x00\x00\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x41\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x2d\x00\x00\x00\x00\xf7\x2b\x41\x2d\xc2\x1d\x00\x00\x00\x00\x41\x2d\xc2\x1d\x00\x00\x52\x2b\x00\x00\x00\x00\x1b\x2b\x09\x01\x84\x03\x41\x2d\x41\x2d\x00\x00\xa4\x02\x00\x00\x80\x03\x00\x00\x80\x03\xc0\x2b\x41\x2d\x3f\x03\x41\x2d\x74\x03\xa4\x02\x00\x00\xa4\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\x6c\x00\x89\x2b\x00\x00\x00\x00\xc9\x29\x7b\x03\x7a\x03\x79\x03\x00\x00\x1b\x2b\x78\x03\x37\x01\x71\x03\xe4\x2a\x0a\x2d\x70\x03\x6f\x03\x56\x03\xe0\x00\x55\x03\x1c\x11\x6d\x03\x6c\x03\x4a\x03\x68\x03\xd3\x2c\x66\x03\x46\x03\x9c\x2c\x18\x01\x65\x2c\x42\x03\x40\x03\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x2b\x00\x00\x7b\x00\x00\x00\x2e\x2c\x00\x00\x3b\x00\x3e\x03\x3b\x00\x7b\x00\x32\x00\x5f\x01\x49\x01\x79\x02\x4e\x03\x58\x03\x51\x03\x4d\x03\x30\x01\x00\x00\x00\x00\x50\x03\x4f\x03\x00\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x2d\x03\x2c\x03\x09\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x2a\x00\x00\x00\x00\x7c\x29\x2d\x29\x6c\x00\x00\x00\x6c\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x02\xcb\x02\x89\x02\x89\x02\x89\x02\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x9e\x01\x9e\x01\x9e\x01\x9e\x01\x79\x02\x44\x03\x43\x03\x3b\x03\x3c\x03\x39\x03\x00\x00\x00\x00\x18\x03\x18\x03\x2e\x2c\x00\x00\xf4\x0f\xb2\x00\xb2\x00\x10\x03\x00\x00\x3b\x00\x10\x03\x3b\x00\x00\x00\x00\x00\x00\x00\x07\x03\x7b\x00\x2e\x2c\x00\x00\x2e\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x08\x03\x52\x2b\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2e\x2c\x2f\x03\x6f\x02\xf3\x02\x52\x2b\x2e\x2c\x52\x2b\x00\x00\x00\x00\x00\x00\x89\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x26\x03\xfe\x02\x3b\x00\x00\x00\x2e\x2c\x7b\x00\x2e\x2c\x2e\x2c\x00\x00\xfc\xff\x00\x00\x3b\x00\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x9e\x01\x9e\x01\x9e\x01\x9e\x01\x79\x02\x20\x03\x25\x03\x1f\x03\x24\x03\x1e\x03\x00\x00\x23\x03\x22\x03\x21\x03\xf7\x02\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\xf8\x02\xff\x02\xff\x02\x7b\x00\x52\x2b\xff\x02\x52\x2b\xfd\x02\x52\x2b\x00\x00\x52\x2b\xfd\x02\x00\x00\x52\x2b\x52\x2b\xfc\x02\xfc\x02\x2e\x2c\x2e\x2c\xf1\x00\x00\x00\x00\x00\x00\x00\x2e\x2c\x2e\x2c\x52\x2b\x00\x00\x1b\x03\x00\x00\x3b\x00\x1a\x03\x52\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x2b\x2e\x2c\x00\x00\x00\x00\xf5\x02\x00\x00\x15\x03\x00\x00\xf0\x02\x00\x00\xfe\x00\xf2\x02\x00\x00\x52\x2b\xea\x02\xea\x02\x00\x00\xea\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x02\xe9\x02\x52\x2b\x2a\x02\x52\x2b\x52\x2b\xe5\x02\x00\x00\x52\x2b\x00\x00\x52\x2b\x00\x00\x52\x2b\x00\x00\x00\x00\x00\x00\x00\x00"#++happyGotoOffsets :: HappyAddr+happyGotoOffsets = HappyA# "\x9d\x03\xe2\xff\x79\x00\x61\x05\x00\x00\x00\x00\x72\x18\x65\x06\x03\x10\x00\x00\x97\x28\x7c\x28\x23\x28\x08\x28\xaf\x27\x94\x27\x3b\x27\x20\x27\xc7\x26\xd1\x00\x83\x00\x04\x03\xe1\x0e\x02\x03\x00\x03\x2c\x00\x09\x00\xf8\x05\xfb\x02\xfa\x02\x0c\x18\x1d\x00\xe4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x02\x00\x00\x00\x00\x52\x01\x00\x00\x4a\x01\xa9\x00\x5b\x02\x00\x00\xce\x02\x3b\x02\xc2\x02\xd9\x01\x70\x02\xd9\x02\xcd\x02\xd4\x02\xcf\x02\xf6\x01\x00\x00\x00\x00\xec\x02\xad\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x01\xa1\x02\x00\x00\x00\x00\xa0\x02\x00\x00\xcf\xff\x00\x00\x00\x00\x00\x00\x35\x04\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x02\xd5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\xcc\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\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x00\x00\x00\x00\x00\x00\x13\x1d\x00\x00\x32\x1e\xb1\x1c\x00\x00\x00\x00\xb4\x1e\x00\x00\x34\x1f\x00\x00\xb2\x1f\x00\x00\x2e\x20\x00\x00\x1a\x22\xfb\x21\x9f\x21\x80\x21\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x24\x78\x24\x5a\x24\xff\x23\xe1\x23\x86\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x25\x4b\x25\xf1\x24\x00\x00\x00\x00\x00\x00\xdf\x25\xc3\x25\xac\x26\x53\x26\x38\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x1c\x00\x00\x00\x00\xae\x13\xa6\x17\xdc\x01\x00\x00\x00\x00\x40\x17\xa5\x01\x00\x00\x51\x0e\x00\x00\x00\x00\xf9\x06\x7a\x00\xc7\x02\xda\x16\x74\x16\x00\x00\x51\x01\x00\x00\xd2\x02\x00\x00\xd0\x02\xcd\x10\x0e\x16\x99\x02\xa8\x15\xeb\xff\x27\x01\x00\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\xb9\x01\x42\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x41\x09\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x10\x00\x00\xd0\xff\x00\x00\xed\x1b\x00\x00\x15\x02\xc5\x02\x05\x02\x69\x00\xfe\xff\xc2\x02\x63\x02\x6c\x02\x8a\x02\x91\x02\x82\x02\x73\x02\xd5\x01\x00\x00\x00\x00\x8d\x02\x7c\x02\x00\x00\x00\x00\x00\x00\xc6\x01\xc5\x01\x80\x02\x1c\x00\x76\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x08\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x01\x00\x00\x0b\x01\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x02\xa2\x02\x29\x00\x29\x00\x29\x00\x49\x02\x49\x02\x49\x02\x49\x02\x49\x02\x49\x02\xd9\x01\xd9\x01\xd9\x01\xd9\x01\x68\x02\x44\x02\x4b\x02\x43\x02\x32\x02\x1a\x02\x00\x00\x00\x00\x37\x02\x35\x02\x8b\x1b\x00\x00\xa3\x01\x17\x00\x05\x00\x31\x02\x00\x00\xaa\x01\x2f\x02\x5d\x01\x00\x00\x00\x00\x00\x00\x2c\x02\xda\xff\x29\x1b\x00\x00\xc7\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x01\x02\x00\xc1\x0d\xd5\x12\x64\x1a\xd5\x1d\x01\x1a\x8e\x1e\x10\x1f\x90\x1f\x0e\x20\x24\x21\x05\x21\xa9\x20\x8a\x20\x68\x23\x0d\x23\xef\x22\x94\x22\x76\x22\x42\x15\x9e\x19\xd7\xff\x5b\x00\x0e\x02\x31\x0d\xdc\x14\x71\x0f\x00\x00\x00\x00\x00\x00\x73\x12\x00\x00\x00\x00\x00\x00\x00\x00\x14\x02\xd4\xff\x54\x01\x00\x00\x76\x14\xc4\xff\x06\x12\x3b\x19\x00\x00\x8a\x00\x00\x00\xe4\x00\x49\x02\x49\x02\x49\x02\x49\x02\x49\x02\xd9\x01\xd9\x01\xd9\x01\xd9\x01\x39\x02\xe7\x01\xe3\x01\xe2\x01\xf2\x01\xbe\x01\x00\x00\xc8\x01\xd0\x01\xd1\x01\xf8\xff\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\xb6\x01\xa8\x01\x9d\x01\x53\x01\x03\x03\x95\x01\x69\x02\x92\x01\xcb\x04\x00\x00\xcf\x01\x90\x01\x00\x00\x35\x01\x9b\x00\x8f\x01\x18\x00\x75\x1d\x10\x14\x16\x00\x00\x00\x00\x00\x00\x00\x9e\x11\xd8\x18\xa1\x0c\x00\x00\x81\x01\x00\x00\x92\x00\x83\x01\x11\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x0b\x36\x11\x00\x00\x00\x00\x7e\x01\x00\x00\x75\x01\x00\x00\xe6\xff\x00\x00\xe2\x00\x4e\x01\x00\x00\x01\x00\x3b\x01\x39\x01\x00\x00\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x15\x00\x19\x08\x19\x00\x89\x07\xf1\x0a\xd8\x00\x00\x00\x61\x0a\x00\x00\xd1\x09\x00\x00\xd1\x09\x00\x00\x00\x00\x00\x00\x00\x00"#++happyDefActions :: HappyAddr+happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\xff\x00\x00\x00\x00\x00\x00\xe3\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\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb4\xfe\xac\xff\xba\xff\xb9\xff\xb8\xff\xb7\xff\xb6\xff\x6b\xff\xad\xff\xab\xff\xaa\xff\x66\xff\x5c\xff\x5b\xff\x5a\xff\x57\xff\x4d\xff\x47\xff\x43\xff\x42\xff\x35\xff\x2b\xff\x27\xff\x23\xff\x1f\xff\x1b\xff\x17\xff\x13\xff\x0d\xff\xe2\xfe\x00\x00\x05\xff\x03\xff\x02\xff\x04\xff\x01\xff\x00\xff\xff\xfe\xfe\xfe\xfd\xfe\xfc\xfe\xfb\xfe\xf9\xfe\xfa\xfe\xf8\xfe\xf7\xfe\xf6\xfe\x6a\xff\x00\x00\xf1\xff\xef\xff\xee\xff\xea\xff\xe9\xff\xe7\xff\xe8\xff\xf5\xff\xf7\xff\xf9\xff\xc6\xff\xcd\xff\xc7\xff\xfa\xff\xed\xff\xca\xff\xb3\xff\xc8\xff\xbc\xff\xa7\xff\xcc\xff\x00\x00\xb5\xff\xc5\xff\xa6\xff\xc3\xff\xae\xff\xc0\xff\xb4\xff\xbf\xff\xeb\xff\xce\xff\xec\xff\xc9\xff\xc4\xff\xa8\xff\xb2\xff\xb1\xff\xb0\xff\xaf\xff\x00\x00\x00\x00\xad\xff\x00\x00\x00\x00\x00\x00\xb4\xfe\xa7\xfe\xa6\xfe\x00\x00\x00\x00\xa9\xfe\xaf\xfe\xa8\xfe\xbb\xff\x00\x00\x00\x00\xae\xfe\xad\xfe\x77\xff\x6d\xff\x6e\xff\xa5\xff\x6f\xff\x00\x00\x74\xff\x00\x00\xf6\xff\xa4\xff\xa3\xff\xa2\xff\xa1\xff\xa0\xff\x9f\xff\x9e\xff\x9d\xff\x9c\xff\x9b\xff\x9a\xff\x99\xff\x98\xff\x97\xff\x96\xff\xa7\xff\x94\xff\x93\xff\x92\xff\x91\xff\x90\xff\x8f\xff\xa6\xff\x8d\xff\x8c\xff\x8b\xff\x8a\xff\x89\xff\x88\xff\x87\xff\x86\xff\x85\xff\x84\xff\x83\xff\x66\xff\x65\xff\xba\xfe\xac\xfe\x00\x00\xf3\xff\x00\x00\x00\x00\xd1\xff\xd6\xff\x00\x00\xd5\xff\x00\x00\xd4\xff\x00\x00\xd2\xff\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\x00\x00\xda\xff\xd9\xff\xd8\xff\xd7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\xdf\xff\xde\xff\xdd\xff\xdc\xff\xdb\xff\x00\x00\x00\x00\x00\x00\xe3\xff\xe1\xff\xe2\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\xe5\xff\xe4\xff\x59\xff\x58\xff\x0e\xff\x0f\xff\x00\x00\xd0\xff\xcf\xff\x00\x00\x00\x00\x00\x00\x63\xff\xf0\xff\x00\x00\x00\x00\x64\xff\x00\x00\xf2\xff\xb5\xfe\x00\x00\x00\x00\xc3\xfe\x00\x00\x00\x00\xd1\xfe\xfa\xff\xd3\xfe\xfa\xff\xd5\xfe\xfa\xff\x06\xff\x00\x00\x00\x00\x00\x00\xe9\xfe\xfa\xff\xed\xfe\xfa\xff\x5a\xff\x4e\xff\x4f\xff\x50\xff\x51\xff\x54\xff\x55\xff\x56\xff\x52\xff\x53\xff\x82\xff\x79\xff\x00\x00\x00\x00\x7c\xff\xf4\xff\x77\xff\xb8\xff\xb7\xff\xad\xff\xf1\xfe\x00\x00\xc6\xff\xa1\xff\xc7\xff\x9f\xff\x9d\xff\xca\xff\xb3\xff\x97\xff\x96\xff\x94\xff\x91\xff\xb5\xff\xc5\xff\x8d\xff\xae\xff\x8b\xff\xb4\xff\x89\xff\x88\xff\x87\xff\x86\xff\x85\xff\x84\xff\x00\x00\xa9\xff\xf8\xff\xf4\xfe\xf0\xfe\x81\xff\x78\xff\x7d\xff\x80\xff\x00\x00\xef\xfe\x00\x00\xee\xfe\x00\x00\xe8\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xff\x3b\xff\x30\xff\x29\xff\x25\xff\x21\xff\x1d\xff\x19\xff\x15\xff\x11\xff\x0b\xff\x07\xff\x00\x00\xd4\xfe\xd2\xfe\xd0\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xfe\xbf\xfe\xc1\xfe\xbe\xff\xbd\xff\xf3\xfe\x00\x00\xc4\xfe\x68\xff\x95\xff\x8e\xff\x00\x00\x61\xff\x00\x00\x60\xff\x00\x00\x5e\xff\x12\xff\x4a\xff\x4b\xff\x4c\xff\x48\xff\x49\xff\x44\xff\x45\xff\x46\xff\x3d\xff\x3c\xff\x40\xff\x3e\xff\x41\xff\x3f\xff\x33\xff\x31\xff\x34\xff\x32\xff\x2a\xff\x26\xff\x22\xff\x1e\xff\x00\x00\x1a\xff\x0c\xff\x67\xff\x00\x00\x00\x00\x00\x00\x76\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xfe\x00\x00\x00\x00\x00\x00\x75\xff\x73\xff\x72\xff\x00\x00\x00\x00\x00\x00\x5f\xff\x00\x00\x62\xff\x69\xff\xf2\xfe\xbe\xfe\xc0\xfe\xbb\xfe\x00\x00\x00\x00\x00\x00\x08\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\xe6\xfe\x00\x00\xeb\xfe\x00\x00\x00\x00\x00\x00\xe5\xfe\xec\xfe\x7e\xff\x00\x00\x7a\xff\x7f\xff\x7b\xff\xdc\xfe\xdd\xfe\xdf\xfe\x00\x00\xda\xfe\x00\x00\x00\x00\x08\xff\x00\x00\xe7\xfe\x5a\xff\x10\xff\x00\x00\x36\xff\x39\xff\x37\xff\x3a\xff\x38\xff\x2e\xff\x2c\xff\x2f\xff\x2d\xff\x28\xff\x24\xff\x20\xff\x1c\xff\x00\x00\x18\xff\x0a\xff\x09\xff\x00\x00\xfa\xff\xc9\xfe\xce\xfe\x00\x00\x5d\xff\x16\xff\x6c\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xfe\x00\x00\xb0\xfe\x00\x00\xb1\xfe\xab\xfe\xb0\xfe\x00\x00\xb2\xfe\xb0\xfe\xb0\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xfe\xc2\xff\xcf\xfe\x08\xff\x00\x00\x00\x00\xe4\xfe\x00\x00\xea\xfe\x00\x00\xfa\xff\x00\x00\xe1\xfe\xcb\xff\xde\xfe\xe0\xfe\xdb\xfe\x00\x00\x08\xff\xd7\xfe\x14\xff\x00\x00\xcd\xfe\x00\x00\xca\xfe\xc9\xfe\xc1\xff\x00\x00\x00\x00\xbd\xfe\xb0\xfe\x00\x00\x00\x00\xb7\xfe\x00\x00\xaa\xfe\xb8\xfe\xb9\xfe\xb6\xfe\x71\xff\x00\x00\x00\x00\xc7\xfe\x00\x00\xc6\xfe\x00\x00\x00\x00\xd6\xfe\x00\x00\xd9\xfe\xc5\xfe\xcc\xfe\xc8\xfe\xbc\xfe\x70\xff\xd8\xfe"#++happyCheck :: HappyAddr+happyCheck = HappyA# "\xff\xff\x2a\x00\x01\x00\x2f\x00\x03\x00\x03\x00\x05\x00\x02\x00\x0c\x00\x00\x00\x09\x00\x47\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x2a\x00\x47\x00\x47\x00\x03\x00\x02\x00\x04\x00\x03\x00\x1e\x00\x04\x00\x38\x00\x03\x00\x03\x00\x47\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x2a\x00\x2b\x00\x50\x00\x47\x00\x00\x00\x2c\x00\x2d\x00\x2e\x00\x38\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x10\x00\x11\x00\x3a\x00\x3b\x00\x02\x00\x0c\x00\x3e\x00\x7c\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x4d\x00\x49\x00\x7b\x00\x47\x00\x4c\x00\x38\x00\x39\x00\x47\x00\x38\x00\x51\x00\x52\x00\x53\x00\x7e\x00\x82\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x47\x00\x5e\x00\x25\x00\x60\x00\x07\x00\x62\x00\x09\x00\x64\x00\x97\x00\x66\x00\x7d\x00\x68\x00\x38\x00\x6a\x00\x6e\x00\x6c\x00\x02\x00\x02\x00\x6f\x00\x8b\x00\x8c\x00\x47\x00\x73\x00\x74\x00\x75\x00\x02\x00\x04\x00\x78\x00\x01\x00\x97\x00\x03\x00\x9b\x00\x05\x00\x4d\x00\x7f\x00\x80\x00\x81\x00\x8b\x00\x8c\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x76\x00\x8a\x00\x21\x00\x76\x00\x8e\x00\x8f\x00\x90\x00\x76\x00\x76\x00\x02\x00\x94\x00\x95\x00\x96\x00\x23\x00\x07\x00\x99\x00\x2e\x00\x01\x00\x98\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x8c\x00\x8d\x00\x09\x00\x8c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x98\x00\x47\x00\x36\x00\x3c\x00\x3d\x00\x2a\x00\x2b\x00\x3c\x00\x3d\x00\x3d\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x04\x00\x49\x00\x48\x00\x07\x00\x4c\x00\x25\x00\x2c\x00\x2d\x00\x2e\x00\x47\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x2a\x00\x2b\x00\x3a\x00\x3b\x00\x25\x00\x37\x00\x3e\x00\x02\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x7a\x00\x49\x00\x7c\x00\x02\x00\x4c\x00\x36\x00\x07\x00\x08\x00\x07\x00\x51\x00\x52\x00\x53\x00\x3d\x00\x01\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x6e\x00\x5e\x00\x48\x00\x60\x00\x79\x00\x62\x00\x7b\x00\x64\x00\x02\x00\x66\x00\x04\x00\x68\x00\x24\x00\x6a\x00\x04\x00\x6c\x00\x92\x00\x93\x00\x6f\x00\x91\x00\x92\x00\x93\x00\x73\x00\x74\x00\x75\x00\x06\x00\x07\x00\x78\x00\x23\x00\x9c\x00\x36\x00\x6e\x00\x47\x00\x28\x00\x7f\x00\x80\x00\x81\x00\x3d\x00\x2d\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x36\x00\x00\x00\x00\x00\x48\x00\x8e\x00\x8f\x00\x90\x00\x3d\x00\x07\x00\x07\x00\x94\x00\x95\x00\x96\x00\x29\x00\x03\x00\x99\x00\x05\x00\x01\x00\x48\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x33\x00\x04\x00\x09\x00\x04\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x01\x00\x79\x00\x01\x00\x7b\x00\x05\x00\x36\x00\x05\x00\x02\x00\x00\x00\x0a\x00\x01\x00\x0a\x00\x3d\x00\x02\x00\x05\x00\x07\x00\x10\x00\x11\x00\x07\x00\x0a\x00\x14\x00\x15\x00\x02\x00\x48\x00\x2c\x00\x2d\x00\x2e\x00\x07\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x36\x00\x0f\x00\x3a\x00\x3b\x00\x12\x00\x13\x00\x3e\x00\x3d\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x08\x00\x49\x00\x48\x00\x02\x00\x4c\x00\x39\x00\x00\x00\x1f\x00\x20\x00\x51\x00\x52\x00\x53\x00\x24\x00\x09\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x03\x00\x5e\x00\x04\x00\x60\x00\x04\x00\x62\x00\x03\x00\x64\x00\x47\x00\x66\x00\x54\x00\x68\x00\x54\x00\x6a\x00\x03\x00\x6c\x00\x06\x00\x07\x00\x6f\x00\x04\x00\x54\x00\x04\x00\x73\x00\x74\x00\x75\x00\x03\x00\x02\x00\x78\x00\x10\x00\x11\x00\x36\x00\x07\x00\x14\x00\x15\x00\x7f\x00\x80\x00\x81\x00\x3d\x00\x02\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x06\x00\x07\x00\x02\x00\x48\x00\x8e\x00\x8f\x00\x90\x00\x07\x00\x02\x00\x02\x00\x94\x00\x95\x00\x96\x00\x07\x00\x07\x00\x99\x00\x07\x00\x01\x00\x00\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x38\x00\x39\x00\x09\x00\x09\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x25\x00\x43\x00\x44\x00\x43\x00\x44\x00\x47\x00\x48\x00\x47\x00\x48\x00\x47\x00\x48\x00\x4d\x00\x4e\x00\x4f\x00\x4e\x00\x4f\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x24\x00\x08\x00\x2c\x00\x2d\x00\x2e\x00\x29\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x02\x00\x26\x00\x3a\x00\x3b\x00\x28\x00\x07\x00\x3e\x00\x27\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x02\x00\x49\x00\x02\x00\x24\x00\x4c\x00\x07\x00\x09\x00\x07\x00\x29\x00\x51\x00\x52\x00\x53\x00\x47\x00\x48\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x1e\x00\x5e\x00\x02\x00\x60\x00\x47\x00\x62\x00\x03\x00\x64\x00\x03\x00\x66\x00\x01\x00\x68\x00\x01\x00\x6a\x00\x08\x00\x6c\x00\x43\x00\x44\x00\x6f\x00\x25\x00\x47\x00\x48\x00\x73\x00\x74\x00\x75\x00\x43\x00\x44\x00\x78\x00\x4f\x00\x47\x00\x48\x00\x10\x00\x11\x00\x23\x00\x7f\x00\x80\x00\x81\x00\x4f\x00\x28\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x20\x00\x21\x00\x22\x00\x23\x00\x8e\x00\x8f\x00\x90\x00\x17\x00\x18\x00\x19\x00\x94\x00\x95\x00\x96\x00\x0b\x00\x0c\x00\x99\x00\x26\x00\x01\x00\x27\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x01\x00\x02\x00\x09\x00\x28\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x01\x00\x1f\x00\x0a\x00\x0b\x00\x09\x00\x0d\x00\x0e\x00\x20\x00\x21\x00\x22\x00\x23\x00\x20\x00\x21\x00\x22\x00\x23\x00\x20\x00\x21\x00\x22\x00\x23\x00\x07\x00\x2c\x00\x2d\x00\x2e\x00\x25\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x18\x00\x19\x00\x3a\x00\x3b\x00\x01\x00\x02\x00\x3e\x00\x26\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x27\x00\x49\x00\x18\x00\x19\x00\x4c\x00\x14\x00\x15\x00\x16\x00\x28\x00\x51\x00\x52\x00\x53\x00\x16\x00\x17\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x00\x00\x60\x00\x31\x00\x62\x00\x08\x00\x64\x00\x07\x00\x66\x00\x00\x00\x68\x00\x00\x00\x6a\x00\x08\x00\x6c\x00\x01\x00\x01\x00\x6f\x00\x17\x00\x18\x00\x19\x00\x73\x00\x74\x00\x75\x00\x3f\x00\x3f\x00\x78\x00\x14\x00\x15\x00\x16\x00\x1a\x00\x1b\x00\x1c\x00\x7f\x00\x80\x00\x81\x00\x00\x00\x3f\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x07\x00\x25\x00\x28\x00\x08\x00\x8e\x00\x8f\x00\x90\x00\x26\x00\x01\x00\x01\x00\x94\x00\x95\x00\x96\x00\x27\x00\x01\x00\x99\x00\x01\x00\x01\x00\x01\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x25\x00\x22\x00\x09\x00\x23\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x25\x00\x28\x00\x04\x00\x25\x00\x01\x00\x01\x00\x25\x00\x22\x00\x28\x00\x23\x00\x22\x00\x01\x00\x01\x00\x06\x00\x02\x00\x07\x00\x01\x00\x04\x00\x09\x00\x22\x00\x38\x00\x25\x00\x08\x00\x30\x00\x2c\x00\x2d\x00\x2e\x00\x22\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x0c\x00\x24\x00\x3a\x00\x3b\x00\x06\x00\x04\x00\x3e\x00\x07\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x08\x00\x49\x00\x09\x00\x22\x00\x4c\x00\x01\x00\x24\x00\x02\x00\x06\x00\x51\x00\x52\x00\x53\x00\x09\x00\x07\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x08\x00\x5e\x00\x24\x00\x60\x00\x24\x00\x62\x00\x24\x00\x64\x00\x22\x00\x66\x00\x04\x00\x68\x00\x04\x00\x6a\x00\x24\x00\x6c\x00\x04\x00\x04\x00\x6f\x00\x04\x00\x04\x00\x04\x00\x73\x00\x74\x00\x75\x00\x24\x00\x24\x00\x78\x00\x04\x00\x04\x00\x04\x00\x04\x00\x0c\x00\x01\x00\x7f\x00\x80\x00\x81\x00\x46\x00\x02\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x04\x00\x24\x00\x01\x00\x4f\x00\x8e\x00\x8f\x00\x90\x00\x02\x00\x06\x00\x51\x00\x94\x00\x95\x00\x96\x00\x51\x00\x4f\x00\x99\x00\x07\x00\x01\x00\x08\x00\x03\x00\x9e\x00\x05\x00\xa0\x00\x51\x00\x09\x00\x09\x00\x04\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x4f\x00\x22\x00\x01\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x95\x00\x96\x00\xff\xff\xff\xff\x01\x00\x9a\x00\x03\x00\xff\xff\x05\x00\xff\xff\x9f\x00\xa0\x00\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\x01\x00\x6f\x00\x03\x00\xff\xff\x05\x00\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x95\x00\x96\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xa0\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x96\x00\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x95\x00\x96\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xa0\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x04\x00\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\xff\xff\x96\x00\x00\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\x9d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\xff\xff\xff\xff\x4e\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\x01\x00\x6f\x00\x03\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\x77\x00\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x01\x00\x96\x00\x03\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\x77\x00\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\x77\x00\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\x77\x00\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x01\x00\x96\x00\x03\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\x94\x00\x01\x00\x96\x00\x03\x00\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x73\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\xff\xff\xff\xff\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x8f\x00\x90\x00\x01\x00\xff\xff\x03\x00\x94\x00\x05\x00\x96\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\xff\xff\xff\xff\x32\x00\x74\x00\x75\x00\xff\xff\xff\xff\x78\x00\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x41\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x8e\x00\x8f\x00\x90\x00\xff\xff\xff\xff\x01\x00\x94\x00\x03\x00\x96\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x23\x00\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\xff\xff\x3e\x00\x4e\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\x01\x00\x6a\x00\x03\x00\x6c\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x65\x00\xff\xff\x67\x00\xff\xff\x69\x00\x01\x00\x6b\x00\x03\x00\x6d\x00\x05\x00\x20\x00\x70\x00\x22\x00\x72\x00\x24\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\x01\x00\x6a\x00\x03\x00\x6c\x00\x05\x00\xff\xff\x6f\x00\xff\xff\x71\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\x01\x00\x6a\x00\x03\x00\x6c\x00\x05\x00\xff\xff\x6f\x00\xff\xff\x71\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\x01\x00\x6f\x00\x03\x00\x71\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\x01\x00\x6f\x00\x03\x00\x71\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x01\x00\x02\x00\x03\x00\x20\x00\x05\x00\x22\x00\xff\xff\x24\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x01\x00\x68\x00\x03\x00\x6a\x00\x05\x00\x6c\x00\xff\xff\xff\xff\x6f\x00\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\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\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x01\x00\x65\x00\x03\x00\x67\x00\x05\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x6d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x01\x00\x65\x00\x03\x00\x67\x00\x05\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x6d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x01\x00\x65\x00\x03\x00\x67\x00\x05\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x6d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x01\x00\x65\x00\x03\x00\x67\x00\x05\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x6d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x01\x00\x65\x00\x03\x00\x67\x00\x05\x00\x69\x00\xff\xff\x6b\x00\xff\xff\x6d\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\xff\xff\x62\x00\x01\x00\x64\x00\x03\x00\x66\x00\x05\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x5e\x00\xff\xff\x60\x00\x01\x00\x62\x00\x03\x00\x64\x00\x05\x00\x66\x00\xff\xff\x68\x00\xff\xff\x6a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\x04\x00\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\x01\x00\x5f\x00\x03\x00\x61\x00\x05\x00\x63\x00\xff\xff\x65\x00\xff\xff\x67\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x96\x00\xff\xff\x4e\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x03\x00\x60\x00\x05\x00\x62\x00\xff\xff\x64\x00\xff\xff\x66\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x63\x00\x3e\x00\x65\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x03\x00\x60\x00\x05\x00\x62\x00\xff\xff\x64\x00\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\xff\xff\x61\x00\x3e\x00\x63\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x03\x00\x60\x00\x05\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\x96\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\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\x5f\x00\x3e\x00\x61\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x03\x00\x60\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\x3e\x00\x5f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\x5e\x00\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x96\x00\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\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\x96\x00\xff\xff\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x59\x00\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\x96\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\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\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\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\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\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\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\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\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\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\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x05\x00\xff\xff\x96\x00\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\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\x96\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\x3e\x00\xff\xff\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x01\x00\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x57\x00\x58\x00\xff\xff\xff\xff\xff\xff\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\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\x96\x00\x35\x00\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\x96\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\xff\xff\x4f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x01\x00\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\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\x4b\x00\x4c\x00\x01\x00\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\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\x4b\x00\x4c\x00\x01\x00\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x01\x00\x4e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x23\x00\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\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\x4b\x00\x4c\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\x2c\x00\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\x02\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\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x25\x00\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\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\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x45\x00\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#++happyTable :: HappyAddr+happyTable = HappyA# "\x00\x00\xd5\x01\x06\x00\x12\x02\x07\x00\xed\x01\x08\x00\x97\x01\xf1\x00\x04\x01\x09\x00\xc0\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x4a\x01\x88\x00\x0c\x01\xfd\x00\x9a\x01\x1d\x02\xfd\x00\xbe\x01\x3a\x02\x05\x02\xfd\x00\xfd\x00\xf2\x01\x7d\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\xed\x00\xee\x00\xf3\x01\xfc\x00\x06\x01\x13\x00\x14\x00\x15\x00\x05\x02\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xe3\x00\xe4\x00\x1e\x00\x1f\x00\xbd\x00\xf1\x00\x7f\x00\x0f\x02\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xf2\x00\x29\x00\xc7\x01\x98\x01\x2a\x00\x05\x02\x1e\x02\x05\x01\x05\x02\x2b\x00\x2c\x00\x2d\x00\xd6\x01\x13\x02\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x98\x01\x35\x00\x40\x01\x36\x00\xd3\x01\x37\x00\xd4\x01\x38\x00\x89\x00\x39\x00\x4b\x01\x3a\x00\xdc\x00\x3b\x00\xbf\x01\x3c\x00\xbd\x00\x03\x02\x3d\x00\x32\x02\x07\x02\x07\x01\x80\x00\x3f\x00\x40\x00\xbd\x00\x3d\x02\x41\x00\x06\x00\x89\x00\x79\x00\x7e\x00\x08\x00\xf2\x00\x42\x00\x43\x00\x44\x00\x06\x02\x07\x02\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x3c\x02\xee\x01\x20\x01\x24\x02\x4b\x00\x4c\x00\x4d\x00\xa9\x01\xfe\x00\x18\x02\x4e\x00\x81\x00\x4f\x00\x95\x00\xbb\x00\x2f\x02\x04\x02\x06\x00\x99\x01\x07\x00\xfb\x01\x08\x00\xfc\x01\x1f\x02\x20\x02\x09\x00\x1f\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x9b\x01\xc0\x01\x65\x00\x62\x01\x63\x01\xed\x00\xee\x00\x62\x01\x63\x01\x6a\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x7a\x00\x7b\x00\x93\x01\x29\x00\x75\x00\x94\x01\x2a\x00\x40\x01\x13\x00\x14\x00\x15\x00\x0c\x01\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xed\x00\xee\x00\x1e\x00\x1f\x00\x40\x01\x66\x00\x7f\x00\x37\x02\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xc1\x01\x29\x00\xc2\x01\x0c\x02\x2a\x00\x65\x00\xbb\x00\x31\x02\xbb\x00\x2b\x00\x2c\x00\x2d\x00\x6a\x00\x06\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xbf\x01\x35\x00\x75\x00\x36\x00\x0d\x01\x37\x00\x0e\x01\x38\x00\xbd\x00\x39\x00\xfc\x00\x3a\x00\xbc\xff\x3b\x00\x2c\x02\x3c\x00\xa7\x01\xa8\x01\x3d\x00\x64\x01\x65\x01\x66\x01\x80\x00\x3f\x00\x40\x00\xa4\x01\xbb\x00\x41\x00\x95\x00\x7c\x00\xbc\xff\xef\x00\x0c\x01\x09\x02\x42\x00\x43\x00\x44\x00\xbc\xff\x22\x02\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x65\x00\x47\x01\x49\x01\xbc\xff\x4b\x00\x4c\x00\x4d\x00\x6a\x00\x48\x01\x48\x01\x4e\x00\x81\x00\x4f\x00\x68\x01\xc0\x00\x26\x02\xc1\x00\x06\x00\x75\x00\x07\x00\xfb\x01\x08\x00\xfc\x01\x69\x01\x2d\x02\x09\x00\x2e\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xf2\x00\x0f\x01\xf2\x00\x0e\x01\xf7\x00\xce\xff\xf3\x00\x30\x02\x5f\x01\xf8\x00\xf2\x00\xf4\x00\xce\xff\x11\x02\xf7\x00\xbb\x00\xd8\x00\xd9\x00\xbb\x00\xf8\x00\xda\x00\xdb\x00\xf5\x01\xce\xff\x13\x00\x14\x00\x15\x00\xf6\x01\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xcd\xff\xe1\x00\x1e\x00\x1f\x00\xe2\x00\xe3\x00\x7f\x00\xcd\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x33\x02\x29\x00\xcd\xff\x34\x02\x2a\x00\xdd\x00\x17\x02\xf7\x00\x59\x00\x2b\x00\x2c\x00\x2d\x00\x5b\x00\x19\x02\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x25\x02\x35\x00\x28\x02\x36\x00\x2b\x02\x37\x00\xfd\x01\x38\x00\xff\x01\x39\x00\x8f\x01\x3a\x00\xf5\x00\x3b\x00\x00\x02\x3c\x00\xa5\x01\xbb\x00\x3d\x00\x8c\x00\xf9\x00\x9c\x01\x80\x00\x3f\x00\x40\x00\x01\x02\xf8\x01\x41\x00\xd8\x00\xd9\x00\x65\x00\xf6\x01\xda\x00\xdb\x00\x42\x00\x43\x00\x44\x00\x6a\x00\x02\x02\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x45\x01\x46\x01\xa2\x01\x75\x00\x4b\x00\x4c\x00\x4d\x00\xa3\x01\xab\x01\xac\x01\x4e\x00\x81\x00\x4f\x00\xbb\x00\xbb\x00\x27\x02\xbb\x00\x06\x00\x09\x02\x07\x00\xfb\x01\x08\x00\xfc\x01\xdc\x00\xdd\x00\x09\x00\x0a\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xb1\x01\x8d\x00\x8e\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x8f\x00\x90\x00\x8f\x00\x6c\x01\x91\x00\x92\x00\x93\x00\x9d\x01\x93\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xaf\x01\x0b\x02\x13\x00\x14\x00\x15\x00\xb0\x01\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xc3\x01\xb2\x01\x1e\x00\x1f\x00\xb3\x01\xbb\x00\x7f\x00\xb4\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xc5\x01\x29\x00\x3e\x01\xbd\x00\x2a\x00\xbb\x00\x15\x02\xbb\x00\xbe\x00\x2b\x00\x2c\x00\x2d\x00\x8f\x00\x70\x01\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xd2\x01\x35\x00\xf4\x01\x36\x00\xef\x01\x37\x00\xf7\x01\x38\x00\xf9\x01\x39\x00\x9f\x01\x3a\x00\xa0\x01\x3b\x00\xa1\x01\x3c\x00\x8d\x00\x8e\x00\x3d\x00\xc1\x00\x8f\x00\x90\x00\x80\x00\x3f\x00\x40\x00\x8d\x00\x8e\x00\x41\x00\x90\x01\x8f\x00\x90\x00\xe3\x00\xe4\x00\x95\x00\x42\x00\x43\x00\x44\x00\x91\x01\x09\x02\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xb5\x01\xb6\x01\xb7\x01\xb8\x01\x4b\x00\x4c\x00\x4d\x00\xdd\x00\xde\x00\xdf\x00\x4e\x00\x81\x00\x4f\x00\xeb\x00\xec\x00\x29\x02\xc3\x00\x06\x00\xc7\x00\x07\x00\xfb\x01\x08\x00\xfc\x01\x52\x00\xbd\x00\x09\x00\xc5\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xb9\x01\xba\x01\xbb\x01\xbc\x01\xaa\x01\xbd\x01\xce\x00\xcf\x00\xad\x01\xd0\x00\xd1\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xb5\x01\xb6\x01\xb7\x01\xb8\x01\xc9\x00\xca\x00\xcb\x00\xcc\x00\xae\x01\x13\x00\x14\x00\x15\x00\xb1\x01\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x55\x00\x56\x00\x1e\x00\x1f\x00\x06\x00\xbd\x00\x7f\x00\xb2\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xb4\x01\x29\x00\x55\x00\x56\x00\x2a\x00\xe5\x00\xe6\x00\xe7\x00\xb3\x01\x2b\x00\x2c\x00\x2d\x00\x53\x00\x54\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xc4\x01\x35\x00\xb9\x00\x36\x00\x4d\x01\x37\x00\xfa\x00\x38\x00\xbb\x00\x39\x00\x5d\x01\x3a\x00\x5e\x01\x3b\x00\x92\x01\x3c\x00\x95\x01\x96\x01\x3d\x00\xdd\x00\xde\x00\xdf\x00\x80\x00\x3f\x00\x40\x00\x8a\x00\x8b\x00\x41\x00\xe5\x00\xe6\x00\xe7\x00\xe9\x00\xea\x00\xeb\x00\x42\x00\x43\x00\x44\x00\xb9\x00\xba\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xbb\x00\xc1\x00\xc5\x00\xfa\x00\x4b\x00\x4c\x00\x4d\x00\xc3\x00\x00\x01\x01\x01\x4e\x00\x81\x00\x4f\x00\xc7\x00\x08\x01\xfa\x01\x09\x01\x06\x00\x0b\x01\x07\x00\xfb\x01\x08\x00\xfc\x01\x40\x01\x5a\x00\x09\x00\x95\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x40\x01\x09\x02\xfc\x00\x40\x01\x06\x00\x52\x00\x40\x01\x5a\x00\x09\x02\x95\x00\x5a\x00\x06\x00\x52\x00\xc3\x00\xbd\x00\xc5\x00\x52\x00\xfc\x00\xc9\x00\x5a\x00\xdc\x00\x40\x01\xc7\x00\x15\x02\x13\x00\x14\x00\x15\x00\x5a\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xf1\x00\x5b\x00\x1e\x00\x1f\x00\xc3\x00\xfc\x00\x7f\x00\xc5\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xc7\x00\x29\x00\xc9\x00\x5a\x00\x2a\x00\x52\x00\x5b\x00\xbd\x00\xc3\x00\x2b\x00\x2c\x00\x2d\x00\xc9\x00\xc5\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\xc7\x00\x35\x00\x5b\x00\x36\x00\xc4\xff\x37\x00\xc9\xff\x38\x00\xbf\xff\x39\x00\x8a\xff\x3a\x00\x8c\xff\x3b\x00\xc3\xff\x3c\x00\x8f\xff\x90\xff\x3d\x00\x99\xff\x9c\xff\xa0\xff\x80\x00\x3f\x00\x40\x00\xcc\xff\xc8\xff\x41\x00\xa4\xff\xfc\x00\x6e\xff\x6d\xff\xf1\x00\x06\x00\x42\x00\x43\x00\x44\x00\x73\x00\xbd\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\xfc\x00\x5b\x00\x06\x00\x88\x00\x4b\x00\x4c\x00\x4d\x00\xbd\x00\xc3\x00\xff\xff\x4e\x00\x81\x00\x4f\x00\xff\xff\x88\x00\xfe\x01\xc5\x00\x06\x00\xc7\x00\x07\x00\xfb\x01\x08\x00\xfc\x01\xff\xff\xc9\x00\x09\x00\xfc\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x88\x00\x5a\x00\x06\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x80\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x81\x00\x4f\x00\x00\x00\x00\x00\x06\x00\x82\x00\x07\x00\x00\x00\x08\x00\x00\x00\x83\x00\x84\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x7f\x00\x85\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x06\x00\x3d\x00\x79\x00\x00\x00\x08\x00\x80\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x81\x00\x4f\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x86\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\xb8\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x4f\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x80\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x81\x00\x4f\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x2a\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x8e\xff\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x02\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\x6e\x01\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\x6f\x01\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\x75\x00\x76\x00\x77\x00\x78\x00\x00\x00\x00\x00\xb7\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x06\x00\x03\x01\x07\x00\x20\x01\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x21\x01\x22\x01\x26\x00\x27\x00\x23\x01\x90\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x91\x00\x92\x00\x93\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x24\x01\x3f\x00\x40\x00\x00\x00\x25\x01\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x06\x00\x4f\x00\x07\x00\x69\x01\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x24\x01\x3f\x00\x40\x00\x00\x00\x6a\x01\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x24\x01\x3f\x00\x40\x00\x00\x00\x39\x02\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x24\x01\x3f\x00\x40\x00\x00\x00\x3b\x02\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x06\x00\x4f\x00\x07\x00\xa6\x01\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x41\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x06\x00\x4f\x00\x07\x00\x40\x01\x08\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x41\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x41\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3e\x02\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x38\x02\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x36\x02\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x16\x02\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x1a\x02\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\xd1\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\xec\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x6b\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x3f\x00\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x44\x00\x00\x00\x00\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x4c\x00\x4d\x00\x06\x00\x00\x00\x07\x00\x4e\x00\x08\x00\x4f\x00\x00\x00\x00\x00\xcd\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x14\x00\x15\x00\x00\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x62\x00\xce\x01\x40\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x43\x00\x44\x00\x6e\x00\xcf\x01\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x76\x00\x77\x00\x78\x00\x79\x00\x4b\x00\x4c\x00\x4d\x00\x00\x00\x00\x00\x06\x00\x4e\x00\x79\x00\x4f\x00\x08\x00\x1a\x01\x1b\x01\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x95\x00\x00\x00\x00\x00\x00\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\x75\x00\x76\x00\x77\x00\x78\x00\x00\x00\x20\x00\xb7\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x1c\x01\x1d\x01\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x06\x00\x3b\x00\x79\x00\x1e\x01\x08\x00\xc8\x01\x1b\x01\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\xc9\x01\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xca\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x50\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x00\x00\x56\x01\x00\x00\x57\x01\x00\x00\x58\x01\x06\x00\x59\x01\x79\x00\x5a\x01\x08\x00\x59\x00\x5b\x01\x5a\x00\x5c\x01\x5b\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x06\x00\x3b\x00\x79\x00\x3c\x00\x08\x00\x00\x00\xea\x01\x00\x00\x35\x02\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x06\x00\x3b\x00\x79\x00\x3c\x00\x08\x00\x00\x00\xea\x01\x00\x00\x1c\x02\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x06\x00\xea\x01\x79\x00\x0e\x02\x08\x00\xcb\x01\x43\x01\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xcc\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x06\x00\xea\x01\x79\x00\xeb\x01\x08\x00\x42\x01\x43\x01\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x44\x01\x06\x00\x72\x01\x79\x00\x59\x00\x08\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x73\x01\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x74\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x22\x02\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x10\x02\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\xd9\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x4e\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x60\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x61\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x6f\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x71\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\xff\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x06\x00\x3a\x00\x79\x00\x3b\x00\x08\x00\x3c\x00\x00\x00\x00\x00\x3d\x01\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xd7\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x06\x00\x56\x01\x79\x00\x57\x01\x08\x00\x58\x01\x00\x00\x59\x01\x00\x00\x1b\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xd7\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x06\x00\x56\x01\x79\x00\x57\x01\x08\x00\x58\x01\x00\x00\x59\x01\x00\x00\x0d\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xd7\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x06\x00\x56\x01\x79\x00\x57\x01\x08\x00\x58\x01\x00\x00\x59\x01\x00\x00\xd8\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xd7\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x06\x00\x56\x01\x79\x00\x57\x01\x08\x00\x58\x01\x00\x00\x59\x01\x00\x00\xe7\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\xd7\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x06\x00\x56\x01\x79\x00\x57\x01\x08\x00\x58\x01\x00\x00\x59\x01\x00\x00\xe9\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xf0\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xf1\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x9e\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xc6\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x75\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x8c\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x06\x00\x38\x00\x79\x00\x39\x00\x08\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x8e\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x06\x00\x37\x00\x79\x00\x38\x00\x08\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x23\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\x6e\x01\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\x6f\x01\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\x75\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x95\xff\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x06\x00\x53\x01\x79\x00\x54\x01\x08\x00\x55\x01\x00\x00\x56\x01\x00\x00\xe8\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\x6e\x01\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\x6f\x01\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\x75\x00\x76\x00\x77\x00\x78\x00\x4f\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x06\x00\x35\x00\x79\x00\x36\x00\x08\x00\x37\x00\x00\x00\x38\x00\x00\x00\x8d\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x00\x00\x55\x01\x20\x00\xe6\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x06\x00\x35\x00\x79\x00\x36\x00\x08\x00\x37\x00\x00\x00\x8b\x01\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x00\x00\x54\x01\x20\x00\xe5\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x06\x00\x35\x00\x79\x00\x36\x00\x08\x00\x8a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x4f\x00\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\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x00\x00\x53\x01\x20\x00\xe4\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x06\x00\x35\x00\x79\x00\x89\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x51\x01\x00\x00\x52\x01\x20\x00\xe3\x01\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x06\x00\x88\x01\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xdf\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xe0\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xe1\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\xe2\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x84\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x85\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x86\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x87\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\xda\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\xdb\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\xdc\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\xdd\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\xde\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x7e\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x7f\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x80\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x81\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x82\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x32\x00\x83\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x7b\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x7c\x01\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x31\x00\x7d\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x4f\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x79\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x30\x00\x7a\x01\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x76\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x77\x01\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x78\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x11\x01\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x12\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x13\x01\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x14\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x15\x01\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x16\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x17\x01\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x79\x00\x00\x00\x08\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x00\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x18\x01\x20\x00\x00\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x7b\x00\x06\x00\x29\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x2d\x00\x00\x00\x00\x00\x10\x01\x2f\x00\x19\x01\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x4f\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x00\x00\x4f\x00\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x00\x00\x8e\xff\x8e\xff\x00\x00\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x00\x00\x8e\xff\x00\x00\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x8e\xff\x00\x00\x8e\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x00\x00\x95\xff\x95\xff\x00\x00\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x00\x00\x95\xff\x00\x00\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\x95\xff\xf5\xfe\x95\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\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\x00\x00\x00\x00\x00\x00\xf5\xfe\xf5\xfe\x00\x00\xf5\xfe\x00\x00\xf5\xfe\xf5\xfe\xf5\xfe\x00\x00\x00\x00\xf5\xfe\xf5\xfe\x00\x00\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\x00\x00\xf5\xfe\x00\x00\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\x00\x00\x00\x00\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\xf5\xfe\x52\x00\x00\x00\xf5\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x60\x00\x61\x00\x00\x00\x00\x00\x62\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x00\x00\x00\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x52\x00\x00\x00\x88\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x95\x00\x5b\x00\x00\x00\x00\x00\x27\x01\x97\x00\x98\x00\x28\x01\x29\x01\x2a\x01\x9c\x00\x2b\x01\x2c\x01\x9f\x00\xa0\x00\x2d\x01\xa2\x00\x2e\x01\x2f\x01\xa5\x00\x30\x01\xa7\x00\xa8\x00\x31\x01\x32\x01\x33\x01\xac\x00\x34\x01\x35\x01\x36\x01\x37\x01\x38\x01\x39\x01\x3a\x01\x3b\x01\x3c\x01\x3d\x01\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x52\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x95\x00\x5b\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x60\x00\x61\x00\x00\x00\x00\x00\x62\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x06\x00\x00\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\x00\x00\xfa\xff\xfa\xff\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\x00\x00\xfa\xff\xfa\xff\x00\x00\x00\x00\xfa\xff\x00\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x52\x00\x00\x00\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\xfa\xff\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x95\x00\x5b\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x60\x00\x61\x00\x00\x00\x00\x00\x62\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x52\x00\x00\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x5d\x00\x5e\x00\x5f\x00\x00\x00\x60\x00\x61\x00\x00\x00\x00\x00\x62\x00\x00\x00\x63\x00\x64\x00\x65\x00\x66\x00\x00\x00\xbd\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x20\x01\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x71\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x40\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\xec\xff\xec\xff\xec\xff\xec\xff\x00\x00\x00\x00\x00\x00\xec\xff\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\xff\x00\x00\x00\x00\x00\x00\xec\xff\x00\x00\x00\x00\xec\xff\xec\xff\x00\x00\x00\x00\x00\x00\xec\xff\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\xec\xff\x00\x00\x00\x00\xec\xff\xec\xff\xec\xff\xec\xff\xec\xff\xeb\xff\xeb\xff\xeb\xff\xeb\xff\x00\x00\x00\x00\x00\x00\xeb\xff\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\xff\x00\x00\x00\x00\x00\x00\xeb\xff\x00\x00\x00\x00\xeb\xff\xeb\xff\x00\x00\x00\x00\x00\x00\xeb\xff\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\xeb\xff\x00\x00\x00\x00\xeb\xff\xeb\xff\xeb\xff\xeb\xff\xeb\xff\xc0\xff\xc0\xff\xc0\xff\xc0\xff\x00\x00\x00\x00\x00\x00\xc0\xff\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\xff\x00\x00\x00\x00\x00\x00\xc0\xff\x00\x00\x00\x00\xc0\xff\xc0\xff\x00\x00\x00\x00\x00\x00\xc0\xff\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\xc0\xff\x00\x00\x00\x00\xc0\xff\xc0\xff\xc0\xff\xc0\xff\xc0\xff\xed\xff\xed\xff\xed\xff\xed\xff\x00\x00\x00\x00\x00\x00\xed\xff\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xed\xff\x00\x00\x00\x00\x00\x00\xed\xff\x00\x00\x00\x00\xed\xff\xed\xff\x00\x00\x00\x00\x00\x00\xed\xff\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\xed\xff\x00\x00\x00\x00\xed\xff\xed\xff\xed\xff\xed\xff\xed\xff\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x00\x00\x00\x00\x57\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x64\x00\x65\x00\x00\x00\x00\x00\x00\x00\x67\x00\x68\x00\x00\x00\x6a\x00\x00\x00\x6c\x00\x00\x00\x6e\x00\x00\x00\x70\x00\x00\x00\x72\x00\x00\x00\x00\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++happyReduceArr = Happy_Data_Array.array (4, 345) [+ (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),+ (207 , happyReduce_207),+ (208 , happyReduce_208),+ (209 , happyReduce_209),+ (210 , happyReduce_210),+ (211 , happyReduce_211),+ (212 , happyReduce_212),+ (213 , happyReduce_213),+ (214 , happyReduce_214),+ (215 , happyReduce_215),+ (216 , happyReduce_216),+ (217 , happyReduce_217),+ (218 , happyReduce_218),+ (219 , happyReduce_219),+ (220 , happyReduce_220),+ (221 , happyReduce_221),+ (222 , happyReduce_222),+ (223 , happyReduce_223),+ (224 , happyReduce_224),+ (225 , happyReduce_225),+ (226 , happyReduce_226),+ (227 , happyReduce_227),+ (228 , happyReduce_228),+ (229 , happyReduce_229),+ (230 , happyReduce_230),+ (231 , happyReduce_231),+ (232 , happyReduce_232),+ (233 , happyReduce_233),+ (234 , happyReduce_234),+ (235 , happyReduce_235),+ (236 , happyReduce_236),+ (237 , happyReduce_237),+ (238 , happyReduce_238),+ (239 , happyReduce_239),+ (240 , happyReduce_240),+ (241 , happyReduce_241),+ (242 , happyReduce_242),+ (243 , happyReduce_243),+ (244 , happyReduce_244),+ (245 , happyReduce_245),+ (246 , happyReduce_246),+ (247 , happyReduce_247),+ (248 , happyReduce_248),+ (249 , happyReduce_249),+ (250 , happyReduce_250),+ (251 , happyReduce_251),+ (252 , happyReduce_252),+ (253 , happyReduce_253),+ (254 , happyReduce_254),+ (255 , happyReduce_255),+ (256 , happyReduce_256),+ (257 , happyReduce_257),+ (258 , happyReduce_258),+ (259 , happyReduce_259),+ (260 , happyReduce_260),+ (261 , happyReduce_261),+ (262 , happyReduce_262),+ (263 , happyReduce_263),+ (264 , happyReduce_264),+ (265 , happyReduce_265),+ (266 , happyReduce_266),+ (267 , happyReduce_267),+ (268 , happyReduce_268),+ (269 , happyReduce_269),+ (270 , happyReduce_270),+ (271 , happyReduce_271),+ (272 , happyReduce_272),+ (273 , happyReduce_273),+ (274 , happyReduce_274),+ (275 , happyReduce_275),+ (276 , happyReduce_276),+ (277 , happyReduce_277),+ (278 , happyReduce_278),+ (279 , happyReduce_279),+ (280 , happyReduce_280),+ (281 , happyReduce_281),+ (282 , happyReduce_282),+ (283 , happyReduce_283),+ (284 , happyReduce_284),+ (285 , happyReduce_285),+ (286 , happyReduce_286),+ (287 , happyReduce_287),+ (288 , happyReduce_288),+ (289 , happyReduce_289),+ (290 , happyReduce_290),+ (291 , happyReduce_291),+ (292 , happyReduce_292),+ (293 , happyReduce_293),+ (294 , happyReduce_294),+ (295 , happyReduce_295),+ (296 , happyReduce_296),+ (297 , happyReduce_297),+ (298 , happyReduce_298),+ (299 , happyReduce_299),+ (300 , happyReduce_300),+ (301 , happyReduce_301),+ (302 , happyReduce_302),+ (303 , happyReduce_303),+ (304 , happyReduce_304),+ (305 , happyReduce_305),+ (306 , happyReduce_306),+ (307 , happyReduce_307),+ (308 , happyReduce_308),+ (309 , happyReduce_309),+ (310 , happyReduce_310),+ (311 , happyReduce_311),+ (312 , happyReduce_312),+ (313 , happyReduce_313),+ (314 , happyReduce_314),+ (315 , happyReduce_315),+ (316 , happyReduce_316),+ (317 , happyReduce_317),+ (318 , happyReduce_318),+ (319 , happyReduce_319),+ (320 , happyReduce_320),+ (321 , happyReduce_321),+ (322 , happyReduce_322),+ (323 , happyReduce_323),+ (324 , happyReduce_324),+ (325 , happyReduce_325),+ (326 , happyReduce_326),+ (327 , happyReduce_327),+ (328 , happyReduce_328),+ (329 , happyReduce_329),+ (330 , happyReduce_330),+ (331 , happyReduce_331),+ (332 , happyReduce_332),+ (333 , happyReduce_333),+ (334 , happyReduce_334),+ (335 , happyReduce_335),+ (336 , happyReduce_336),+ (337 , happyReduce_337),+ (338 , happyReduce_338),+ (339 , happyReduce_339),+ (340 , happyReduce_340),+ (341 , happyReduce_341),+ (342 , happyReduce_342),+ (343 , happyReduce_343),+ (344 , happyReduce_344),+ (345 , happyReduce_345)+ ]++happy_n_terms = 82 :: Int+happy_n_nonterms = 161 :: Int++happyReduce_4 = happySpecReduce_1 0# happyReduction_4+happyReduction_4 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn7+ (AST.NT (AST.JSLiteral ";") (ss happy_var_1) (gc happy_var_1)+ )}++happyReduce_5 = happySpecReduce_0 0# happyReduction_5+happyReduction_5 = happyIn7+ (AST.NT (AST.JSLiteral "") tokenPosnEmpty []+ )++happyReduce_6 = happySpecReduce_1 1# happyReduction_6+happyReduction_6 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn8+ (fp (AST.NT (AST.JSLiteral "(") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_7 = happySpecReduce_1 2# happyReduction_7+happyReduction_7 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn9+ (fp (AST.NT (AST.JSLiteral ")") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_8 = happySpecReduce_1 3# happyReduction_8+happyReduction_8 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn10+ (fp (AST.NT (AST.JSLiteral "{") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_9 = happySpecReduce_1 4# happyReduction_9+happyReduction_9 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn11+ (fp (AST.NT (AST.JSLiteral "}") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_10 = happySpecReduce_1 5# happyReduction_10+happyReduction_10 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn12+ (fp (AST.NT (AST.JSLiteral "[") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_11 = happySpecReduce_1 6# happyReduction_11+happyReduction_11 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn13+ (fp (AST.NT (AST.JSLiteral "]") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_12 = happySpecReduce_1 7# happyReduction_12+happyReduction_12 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn14+ (fp (AST.NT (AST.JSLiteral ",") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_13 = happySpecReduce_1 8# happyReduction_13+happyReduction_13 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn15+ (fp (AST.NT (AST.JSLiteral ":") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_14 = happySpecReduce_1 9# happyReduction_14+happyReduction_14 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn16+ (fp (AST.NT (AST.JSLiteral ";") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_15 = happySpecReduce_1 10# happyReduction_15+happyReduction_15 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn17+ (fp (AST.NT (AST.JSLiteral ".") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_16 = happySpecReduce_1 11# happyReduction_16+happyReduction_16 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn18+ (fp (AST.NT (AST.JSLiteral "++") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_17 = happySpecReduce_1 12# happyReduction_17+happyReduction_17 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn19+ (fp (AST.NT (AST.JSLiteral "--") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_18 = happySpecReduce_1 13# happyReduction_18+happyReduction_18 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn20+ (fp (AST.NT (AST.JSLiteral "delete") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_19 = happySpecReduce_1 14# happyReduction_19+happyReduction_19 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn21+ (fp (AST.NT (AST.JSLiteral "void") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_20 = happySpecReduce_1 15# happyReduction_20+happyReduction_20 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn22+ (fp (AST.NT (AST.JSLiteral "typeof") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_21 = happySpecReduce_1 16# happyReduction_21+happyReduction_21 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn23+ (fp (AST.NT (AST.JSLiteral "+") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_22 = happySpecReduce_1 17# happyReduction_22+happyReduction_22 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn24+ (fp (AST.NT (AST.JSLiteral "-") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_23 = happySpecReduce_1 18# happyReduction_23+happyReduction_23 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn25+ (fp (AST.NT (AST.JSLiteral "~") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_24 = happySpecReduce_1 19# happyReduction_24+happyReduction_24 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn26+ (fp (AST.NT (AST.JSLiteral "!") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_25 = happySpecReduce_1 20# happyReduction_25+happyReduction_25 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn27+ (fp (AST.NT (AST.JSLiteral "*") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_26 = happySpecReduce_1 21# happyReduction_26+happyReduction_26 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn28+ (fp (AST.NT (AST.JSLiteral "/") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_27 = happySpecReduce_1 22# happyReduction_27+happyReduction_27 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn29+ (fp (AST.NT (AST.JSLiteral "%") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_28 = happySpecReduce_1 23# happyReduction_28+happyReduction_28 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn30+ (fp (AST.NT (AST.JSLiteral "<<") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_29 = happySpecReduce_1 24# happyReduction_29+happyReduction_29 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn31+ (fp (AST.NT (AST.JSLiteral ">>") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_30 = happySpecReduce_1 25# happyReduction_30+happyReduction_30 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn32+ (fp (AST.NT (AST.JSLiteral ">>>") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_31 = happySpecReduce_1 26# happyReduction_31+happyReduction_31 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn33+ (fp (AST.NT (AST.JSLiteral "<=") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_32 = happySpecReduce_1 27# happyReduction_32+happyReduction_32 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn34+ (fp (AST.NT (AST.JSLiteral "<") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_33 = happySpecReduce_1 28# happyReduction_33+happyReduction_33 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn35+ (fp (AST.NT (AST.JSLiteral ">=") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_34 = happySpecReduce_1 29# happyReduction_34+happyReduction_34 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn36+ (fp (AST.NT (AST.JSLiteral ">") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_35 = happySpecReduce_1 30# happyReduction_35+happyReduction_35 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn37+ (fp (AST.NT (AST.JSLiteral "in") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_36 = happySpecReduce_1 31# happyReduction_36+happyReduction_36 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn38+ (fp (AST.NT (AST.JSLiteral "instanceof") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_37 = happySpecReduce_1 32# happyReduction_37+happyReduction_37 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn39+ (fp (AST.NT (AST.JSLiteral "===") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_38 = happySpecReduce_1 33# happyReduction_38+happyReduction_38 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn40+ (fp (AST.NT (AST.JSLiteral "==") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_39 = happySpecReduce_1 34# happyReduction_39+happyReduction_39 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn41+ (fp (AST.NT (AST.JSLiteral "!==") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_40 = happySpecReduce_1 35# happyReduction_40+happyReduction_40 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn42+ (fp (AST.NT (AST.JSLiteral "!=") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_41 = happySpecReduce_1 36# happyReduction_41+happyReduction_41 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn43+ (fp (AST.NT (AST.JSLiteral "||") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_42 = happySpecReduce_1 37# happyReduction_42+happyReduction_42 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn44+ (fp (AST.NT (AST.JSLiteral "&&") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_43 = happySpecReduce_1 38# happyReduction_43+happyReduction_43 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn45+ (fp (AST.NT (AST.JSLiteral "|") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_44 = happySpecReduce_1 39# happyReduction_44+happyReduction_44 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn46+ (fp (AST.NT (AST.JSLiteral "&") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_45 = happySpecReduce_1 40# happyReduction_45+happyReduction_45 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn47+ (fp (AST.NT (AST.JSLiteral "^") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_46 = happySpecReduce_1 41# happyReduction_46+happyReduction_46 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn48+ (fp (AST.NT (AST.JSLiteral "?") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_47 = happySpecReduce_1 42# happyReduction_47+happyReduction_47 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn49+ (fp (AST.NT (AST.JSLiteral "=") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_48 = happySpecReduce_1 43# happyReduction_48+happyReduction_48 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn50+ (fp (AST.NT (AST.JSLiteral (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_49 = happySpecReduce_1 44# happyReduction_49+happyReduction_49 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn51+ (fp (AST.NT (AST.JSLiteral "var") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_50 = happySpecReduce_1 45# happyReduction_50+happyReduction_50 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn52+ (fp (AST.NT (AST.JSLiteral "const") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_51 = happySpecReduce_1 46# happyReduction_51+happyReduction_51 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn53+ (fp (AST.NT (AST.JSLiteral "if") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_52 = happySpecReduce_1 47# happyReduction_52+happyReduction_52 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn54+ (fp (AST.NT (AST.JSLiteral "else") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_53 = happySpecReduce_1 48# happyReduction_53+happyReduction_53 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn55+ (fp (AST.NT (AST.JSLiteral "do") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_54 = happySpecReduce_1 49# happyReduction_54+happyReduction_54 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn56+ (fp (AST.NT (AST.JSLiteral "while") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_55 = happySpecReduce_1 50# happyReduction_55+happyReduction_55 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn57+ (fp (AST.NT (AST.JSLiteral "for") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_56 = happySpecReduce_1 51# happyReduction_56+happyReduction_56 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn58+ (fp (AST.NT (AST.JSLiteral "continue") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_57 = happySpecReduce_1 52# happyReduction_57+happyReduction_57 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn59+ (fp (AST.NT (AST.JSLiteral "break") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_58 = happySpecReduce_1 53# happyReduction_58+happyReduction_58 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn60+ (fp (AST.NT (AST.JSLiteral "return") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_59 = happySpecReduce_1 54# happyReduction_59+happyReduction_59 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn61+ (fp (AST.NT (AST.JSLiteral "with") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_60 = happySpecReduce_1 55# happyReduction_60+happyReduction_60 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn62+ (fp (AST.NT (AST.JSLiteral "switch") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_61 = happySpecReduce_1 56# happyReduction_61+happyReduction_61 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn63+ (fp (AST.NT (AST.JSLiteral "case") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_62 = happySpecReduce_1 57# happyReduction_62+happyReduction_62 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn64+ (fp (AST.NT (AST.JSLiteral "default") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_63 = happySpecReduce_1 58# happyReduction_63+happyReduction_63 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn65+ (fp (AST.NT (AST.JSLiteral "throw") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_64 = happySpecReduce_1 59# happyReduction_64+happyReduction_64 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn66+ (fp (AST.NT (AST.JSLiteral "try") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_65 = happySpecReduce_1 60# happyReduction_65+happyReduction_65 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn67+ (fp (AST.NT (AST.JSLiteral "catch") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_66 = happySpecReduce_1 61# happyReduction_66+happyReduction_66 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn68+ (fp (AST.NT (AST.JSLiteral "finally") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_67 = happySpecReduce_1 62# happyReduction_67+happyReduction_67 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn69+ (fp (AST.NT (AST.JSLiteral "function") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_68 = happySpecReduce_1 63# happyReduction_68+happyReduction_68 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn70+ (fp (AST.NT (AST.JSLiteral "") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_69 = happySpecReduce_1 64# happyReduction_69+happyReduction_69 happy_x_1+ = case happyOut72 happy_x_1 of { happy_var_1 -> + happyIn71+ (happy_var_1+ )}++happyReduce_70 = happySpecReduce_1 64# happyReduction_70+happyReduction_70 happy_x_1+ = case happyOut73 happy_x_1 of { happy_var_1 -> + happyIn71+ (happy_var_1+ )}++happyReduce_71 = happySpecReduce_1 64# happyReduction_71+happyReduction_71 happy_x_1+ = case happyOut74 happy_x_1 of { happy_var_1 -> + happyIn71+ (happy_var_1+ )}++happyReduce_72 = happySpecReduce_1 64# happyReduction_72+happyReduction_72 happy_x_1+ = case happyOut75 happy_x_1 of { happy_var_1 -> + happyIn71+ (happy_var_1+ )}++happyReduce_73 = happySpecReduce_1 64# happyReduction_73+happyReduction_73 happy_x_1+ = case happyOut76 happy_x_1 of { happy_var_1 -> + happyIn71+ (happy_var_1+ )}++happyReduce_74 = happySpecReduce_1 65# happyReduction_74+happyReduction_74 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn72+ (fp (AST.NT (AST.JSLiteral "null") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_75 = happySpecReduce_1 66# happyReduction_75+happyReduction_75 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn73+ (fp (AST.NT (AST.JSLiteral "true") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_76 = happySpecReduce_1 66# happyReduction_76+happyReduction_76 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn73+ (fp (AST.NT (AST.JSLiteral "false") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_77 = happySpecReduce_1 67# happyReduction_77+happyReduction_77 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn74+ (fp (AST.NT (AST.JSDecimal (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_78 = happySpecReduce_1 67# happyReduction_78+happyReduction_78 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn74+ (fp (AST.NT (AST.JSHexInteger (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_79 = happySpecReduce_1 68# happyReduction_79+happyReduction_79 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn75+ (fp (AST.NT (AST.JSStringLiteral (token_delimiter happy_var_1) (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_80 = happySpecReduce_1 69# happyReduction_80+happyReduction_80 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn76+ (fp (AST.NT (AST.JSRegEx (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_81 = happySpecReduce_1 70# happyReduction_81+happyReduction_81 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn77+ (fp (AST.NT (AST.JSLiteral "this") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_82 = happySpecReduce_1 70# happyReduction_82+happyReduction_82 happy_x_1+ = case happyOut78 happy_x_1 of { happy_var_1 -> + happyIn77+ (happy_var_1 {- PrimaryExpression1 -}+ )}++happyReduce_83 = happySpecReduce_1 70# happyReduction_83+happyReduction_83 happy_x_1+ = case happyOut71 happy_x_1 of { happy_var_1 -> + happyIn77+ (happy_var_1 {- PrimaryExpression2 -}+ )}++happyReduce_84 = happySpecReduce_1 70# happyReduction_84+happyReduction_84 happy_x_1+ = case happyOut80 happy_x_1 of { happy_var_1 -> + happyIn77+ (happy_var_1 {- PrimaryExpression3 -}+ )}++happyReduce_85 = happySpecReduce_1 70# happyReduction_85+happyReduction_85 happy_x_1+ = case happyOut83 happy_x_1 of { happy_var_1 -> + happyIn77+ (happy_var_1 {- PrimaryExpression4 -}+ )}++happyReduce_86 = happySpecReduce_3 70# happyReduction_86+happyReduction_86 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut8 happy_x_1 of { happy_var_1 -> + case happyOut118 happy_x_2 of { happy_var_2 -> + case happyOut9 happy_x_3 of { happy_var_3 -> + happyIn77+ (fp (AST.NN (AST.JSExpressionParen happy_var_1 happy_var_2 happy_var_3))+ )}}}++happyReduce_87 = happySpecReduce_1 71# happyReduction_87+happyReduction_87 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn78+ ((AST.NT (AST.JSIdentifier (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_88 = happySpecReduce_1 71# happyReduction_88+happyReduction_88 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn78+ ((AST.NT (AST.JSIdentifier "get") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_89 = happySpecReduce_1 71# happyReduction_89+happyReduction_89 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn78+ ((AST.NT (AST.JSIdentifier "set") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_90 = happySpecReduce_1 72# happyReduction_90+happyReduction_90 happy_x_1+ = case happyOut78 happy_x_1 of { happy_var_1 -> + happyIn79+ (happy_var_1+ )}++happyReduce_91 = happySpecReduce_1 72# happyReduction_91+happyReduction_91 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "break") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_92 = happySpecReduce_1 72# happyReduction_92+happyReduction_92 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "case") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_93 = happySpecReduce_1 72# happyReduction_93+happyReduction_93 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "catch") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_94 = happySpecReduce_1 72# happyReduction_94+happyReduction_94 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "const") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_95 = happySpecReduce_1 72# happyReduction_95+happyReduction_95 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "continue") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_96 = happySpecReduce_1 72# happyReduction_96+happyReduction_96 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "debugger") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_97 = happySpecReduce_1 72# happyReduction_97+happyReduction_97 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "default") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_98 = happySpecReduce_1 72# happyReduction_98+happyReduction_98 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "delete") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_99 = happySpecReduce_1 72# happyReduction_99+happyReduction_99 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "do") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_100 = happySpecReduce_1 72# happyReduction_100+happyReduction_100 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "else") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_101 = happySpecReduce_1 72# happyReduction_101+happyReduction_101 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "enum") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_102 = happySpecReduce_1 72# happyReduction_102+happyReduction_102 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "false") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_103 = happySpecReduce_1 72# happyReduction_103+happyReduction_103 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "finally") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_104 = happySpecReduce_1 72# happyReduction_104+happyReduction_104 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "for") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_105 = happySpecReduce_1 72# happyReduction_105+happyReduction_105 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "function") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_106 = happySpecReduce_1 72# happyReduction_106+happyReduction_106 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "get") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_107 = happySpecReduce_1 72# happyReduction_107+happyReduction_107 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "if") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_108 = happySpecReduce_1 72# happyReduction_108+happyReduction_108 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "in") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_109 = happySpecReduce_1 72# happyReduction_109+happyReduction_109 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "instanceof") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_110 = happySpecReduce_1 72# happyReduction_110+happyReduction_110 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "new") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_111 = happySpecReduce_1 72# happyReduction_111+happyReduction_111 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "null") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_112 = happySpecReduce_1 72# happyReduction_112+happyReduction_112 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "return") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_113 = happySpecReduce_1 72# happyReduction_113+happyReduction_113 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "set") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_114 = happySpecReduce_1 72# happyReduction_114+happyReduction_114 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "switch") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_115 = happySpecReduce_1 72# happyReduction_115+happyReduction_115 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "this") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_116 = happySpecReduce_1 72# happyReduction_116+happyReduction_116 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "throw") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_117 = happySpecReduce_1 72# happyReduction_117+happyReduction_117 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "true") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_118 = happySpecReduce_1 72# happyReduction_118+happyReduction_118 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "try") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_119 = happySpecReduce_1 72# happyReduction_119+happyReduction_119 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "typeof") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_120 = happySpecReduce_1 72# happyReduction_120+happyReduction_120 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "var") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_121 = happySpecReduce_1 72# happyReduction_121+happyReduction_121 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "void") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_122 = happySpecReduce_1 72# happyReduction_122+happyReduction_122 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "while") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_123 = happySpecReduce_1 72# happyReduction_123+happyReduction_123 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier "with") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_124 = happySpecReduce_1 72# happyReduction_124+happyReduction_124 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn79+ (fp (AST.NT (AST.JSIdentifier (token_literal happy_var_1)) (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_125 = happySpecReduce_2 73# happyReduction_125+happyReduction_125 happy_x_2+ happy_x_1+ = case happyOut12 happy_x_1 of { happy_var_1 -> + case happyOut13 happy_x_2 of { happy_var_2 -> + happyIn80+ (fp (AST.NN (AST.JSArrayLiteral happy_var_1 [] happy_var_2))+ )}}++happyReduce_126 = happySpecReduce_3 73# happyReduction_126+happyReduction_126 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut12 happy_x_1 of { happy_var_1 -> + case happyOut82 happy_x_2 of { happy_var_2 -> + case happyOut13 happy_x_3 of { happy_var_3 -> + happyIn80+ (fp (AST.NN (AST.JSArrayLiteral happy_var_1 happy_var_2 happy_var_3))+ )}}}++happyReduce_127 = happySpecReduce_3 73# happyReduction_127+happyReduction_127 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut12 happy_x_1 of { happy_var_1 -> + case happyOut81 happy_x_2 of { happy_var_2 -> + case happyOut13 happy_x_3 of { happy_var_3 -> + happyIn80+ (fp (AST.NN (AST.JSArrayLiteral happy_var_1 happy_var_2 happy_var_3))+ )}}}++happyReduce_128 = happyReduce 5# 73# happyReduction_128+happyReduction_128 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut12 happy_x_1 of { happy_var_1 -> + case happyOut81 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + case happyOut82 happy_x_4 of { happy_var_4 -> + case happyOut13 happy_x_5 of { happy_var_5 -> + happyIn80+ (fp (AST.NN (AST.JSArrayLiteral happy_var_1 (happy_var_2++[happy_var_3]++happy_var_4) happy_var_5))+ ) `HappyStk` happyRest}}}}}++happyReduce_129 = happyReduce 4# 73# happyReduction_129+happyReduction_129 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut12 happy_x_1 of { happy_var_1 -> + case happyOut81 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + case happyOut13 happy_x_4 of { happy_var_4 -> + happyIn80+ (fp (AST.NN (AST.JSArrayLiteral happy_var_1 (happy_var_2++[happy_var_3]) happy_var_4))+ ) `HappyStk` happyRest}}}}++happyReduce_130 = happySpecReduce_2 74# happyReduction_130+happyReduction_130 happy_x_2+ happy_x_1+ = case happyOut82 happy_x_1 of { happy_var_1 -> + case happyOut115 happy_x_2 of { happy_var_2 -> + happyIn81+ (((happy_var_1)++(happy_var_2)) {- ElementList -}+ )}}++happyReduce_131 = happySpecReduce_1 74# happyReduction_131+happyReduction_131 happy_x_1+ = case happyOut115 happy_x_1 of { happy_var_1 -> + happyIn81+ (happy_var_1 {- ElementList -}+ )}++happyReduce_132 = happyReduce 4# 74# happyReduction_132+happyReduction_132 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut81 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + case happyOut82 happy_x_3 of { happy_var_3 -> + case happyOut115 happy_x_4 of { happy_var_4 -> + happyIn81+ (((happy_var_1)++[fp (AST.NN (AST.JSElision happy_var_2))]++(happy_var_3)++(happy_var_4)) {- ElementList -}+ ) `HappyStk` happyRest}}}}++happyReduce_133 = happySpecReduce_3 74# happyReduction_133+happyReduction_133 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut81 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + case happyOut115 happy_x_3 of { happy_var_3 -> + happyIn81+ (((happy_var_1)++[fp (AST.NN (AST.JSElision happy_var_2))]++(happy_var_3)) {- ElementList -}+ )}}}++happyReduce_134 = happySpecReduce_1 75# happyReduction_134+happyReduction_134 happy_x_1+ = case happyOut14 happy_x_1 of { happy_var_1 -> + happyIn82+ ([ fp (AST.NN (AST.JSElision happy_var_1))]+ )}++happyReduce_135 = happySpecReduce_2 75# happyReduction_135+happyReduction_135 happy_x_2+ happy_x_1+ = case happyOut82 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + happyIn82+ ((happy_var_1 ++ [fp (AST.NN (AST.JSElision happy_var_2))])+ )}}++happyReduce_136 = happySpecReduce_2 76# happyReduction_136+happyReduction_136 happy_x_2+ happy_x_1+ = case happyOut10 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + happyIn83+ (fp (AST.NN (AST.JSObjectLiteral happy_var_1 [] happy_var_2) )+ )}}++happyReduce_137 = happySpecReduce_3 76# happyReduction_137+happyReduction_137 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut10 happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_3 of { happy_var_3 -> + happyIn83+ (fp (AST.NN (AST.JSObjectLiteral happy_var_1 happy_var_2 happy_var_3) )+ )}}}++happyReduce_138 = happyReduce 4# 76# happyReduction_138+happyReduction_138 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut10 happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_2 of { happy_var_2 -> + case happyOut14 happy_x_3 of { happy_var_3 -> + case happyOut11 happy_x_4 of { happy_var_4 -> + happyIn83+ (fp (AST.NN (AST.JSObjectLiteral happy_var_1 (happy_var_2++[happy_var_3]) happy_var_4) )+ ) `HappyStk` happyRest}}}}++happyReduce_139 = happySpecReduce_1 77# happyReduction_139+happyReduction_139 happy_x_1+ = case happyOut85 happy_x_1 of { happy_var_1 -> + happyIn84+ ([happy_var_1] {- PropertyNameandValueList1 -}+ )}++happyReduce_140 = happySpecReduce_3 77# happyReduction_140+happyReduction_140 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut84 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + case happyOut85 happy_x_3 of { happy_var_3 -> + happyIn84+ ((happy_var_1++[happy_var_2]++[happy_var_3]) {- PropertyNameandValueList2 -}+ )}}}++happyReduce_141 = happySpecReduce_3 78# happyReduction_141+happyReduction_141 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut86 happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_2 of { happy_var_2 -> + case happyOut115 happy_x_3 of { happy_var_3 -> + happyIn85+ (fp (AST.NN (AST.JSPropertyNameandValue happy_var_1 happy_var_2 happy_var_3))+ )}}}++happyReduce_142 = happyReduce 7# 78# happyReduction_142+happyReduction_142 (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 happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut86 happy_x_2 of { happy_var_2 -> + case happyOut8 happy_x_3 of { happy_var_3 -> + case happyOut9 happy_x_4 of { happy_var_4 -> + case happyOut10 happy_x_5 of { happy_var_5 -> + case happyOut160 happy_x_6 of { happy_var_6 -> + case happyOut11 happy_x_7 of { happy_var_7 -> + happyIn85+ (fp (AST.NN (AST.JSPropertyAccessor (AST.NT (AST.JSLiteral "get") (ss happy_var_1) (gc happy_var_1)) happy_var_2 happy_var_3 [] happy_var_4 happy_var_5 happy_var_6 happy_var_7))+ ) `HappyStk` happyRest}}}}}}}++happyReduce_143 = happyReduce 8# 78# happyReduction_143+happyReduction_143 (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 happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut86 happy_x_2 of { happy_var_2 -> + case happyOut8 happy_x_3 of { happy_var_3 -> + case happyOut87 happy_x_4 of { happy_var_4 -> + case happyOut9 happy_x_5 of { happy_var_5 -> + case happyOut10 happy_x_6 of { happy_var_6 -> + case happyOut160 happy_x_7 of { happy_var_7 -> + case happyOut11 happy_x_8 of { happy_var_8 -> + happyIn85+ (fp (AST.NN (AST.JSPropertyAccessor (AST.NT (AST.JSLiteral "set") (ss happy_var_1) (gc happy_var_1)) happy_var_2 happy_var_3 [happy_var_4] happy_var_5 happy_var_6 happy_var_7 happy_var_8))+ ) `HappyStk` happyRest}}}}}}}}++happyReduce_144 = happySpecReduce_1 79# happyReduction_144+happyReduction_144 happy_x_1+ = case happyOut79 happy_x_1 of { happy_var_1 -> + happyIn86+ (happy_var_1 {- PropertyName1 -}+ )}++happyReduce_145 = happySpecReduce_1 79# happyReduction_145+happyReduction_145 happy_x_1+ = case happyOut75 happy_x_1 of { happy_var_1 -> + happyIn86+ (happy_var_1 {- PropertyName2 -}+ )}++happyReduce_146 = happySpecReduce_1 79# happyReduction_146+happyReduction_146 happy_x_1+ = case happyOut74 happy_x_1 of { happy_var_1 -> + happyIn86+ (happy_var_1 {- PropertyName3 -}+ )}++happyReduce_147 = happySpecReduce_1 80# happyReduction_147+happyReduction_147 happy_x_1+ = case happyOut78 happy_x_1 of { happy_var_1 -> + happyIn87+ (happy_var_1 {- PropertySetParameterList -}+ )}++happyReduce_148 = happySpecReduce_1 81# happyReduction_148+happyReduction_148 happy_x_1+ = case happyOut77 happy_x_1 of { happy_var_1 -> + happyIn88+ ([happy_var_1] {- MemberExpression -}+ )}++happyReduce_149 = happySpecReduce_1 81# happyReduction_149+happyReduction_149 happy_x_1+ = case happyOut157 happy_x_1 of { happy_var_1 -> + happyIn88+ ([happy_var_1] {- MemberExpression -}+ )}++happyReduce_150 = happyReduce 4# 81# happyReduction_150+happyReduction_150 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut88 happy_x_1 of { happy_var_1 -> + case happyOut12 happy_x_2 of { happy_var_2 -> + case happyOut118 happy_x_3 of { happy_var_3 -> + case happyOut13 happy_x_4 of { happy_var_4 -> + happyIn88+ ([fp (AST.NN (AST.JSMemberSquare happy_var_1 happy_var_2 happy_var_3 happy_var_4))]+ ) `HappyStk` happyRest}}}}++happyReduce_151 = happySpecReduce_3 81# happyReduction_151+happyReduction_151 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut88 happy_x_1 of { happy_var_1 -> + case happyOut17 happy_x_2 of { happy_var_2 -> + case happyOut79 happy_x_3 of { happy_var_3 -> + happyIn88+ ([fp (AST.NN (AST.JSMemberDot happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_152 = happySpecReduce_3 81# happyReduction_152+happyReduction_152 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut88 happy_x_2 of { happy_var_2 -> + case happyOut91 happy_x_3 of { happy_var_3 -> + happyIn88+ ((((fp (AST.NT (AST.JSLiteral "new") (ss happy_var_1) (gc happy_var_1))):happy_var_2)++[happy_var_3])+ )}}}++happyReduce_153 = happySpecReduce_1 82# happyReduction_153+happyReduction_153 happy_x_1+ = case happyOut88 happy_x_1 of { happy_var_1 -> + happyIn89+ (happy_var_1 {- NewExpression -}+ )}++happyReduce_154 = happySpecReduce_2 82# happyReduction_154+happyReduction_154 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut89 happy_x_2 of { happy_var_2 -> + happyIn89+ ((fp (AST.NT (AST.JSLiteral "new") (ss happy_var_1) (gc happy_var_1))):happy_var_2+ )}}++happyReduce_155 = happySpecReduce_2 83# happyReduction_155+happyReduction_155 happy_x_2+ happy_x_1+ = case happyOut88 happy_x_1 of { happy_var_1 -> + case happyOut91 happy_x_2 of { happy_var_2 -> + happyIn90+ (happy_var_1++[happy_var_2] {- CallExpression -}+ )}}++happyReduce_156 = happySpecReduce_2 83# happyReduction_156+happyReduction_156 happy_x_2+ happy_x_1+ = case happyOut90 happy_x_1 of { happy_var_1 -> + case happyOut91 happy_x_2 of { happy_var_2 -> + happyIn90+ ((happy_var_1++[fp (AST.NN (AST.JSCallExpression "()" [] [happy_var_2] []))])+ )}}++happyReduce_157 = happyReduce 4# 83# happyReduction_157+happyReduction_157 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut90 happy_x_1 of { happy_var_1 -> + case happyOut12 happy_x_2 of { happy_var_2 -> + case happyOut118 happy_x_3 of { happy_var_3 -> + case happyOut13 happy_x_4 of { happy_var_4 -> + happyIn90+ ((happy_var_1++[fp (AST.NN (AST.JSCallExpression "[]" [happy_var_2] [happy_var_3] [happy_var_4]))])+ ) `HappyStk` happyRest}}}}++happyReduce_158 = happySpecReduce_3 83# happyReduction_158+happyReduction_158 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut90 happy_x_1 of { happy_var_1 -> + case happyOut17 happy_x_2 of { happy_var_2 -> + case happyOut79 happy_x_3 of { happy_var_3 -> + happyIn90+ ((happy_var_1++[fp (AST.NN (AST.JSCallExpression "." [happy_var_2] [happy_var_3] []))])+ )}}}++happyReduce_159 = happySpecReduce_2 84# happyReduction_159+happyReduction_159 happy_x_2+ happy_x_1+ = case happyOut8 happy_x_1 of { happy_var_1 -> + case happyOut9 happy_x_2 of { happy_var_2 -> + happyIn91+ (fp (AST.NN (AST.JSArguments happy_var_1 [] happy_var_2))+ )}}++happyReduce_160 = happySpecReduce_3 84# happyReduction_160+happyReduction_160 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut8 happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { happy_var_2 -> + case happyOut9 happy_x_3 of { happy_var_3 -> + happyIn91+ (fp (AST.NN (AST.JSArguments happy_var_1 happy_var_2 happy_var_3))+ )}}}++happyReduce_161 = happySpecReduce_1 85# happyReduction_161+happyReduction_161 happy_x_1+ = case happyOut115 happy_x_1 of { happy_var_1 -> + happyIn92+ (happy_var_1 {- ArgumentList -}+ )}++happyReduce_162 = happySpecReduce_3 85# happyReduction_162+happyReduction_162 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut92 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + case happyOut115 happy_x_3 of { happy_var_3 -> + happyIn92+ (happy_var_1++[happy_var_2]++happy_var_3 {- ArgumentList2 -}+ )}}}++happyReduce_163 = happySpecReduce_1 86# happyReduction_163+happyReduction_163 happy_x_1+ = case happyOut89 happy_x_1 of { happy_var_1 -> + happyIn93+ (happy_var_1 {- LeftHandSideExpression1 -}+ )}++happyReduce_164 = happySpecReduce_1 86# happyReduction_164+happyReduction_164 happy_x_1+ = case happyOut90 happy_x_1 of { happy_var_1 -> + happyIn93+ (happy_var_1 {- LeftHandSideExpression12 -}+ )}++happyReduce_165 = happySpecReduce_1 87# happyReduction_165+happyReduction_165 happy_x_1+ = case happyOut93 happy_x_1 of { happy_var_1 -> + happyIn94+ (happy_var_1 {- PostfixExpression -}+ )}++happyReduce_166 = happySpecReduce_2 87# happyReduction_166+happyReduction_166 happy_x_2+ happy_x_1+ = case happyOut94 happy_x_1 of { happy_var_1 -> + case happyOut18 happy_x_2 of { happy_var_2 -> + happyIn94+ ([fp (AST.NN (AST.JSExpressionPostfix "++" happy_var_1 happy_var_2))]+ )}}++happyReduce_167 = happySpecReduce_2 87# happyReduction_167+happyReduction_167 happy_x_2+ happy_x_1+ = case happyOut94 happy_x_1 of { happy_var_1 -> + case happyOut19 happy_x_2 of { happy_var_2 -> + happyIn94+ ([fp (AST.NN (AST.JSExpressionPostfix "--" happy_var_1 happy_var_2))]+ )}}++happyReduce_168 = happySpecReduce_1 88# happyReduction_168+happyReduction_168 happy_x_1+ = case happyOut94 happy_x_1 of { happy_var_1 -> + happyIn95+ (happy_var_1 {- UnaryExpression -}+ )}++happyReduce_169 = happySpecReduce_2 88# happyReduction_169+happyReduction_169 happy_x_2+ happy_x_1+ = case happyOut20 happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> + happyIn95+ (((fp (AST.NN (AST.JSUnary "delete " happy_var_1))):happy_var_2)+ )}}++happyReduce_170 = happySpecReduce_2 88# happyReduction_170+happyReduction_170 happy_x_2+ happy_x_1+ = case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> + happyIn95+ (((fp (AST.NN (AST.JSUnary "void " happy_var_1))):happy_var_2)+ )}}++happyReduce_171 = happySpecReduce_2 88# happyReduction_171+happyReduction_171 happy_x_2+ happy_x_1+ = case happyOut22 happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> + happyIn95+ (((fp (AST.NN (AST.JSUnary "typeof " happy_var_1))):happy_var_2)+ )}}++happyReduce_172 = happySpecReduce_2 88# happyReduction_172+happyReduction_172 happy_x_2+ happy_x_1+ = case happyOut18 happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> + happyIn95+ (((fp (AST.NN (AST.JSUnary "++" happy_var_1))):happy_var_2)+ )}}++happyReduce_173 = happySpecReduce_2 88# happyReduction_173+happyReduction_173 happy_x_2+ happy_x_1+ = case happyOut19 happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> + happyIn95+ (((fp (AST.NN (AST.JSUnary "--" happy_var_1))):happy_var_2)+ )}}++happyReduce_174 = happySpecReduce_2 88# happyReduction_174+happyReduction_174 happy_x_2+ happy_x_1+ = case happyOut23 happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> + happyIn95+ (((fp (AST.NN (AST.JSUnary "+" happy_var_1))):happy_var_2)+ )}}++happyReduce_175 = happySpecReduce_2 88# happyReduction_175+happyReduction_175 happy_x_2+ happy_x_1+ = case happyOut24 happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> + happyIn95+ (((fp (AST.NN (AST.JSUnary "-" happy_var_1))):happy_var_2)+ )}}++happyReduce_176 = happySpecReduce_2 88# happyReduction_176+happyReduction_176 happy_x_2+ happy_x_1+ = case happyOut25 happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> + happyIn95+ (((fp (AST.NN (AST.JSUnary "~" happy_var_1))):happy_var_2)+ )}}++happyReduce_177 = happySpecReduce_2 88# happyReduction_177+happyReduction_177 happy_x_2+ happy_x_1+ = case happyOut26 happy_x_1 of { happy_var_1 -> + case happyOut95 happy_x_2 of { happy_var_2 -> + happyIn95+ (((fp (AST.NN (AST.JSUnary "!" happy_var_1))):happy_var_2)+ )}}++happyReduce_178 = happySpecReduce_1 89# happyReduction_178+happyReduction_178 happy_x_1+ = case happyOut95 happy_x_1 of { happy_var_1 -> + happyIn96+ (happy_var_1 {- MultiplicativeExpression -}+ )}++happyReduce_179 = happySpecReduce_3 89# happyReduction_179+happyReduction_179 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut96 happy_x_1 of { happy_var_1 -> + case happyOut27 happy_x_2 of { happy_var_2 -> + case happyOut95 happy_x_3 of { happy_var_3 -> + happyIn96+ ([fp (AST.NN (AST.JSExpressionBinary "*" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_180 = happySpecReduce_3 89# happyReduction_180+happyReduction_180 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut96 happy_x_1 of { happy_var_1 -> + case happyOut28 happy_x_2 of { happy_var_2 -> + case happyOut95 happy_x_3 of { happy_var_3 -> + happyIn96+ ([fp (AST.NN (AST.JSExpressionBinary "/" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_181 = happySpecReduce_3 89# happyReduction_181+happyReduction_181 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut96 happy_x_1 of { happy_var_1 -> + case happyOut29 happy_x_2 of { happy_var_2 -> + case happyOut95 happy_x_3 of { happy_var_3 -> + happyIn96+ ([fp (AST.NN (AST.JSExpressionBinary "%" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_182 = happySpecReduce_3 90# happyReduction_182+happyReduction_182 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut97 happy_x_1 of { happy_var_1 -> + case happyOut23 happy_x_2 of { happy_var_2 -> + case happyOut96 happy_x_3 of { happy_var_3 -> + happyIn97+ ([fp (AST.NN (AST.JSExpressionBinary "+" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_183 = happySpecReduce_3 90# happyReduction_183+happyReduction_183 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut97 happy_x_1 of { happy_var_1 -> + case happyOut24 happy_x_2 of { happy_var_2 -> + case happyOut96 happy_x_3 of { happy_var_3 -> + happyIn97+ ([fp (AST.NN (AST.JSExpressionBinary "-" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_184 = happySpecReduce_1 90# happyReduction_184+happyReduction_184 happy_x_1+ = case happyOut96 happy_x_1 of { happy_var_1 -> + happyIn97+ (happy_var_1 {- (goRegExp happy_var_1)-} {- AdditiveExpression -}+ )}++happyReduce_185 = happySpecReduce_3 91# happyReduction_185+happyReduction_185 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut98 happy_x_1 of { happy_var_1 -> + case happyOut30 happy_x_2 of { happy_var_2 -> + case happyOut97 happy_x_3 of { happy_var_3 -> + happyIn98+ ([fp (AST.NN (AST.JSExpressionBinary "<<" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_186 = happySpecReduce_3 91# happyReduction_186+happyReduction_186 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut98 happy_x_1 of { happy_var_1 -> + case happyOut31 happy_x_2 of { happy_var_2 -> + case happyOut97 happy_x_3 of { happy_var_3 -> + happyIn98+ ([fp (AST.NN (AST.JSExpressionBinary ">>" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_187 = happySpecReduce_3 91# happyReduction_187+happyReduction_187 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut98 happy_x_1 of { happy_var_1 -> + case happyOut32 happy_x_2 of { happy_var_2 -> + case happyOut97 happy_x_3 of { happy_var_3 -> + happyIn98+ ([fp (AST.NN (AST.JSExpressionBinary ">>>" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_188 = happySpecReduce_1 91# happyReduction_188+happyReduction_188 happy_x_1+ = case happyOut97 happy_x_1 of { happy_var_1 -> + happyIn98+ (happy_var_1 {- ShiftExpression -}+ )}++happyReduce_189 = happySpecReduce_1 92# happyReduction_189+happyReduction_189 happy_x_1+ = case happyOut98 happy_x_1 of { happy_var_1 -> + happyIn99+ (happy_var_1 {- RelationalExpression -}+ )}++happyReduce_190 = happySpecReduce_3 92# happyReduction_190+happyReduction_190 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOut34 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn99+ ([fp (AST.NN (AST.JSExpressionBinary "<" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_191 = happySpecReduce_3 92# happyReduction_191+happyReduction_191 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOut36 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn99+ ([fp (AST.NN (AST.JSExpressionBinary ">" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_192 = happySpecReduce_3 92# happyReduction_192+happyReduction_192 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOut33 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn99+ ([fp (AST.NN (AST.JSExpressionBinary "<=" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_193 = happySpecReduce_3 92# happyReduction_193+happyReduction_193 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOut35 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn99+ ([fp (AST.NN (AST.JSExpressionBinary ">=" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_194 = happySpecReduce_3 92# happyReduction_194+happyReduction_194 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOut38 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn99+ ([fp (AST.NN (AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_195 = happySpecReduce_3 92# happyReduction_195+happyReduction_195 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOut37 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn99+ ([fp (AST.NN (AST.JSExpressionBinary " in " happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_196 = happySpecReduce_1 93# happyReduction_196+happyReduction_196 happy_x_1+ = case happyOut98 happy_x_1 of { happy_var_1 -> + happyIn100+ (happy_var_1 {- RelationalExpressionNoIn -}+ )}++happyReduce_197 = happySpecReduce_3 93# happyReduction_197+happyReduction_197 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut100 happy_x_1 of { happy_var_1 -> + case happyOut34 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn100+ ([fp (AST.NN (AST.JSExpressionBinary "<" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_198 = happySpecReduce_3 93# happyReduction_198+happyReduction_198 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut100 happy_x_1 of { happy_var_1 -> + case happyOut36 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn100+ ([fp (AST.NN (AST.JSExpressionBinary ">" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_199 = happySpecReduce_3 93# happyReduction_199+happyReduction_199 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut100 happy_x_1 of { happy_var_1 -> + case happyOut33 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn100+ ([fp (AST.NN (AST.JSExpressionBinary "<=" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_200 = happySpecReduce_3 93# happyReduction_200+happyReduction_200 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut100 happy_x_1 of { happy_var_1 -> + case happyOut35 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn100+ ([fp (AST.NN (AST.JSExpressionBinary ">=" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_201 = happySpecReduce_3 93# happyReduction_201+happyReduction_201 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut100 happy_x_1 of { happy_var_1 -> + case happyOut38 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + happyIn100+ ([fp (AST.NN (AST.JSExpressionBinary " instanceof " happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_202 = happySpecReduce_1 94# happyReduction_202+happyReduction_202 happy_x_1+ = case happyOut99 happy_x_1 of { happy_var_1 -> + happyIn101+ (happy_var_1 {- EqualityExpression -}+ )}++happyReduce_203 = happySpecReduce_3 94# happyReduction_203+happyReduction_203 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut101 happy_x_1 of { happy_var_1 -> + case happyOut40 happy_x_2 of { happy_var_2 -> + case happyOut99 happy_x_3 of { happy_var_3 -> + happyIn101+ ([fp (AST.NN (AST.JSExpressionBinary "==" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_204 = happySpecReduce_3 94# happyReduction_204+happyReduction_204 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut101 happy_x_1 of { happy_var_1 -> + case happyOut42 happy_x_2 of { happy_var_2 -> + case happyOut99 happy_x_3 of { happy_var_3 -> + happyIn101+ ([fp (AST.NN (AST.JSExpressionBinary "!=" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_205 = happySpecReduce_3 94# happyReduction_205+happyReduction_205 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut101 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_2 of { happy_var_2 -> + case happyOut99 happy_x_3 of { happy_var_3 -> + happyIn101+ ([fp (AST.NN (AST.JSExpressionBinary "===" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_206 = happySpecReduce_3 94# happyReduction_206+happyReduction_206 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut101 happy_x_1 of { happy_var_1 -> + case happyOut41 happy_x_2 of { happy_var_2 -> + case happyOut99 happy_x_3 of { happy_var_3 -> + happyIn101+ ([fp (AST.NN (AST.JSExpressionBinary "!==" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_207 = happySpecReduce_1 95# happyReduction_207+happyReduction_207 happy_x_1+ = case happyOut100 happy_x_1 of { happy_var_1 -> + happyIn102+ (happy_var_1 {- EqualityExpressionNoIn -}+ )}++happyReduce_208 = happySpecReduce_3 95# happyReduction_208+happyReduction_208 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut102 happy_x_1 of { happy_var_1 -> + case happyOut40 happy_x_2 of { happy_var_2 -> + case happyOut99 happy_x_3 of { happy_var_3 -> + happyIn102+ ([fp (AST.NN (AST.JSExpressionBinary "==" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_209 = happySpecReduce_3 95# happyReduction_209+happyReduction_209 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut102 happy_x_1 of { happy_var_1 -> + case happyOut42 happy_x_2 of { happy_var_2 -> + case happyOut99 happy_x_3 of { happy_var_3 -> + happyIn102+ ([fp (AST.NN (AST.JSExpressionBinary "!=" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_210 = happySpecReduce_3 95# happyReduction_210+happyReduction_210 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut102 happy_x_1 of { happy_var_1 -> + case happyOut39 happy_x_2 of { happy_var_2 -> + case happyOut99 happy_x_3 of { happy_var_3 -> + happyIn102+ ([fp (AST.NN (AST.JSExpressionBinary "===" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_211 = happySpecReduce_3 95# happyReduction_211+happyReduction_211 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut102 happy_x_1 of { happy_var_1 -> + case happyOut41 happy_x_2 of { happy_var_2 -> + case happyOut99 happy_x_3 of { happy_var_3 -> + happyIn102+ ([fp (AST.NN (AST.JSExpressionBinary "!==" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_212 = happySpecReduce_1 96# happyReduction_212+happyReduction_212 happy_x_1+ = case happyOut101 happy_x_1 of { happy_var_1 -> + happyIn103+ (happy_var_1 {- BitwiseAndExpression -}+ )}++happyReduce_213 = happySpecReduce_3 96# happyReduction_213+happyReduction_213 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut103 happy_x_1 of { happy_var_1 -> + case happyOut46 happy_x_2 of { happy_var_2 -> + case happyOut101 happy_x_3 of { happy_var_3 -> + happyIn103+ ([fp (AST.NN (AST.JSExpressionBinary "&" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_214 = happySpecReduce_1 97# happyReduction_214+happyReduction_214 happy_x_1+ = case happyOut102 happy_x_1 of { happy_var_1 -> + happyIn104+ (happy_var_1 {- BitwiseAndExpression -}+ )}++happyReduce_215 = happySpecReduce_3 97# happyReduction_215+happyReduction_215 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut104 happy_x_1 of { happy_var_1 -> + case happyOut46 happy_x_2 of { happy_var_2 -> + case happyOut102 happy_x_3 of { happy_var_3 -> + happyIn104+ ([fp (AST.NN (AST.JSExpressionBinary "&" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_216 = happySpecReduce_1 98# happyReduction_216+happyReduction_216 happy_x_1+ = case happyOut103 happy_x_1 of { happy_var_1 -> + happyIn105+ (happy_var_1 {- BitwiseXOrExpression -}+ )}++happyReduce_217 = happySpecReduce_3 98# happyReduction_217+happyReduction_217 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut105 happy_x_1 of { happy_var_1 -> + case happyOut47 happy_x_2 of { happy_var_2 -> + case happyOut103 happy_x_3 of { happy_var_3 -> + happyIn105+ ([fp (AST.NN (AST.JSExpressionBinary "^" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_218 = happySpecReduce_1 99# happyReduction_218+happyReduction_218 happy_x_1+ = case happyOut104 happy_x_1 of { happy_var_1 -> + happyIn106+ (happy_var_1 {- BitwiseXOrExpression -}+ )}++happyReduce_219 = happySpecReduce_3 99# happyReduction_219+happyReduction_219 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut106 happy_x_1 of { happy_var_1 -> + case happyOut47 happy_x_2 of { happy_var_2 -> + case happyOut104 happy_x_3 of { happy_var_3 -> + happyIn106+ ([fp (AST.NN (AST.JSExpressionBinary "^" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_220 = happySpecReduce_1 100# happyReduction_220+happyReduction_220 happy_x_1+ = case happyOut105 happy_x_1 of { happy_var_1 -> + happyIn107+ (happy_var_1 {- BitwiseOrExpression -}+ )}++happyReduce_221 = happySpecReduce_3 100# happyReduction_221+happyReduction_221 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut107 happy_x_1 of { happy_var_1 -> + case happyOut45 happy_x_2 of { happy_var_2 -> + case happyOut105 happy_x_3 of { happy_var_3 -> + happyIn107+ ([fp (AST.NN (AST.JSExpressionBinary "|" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_222 = happySpecReduce_1 101# happyReduction_222+happyReduction_222 happy_x_1+ = case happyOut106 happy_x_1 of { happy_var_1 -> + happyIn108+ (happy_var_1 {- BitwiseOrExpression -}+ )}++happyReduce_223 = happySpecReduce_3 101# happyReduction_223+happyReduction_223 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut108 happy_x_1 of { happy_var_1 -> + case happyOut45 happy_x_2 of { happy_var_2 -> + case happyOut106 happy_x_3 of { happy_var_3 -> + happyIn108+ ([fp (AST.NN (AST.JSExpressionBinary "|" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_224 = happySpecReduce_1 102# happyReduction_224+happyReduction_224 happy_x_1+ = case happyOut107 happy_x_1 of { happy_var_1 -> + happyIn109+ (happy_var_1 {- LogicalAndExpression -}+ )}++happyReduce_225 = happySpecReduce_3 102# happyReduction_225+happyReduction_225 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut109 happy_x_1 of { happy_var_1 -> + case happyOut44 happy_x_2 of { happy_var_2 -> + case happyOut107 happy_x_3 of { happy_var_3 -> + happyIn109+ ([fp (AST.NN (AST.JSExpressionBinary "&&" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_226 = happySpecReduce_1 103# happyReduction_226+happyReduction_226 happy_x_1+ = case happyOut108 happy_x_1 of { happy_var_1 -> + happyIn110+ (happy_var_1 {- LogicalAndExpression -}+ )}++happyReduce_227 = happySpecReduce_3 103# happyReduction_227+happyReduction_227 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut110 happy_x_1 of { happy_var_1 -> + case happyOut44 happy_x_2 of { happy_var_2 -> + case happyOut108 happy_x_3 of { happy_var_3 -> + happyIn110+ ([fp (AST.NN (AST.JSExpressionBinary "&&" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_228 = happySpecReduce_1 104# happyReduction_228+happyReduction_228 happy_x_1+ = case happyOut109 happy_x_1 of { happy_var_1 -> + happyIn111+ (happy_var_1 {- LogicalOrExpression -}+ )}++happyReduce_229 = happySpecReduce_3 104# happyReduction_229+happyReduction_229 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut111 happy_x_1 of { happy_var_1 -> + case happyOut43 happy_x_2 of { happy_var_2 -> + case happyOut109 happy_x_3 of { happy_var_3 -> + happyIn111+ ([fp (AST.NN (AST.JSExpressionBinary "||" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_230 = happySpecReduce_1 105# happyReduction_230+happyReduction_230 happy_x_1+ = case happyOut110 happy_x_1 of { happy_var_1 -> + happyIn112+ (happy_var_1 {- LogicalOrExpression -}+ )}++happyReduce_231 = happySpecReduce_3 105# happyReduction_231+happyReduction_231 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut112 happy_x_1 of { happy_var_1 -> + case happyOut43 happy_x_2 of { happy_var_2 -> + case happyOut110 happy_x_3 of { happy_var_3 -> + happyIn112+ ([fp (AST.NN (AST.JSExpressionBinary "||" happy_var_1 happy_var_2 happy_var_3))]+ )}}}++happyReduce_232 = happySpecReduce_1 106# happyReduction_232+happyReduction_232 happy_x_1+ = case happyOut111 happy_x_1 of { happy_var_1 -> + happyIn113+ (happy_var_1 {- ConditionalExpression -}+ )}++happyReduce_233 = happyReduce 5# 106# happyReduction_233+happyReduction_233 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut111 happy_x_1 of { happy_var_1 -> + case happyOut48 happy_x_2 of { happy_var_2 -> + case happyOut115 happy_x_3 of { happy_var_3 -> + case happyOut15 happy_x_4 of { happy_var_4 -> + case happyOut115 happy_x_5 of { happy_var_5 -> + happyIn113+ ([fp (AST.NN (AST.JSExpressionTernary happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5))]+ ) `HappyStk` happyRest}}}}}++happyReduce_234 = happySpecReduce_1 107# happyReduction_234+happyReduction_234 happy_x_1+ = case happyOut112 happy_x_1 of { happy_var_1 -> + happyIn114+ (happy_var_1 {- ConditionalExpression -}+ )}++happyReduce_235 = happyReduce 5# 107# happyReduction_235+happyReduction_235 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut112 happy_x_1 of { happy_var_1 -> + case happyOut48 happy_x_2 of { happy_var_2 -> + case happyOut116 happy_x_3 of { happy_var_3 -> + case happyOut15 happy_x_4 of { happy_var_4 -> + case happyOut116 happy_x_5 of { happy_var_5 -> + happyIn114+ ([fp (AST.NN (AST.JSExpressionTernary happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5))]+ ) `HappyStk` happyRest}}}}}++happyReduce_236 = happySpecReduce_1 108# happyReduction_236+happyReduction_236 happy_x_1+ = case happyOut113 happy_x_1 of { happy_var_1 -> + happyIn115+ (happy_var_1 {- AssignmentExpression -}+ )}++happyReduce_237 = happySpecReduce_3 108# happyReduction_237+happyReduction_237 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut93 happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_2 of { happy_var_2 -> + case happyOut115 happy_x_3 of { happy_var_3 -> + happyIn115+ ((happy_var_1++[happy_var_2]++happy_var_3)+ )}}}++happyReduce_238 = happySpecReduce_1 109# happyReduction_238+happyReduction_238 happy_x_1+ = case happyOut114 happy_x_1 of { happy_var_1 -> + happyIn116+ (happy_var_1 {- AssignmentExpression -}+ )}++happyReduce_239 = happySpecReduce_3 109# happyReduction_239+happyReduction_239 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut93 happy_x_1 of { happy_var_1 -> + case happyOut117 happy_x_2 of { happy_var_2 -> + case happyOut116 happy_x_3 of { happy_var_3 -> + happyIn116+ ((happy_var_1++[happy_var_2]++happy_var_3)+ )}}}++happyReduce_240 = happySpecReduce_1 110# happyReduction_240+happyReduction_240 happy_x_1+ = case happyOut50 happy_x_1 of { happy_var_1 -> + happyIn117+ (fp (AST.NN (AST.JSOperator happy_var_1))+ )}++happyReduce_241 = happySpecReduce_1 110# happyReduction_241+happyReduction_241 happy_x_1+ = case happyOut49 happy_x_1 of { happy_var_1 -> + happyIn117+ (fp (AST.NN (AST.JSOperator happy_var_1))+ )}++happyReduce_242 = happySpecReduce_1 111# happyReduction_242+happyReduction_242 happy_x_1+ = case happyOut115 happy_x_1 of { happy_var_1 -> + happyIn118+ (fp (AST.NN (AST.JSExpression happy_var_1)) {- Expression -}+ )}++happyReduce_243 = happySpecReduce_3 111# happyReduction_243+happyReduction_243 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut118 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + case happyOut115 happy_x_3 of { happy_var_3 -> + happyIn118+ (fp (AST.NN (AST.JSExpression (happy_var_1:[happy_var_2]++happy_var_3))) {- Expression2 -}+ )}}}++happyReduce_244 = happySpecReduce_1 112# happyReduction_244+happyReduction_244 happy_x_1+ = case happyOut116 happy_x_1 of { happy_var_1 -> + happyIn119+ (fp (AST.NN (AST.JSExpression happy_var_1)) {- ExpressionNoIn -}+ )}++happyReduce_245 = happySpecReduce_3 112# happyReduction_245+happyReduction_245 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut119 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + case happyOut116 happy_x_3 of { happy_var_3 -> + happyIn119+ (fp (AST.NN (AST.JSExpression (happy_var_1:[happy_var_2]++happy_var_3))) {- ExpressionNoIn2 -}+ )}}}++happyReduce_246 = happySpecReduce_1 113# happyReduction_246+happyReduction_246 happy_x_1+ = case happyOut118 happy_x_1 of { happy_var_1 -> + happyIn120+ ([happy_var_1] {- ExpressionOpt -}+ )}++happyReduce_247 = happySpecReduce_0 113# happyReduction_247+happyReduction_247 = happyIn120+ ([] {- ExpressionOpt -}+ )++happyReduce_248 = happySpecReduce_1 114# happyReduction_248+happyReduction_248 happy_x_1+ = case happyOut119 happy_x_1 of { happy_var_1 -> + happyIn121+ ([happy_var_1] {- ExpressionOpt -}+ )}++happyReduce_249 = happySpecReduce_0 114# happyReduction_249+happyReduction_249 = happyIn121+ ([] {- ExpressionOpt -}+ )++happyReduce_250 = happySpecReduce_1 115# happyReduction_250+happyReduction_250 happy_x_1+ = case happyOut123 happy_x_1 of { happy_var_1 -> + happyIn122+ (happy_var_1 {- Statement1 -}+ )}++happyReduce_251 = happySpecReduce_1 115# happyReduction_251+happyReduction_251 happy_x_1+ = case happyOut134 happy_x_1 of { happy_var_1 -> + happyIn122+ (happy_var_1 {- Statement3 -}+ )}++happyReduce_252 = happySpecReduce_1 116# happyReduction_252+happyReduction_252 happy_x_1+ = case happyOut124 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty1 -}+ )}++happyReduce_253 = happySpecReduce_1 116# happyReduction_253+happyReduction_253 happy_x_1+ = case happyOut127 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty2 -}+ )}++happyReduce_254 = happySpecReduce_1 116# happyReduction_254+happyReduction_254 happy_x_1+ = case happyOut135 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty4 -}+ )}++happyReduce_255 = happySpecReduce_1 116# happyReduction_255+happyReduction_255 happy_x_1+ = case happyOut136 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty5 -}+ )}++happyReduce_256 = happySpecReduce_1 116# happyReduction_256+happyReduction_256 happy_x_1+ = case happyOut139 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty6 -}+ )}++happyReduce_257 = happySpecReduce_1 116# happyReduction_257+happyReduction_257 happy_x_1+ = case happyOut140 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty7 -}+ )}++happyReduce_258 = happySpecReduce_1 116# happyReduction_258+happyReduction_258 happy_x_1+ = case happyOut141 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty8 -}+ )}++happyReduce_259 = happySpecReduce_1 116# happyReduction_259+happyReduction_259 happy_x_1+ = case happyOut142 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty9 -}+ )}++happyReduce_260 = happySpecReduce_1 116# happyReduction_260+happyReduction_260 happy_x_1+ = case happyOut143 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty10 -}+ )}++happyReduce_261 = happySpecReduce_1 116# happyReduction_261+happyReduction_261 happy_x_1+ = case happyOut149 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty11 -}+ )}++happyReduce_262 = happySpecReduce_1 116# happyReduction_262+happyReduction_262 happy_x_1+ = case happyOut144 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty12 -}+ )}++happyReduce_263 = happySpecReduce_1 116# happyReduction_263+happyReduction_263 happy_x_1+ = case happyOut150 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty13 -}+ )}++happyReduce_264 = happySpecReduce_1 116# happyReduction_264+happyReduction_264 happy_x_1+ = case happyOut151 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty14 -}+ )}++happyReduce_265 = happySpecReduce_1 116# happyReduction_265+happyReduction_265 happy_x_1+ = case happyOut155 happy_x_1 of { happy_var_1 -> + happyIn123+ (happy_var_1 {- StatementNoEmpty15 -}+ )}++happyReduce_266 = happySpecReduce_2 117# happyReduction_266+happyReduction_266 happy_x_2+ happy_x_1+ = case happyOut10 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + happyIn124+ (fp (AST.NN (AST.JSStatementBlock happy_var_1 (AST.NN (AST.JSStatementList [])) happy_var_2))+ )}}++happyReduce_267 = happySpecReduce_3 117# happyReduction_267+happyReduction_267 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut10 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_3 of { happy_var_3 -> + happyIn124+ (fp (AST.NN (AST.JSStatementBlock happy_var_1 happy_var_2 happy_var_3))+ )}}}++happyReduce_268 = happySpecReduce_2 118# happyReduction_268+happyReduction_268 happy_x_2+ happy_x_1+ = case happyOut10 happy_x_1 of { happy_var_1 -> + case happyOut11 happy_x_2 of { happy_var_2 -> + happyIn125+ (fp (AST.NN (AST.JSBlock [happy_var_1] (AST.NN (AST.JSStatementList [])) [happy_var_2]))+ )}}++happyReduce_269 = happySpecReduce_3 118# happyReduction_269+happyReduction_269 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut10 happy_x_1 of { happy_var_1 -> + case happyOut126 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_3 of { happy_var_3 -> + happyIn125+ (fp (AST.NN (AST.JSBlock [happy_var_1] happy_var_2 [happy_var_3]))+ )}}}++happyReduce_270 = happySpecReduce_1 119# happyReduction_270+happyReduction_270 happy_x_1+ = case happyOut122 happy_x_1 of { happy_var_1 -> + happyIn126+ (fp (AST.NN (AST.JSStatementList [happy_var_1]))+ )}++happyReduce_271 = happySpecReduce_2 119# happyReduction_271+happyReduction_271 happy_x_2+ happy_x_1+ = case happyOut126 happy_x_1 of { happy_var_1 -> + case happyOut122 happy_x_2 of { happy_var_2 -> + happyIn126+ ((combineStatements happy_var_1 happy_var_2)+ )}}++happyReduce_272 = happySpecReduce_3 120# happyReduction_272+happyReduction_272 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut51 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + case happyOut7 happy_x_3 of { happy_var_3 -> + happyIn127+ (fp (AST.NN (AST.JSVariables happy_var_1 happy_var_2 happy_var_3))+ )}}}++happyReduce_273 = happySpecReduce_3 120# happyReduction_273+happyReduction_273 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut52 happy_x_1 of { happy_var_1 -> + case happyOut128 happy_x_2 of { happy_var_2 -> + case happyOut7 happy_x_3 of { happy_var_3 -> + happyIn127+ (fp (AST.NN (AST.JSVariables happy_var_1 happy_var_2 happy_var_3))+ )}}}++happyReduce_274 = happySpecReduce_1 121# happyReduction_274+happyReduction_274 happy_x_1+ = case happyOut130 happy_x_1 of { happy_var_1 -> + happyIn128+ ([happy_var_1] {- VariableDeclarationList -}+ )}++happyReduce_275 = happySpecReduce_3 121# happyReduction_275+happyReduction_275 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut128 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + case happyOut130 happy_x_3 of { happy_var_3 -> + happyIn128+ ((happy_var_1++[happy_var_2]++[happy_var_3]) {- VariableDeclarationList -}+ )}}}++happyReduce_276 = happySpecReduce_1 122# happyReduction_276+happyReduction_276 happy_x_1+ = case happyOut131 happy_x_1 of { happy_var_1 -> + happyIn129+ ([happy_var_1] {- VariableDeclarationList -}+ )}++happyReduce_277 = happySpecReduce_3 122# happyReduction_277+happyReduction_277 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut129 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + case happyOut131 happy_x_3 of { happy_var_3 -> + happyIn129+ ((happy_var_1++[happy_var_2]++[happy_var_3]) {- VariableDeclarationListNoIn -}+ )}}}++happyReduce_278 = happySpecReduce_1 123# happyReduction_278+happyReduction_278 happy_x_1+ = case happyOut78 happy_x_1 of { happy_var_1 -> + happyIn130+ (fp (AST.NN (AST.JSVarDecl happy_var_1 []))+ )}++happyReduce_279 = happySpecReduce_2 123# happyReduction_279+happyReduction_279 happy_x_2+ happy_x_1+ = case happyOut78 happy_x_1 of { happy_var_1 -> + case happyOut132 happy_x_2 of { happy_var_2 -> + happyIn130+ (fp (AST.NN (AST.JSVarDecl happy_var_1 happy_var_2))+ )}}++happyReduce_280 = happySpecReduce_2 124# happyReduction_280+happyReduction_280 happy_x_2+ happy_x_1+ = case happyOut78 happy_x_1 of { happy_var_1 -> + case happyOut133 happy_x_2 of { happy_var_2 -> + happyIn131+ (fp (AST.NN (AST.JSVarDecl happy_var_1 happy_var_2))+ )}}++happyReduce_281 = happySpecReduce_1 124# happyReduction_281+happyReduction_281 happy_x_1+ = case happyOut78 happy_x_1 of { happy_var_1 -> + happyIn131+ (fp (AST.NN (AST.JSVarDecl happy_var_1 []))+ )}++happyReduce_282 = happySpecReduce_2 125# happyReduction_282+happyReduction_282 happy_x_2+ happy_x_1+ = case happyOut49 happy_x_1 of { happy_var_1 -> + case happyOut115 happy_x_2 of { happy_var_2 -> + happyIn132+ (happy_var_1:happy_var_2 {- Initializer -}+ )}}++happyReduce_283 = happySpecReduce_2 126# happyReduction_283+happyReduction_283 happy_x_2+ happy_x_1+ = case happyOut49 happy_x_1 of { happy_var_1 -> + case happyOut116 happy_x_2 of { happy_var_2 -> + happyIn133+ (happy_var_1:happy_var_2 {- InitializerNoIn -}+ )}}++happyReduce_284 = happySpecReduce_1 127# happyReduction_284+happyReduction_284 happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + happyIn134+ (happy_var_1+ )}++happyReduce_285 = happySpecReduce_1 128# happyReduction_285+happyReduction_285 happy_x_1+ = case happyOut118 happy_x_1 of { happy_var_1 -> + happyIn135+ (happy_var_1 {- ExpressionStatement -}+ )}++happyReduce_286 = happyReduce 6# 129# happyReduction_286+happyReduction_286 (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 happyOut53 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + case happyOut118 happy_x_3 of { happy_var_3 -> + case happyOut9 happy_x_4 of { happy_var_4 -> + case happyOut138 happy_x_5 of { happy_var_5 -> + case happyOut137 happy_x_6 of { happy_var_6 -> + happyIn136+ ((if (happy_var_6 /= []) then+ (if (length happy_var_6 == 1)+ then+ (fp (AST.NN (AST.JSIf happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6) ))+ else+ (fp (AST.NN+ (AST.JSIf+ happy_var_1 happy_var_2+ happy_var_3+ happy_var_4+ (fp (AST.NN+ (AST.JSBlock [] (AST.NN (AST.JSStatementList [happy_var_5])) [] )+ ))+ happy_var_6+ )++ ))+ )+ else (fp (AST.NN (AST.JSIf happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 []) )) )+ ) `HappyStk` happyRest}}}}}}++happyReduce_287 = happySpecReduce_2 130# happyReduction_287+happyReduction_287 happy_x_2+ happy_x_1+ = case happyOut54 happy_x_1 of { happy_var_1 -> + case happyOut122 happy_x_2 of { happy_var_2 -> + happyIn137+ ([happy_var_1,happy_var_2]+ )}}++happyReduce_288 = happySpecReduce_0 130# happyReduction_288+happyReduction_288 = happyIn137+ ([]+ )++happyReduce_289 = happySpecReduce_2 131# happyReduction_289+happyReduction_289 happy_x_2+ happy_x_1+ = case happyOut123 happy_x_1 of { happy_var_1 -> + case happyOut16 happy_x_2 of { happy_var_2 -> + happyIn138+ (fp (AST.NN (AST.JSBlock [] (AST.NN (AST.JSStatementList [happy_var_1,happy_var_2])) []))+ )}}++happyReduce_290 = happySpecReduce_1 131# happyReduction_290+happyReduction_290 happy_x_1+ = case happyOut123 happy_x_1 of { happy_var_1 -> + happyIn138+ (happy_var_1 {- StatementSemi -}+ )}++happyReduce_291 = happySpecReduce_1 131# happyReduction_291+happyReduction_291 happy_x_1+ = case happyOut16 happy_x_1 of { happy_var_1 -> + happyIn138+ (happy_var_1+ )}++happyReduce_292 = happyReduce 7# 132# happyReduction_292+happyReduction_292 (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 happyOut55 happy_x_1 of { happy_var_1 -> + case happyOut122 happy_x_2 of { happy_var_2 -> + case happyOut56 happy_x_3 of { happy_var_3 -> + case happyOut8 happy_x_4 of { happy_var_4 -> + case happyOut118 happy_x_5 of { happy_var_5 -> + case happyOut9 happy_x_6 of { happy_var_6 -> + case happyOut7 happy_x_7 of { happy_var_7 -> + happyIn139+ (fp (AST.NN (AST.JSDoWhile happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7))+ ) `HappyStk` happyRest}}}}}}}++happyReduce_293 = happyReduce 5# 132# happyReduction_293+happyReduction_293 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut56 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + case happyOut118 happy_x_3 of { happy_var_3 -> + case happyOut9 happy_x_4 of { happy_var_4 -> + case happyOut122 happy_x_5 of { happy_var_5 -> + happyIn139+ (fp (AST.NN (AST.JSWhile happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5))+ ) `HappyStk` happyRest}}}}}++happyReduce_294 = happyReduce 9# 132# happyReduction_294+happyReduction_294 (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 happyOut57 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + case happyOut121 happy_x_3 of { happy_var_3 -> + case happyOut16 happy_x_4 of { happy_var_4 -> + case happyOut120 happy_x_5 of { happy_var_5 -> + case happyOut16 happy_x_6 of { happy_var_6 -> + case happyOut120 happy_x_7 of { happy_var_7 -> + case happyOut9 happy_x_8 of { happy_var_8 -> + case happyOut122 happy_x_9 of { happy_var_9 -> + happyIn139+ (fp (AST.NN (AST.JSFor happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8 happy_var_9))+ ) `HappyStk` happyRest}}}}}}}}}++happyReduce_295 = happyReduce 10# 132# happyReduction_295+happyReduction_295 (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 happyOut57 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + case happyOut51 happy_x_3 of { happy_var_3 -> + case happyOut129 happy_x_4 of { happy_var_4 -> + case happyOut16 happy_x_5 of { happy_var_5 -> + case happyOut120 happy_x_6 of { happy_var_6 -> + case happyOut16 happy_x_7 of { happy_var_7 -> + case happyOut120 happy_x_8 of { happy_var_8 -> + case happyOut9 happy_x_9 of { happy_var_9 -> + case happyOut122 happy_x_10 of { happy_var_10 -> + happyIn139+ (fp (AST.NN (AST.JSForVar happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8 happy_var_9 happy_var_10))+ ) `HappyStk` happyRest}}}}}}}}}}++happyReduce_296 = happyReduce 7# 132# happyReduction_296+happyReduction_296 (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 happyOut57 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + case happyOut93 happy_x_3 of { happy_var_3 -> + case happyOut37 happy_x_4 of { happy_var_4 -> + case happyOut118 happy_x_5 of { happy_var_5 -> + case happyOut9 happy_x_6 of { happy_var_6 -> + case happyOut122 happy_x_7 of { happy_var_7 -> + happyIn139+ (fp (AST.NN (AST.JSForIn happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7))+ ) `HappyStk` happyRest}}}}}}}++happyReduce_297 = happyReduce 8# 132# happyReduction_297+happyReduction_297 (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 happyOut57 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + case happyOut51 happy_x_3 of { happy_var_3 -> + case happyOut131 happy_x_4 of { happy_var_4 -> + case happyOut37 happy_x_5 of { happy_var_5 -> + case happyOut118 happy_x_6 of { happy_var_6 -> + case happyOut9 happy_x_7 of { happy_var_7 -> + case happyOut122 happy_x_8 of { happy_var_8 -> + happyIn139+ (fp (AST.NN (AST.JSForVarIn happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8))+ ) `HappyStk` happyRest}}}}}}}}++happyReduce_298 = happySpecReduce_2 133# happyReduction_298+happyReduction_298 happy_x_2+ happy_x_1+ = case happyOut58 happy_x_1 of { happy_var_1 -> + case happyOut7 happy_x_2 of { happy_var_2 -> + happyIn140+ (fp (AST.NN (AST.JSContinue happy_var_1 [] happy_var_2))+ )}}++happyReduce_299 = happySpecReduce_3 133# happyReduction_299+happyReduction_299 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut58 happy_x_1 of { happy_var_1 -> + case happyOut78 happy_x_2 of { happy_var_2 -> + case happyOut7 happy_x_3 of { happy_var_3 -> + happyIn140+ (fp (AST.NN (AST.JSContinue happy_var_1 [happy_var_2] happy_var_3))+ )}}}++happyReduce_300 = happySpecReduce_2 134# happyReduction_300+happyReduction_300 happy_x_2+ happy_x_1+ = case happyOut59 happy_x_1 of { happy_var_1 -> + case happyOut7 happy_x_2 of { happy_var_2 -> + happyIn141+ (fp (AST.NN (AST.JSBreak happy_var_1 [] happy_var_2))+ )}}++happyReduce_301 = happySpecReduce_3 134# happyReduction_301+happyReduction_301 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut59 happy_x_1 of { happy_var_1 -> + case happyOut78 happy_x_2 of { happy_var_2 -> + case happyOut7 happy_x_3 of { happy_var_3 -> + happyIn141+ (fp (AST.NN (AST.JSBreak happy_var_1 [happy_var_2] happy_var_3))+ )}}}++happyReduce_302 = happySpecReduce_2 135# happyReduction_302+happyReduction_302 happy_x_2+ happy_x_1+ = case happyOut60 happy_x_1 of { happy_var_1 -> + case happyOut7 happy_x_2 of { happy_var_2 -> + happyIn142+ (fp (AST.NN (AST.JSReturn happy_var_1 [] happy_var_2))+ )}}++happyReduce_303 = happySpecReduce_3 135# happyReduction_303+happyReduction_303 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut60 happy_x_1 of { happy_var_1 -> + case happyOut118 happy_x_2 of { happy_var_2 -> + case happyOut7 happy_x_3 of { happy_var_3 -> + happyIn142+ (fp (AST.NN (AST.JSReturn happy_var_1 [happy_var_2] happy_var_3))+ )}}}++happyReduce_304 = happyReduce 6# 136# happyReduction_304+happyReduction_304 (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 happyOut61 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + case happyOut118 happy_x_3 of { happy_var_3 -> + case happyOut9 happy_x_4 of { happy_var_4 -> + case happyOut122 happy_x_5 of { happy_var_5 -> + case happyOut7 happy_x_6 of { happy_var_6 -> + happyIn143+ (fp (AST.NN (AST.JSWith happy_var_1 happy_var_2 happy_var_3 happy_var_4 [happy_var_5,happy_var_6]))+ ) `HappyStk` happyRest}}}}}}++happyReduce_305 = happyReduce 5# 137# happyReduction_305+happyReduction_305 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut62 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + case happyOut118 happy_x_3 of { happy_var_3 -> + case happyOut9 happy_x_4 of { happy_var_4 -> + case happyOut145 happy_x_5 of { happy_var_5 -> + happyIn144+ ((AST.NN (AST.JSSwitch happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5))+ ) `HappyStk` happyRest}}}}}++happyReduce_306 = happySpecReduce_3 138# happyReduction_306+happyReduction_306 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut10 happy_x_1 of { happy_var_1 -> + case happyOut146 happy_x_2 of { happy_var_2 -> + case happyOut11 happy_x_3 of { happy_var_3 -> + happyIn145+ ((happy_var_1:happy_var_2)++[happy_var_3] {- CaseBlock1 -}+ )}}}++happyReduce_307 = happyReduce 5# 138# happyReduction_307+happyReduction_307 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut10 happy_x_1 of { happy_var_1 -> + case happyOut146 happy_x_2 of { happy_var_2 -> + case happyOut148 happy_x_3 of { happy_var_3 -> + case happyOut146 happy_x_4 of { happy_var_4 -> + case happyOut11 happy_x_5 of { happy_var_5 -> + happyIn145+ ((happy_var_1:happy_var_2)++[happy_var_3]++happy_var_4++[happy_var_5] {- CaseBlock2 -}+ ) `HappyStk` happyRest}}}}}++happyReduce_308 = happySpecReduce_1 139# happyReduction_308+happyReduction_308 happy_x_1+ = case happyOut147 happy_x_1 of { happy_var_1 -> + happyIn146+ ([happy_var_1] {- CaseClauses1 -}+ )}++happyReduce_309 = happySpecReduce_2 139# happyReduction_309+happyReduction_309 happy_x_2+ happy_x_1+ = case happyOut146 happy_x_1 of { happy_var_1 -> + case happyOut147 happy_x_2 of { happy_var_2 -> + happyIn146+ ((happy_var_1++[happy_var_2]) {- CaseClauses2 -}+ )}}++happyReduce_310 = happySpecReduce_0 139# happyReduction_310+happyReduction_310 = happyIn146+ ([fp (AST.NT (AST.JSLiteral "") tokenPosnEmpty []) ]+ )++happyReduce_311 = happyReduce 4# 140# happyReduction_311+happyReduction_311 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut63 happy_x_1 of { happy_var_1 -> + case happyOut118 happy_x_2 of { happy_var_2 -> + case happyOut15 happy_x_3 of { happy_var_3 -> + case happyOut126 happy_x_4 of { happy_var_4 -> + happyIn147+ (fp (AST.NN (AST.JSCase happy_var_1 happy_var_2 happy_var_3 happy_var_4))+ ) `HappyStk` happyRest}}}}++happyReduce_312 = happySpecReduce_3 140# happyReduction_312+happyReduction_312 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut63 happy_x_1 of { happy_var_1 -> + case happyOut118 happy_x_2 of { happy_var_2 -> + case happyOut15 happy_x_3 of { happy_var_3 -> + happyIn147+ (fp (AST.NN (AST.JSCase happy_var_1 happy_var_2 happy_var_3 (AST.NN (AST.JSStatementList []))))+ )}}}++happyReduce_313 = happySpecReduce_2 141# happyReduction_313+happyReduction_313 happy_x_2+ happy_x_1+ = case happyOut64 happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_2 of { happy_var_2 -> + happyIn148+ (fp (AST.NN (AST.JSDefault happy_var_1 happy_var_2 (AST.NN (AST.JSStatementList []))))+ )}}++happyReduce_314 = happySpecReduce_3 141# happyReduction_314+happyReduction_314 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut64 happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_2 of { happy_var_2 -> + case happyOut126 happy_x_3 of { happy_var_3 -> + happyIn148+ (fp (AST.NN (AST.JSDefault happy_var_1 happy_var_2 happy_var_3))+ )}}}++happyReduce_315 = happySpecReduce_3 142# happyReduction_315+happyReduction_315 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut78 happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_2 of { happy_var_2 -> + case happyOut122 happy_x_3 of { happy_var_3 -> + happyIn149+ (fp (AST.NN (AST.JSLabelled happy_var_1 happy_var_2 happy_var_3))+ )}}}++happyReduce_316 = happySpecReduce_2 143# happyReduction_316+happyReduction_316 happy_x_2+ happy_x_1+ = case happyOut65 happy_x_1 of { happy_var_1 -> + case happyOut118 happy_x_2 of { happy_var_2 -> + happyIn150+ (fp (AST.NN (AST.JSThrow happy_var_1 happy_var_2))+ )}}++happyReduce_317 = happySpecReduce_3 144# happyReduction_317+happyReduction_317 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut66 happy_x_1 of { happy_var_1 -> + case happyOut125 happy_x_2 of { happy_var_2 -> + case happyOut152 happy_x_3 of { happy_var_3 -> + happyIn151+ (fp (AST.NN (AST.JSTry happy_var_1 happy_var_2 happy_var_3) ) {- TryStatement1 -}+ )}}}++happyReduce_318 = happySpecReduce_3 144# happyReduction_318+happyReduction_318 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut66 happy_x_1 of { happy_var_1 -> + case happyOut125 happy_x_2 of { happy_var_2 -> + case happyOut154 happy_x_3 of { happy_var_3 -> + happyIn151+ (fp (AST.NN (AST.JSTry happy_var_1 happy_var_2 [happy_var_3]) ) {- TryStatement2 -}+ )}}}++happyReduce_319 = happyReduce 4# 144# happyReduction_319+happyReduction_319 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut66 happy_x_1 of { happy_var_1 -> + case happyOut125 happy_x_2 of { happy_var_2 -> + case happyOut152 happy_x_3 of { happy_var_3 -> + case happyOut154 happy_x_4 of { happy_var_4 -> + happyIn151+ (fp (AST.NN (AST.JSTry happy_var_1 happy_var_2 (happy_var_3++[happy_var_4])) ) {- TryStatement3 -}+ ) `HappyStk` happyRest}}}}++happyReduce_320 = happySpecReduce_1 145# happyReduction_320+happyReduction_320 happy_x_1+ = case happyOut153 happy_x_1 of { happy_var_1 -> + happyIn152+ ([happy_var_1] {- Catches 1 -}+ )}++happyReduce_321 = happySpecReduce_2 145# happyReduction_321+happyReduction_321 happy_x_2+ happy_x_1+ = case happyOut152 happy_x_1 of { happy_var_1 -> + case happyOut153 happy_x_2 of { happy_var_2 -> + happyIn152+ ((happy_var_1++[happy_var_2]) {- Catches 2 -}+ )}}++happyReduce_322 = happyReduce 5# 146# happyReduction_322+happyReduction_322 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut67 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + case happyOut78 happy_x_3 of { happy_var_3 -> + case happyOut9 happy_x_4 of { happy_var_4 -> + case happyOut125 happy_x_5 of { happy_var_5 -> + happyIn153+ (fp (AST.NN (AST.JSCatch happy_var_1 happy_var_2 happy_var_3 [] happy_var_4 happy_var_5) )+ ) `HappyStk` happyRest}}}}}++happyReduce_323 = happyReduce 7# 146# happyReduction_323+happyReduction_323 (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 happyOut67 happy_x_1 of { happy_var_1 -> + case happyOut8 happy_x_2 of { happy_var_2 -> + case happyOut78 happy_x_3 of { happy_var_3 -> + case happyOut53 happy_x_4 of { happy_var_4 -> + case happyOut113 happy_x_5 of { happy_var_5 -> + case happyOut9 happy_x_6 of { happy_var_6 -> + case happyOut125 happy_x_7 of { happy_var_7 -> + happyIn153+ (fp (AST.NN (AST.JSCatch happy_var_1 happy_var_2 happy_var_3 (happy_var_4:happy_var_5) happy_var_6 happy_var_7))+ ) `HappyStk` happyRest}}}}}}}++happyReduce_324 = happySpecReduce_2 147# happyReduction_324+happyReduction_324 happy_x_2+ happy_x_1+ = case happyOut68 happy_x_1 of { happy_var_1 -> + case happyOut125 happy_x_2 of { happy_var_2 -> + happyIn154+ (fp (AST.NN (AST.JSFinally happy_var_1 happy_var_2))+ )}}++happyReduce_325 = happySpecReduce_2 148# happyReduction_325+happyReduction_325 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn155+ (fp (AST.NT (AST.JSLiteral "debugger") (ss happy_var_1) (gc happy_var_1))+ )}++happyReduce_326 = happyReduce 8# 149# happyReduction_326+happyReduction_326 (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 happyOut69 happy_x_1 of { happy_var_1 -> + case happyOut78 happy_x_2 of { happy_var_2 -> + case happyOut8 happy_x_3 of { happy_var_3 -> + case happyOut159 happy_x_4 of { happy_var_4 -> + case happyOut9 happy_x_5 of { happy_var_5 -> + case happyOut10 happy_x_6 of { happy_var_6 -> + case happyOut160 happy_x_7 of { happy_var_7 -> + case happyOut11 happy_x_8 of { happy_var_8 -> + happyIn156+ (fp (AST.NN (AST.JSFunction happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8) )+ ) `HappyStk` happyRest}}}}}}}}++happyReduce_327 = happyReduce 7# 149# happyReduction_327+happyReduction_327 (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 happyOut69 happy_x_1 of { happy_var_1 -> + case happyOut78 happy_x_2 of { happy_var_2 -> + case happyOut8 happy_x_3 of { happy_var_3 -> + case happyOut9 happy_x_4 of { happy_var_4 -> + case happyOut10 happy_x_5 of { happy_var_5 -> + case happyOut160 happy_x_6 of { happy_var_6 -> + case happyOut11 happy_x_7 of { happy_var_7 -> + happyIn156+ (fp (AST.NN (AST.JSFunction happy_var_1 happy_var_2 happy_var_3 [] happy_var_4 happy_var_5 happy_var_6 happy_var_7) )+ ) `HappyStk` happyRest}}}}}}}++happyReduce_328 = happyReduce 7# 150# happyReduction_328+happyReduction_328 (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 happyOut69 happy_x_1 of { happy_var_1 -> + case happyOut158 happy_x_2 of { happy_var_2 -> + case happyOut8 happy_x_3 of { happy_var_3 -> + case happyOut9 happy_x_4 of { happy_var_4 -> + case happyOut10 happy_x_5 of { happy_var_5 -> + case happyOut160 happy_x_6 of { happy_var_6 -> + case happyOut11 happy_x_7 of { happy_var_7 -> + happyIn157+ (fp (AST.NN (AST.JSFunctionExpression happy_var_1 happy_var_2 happy_var_3 [] happy_var_4 happy_var_5 happy_var_6 happy_var_7) )+ ) `HappyStk` happyRest}}}}}}}++happyReduce_329 = happyReduce 8# 150# happyReduction_329+happyReduction_329 (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 happyOut69 happy_x_1 of { happy_var_1 -> + case happyOut158 happy_x_2 of { happy_var_2 -> + case happyOut8 happy_x_3 of { happy_var_3 -> + case happyOut159 happy_x_4 of { happy_var_4 -> + case happyOut9 happy_x_5 of { happy_var_5 -> + case happyOut10 happy_x_6 of { happy_var_6 -> + case happyOut160 happy_x_7 of { happy_var_7 -> + case happyOut11 happy_x_8 of { happy_var_8 -> + happyIn157+ (fp (AST.NN (AST.JSFunctionExpression happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8) )+ ) `HappyStk` happyRest}}}}}}}}++happyReduce_330 = happySpecReduce_1 151# happyReduction_330+happyReduction_330 happy_x_1+ = case happyOut78 happy_x_1 of { happy_var_1 -> + happyIn158+ ([happy_var_1] {- IdentifierOpt -}+ )}++happyReduce_331 = happySpecReduce_0 151# happyReduction_331+happyReduction_331 = happyIn158+ ([] {- IdentifierOpt -}+ )++happyReduce_332 = happySpecReduce_1 152# happyReduction_332+happyReduction_332 happy_x_1+ = case happyOut78 happy_x_1 of { happy_var_1 -> + happyIn159+ ([happy_var_1] {- FormalParameterList -}+ )}++happyReduce_333 = happySpecReduce_3 152# happyReduction_333+happyReduction_333 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut159 happy_x_1 of { happy_var_1 -> + case happyOut14 happy_x_2 of { happy_var_2 -> + case happyOut78 happy_x_3 of { happy_var_3 -> + happyIn159+ ((happy_var_1++[happy_var_2]++[happy_var_3])+ )}}}++happyReduce_334 = happySpecReduce_1 153# happyReduction_334+happyReduction_334 happy_x_1+ = case happyOut165 happy_x_1 of { happy_var_1 -> + happyIn160+ ((AST.NN (AST.JSFunctionBody [happy_var_1]) )+ )}++happyReduce_335 = happySpecReduce_0 153# happyReduction_335+happyReduction_335 = happyIn160+ ((AST.NN (AST.JSFunctionBody [] ) )+ )++happyReduce_336 = happySpecReduce_2 154# happyReduction_336+happyReduction_336 happy_x_2+ happy_x_1+ = case happyOut166 happy_x_1 of { happy_var_1 -> + case happyOut70 happy_x_2 of { happy_var_2 -> + happyIn161+ ((combineTop happy_var_1 happy_var_2) {- Program -}+ )}}++happyReduce_337 = happySpecReduce_2 155# happyReduction_337+happyReduction_337 happy_x_2+ happy_x_1+ = case happyOut71 happy_x_1 of { happy_var_1 -> + happyIn162+ (happy_var_1+ )}++happyReduce_338 = happySpecReduce_2 156# happyReduction_338+happyReduction_338 happy_x_2+ happy_x_1+ = case happyOut77 happy_x_1 of { happy_var_1 -> + happyIn163+ (happy_var_1+ )}++happyReduce_339 = happySpecReduce_2 157# happyReduction_339+happyReduction_339 happy_x_2+ happy_x_1+ = case happyOut122 happy_x_1 of { happy_var_1 -> + happyIn164+ (happy_var_1+ )}++happyReduce_340 = happySpecReduce_1 158# happyReduction_340+happyReduction_340 happy_x_1+ = case happyOut167 happy_x_1 of { happy_var_1 -> + happyIn165+ (fp (AST.NN (AST.JSSourceElements [happy_var_1]) )+ )}++happyReduce_341 = happySpecReduce_2 158# happyReduction_341+happyReduction_341 happy_x_2+ happy_x_1+ = case happyOut165 happy_x_1 of { happy_var_1 -> + case happyOut167 happy_x_2 of { happy_var_2 -> + happyIn165+ ((combineSourceElements happy_var_1 happy_var_2)+ )}}++happyReduce_342 = happySpecReduce_1 159# happyReduction_342+happyReduction_342 happy_x_1+ = case happyOut167 happy_x_1 of { happy_var_1 -> + happyIn166+ (fp (AST.NN (AST.JSSourceElementsTop [happy_var_1]) )+ )}++happyReduce_343 = happySpecReduce_2 159# happyReduction_343+happyReduction_343 happy_x_2+ happy_x_1+ = case happyOut166 happy_x_1 of { happy_var_1 -> + case happyOut167 happy_x_2 of { happy_var_2 -> + happyIn166+ ((combineSourceElementsTop happy_var_1 happy_var_2)+ )}}++happyReduce_344 = happySpecReduce_1 160# happyReduction_344+happyReduction_344 happy_x_1+ = case happyOut122 happy_x_1 of { happy_var_1 -> + happyIn167+ (happy_var_1 {- SourceElement1 -}+ )}++happyReduce_345 = happySpecReduce_1 160# happyReduction_345+happyReduction_345 happy_x_1+ = case happyOut156 happy_x_1 of { happy_var_1 -> + happyIn167+ (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 81# 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#;+ GetToken {} -> cont 54#;+ IfToken {} -> cont 55#;+ InToken {} -> cont 56#;+ InstanceofToken {} -> cont 57#;+ NewToken {} -> cont 58#;+ NullToken {} -> cont 59#;+ ReturnToken {} -> cont 60#;+ SetToken {} -> cont 61#;+ SwitchToken {} -> cont 62#;+ ThisToken {} -> cont 63#;+ ThrowToken {} -> cont 64#;+ TrueToken {} -> cont 65#;+ TryToken {} -> cont 66#;+ TypeofToken {} -> cont 67#;+ VarToken {} -> cont 68#;+ VoidToken {} -> cont 69#;+ WhileToken {} -> cont 70#;+ WithToken {} -> cont 71#;+ IdentifierToken {} -> cont 72#;+ DecimalToken {} -> cont 73#;+ HexIntegerToken {} -> cont 74#;+ StringToken {} -> cont 75#;+ RegExToken {} -> cont 76#;+ AssignToken {} -> cont 77#;+ FutureToken {} -> cont 78#;+ TailToken {} -> cont 79#;+ EOFToken {} -> cont 80#;+ _ -> happyError' tk+ })++happyError_ 81# tk = happyError' tk+happyError_ _ tk = happyError' tk++happyThen :: () => Alex a -> (a -> Alex b) -> Alex b+happyThen = (>>=)+happyReturn :: () => a -> Alex a+happyReturn = (return)+happyThen1 = happyThen+happyReturn1 :: () => a -> Alex a+happyReturn1 = happyReturn+happyError' :: () => (Token) -> Alex a+happyError' tk = parseError tk++parseProgram = happySomeParser where+ happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut161 x))++parseLiteral = happySomeParser where+ happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut162 x))++parsePrimaryExpression = happySomeParser where+ happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut163 x))++parseStatement = happySomeParser where+ happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut164 x))++happySeq = happyDontSeq+++combineSourceElements :: AST.JSNode -> AST.JSNode -> AST.JSNode+combineSourceElements (AST.NN (AST.JSSourceElements xs)) x1 = fp (AST.NN (AST.JSSourceElements (xs++[x1])))++combineSourceElementsTop :: AST.JSNode -> AST.JSNode -> AST.JSNode+combineSourceElementsTop (AST.NN (AST.JSSourceElementsTop xs)) x1 = fp (AST.NN (AST.JSSourceElementsTop (xs++[x1])))++combineTop :: AST.JSNode -> AST.JSNode -> AST.JSNode+combineTop (AST.NN (AST.JSSourceElementsTop xs)) x1 = fp (AST.NN (AST.JSSourceElementsTop (xs++[x1])))++combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode+combineStatements (AST.NN (AST.JSStatementList xs)) (AST.NN (AST.JSStatementList ys)) = fp (AST.NN (AST.JSStatementList (xs++ys) ))+combineStatements (AST.NN (AST.JSStatementList xs)) y = fp (AST.NN (AST.JSStatementList (xs++[y])))++parseError :: Token -> Alex a+-- parseError = throwError . UnexpectedToken+parseError tok = alexError (show tok)++-- --------------------------------++{-+mex :: [AST.JSNode] -> TokenPosn+mex [] = tokenPosnEmpty+mex xs = ex (head xs)++ex :: AST.JSNode -> TokenPosn+ex (AST.NN _node span _c) = span+-}++--ss token = toSrcSpan (token_span token)+ss :: Token -> TokenPosn+ss token = token_span token++-- ------------------------------++gc :: Token -> [CommentAnnotation]+gc token = token_comment token+mgc :: [Token] -> [CommentAnnotation]+mgc xs = concatMap gc xs++{-+-- Get node comment+gnc (AST.NN _ _ ca) = ca+mgnc [(AST.NN _ _ ca)] = ca++-- Prepend a comment+pc :: AST.JSNode -> [CommentAnnotation] -> AST.JSNode+pc (AST.NN node span cs2) cs1 = (AST.NN node span (cs1++cs2))++mpc :: [AST.JSNode] -> [CommentAnnotation] -> [AST.JSNode]+-- mpc [(AST.NN node span cs2)] cs1 = [(AST.NN node span (cs1++cs2))]+mpc ((AST.NN node span cs2):xs) cs1 = (AST.NN node span (cs1++cs2)):xs+-}++-- ---------------------------------------------------------------------++fp :: AST.JSNode -> AST.JSNode+fp (AST.NN x) = (AST.NN x)+fp (AST.NT x p cs) = (AST.NT x p cs)+{-+fp (AST.NN x p cs) = (AST.NN x p' cs)+ where+ p' = case (filter (/= NoComment) cs) of+ [] -> p+ [(CommentA posn _)] -> posn+ ((CommentA posn _):_) -> posn -} {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-}
language-javascript.cabal view
@@ -1,7 +1,10 @@ Name: language-javascript-Version: 0.4.10+Version: 0.5.0 Synopsis: Parser for JavaScript Description: Parses Javascript into an Abstract Syntax Tree (AST). Initially intended as frontend to hjsmin.+ .+ Note: Version 0.5.0 breaks compatibility with prior versions, the AST has been reworked to allow+ round trip processing of JavaScript. Homepage: https://github.com/alanz/language-javascript License: BSD3 License-file: LICENSE@@ -29,15 +32,18 @@ , mtl >= 1.1 && < 2.9 , containers >= 0.2 && < 0.5 , utf8-light >= 0.4 && < 1.0+ -- For the round trip output+ , blaze-builder >= 0.2 && < 1+ , bytestring >= 0.9.1 && < 1+ , utf8-string >= 0.3.7 && < 1 build-tools: happy >= 1.18.5- -- , alex >= 3.0- hs-source-dirs: src Exposed-modules: Language.JavaScript.Parser Language.JavaScript.Parser.Parser Language.JavaScript.Parser.Lexer Language.JavaScript.Parser.Grammar5 Language.JavaScript.Parser.AST+ Language.JavaScript.Pretty.Printer Other-modules: Language.JavaScript.Parser.LexerUtils Language.JavaScript.Parser.ParseError Language.JavaScript.Parser.ParserMonad@@ -45,7 +51,6 @@ Language.JavaScript.Parser.StringEscape Language.JavaScript.Parser.Token Build-tools: happy- -- , alex ghc-options: -Wall executable runtests
runtests.hs view
@@ -1,4 +1,3 @@- import Test.Framework (defaultMain, testGroup, Test) import Test.Framework.Providers.HUnit import Test.HUnit hiding (Test)@@ -6,11 +5,12 @@ import Control.Monad (liftM) import Language.JavaScript.Parser.Parser+import Language.JavaScript.Parser --import Language.JavaScript.Parser.Grammar import Language.JavaScript.Parser.Grammar5 main :: IO ()-main = defaultMain [testSuite]+main = defaultMain [testSuite,{- ++AZ++temporary++ commentSuite ,-}commentPrintSuite] one :: IO () one = defaultMain [oneSuite]@@ -61,28 +61,28 @@ , testCase "Identifier2" (testPE "this_" "Right (JSIdentifier \"this_\")") , testCase "ArrayLiteral1" (testPE "[]" "Right (JSArrayLiteral [])")- , testCase "ArrayLiteral2" (testPE "[,]" "Right (JSArrayLiteral [JSElision []])")- , testCase "ArrayLiteral3" (testPE "[,,]" "Right (JSArrayLiteral [JSElision [],JSElision []])")- , testCase "ArrayLiteral4" (testPE "[,,x]" "Right (JSArrayLiteral [JSElision [],JSElision [],JSIdentifier \"x\"])")- , testCase "ArrayLiteral5" (testPE "[,,x]" "Right (JSArrayLiteral [JSElision [],JSElision [],JSIdentifier \"x\"])")- , testCase "ArrayLiteral6" (testPE "[,x,,x]" "Right (JSArrayLiteral [JSElision [],JSIdentifier \"x\",JSElision [],JSElision [],JSIdentifier \"x\"])")+ , testCase "ArrayLiteral2" (testPE "[,]" "Right (JSArrayLiteral [JSElision JSLiteral \",\"])")+ , testCase "ArrayLiteral3" (testPE "[,,]" "Right (JSArrayLiteral [JSElision JSLiteral \",\",JSElision JSLiteral \",\"])")+ , testCase "ArrayLiteral4" (testPE "[,,x]" "Right (JSArrayLiteral [JSElision JSLiteral \",\",JSElision JSLiteral \",\",JSIdentifier \"x\"])")+ , testCase "ArrayLiteral5" (testPE "[,,x]" "Right (JSArrayLiteral [JSElision JSLiteral \",\",JSElision JSLiteral \",\",JSIdentifier \"x\"])")+ , testCase "ArrayLiteral6" (testPE "[,x,,x]" "Right (JSArrayLiteral [JSElision JSLiteral \",\",JSIdentifier \"x\",JSElision JSLiteral \",\",JSElision JSLiteral \",\",JSIdentifier \"x\"])") , testCase "ArrayLiteral7" (testPE "[x]" "Right (JSArrayLiteral [JSIdentifier \"x\"])") , testCase "ArrayLiteral8" (testPE "[x,]" "Right (JSArrayLiteral [JSIdentifier \"x\",JSLiteral \",\"])") - , testCase "ObjectLiteral1" (testPE "{}" "Right (JSObjectLiteral [])")- , testCase "ObjectLiteral2" (testPE "{x:1}" "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"x\") [JSDecimal \"1\"]])")- , testCase "ObjectLiteral3" (testPE "{x:1,y:2}" "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"x\") [JSDecimal \"1\"],JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"2\"]])")+ , testCase "ObjectLiteral1" (testPE "{}" "Right (JSObjectLiteral [])")+ , testCase "ObjectLiteral2" (testPE "{x:1}" "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"x\") [JSDecimal \"1\"]])")+ , testCase "ObjectLiteral3" (testPE "{x:1,y:2}" "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"x\") [JSDecimal \"1\"],JSLiteral \",\",JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"2\"]])") - , testCase "ObjectLiteral4" (testPE "{evaluate:evaluate,load:function load(s){if(x)return s;1}}" "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"evaluate\") [JSIdentifier \"evaluate\"],JSPropertyNameandValue (JSIdentifier \"load\") [JSFunctionExpression [JSIdentifier \"load\"] [JSIdentifier \"s\"] (JSFunctionBody [JSSourceElements [JSIf (JSExpression [JSIdentifier \"x\"]) (JSReturn [JSExpression [JSIdentifier \"s\"],JSLiteral \";\"]),JSExpression [JSDecimal \"1\"]]])]])")+ , testCase "ObjectLiteral4" (testPE "{evaluate:evaluate,load:function load(s){if(x)return s;1}}" "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"evaluate\") [JSIdentifier \"evaluate\"],JSLiteral \",\",JSPropertyNameandValue (JSIdentifier \"load\") [JSFunctionExpression [JSIdentifier \"load\"] [JSIdentifier \"s\"] (JSFunctionBody [JSSourceElements [JSIf (JSExpression [JSIdentifier \"x\"]) (JSReturn [JSExpression [JSIdentifier \"s\"]] JSLiteral \";\") ([]),JSExpression [JSDecimal \"1\"]]])]])") , testCase "ObjectLiteral5" (testPE "{x:1,}" "Right (JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"x\") [JSDecimal \"1\"],JSLiteral \",\"])") - , testCase "ObjectLiteral6" (testProg "a={\n values: 7,\n}\n" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"values\") [JSDecimal \"7\"],JSLiteral \",\"]]])")+ , testCase "ObjectLiteral6" (testProg "a={\n values: 7,\n}\n" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"values\") [JSDecimal \"7\"],JSLiteral \",\"]],JSLiteral \"\"])") -- Edition 5 extensions- , testCase "ObjectLiteral7" (testProg "x={get foo() {return 1},set foo(a) {x=a}}" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSObjectLiteral [JSPropertyAccessor \"get\" (JSIdentifier \"foo\") [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSDecimal \"1\"],JSLiteral \"\"]]]),JSPropertyAccessor \"set\" (JSIdentifier \"foo\") [JSIdentifier \"a\"] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSIdentifier \"a\"]]])]]])")+ , testCase "ObjectLiteral7" (testProg "x={get foo() {return 1},set foo(a) {x=a}}" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyAccessor NT (JSLiteral \"get\") (TokenPn 3 1 4) [NoComment] (JSIdentifier \"foo\") [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSDecimal \"1\"]] JSLiteral \"\"]]),JSLiteral \",\",JSPropertyAccessor NT (JSLiteral \"set\") (TokenPn 24 1 25) [NoComment] (JSIdentifier \"foo\") [JSIdentifier \"a\"] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSIdentifier \"a\"]]])]],JSLiteral \"\"])") - , testCase "ObjectLiteral8" (testProg "a={if:1,interface:2}" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"if\") [JSDecimal \"1\"],JSPropertyNameandValue (JSIdentifier \"interface\") [JSDecimal \"2\"]]]])")+ , testCase "ObjectLiteral8" (testProg "a={if:1,interface:2}" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"if\") [JSDecimal \"1\"],JSLiteral \",\",JSPropertyNameandValue (JSIdentifier \"interface\") [JSDecimal \"2\"]]],JSLiteral \"\"])") , testCase "ExpressionParen" (testPE "(56)" "Right (JSExpressionParen (JSExpression [JSDecimal \"56\"]))") @@ -132,85 +132,85 @@ , testCase "Statement28" (testStmt "y--" "Right (JSExpression [JSExpressionPostfix \"--\" [JSIdentifier \"y\"]])") -- Member Expressions- , testCase "MemberExpression1" (testStmt "function(){}" "Right (JSExpression [JSFunctionExpression [] [] (JSFunctionBody [])])")- , testCase "MemberExpression1" (testStmt "function(a){}" "Right (JSExpression [JSFunctionExpression [] [JSIdentifier \"a\"] (JSFunctionBody [])])")- , testCase "MemberExpression1" (testStmt "function(a,b){}" "Right (JSExpression [JSFunctionExpression [] [JSIdentifier \"a\",JSIdentifier \"b\"] (JSFunctionBody [])])")+ , testCase "MemberExpression1a" (testStmt "function(){}" "Right (JSExpression [JSFunctionExpression [] [] (JSFunctionBody [])])")+ , testCase "MemberExpression1b" (testStmt "function(a){}" "Right (JSExpression [JSFunctionExpression [] [JSIdentifier \"a\"] (JSFunctionBody [])])")+ , testCase "MemberExpression1c" (testStmt "function(a,b){}" "Right (JSExpression [JSFunctionExpression [] [JSIdentifier \"a\",JSLiteral \",\",JSIdentifier \"b\"] (JSFunctionBody [])])") - , testCase "MemberExpression1" (testStmt "x[y]" "Right (JSExpression [JSMemberSquare [JSIdentifier \"x\"] (JSExpression [JSIdentifier \"y\"])])")- , testCase "MemberExpression1" (testStmt "x[y][z]" "Right (JSExpression [JSMemberSquare [JSMemberSquare [JSIdentifier \"x\"] (JSExpression [JSIdentifier \"y\"])] (JSExpression [JSIdentifier \"z\"])])")- , testCase "MemberExpression1" (testStmt "x.y" "Right (JSExpression [JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")])")- , testCase "MemberExpression1" (testStmt "x.y.z" "Right (JSExpression [JSMemberDot [JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")] (JSIdentifier \"z\")])")+ , testCase "MemberExpression1d" (testStmt "x[y]" "Right (JSExpression [JSMemberSquare [JSIdentifier \"x\"] (JSExpression [JSIdentifier \"y\"])])")+ , testCase "MemberExpression1e" (testStmt "x[y][z]" "Right (JSExpression [JSMemberSquare [JSMemberSquare [JSIdentifier \"x\"] (JSExpression [JSIdentifier \"y\"])] (JSExpression [JSIdentifier \"z\"])])")+ , testCase "MemberExpression1f" (testStmt "x.y" "Right (JSExpression [JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")])")+ , testCase "MemberExpression1g" (testStmt "x.y.z" "Right (JSExpression [JSMemberDot [JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")] (JSIdentifier \"z\")])") - , testCase "MemberExpression1" (testStmt "new x()" "Right (JSExpression [JSLiteral \"new \",JSIdentifier \"x\",JSArguments []])")+ , testCase "MemberExpression1h" (testStmt "new x()" "Right (JSExpression [JSLiteral \"new\",JSIdentifier \"x\",JSArguments []])") - , testCase "NewExpression1" (testStmt "new x.y" "Right (JSExpression [JSLiteral \"new \",JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")])")+ , testCase "NewExpression1" (testStmt "new x.y" "Right (JSExpression [JSLiteral \"new\",JSMemberDot [JSIdentifier \"x\"] (JSIdentifier \"y\")])") , testCase "CallExpression1" (testStmt "x()" "Right (JSExpression [JSIdentifier \"x\",JSArguments []])") , testCase "CallExpression2" (testStmt "x()()" "Right (JSExpression [JSIdentifier \"x\",JSArguments [],JSCallExpression \"()\" [JSArguments []]])") , testCase "CallExpression3" (testStmt "x()[4]" "Right (JSExpression [JSIdentifier \"x\",JSArguments [],JSCallExpression \"[]\" [JSExpression [JSDecimal \"4\"]]])") , testCase "CallExpression4" (testStmt "x().x" "Right (JSExpression [JSIdentifier \"x\",JSArguments [],JSCallExpression \".\" [JSIdentifier \"x\"]])")- , testCase "CallExpression5" (testStmt "x(a,b=2).x" "Right (JSExpression [JSIdentifier \"x\",JSArguments [[JSIdentifier \"a\"],[JSIdentifier \"b\",JSOperator \"=\",JSDecimal \"2\"]],JSCallExpression \".\" [JSIdentifier \"x\"]])")+ , testCase "CallExpression5" (testStmt "x(a,b=2).x" "Right (JSExpression [JSIdentifier \"x\",JSArguments [JSIdentifier \"a\",JSLiteral \",\",JSIdentifier \"b\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSCallExpression \".\" [JSIdentifier \"x\"]])") - , testCase "AssignExpression1" (testStmt "x=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x*=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"*=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x/=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"/=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x%=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"%=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x+=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"+=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x-=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"-=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x<<=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"<<=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x>>=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \">>=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x>>>=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \">>>=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x&=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"&=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x^=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"^=\",JSDecimal \"1\"])")- , testCase "AssignExpression1" (testStmt "x|=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator \"|=\",JSDecimal \"1\"])")+ , testCase "AssignExpression1" (testStmt "x=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"])")+ , testCase "AssignExpression2" (testStmt "x*=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"*=\",JSDecimal \"1\"])")+ , testCase "AssignExpression3" (testStmt "x/=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"/=\",JSDecimal \"1\"])")+ , testCase "AssignExpression4" (testStmt "x%=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"%=\",JSDecimal \"1\"])")+ , testCase "AssignExpression5" (testStmt "x+=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"+=\",JSDecimal \"1\"])")+ , testCase "AssignExpression6" (testStmt "x-=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"-=\",JSDecimal \"1\"])")+ , testCase "AssignExpression7" (testStmt "x<<=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"<<=\",JSDecimal \"1\"])")+ , testCase "AssignExpression8" (testStmt "x>>=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \">>=\",JSDecimal \"1\"])")+ , testCase "AssignExpression9" (testStmt "x>>>=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \">>>=\",JSDecimal \"1\"])")+ , testCase "AssignExpression10" (testStmt "x&=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"&=\",JSDecimal \"1\"])")+ , testCase "AssignExpression11" (testStmt "x^=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"^=\",JSDecimal \"1\"])")+ , testCase "AssignExpression12" (testStmt "x|=1" "Right (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"|=\",JSDecimal \"1\"])") , 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 "Block2" (testStmt "{x=1}" "Right (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"]]))")+ , testCase "Block3" (testStmt "{x=1;y=2}" "Right (JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"y\",JSOperator JSLiteral \"=\",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\"]) (JSStatementBlock (JSStatementList [])))")+ , testCase "If1" (testStmt "if (1) {}" "Right (JSIf (JSExpression [JSDecimal \"1\"]) (JSStatementBlock (JSStatementList [])) ([]))") - , 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 "IfElse1" (testStmt "if (1) {} else {}" "Right (JSIf (JSExpression [JSDecimal \"1\"]) (JSBlock (JSStatementList [JSStatementBlock (JSStatementList [])])) ([JSLiteral \"else\",JSStatementBlock (JSStatementList [])]))")+ , testCase "IfElse2" (testStmt "if (1) x=1; else {}" "Right (JSIf (JSExpression [JSDecimal \"1\"]) (JSBlock (JSStatementList [JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\"])])) ([JSLiteral \"else\",JSStatementBlock (JSStatementList [])]))") - , testCase "DoWhile1" (testStmt "do {x=1} while (true);" "Right (JSDoWhile (JSStatementBlock (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 JSLiteral \"=\",JSDecimal \"1\"]])) (JSExpression [JSLiteral \"true\"]) (JSLiteral \";\"))") , testCase "While1" (testStmt "while(true);" "Right (JSWhile (JSExpression [JSLiteral \"true\"]) (JSLiteral \";\"))") , testCase "For1" (testStmt "for(;;);" "Right (JSFor [] [] [] (JSLiteral \";\"))")- , testCase "For2" (testStmt "for(x=1;x<10;x++);" "Right (JSFor [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]] [JSExpression [JSExpressionBinary \"<\" [JSIdentifier \"x\"] [JSDecimal \"10\"]]] [JSExpression [JSExpressionPostfix \"++\" [JSIdentifier \"x\"]]] (JSLiteral \";\"))")+ , testCase "For2" (testStmt "for(x=1;x<10;x++);" "Right (JSFor [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"]] [JSExpression [JSExpressionBinary \"<\" [JSIdentifier \"x\"] [JSDecimal \"10\"]]] [JSExpression [JSExpressionPostfix \"++\" [JSIdentifier \"x\"]]] (JSLiteral \";\"))") , 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=1;;);" "Right (JSForVar [JSVarDecl (JSIdentifier \"x\") [JSLiteral \"=\",JSDecimal \"1\"]] [] [] (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\"]) (JSStatementBlock (JSStatementList [])))") , 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\"]])")+ , testCase "Var1" (testStmt "var x=1;" "Right (JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"x\") [JSLiteral \"=\",JSDecimal \"1\"]])")+ , testCase "Var2" (testStmt "const x=1,y=2;" "Right (JSVariables JSLiteral \"const\" [JSVarDecl (JSIdentifier \"x\") [JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \",\",JSVarDecl (JSIdentifier \"y\") [JSLiteral \"=\",JSDecimal \"2\"]])") - , testCase "Continue1" (testStmt "continue;" "Right (JSContinue [JSLiteral \";\"])")- , testCase "Continue2" (testStmt "continue x;" "Right (JSContinue [JSIdentifier \"x\",JSLiteral \";\"])")+ , testCase "Continue1" (testStmt "continue;" "Right (JSContinue [] JSLiteral \";\")")+ , testCase "Continue2" (testStmt "continue x;" "Right (JSContinue [JSIdentifier \"x\"] JSLiteral \";\")") - , testCase "Break1" (testStmt "break;" "Right (JSBreak [] [JSLiteral \";\"])")- , testCase "Break2" (testStmt "break x;" "Right (JSBreak [JSIdentifier \"x\"] [JSLiteral \";\"])")+ , testCase "Break1" (testStmt "break;" "Right (JSBreak [] JSLiteral \";\")")+ , testCase "Break2" (testStmt "break x;" "Right (JSBreak [JSIdentifier \"x\"] JSLiteral \";\")") - , testCase "Return1" (testStmt "return;" "Right (JSReturn [JSLiteral \";\"])")- , testCase "Return2" (testStmt "return x;" "Right (JSReturn [JSExpression [JSIdentifier \"x\"],JSLiteral \";\"])")+ , 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\"]) [JSStatementBlock (JSStatementList []),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\"]))")+ , testCase "Labelled1" (testStmt "abc:x=1" "Right (JSLabelled (JSIdentifier \"abc\") (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"]))") - , testCase "Switch1" (testStmt "switch (x) {}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [])")- , testCase "Switch2" (testStmt "switch (x) {case 1:break;}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] [JSLiteral \";\"]])])")- , testCase "Switch3" (testStmt "switch (x) {case 0:\ncase 1:break;}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSCase (JSExpression [JSDecimal \"0\"]) (JSStatementList []),JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] [JSLiteral \";\"]])])")- , testCase "Switch4" (testStmt "switch (x) {default:break;}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSDefault (JSStatementList [JSBreak [] [JSLiteral \";\"]])])")- , testCase "Switch5" (testStmt "switch (x) {default:\ncase 1:break;}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSDefault (JSStatementList []),JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] [JSLiteral \";\"]])])")+ , testCase "Switch1" (testStmt "switch (x) {}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSLiteral \"{\",JSLiteral \"\",JSLiteral \"}\"])")+ , testCase "Switch2" (testStmt "switch (x) {case 1:break;}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSLiteral \"{\",JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] JSLiteral \";\"]),JSLiteral \"}\"])")+ , testCase "Switch3" (testStmt "switch (x) {case 0:\ncase 1:break;}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSLiteral \"{\",JSCase (JSExpression [JSDecimal \"0\"]) (JSStatementList []),JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] JSLiteral \";\"]),JSLiteral \"}\"])")+ , testCase "Switch4" (testStmt "switch (x) {default:break;}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSLiteral \"{\",JSLiteral \"\",JSDefault (JSStatementList [JSBreak [] JSLiteral \";\"]),JSLiteral \"\",JSLiteral \"}\"])")+ , testCase "Switch5" (testStmt "switch (x) {default:\ncase 1:break;}" "Right (JSSwitch (JSExpression [JSIdentifier \"x\"]) [JSLiteral \"{\",JSLiteral \"\",JSDefault (JSStatementList []),JSCase (JSExpression [JSDecimal \"1\"]) (JSStatementList [JSBreak [] JSLiteral \";\"]),JSLiteral \"}\"])") , testCase "Throw1" (testStmt "throw 1" "Right (JSThrow (JSExpression [JSDecimal \"1\"]))") @@ -220,124 +220,521 @@ , testCase "Try4" (testStmt "try{}catch(a){}catch(b){}finally{}" "Right (JSTry (JSBlock (JSStatementList [])) [JSCatch (JSIdentifier \"a\") [] (JSBlock (JSStatementList [])),JSCatch (JSIdentifier \"b\") [] (JSBlock (JSStatementList [])),JSFinally (JSBlock (JSStatementList []))])") , testCase "Try5" (testStmt "try{}catch(a){}catch(b){}" "Right (JSTry (JSBlock (JSStatementList [])) [JSCatch (JSIdentifier \"a\") [] (JSBlock (JSStatementList [])),JSCatch (JSIdentifier \"b\") [] (JSBlock (JSStatementList []))])")- , testCase "Try6" (testStmt "try{}catch(a if true){}catch(b){}" "Right (JSTry (JSBlock (JSStatementList [])) [JSCatch (JSIdentifier \"a\") [JSLiteral \"true\"] (JSBlock (JSStatementList [])),JSCatch (JSIdentifier \"b\") [] (JSBlock (JSStatementList []))])")+ , testCase "Try6" (testStmt "try{}catch(a if true){}catch(b){}" "Right (JSTry (JSBlock (JSStatementList [])) [JSCatch (JSIdentifier \"a\") [JSLiteral \"if\",JSLiteral \"true\"] (JSBlock (JSStatementList [])),JSCatch (JSIdentifier \"b\") [] (JSBlock (JSStatementList []))])") - , testCase "Function1" (testProg "function a(){}" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"a\") [] (JSFunctionBody [])])")- , testCase "Function2" (testProg "function a(b,c){}" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"a\") [JSIdentifier \"b\",JSIdentifier \"c\"] (JSFunctionBody [])])")+ , testCase "Function1" (testProg "function a(){}" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"a\") [] (JSFunctionBody []),JSLiteral \"\"])")+ , testCase "Function2" (testProg "function a(b,c){}" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"a\") [JSIdentifier \"b\",JSLiteral \",\",JSIdentifier \"c\"] (JSFunctionBody []),JSLiteral \"\"])") - , testCase "Comment1" (testProg "//blah\nx=1;//foo\na" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"a\"]])")+ , testCase "Comment1" (testProg "//blah\nx=1;//foo\na" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"a\"],JSLiteral \"\"])") - , testCase "Comment2" (testProg "/*x=1\ny=2\n*/z=2;//foo\na" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"z\",JSOperator \"=\",JSDecimal \"2\"],JSLiteral \";\",JSExpression [JSIdentifier \"a\"]])")+ , testCase "Comment2" (testProg "/*x=1\ny=2\n*/z=2;//foo\na" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"z\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSLiteral \";\",JSExpression [JSIdentifier \"a\"],JSLiteral \"\"])") - , testCase "min_100_animals1" (testProg "function Animal(name){if(!name)throw new Error('Must specify an animal name');this.name=name};Animal.prototype.toString=function(){return this.name};o=new Animal(\"bob\");o.toString()==\"bob\"" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"Animal\") [JSIdentifier \"name\"] (JSFunctionBody [JSSourceElements [JSIf (JSExpression [JSUnary \"!\",JSIdentifier \"name\"]) (JSBlock (JSStatementList [JSThrow (JSExpression [JSLiteral \"new \",JSIdentifier \"Error\",JSArguments [[JSStringLiteral '\\'' \"Must specify an animal name\"]]])])),JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\"),JSOperator \"=\",JSIdentifier \"name\"]]]),JSLiteral \";\",JSExpression [JSMemberDot [JSMemberDot [JSIdentifier \"Animal\"] (JSIdentifier \"prototype\")] (JSIdentifier \"toString\"),JSOperator \"=\",JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\")],JSLiteral \"\"]]])],JSLiteral \";\",JSExpression [JSIdentifier \"o\",JSOperator \"=\",JSLiteral \"new \",JSIdentifier \"Animal\",JSArguments [[JSStringLiteral '\"' \"bob\"]]],JSLiteral \";\",JSExpression [JSExpressionBinary \"==\" [JSMemberDot [JSIdentifier \"o\"] (JSIdentifier \"toString\"),JSArguments []] [JSStringLiteral '\"' \"bob\"]]])")+ , testCase "min_100_animals1" (testProg "function Animal(name){if(!name)throw new Error('Must specify an animal name');this.name=name};Animal.prototype.toString=function(){return this.name};o=new Animal(\"bob\");o.toString()==\"bob\""+ "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"Animal\") [JSIdentifier \"name\"] (JSFunctionBody [JSSourceElements [JSIf (JSExpression [JSUnary \"!\",JSIdentifier \"name\"]) (JSBlock (JSStatementList [JSThrow (JSExpression [JSLiteral \"new\",JSIdentifier \"Error\",JSArguments [JSStringLiteral '\\'' \"Must specify an animal name\"]]),JSLiteral \";\"])) ([]),JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\"),JSOperator JSLiteral \"=\",JSIdentifier \"name\"]]]),JSLiteral \";\",JSExpression [JSMemberDot [JSMemberDot [JSIdentifier \"Animal\"] (JSIdentifier \"prototype\")] (JSIdentifier \"toString\"),JSOperator JSLiteral \"=\",JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\")]] JSLiteral \"\"]])],JSLiteral \";\",JSExpression [JSIdentifier \"o\",JSOperator JSLiteral \"=\",JSLiteral \"new\",JSIdentifier \"Animal\",JSArguments [JSStringLiteral '\"' \"bob\"]],JSLiteral \";\",JSExpression [JSExpressionBinary \"==\" [JSMemberDot [JSIdentifier \"o\"] (JSIdentifier \"toString\"),JSArguments []] [JSStringLiteral '\"' \"bob\"]],JSLiteral \"\"])") - , testCase "min_100_animals2" (testProg "Animal=function(){return this.name};" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"Animal\",JSOperator \"=\",JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\")],JSLiteral \"\"]]])],JSLiteral \";\"])")+ , testCase "min_100_animals2" (testProg "Animal=function(){return this.name};" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"Animal\",JSOperator JSLiteral \"=\",JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSMemberDot [JSLiteral \"this\"] (JSIdentifier \"name\")]] JSLiteral \"\"]])],JSLiteral \";\",JSLiteral \"\"])") - , testCase "min_100_animals3" (testProg "if(a)x=1;y=2" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"a\"]) (JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])),JSExpression [JSIdentifier \"y\",JSOperator \"=\",JSDecimal \"2\"]])")+ , testCase "min_100_animals3" (testProg "if(a)x=1;y=2" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"a\"]) (JSBlock (JSStatementList [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\"])) ([]),JSExpression [JSIdentifier \"y\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSLiteral \"\"])") - , testCase "min_100_animals4" (testProg "if(a)x=a()y=2" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"a\"]) (JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSIdentifier \"a\",JSArguments []]),JSExpression [JSIdentifier \"y\",JSOperator \"=\",JSDecimal \"2\"]])")+ , testCase "min_100_animals4" (testProg "if(a)x=a()y=2" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"a\"]) (JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSIdentifier \"a\",JSArguments []]) ([]),JSExpression [JSIdentifier \"y\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSLiteral \"\"])") - , testCase "05_regex" (testProg "newlines=spaces.match(/\\n/g)" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"newlines\",JSOperator \"=\",JSMemberDot [JSIdentifier \"spaces\"] (JSIdentifier \"match\"),JSArguments [[JSRegEx \"/\\\\n/g\"]]]])")+ , testCase "05_regex" (testProg "newlines=spaces.match(/\\n/g)" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"newlines\",JSOperator JSLiteral \"=\",JSMemberDot [JSIdentifier \"spaces\"] (JSIdentifier \"match\"),JSArguments [JSRegEx \"/\\\\n/g\"]],JSLiteral \"\"])") - , testCase "05_regex2" (testProg "x=/\\n/g" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSRegEx \"/\\\\n/g\"]])")+ , testCase "05_regex2" (testProg "x=/\\n/g" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSRegEx \"/\\\\n/g\"],JSLiteral \"\"])") - , testCase "05_regex3" (testProg "x=i(/[?|^&(){}\\[\\]+\\-*\\/\\.]/g,\"\\\\$&\")" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSIdentifier \"i\",JSArguments [[JSRegEx \"/[?|^&(){}\\\\[\\\\]+\\\\-*\\\\/\\\\.]/g\"],[JSStringLiteral '\"' \"\\\\\\\\$&\"]]]])")+ , testCase "05_regex3" (testProg "x=i(/[?|^&(){}\\[\\]+\\-*\\/\\.]/g,\"\\\\$&\")" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSIdentifier \"i\",JSArguments [JSRegEx \"/[?|^&(){}\\\\[\\\\]+\\\\-*\\\\/\\\\.]/g\",JSLiteral \",\",JSStringLiteral '\"' \"\\\\\\\\$&\"]],JSLiteral \"\"])") - , testCase "05_regex4" (testProg "x=i(/^$/g,\"\\\\$&\")" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSIdentifier \"i\",JSArguments [[JSRegEx \"/^$/g\"],[JSStringLiteral '\"' \"\\\\\\\\$&\"]]]])")+ , testCase "05_regex4" (testProg "x=i(/^$/g,\"\\\\$&\")" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSIdentifier \"i\",JSArguments [JSRegEx \"/^$/g\",JSLiteral \",\",JSStringLiteral '\"' \"\\\\\\\\$&\"]],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 "05_regex5" (testProg "if(/^[a-z]/.test(t)){consts+=t.toUpperCase();keywords[t]=i}else consts+=(/^\\W/.test(t)?opTypeNames[t]:t);"+ "Right (JSSourceElementsTop [JSIf (JSExpression [JSMemberDot [JSRegEx \"/^[a-z]/\"] (JSIdentifier \"test\"),JSArguments [JSIdentifier \"t\"]]) (JSBlock (JSStatementList [JSStatementBlock (JSStatementList [JSExpression [JSIdentifier \"consts\",JSOperator JSLiteral \"+=\",JSMemberDot [JSIdentifier \"t\"] (JSIdentifier \"toUpperCase\"),JSArguments []],JSLiteral \";\",JSExpression [JSMemberSquare [JSIdentifier \"keywords\"] (JSExpression [JSIdentifier \"t\"]),JSOperator JSLiteral \"=\",JSIdentifier \"i\"]])])) ([JSLiteral \"else\",JSExpression [JSIdentifier \"consts\",JSOperator JSLiteral \"+=\",JSExpressionParen (JSExpression [JSExpressionTernary [JSMemberDot [JSRegEx \"/^\\\\W/\"] (JSIdentifier \"test\"),JSArguments [JSIdentifier \"t\"]] [JSMemberSquare [JSIdentifier \"opTypeNames\"] (JSExpression [JSIdentifier \"t\"])] [JSIdentifier \"t\"]])]]),JSLiteral \";\",JSLiteral \"\"])") - , testCase "if_semi" (testProg "if(x);x=1" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"x\"]) (JSLiteral \";\"),JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"]])")+ , testCase "if_semi" (testProg "if(x);x=1" "Right (JSSourceElementsTop [JSIf (JSExpression [JSIdentifier \"x\"]) (JSLiteral \";\") ([]),JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \"\"])") - , testCase "67_bob" (testProg "(match = /^\"(?:\\\\.|[^\"])*\"|^'(?:[^']|\\\\.)*'/(input))" "Right (JSSourceElementsTop [JSExpression [JSExpressionParen (JSExpression [JSIdentifier \"match\",JSOperator \"=\",JSRegEx \"/^\\\"(?:\\\\\\\\.|[^\\\"])*\\\"|^'(?:[^']|\\\\\\\\.)*'/\",JSArguments [[JSIdentifier \"input\"]]])]])")+ , testCase "67_bob" (testProg "(match = /^\"(?:\\\\.|[^\"])*\"|^'(?:[^']|\\\\.)*'/(input))" "Right (JSSourceElementsTop [JSExpression [JSExpressionParen (JSExpression [JSIdentifier \"match\",JSOperator JSLiteral \"=\",JSRegEx \"/^\\\"(?:\\\\\\\\.|[^\\\"])*\\\"|^'(?:[^']|\\\\\\\\.)*'/\",JSArguments [JSIdentifier \"input\"]])],JSLiteral \"\"])") - , testCase "122_jsexec" (testProg "v = getValue(execute(n[0], x)) in getValue(execute(n[1], x));" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"v\",JSOperator \"=\",JSExpressionBinary \" in \" [JSIdentifier \"getValue\",JSArguments [[JSIdentifier \"execute\",JSArguments [[JSMemberSquare [JSIdentifier \"n\"] (JSExpression [JSDecimal \"0\"])],[JSIdentifier \"x\"]]]]] [JSIdentifier \"getValue\",JSArguments [[JSIdentifier \"execute\",JSArguments [[JSMemberSquare [JSIdentifier \"n\"] (JSExpression [JSDecimal \"1\"])],[JSIdentifier \"x\"]]]]]],JSLiteral \";\"])")+ , testCase "122_jsexec" (testProg "v = getValue(execute(n[0], x)) in getValue(execute(n[1], x));" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"v\",JSOperator JSLiteral \"=\",JSExpressionBinary \" in \" [JSIdentifier \"getValue\",JSArguments [JSIdentifier \"execute\",JSArguments [JSMemberSquare [JSIdentifier \"n\"] (JSExpression [JSDecimal \"0\"]),JSLiteral \",\",JSIdentifier \"x\"]]] [JSIdentifier \"getValue\",JSArguments [JSIdentifier \"execute\",JSArguments [JSMemberSquare [JSIdentifier \"n\"] (JSExpression [JSDecimal \"1\"]),JSLiteral \",\",JSIdentifier \"x\"]]]],JSLiteral \";\",JSLiteral \"\"])") - , testCase "bug1" (testProg "/* */\nfunction f() {\n/* */\n}\n" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"f\") [] (JSFunctionBody [])])")- , testCase "bug1" (testProg "/* **/\nfunction f() {\n/* */\n}\n" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"f\") [] (JSFunctionBody [])])")+ , testCase "bug1a" (testProg "/* */\nfunction f() {\n/* */\n}\n" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"f\") [] (JSFunctionBody []),JSLiteral \"\"])")+ , testCase "bug1b" (testProg "/* **/\nfunction f() {\n/* */\n}\n" "Right (JSSourceElementsTop [JSFunction (JSIdentifier \"f\") [] (JSFunctionBody []),JSLiteral \"\"])") - , testCase "unicode1-ws" (testProg "a \f\v\t\r\n=\x00a0\x1680\x180e\x2000\x2001\x2002\x2003\x2004\x2005\x2006\x2007\x2008\x2009\x200a\x2028\x2029\x202f\x205f\x3000\&1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")+ , testCase "unicode1-ws" (testProg "a \f\v\t\r\n=\x00a0\x1680\x180e\x2000\x2001\x2002\x2003\x2004\x2005\x2006\x2007\x2008\x2009\x200a\x2028\x2029\x202f\x205f\x3000\&1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"a\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])") - , testCase "unicode2-lt" (testProg "//comment\x000Ax=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")- , testCase "unicode3-lt" (testProg "//comment\x000Dx=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")- , testCase "unicode4-lt" (testProg "//comment\x2028x=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")- , testCase "unicode5-lt" (testProg "//comment\x2029x=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")+ , testCase "unicode2-lt" (testProg "//comment\x000Ax=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])")+ , testCase "unicode3-lt" (testProg "//comment\x000Dx=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])")+ , testCase "unicode4-lt" (testProg "//comment\x2028x=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])")+ , testCase "unicode5-lt" (testProg "//comment\x2029x=1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])") - , testCase "unicode2" (testProg "àáâãäå = 1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"\\224\\225\\226\\227\\228\\229\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"])")+ , testCase "unicode2" (testProg "àáâãäå = 1;" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"\\224\\225\\226\\227\\228\\229\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"])") - , testCase "unicode3" (testProg "$aà = 1;_b=2;\0065a=2" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"$a\\224\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"_b\",JSOperator \"=\",JSDecimal \"2\"],JSLiteral \";\",JSExpression [JSIdentifier \"Aa\",JSOperator \"=\",JSDecimal \"2\"]])")+ , testCase "unicode3" (testProg "$aà = 1;_b=2;\0065a=2" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"$a\\224\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSExpression [JSIdentifier \"_b\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSLiteral \";\",JSExpression [JSIdentifier \"Aa\",JSOperator JSLiteral \"=\",JSDecimal \"2\"],JSLiteral \"\"])") - , testCase "unicode4" (testProg "x=\"àáâãäå\";y='\3012a\0068'" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"\\224\\225\\226\\227\\228\\229\"],JSLiteral \";\",JSExpression [JSIdentifier \"y\",JSOperator \"=\",JSStringLiteral '\\'' \"\\3012aD\"]])")+ , testCase "unicode4" (testProg "x=\"àáâãäå\";y='\3012a\0068'" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"\\224\\225\\226\\227\\228\\229\"],JSLiteral \";\",JSExpression [JSIdentifier \"y\",JSOperator JSLiteral \"=\",JSStringLiteral '\\'' \"\\3012aD\"],JSLiteral \"\"])") - , testCase "unicode5" (testFile "./test/Unicode.js" "JSSourceElementsTop [JSExpression [JSIdentifier \"\\224\\225\\226\\227\\228\\229\",JSOperator \"=\",JSDecimal \"1\"],JSLiteral \";\"]")+ , testCase "unicode5" (testFile "./test/Unicode.js" "JSSourceElementsTop [JSExpression [JSIdentifier \"\\224\\225\\226\\227\\228\\229\",JSOperator JSLiteral \"=\",JSDecimal \"1\"],JSLiteral \";\",JSLiteral \"\"]") - , testCase "bug2.a" (testProg "function() {\nz = function /*z*/(o) {\nreturn r;\n};}" "Right (JSSourceElementsTop [JSExpression [JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"z\",JSOperator \"=\",JSFunctionExpression [] [JSIdentifier \"o\"] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSIdentifier \"r\"],JSLiteral \";\"]]])],JSLiteral \";\"]])]])")+ , testCase "bug2.a" (testProg "function() {\nz = function /*z*/(o) {\nreturn r;\n};}" "Right (JSSourceElementsTop [JSExpression [JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"z\",JSOperator JSLiteral \"=\",JSFunctionExpression [] [JSIdentifier \"o\"] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSIdentifier \"r\"]] JSLiteral \";\"]])],JSLiteral \";\"]])],JSLiteral \"\"])") - , 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 "bug2.b" (testProg "function() {\nz = function z(o) {\nreturn r;\n};}" "Right (JSSourceElementsTop [JSExpression [JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"z\",JSOperator JSLiteral \"=\",JSFunctionExpression [JSIdentifier \"z\"] [JSIdentifier \"o\"] (JSFunctionBody [JSSourceElements [JSReturn [JSExpression [JSIdentifier \"r\"]] JSLiteral \";\"]])],JSLiteral \";\"]])],JSLiteral \"\"])") -- https://github.com/alanz/hjsmin/issues/#issue/3- , testCase "bug3" (testProg "var myLatlng = new google.maps.LatLng(56.8379100, 60.5806664);" "Right (JSSourceElementsTop [JSVariables \"var\" [JSVarDecl (JSIdentifier \"myLatlng\") [JSLiteral \"new \",JSMemberDot [JSMemberDot [JSIdentifier \"google\"] (JSIdentifier \"maps\")] (JSIdentifier \"LatLng\"),JSArguments [[JSDecimal \"56.8379100\"],[JSDecimal \"60.5806664\"]]]]])")+ , testCase "bug3" (testProg "var myLatlng = new google.maps.LatLng(56.8379100, 60.5806664);" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"myLatlng\") [JSLiteral \"=\",JSLiteral \"new\",JSMemberDot [JSMemberDot [JSIdentifier \"google\"] (JSIdentifier \"maps\")] (JSIdentifier \"LatLng\"),JSArguments [JSDecimal \"56.8379100\",JSLiteral \",\",JSDecimal \"60.5806664\"]]],JSLiteral \"\"])") -- https://github.com/alanz/hjsmin/issues/#issue/4- , testCase "bug4" (testProg "/* * geolocation. пытаемся определить свое местоположение * если не получается то используем defaultLocation * @Param {object} map экземпляр карты * @Param {object LatLng} defaultLocation Координаты центра по умолчанию * @Param {function} callbackAfterLocation Фу-ия которая вызывается после * геолокации. Т.к запрос геолокации асинхронен */x" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\"]])")+ , testCase "bug4" (testProg "/* * geolocation. пытаемся определить свое местоположение * если не получается то используем defaultLocation * @Param {object} map экземпляр карты * @Param {object LatLng} defaultLocation Координаты центра по умолчанию * @Param {function} callbackAfterLocation Фу-ия которая вызывается после * геолокации. Т.к запрос геолокации асинхронен */x" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\"],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" (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 \";\"])])]),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 "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 \";\"])])]),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}))")+ , testCase "loc1" (testProgUn "x = 1\n y=2;" "Right (NN (JSSourceElementsTop [NN (JSExpression [NT (JSIdentifier \"x\") (TokenPn 0 1 1) [NoComment],NN (JSOperator (NT (JSLiteral \"=\") (TokenPn 2 1 3) [WhiteSpace (TokenPn 1 1 2) \" \"])),NT (JSDecimal \"1\") (TokenPn 4 1 5) [WhiteSpace (TokenPn 3 1 4) \" \"]]),NN (JSExpression [NT (JSIdentifier \"y\") (TokenPn 8 2 3) [WhiteSpace (TokenPn 5 1 6) \"\\n \"],NN (JSOperator (NT (JSLiteral \"=\") (TokenPn 9 2 4) [NoComment])),NT (JSDecimal \"2\") (TokenPn 10 2 5) [NoComment]]),NT (JSLiteral \";\") (TokenPn 11 2 6) [NoComment],NT (JSLiteral \"\") (TokenPn 0 0 0) [NoComment]]))") -- https://github.com/alanz/language-javascript/issues/2- , testCase "issue2" (testProg "var img = document.createElement('img');\nimg.src = \"mylogo.jpg\";\n$(img).click(function() {\n alert('clicked!');\n});" "Right (JSSourceElementsTop [JSVariables \"var\" [JSVarDecl (JSIdentifier \"img\") [JSMemberDot [JSIdentifier \"document\"] (JSIdentifier \"createElement\"),JSArguments [[JSStringLiteral '\\'' \"img\"]]]],JSExpression [JSMemberDot [JSIdentifier \"img\"] (JSIdentifier \"src\"),JSOperator \"=\",JSStringLiteral '\"' \"mylogo.jpg\"],JSLiteral \";\",JSExpression [JSIdentifier \"$\",JSArguments [[JSIdentifier \"img\"]],JSCallExpression \".\" [JSIdentifier \"click\"],JSCallExpression \"()\" [JSArguments [[JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"alert\",JSArguments [[JSStringLiteral '\\'' \"clicked!\"]]],JSLiteral \";\"]])]]]],JSLiteral \";\"])")+ , testCase "issue2" (testProg "var img = document.createElement('img');\nimg.src = \"mylogo.jpg\";\n$(img).click(function() {\n alert('clicked!');\n});" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"img\") [JSLiteral \"=\",JSMemberDot [JSIdentifier \"document\"] (JSIdentifier \"createElement\"),JSArguments [JSStringLiteral '\\'' \"img\"]]],JSExpression [JSMemberDot [JSIdentifier \"img\"] (JSIdentifier \"src\"),JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"mylogo.jpg\"],JSLiteral \";\",JSExpression [JSIdentifier \"$\",JSArguments [JSIdentifier \"img\"],JSCallExpression \".\" [JSIdentifier \"click\"],JSCallExpression \"()\" [JSArguments [JSFunctionExpression [] [] (JSFunctionBody [JSSourceElements [JSExpression [JSIdentifier \"alert\",JSArguments [JSStringLiteral '\\'' \"clicked!\"]],JSLiteral \";\"]])]]],JSLiteral \";\",JSLiteral \"\"])") -- Working in ECMASCRIPT 5.1 changes- , testCase "lineTerminatorInString1" (testProg "x='abc\\\ndef';" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\\'' \"abcdef\"],JSLiteral \";\"])")- , testCase "lineTerminatorInString2" (testProg "x=\"abc\\\ndef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"abcdef\"],JSLiteral \";\"])")- , testCase "lineTerminatorInString3" (testProg "x=\"abc\\\rdef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"abcdef\"],JSLiteral \";\"])")- , testCase "lineTerminatorInString4" (testProg "x=\"abc\\\x2028 def\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"abc def\"],JSLiteral \";\"])")- , testCase "lineTerminatorInString5" (testProg "x=\"abc\\\x2029 def\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"abc def\"],JSLiteral \";\"])")- , testCase "lineTerminatorInString6" (testProg "x=\"abc\\\r\ndef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSStringLiteral '\"' \"abcdef\"],JSLiteral \";\"])")+ , testCase "lineTerminatorInString1" (testProg "x='abc\\\ndef';" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\\'' \"abc\\\\\\ndef\"],JSLiteral \";\",JSLiteral \"\"])")+ , testCase "lineTerminatorInString2" (testProg "x=\"abc\\\ndef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"abc\\\\\\ndef\"],JSLiteral \";\",JSLiteral \"\"])")+ , testCase "lineTerminatorInString3" (testProg "x=\"abc\\\rdef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"abc\\\\\\rdef\"],JSLiteral \";\",JSLiteral \"\"])")+ , testCase "lineTerminatorInString4" (testProg "x=\"abc\\\x2028 def\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"abc\\\\\\8232 def\"],JSLiteral \";\",JSLiteral \"\"])")+ , testCase "lineTerminatorInString5" (testProg "x=\"abc\\\x2029 def\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"abc\\\\\\8233 def\"],JSLiteral \";\",JSLiteral \"\"])")+ , testCase "lineTerminatorInString6" (testProg "x=\"abc\\\r\ndef\";" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSStringLiteral '\"' \"abc\\\\\\r\\ndef\"],JSLiteral \";\",JSLiteral \"\"])") -- https://github.com/alanz/language-javascript/issues/4- , testCase "issue4ok" (testProg "var k = {\ny: somename\n}" "Right (JSSourceElementsTop [JSVariables \"var\" [JSVarDecl (JSIdentifier \"k\") [JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"somename\"]]]]])")- , testCase "issue4bug1" (testProg "var k = {\ny: code\n}" "Right (JSSourceElementsTop [JSVariables \"var\" [JSVarDecl (JSIdentifier \"k\") [JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"code\"]]]]])")- , testCase "issue4bug2" (testProg "var k = {\ny: mode\n}" "Right (JSSourceElementsTop [JSVariables \"var\" [JSVarDecl (JSIdentifier \"k\") [JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"mode\"]]]]])")+ , testCase "issue4ok" (testProg "var k = {\ny: somename\n}" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"k\") [JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"somename\"]]]],JSLiteral \"\"])")+ , testCase "issue4bug1" (testProg "var k = {\ny: code\n}" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"k\") [JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"code\"]]]],JSLiteral \"\"])")+ , testCase "issue4bug2" (testProg "var k = {\ny: mode\n}" "Right (JSSourceElementsTop [JSVariables JSLiteral \"var\" [JSVarDecl (JSIdentifier \"k\") [JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSIdentifier \"mode\"]]]],JSLiteral \"\"])") -- https://github.com/alanz/language-javascript/issues/5- , testCase "issue5bug1" (testProg "x = { y: 1e8 }" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"1e8\"]]]])")- , testCase "issue5ok2" (testProg "{ y: 1e8 }" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSLabelled (JSIdentifier \"y\") (JSExpression [JSDecimal \"1e8\"])])])")- , testCase "issue5ok3" (testProg "{ y: 18 }" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSLabelled (JSIdentifier \"y\") (JSExpression [JSDecimal \"18\"])])])")- , testCase "issue5ok4" (testProg "x = { y: 18 }" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"18\"]]]])")+ , testCase "issue5bug1" (testProg "x = { y: 1e8 }" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"1e8\"]]],JSLiteral \"\"])")+ , testCase "issue5ok2" (testProg "{ y: 1e8 }" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSLabelled (JSIdentifier \"y\") (JSExpression [JSDecimal \"1e8\"])]),JSLiteral \"\"])")+ , testCase "issue5ok3" (testProg "{ y: 18 }" "Right (JSSourceElementsTop [JSStatementBlock (JSStatementList [JSLabelled (JSIdentifier \"y\") (JSExpression [JSDecimal \"18\"])]),JSLiteral \"\"])")+ , testCase "issue5ok4" (testProg "x = { y: 18 }" "Right (JSSourceElementsTop [JSExpression [JSIdentifier \"x\",JSOperator JSLiteral \"=\",JSObjectLiteral [JSPropertyNameandValue (JSIdentifier \"y\") [JSDecimal \"18\"]]],JSLiteral \"\"])") ] srcHelloWorld = "Hello" caseHelloWorld =- "JSSourceElementsTop [JSExpression [JSIdentifier \"Hello\"]]"+ "JSSourceElementsTop [JSExpression [JSIdentifier \"Hello\"],JSLiteral \"\"]" -- @=? (show $ parse srcHelloWorld "src") @=? (showStripped $ readJs srcHelloWorld) -- ---------------------------------------------------------------------++commentSuite :: Test+commentSuite = testGroup "Comments"+ [+ testCase "helloWorld" caseHelloWorld+ , testCase "LiteralNull" (testLiteralC "/*a*/null" "Right (NS (JSLiteral \"null\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"])")+ , testCase "LiteralFalse" (testLiteralC "/*b*/false" "Right (NS (JSLiteral \"false\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*b*/\"])")+ , testCase "LiteralTrue" (testLiteralC "true" "Right (NS (JSLiteral \"true\") (TokenPn 0 1 1) [NoComment])")+ , testCase "LiteralTrue" (testLiteralC "/*c*/true" "Right (NS (JSLiteral \"true\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*c*/\"])")++ , testCase "LiteralHexInteger" (testLiteralC "/*d*/0x1234fF" "Right (NS (JSHexInteger \"0x1234fF\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*d*/\"])")+ , testCase "LiteralDecimal" (testLiteralC "/*e*/1.0e4" "Right (NS (JSDecimal \"1.0e4\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*e*/\"])")+ , testCase "LiteralString1" (testLiteralC "/*f*/\"hello\\nworld\"" "Right (NS (JSStringLiteral '\"' \"hello\\\\nworld\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*f*/\"])")+ , testCase "LiteralString2" (testLiteralC "/*g*/'hello\\nworld'" "Right (NS (JSStringLiteral '\\'' \"hello\\\\nworld\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*g*/\"])")+++ , testCase "LiteralThis" (testPEC "/*h*/this" "Right (NS (JSLiteral \"this\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*h*/\"])")++ , testCase "LiteralRegex1" (testPEC "/*i*//blah/" "Right (NS (JSRegEx \"/blah/\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*i*/\"])")++ , testCase "Identifier2" (testPEC "//j\nthis_" "Right (NS (JSIdentifier \"this_\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"//j\"])")++ , testCase "ArrayLiteral1" (testPEC "/*a*/[/*b*/]" "Right (NS (JSArrayLiteral []) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 6 1 7) \"/*b*/\"])")+ , testCase "ArrayLiteral2" (testPEC "/*a*/[/*b*/,/*c*/]" "Right (NS (JSArrayLiteral [NS (JSElision []) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 12 1 13) \"/*c*/\"])")+ , testCase "ArrayLiteral3" (testPEC "/*a*/[/*b*/,/*c*/,/*d*/]" "Right (NS (JSArrayLiteral [NS (JSElision []) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"],NS (JSElision []) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 18 1 19) \"/*d*/\"])")+ , testCase "ArrayLiteral4" (testPEC "/*a*/[/*b/*,/*c*/,/*d*/x/*e*/]" "Right (NS (JSArrayLiteral [NS (JSElision []) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b/*,/*c*/\"],NS (JSIdentifier \"x\") (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 24 1 25) \"/*e*/\"])")+ , testCase "ArrayLiteral5" (testPEC "/*a*/[/*b*/,/*c*/,/*d*/x/*e*/]" "Right (NS (JSArrayLiteral [NS (JSElision []) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"],NS (JSElision []) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"],NS (JSIdentifier \"x\") (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 24 1 25) \"/*e*/\"])")+ , testCase "ArrayLiteral6" (testPEC "/*a*/[/*b*/,/*c*/x/*d*/,/*e*/,/*f*/x/*g*/]" "Right (NS (JSArrayLiteral [NS (JSElision []) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"],NS (JSIdentifier \"x\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"],NS (JSElision []) (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"],NS (JSElision []) (TokenPn 24 1 25) [CommentA (TokenPn 24 1 25) \"/*e*/\"],NS (JSIdentifier \"x\") (TokenPn 30 1 31) [CommentA (TokenPn 30 1 31) \"/*f*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 36 1 37) \"/*g*/\"])")+ , testCase "ArrayLiteral7" (testPEC "/*a*/[/*b*/x/*c*/]" "Right (NS (JSArrayLiteral [NS (JSIdentifier \"x\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 12 1 13) \"/*c*/\"])")+ , testCase "ArrayLiteral8" (testPEC "/*a*/[/*b*/x/*c*/,/*d*/]" "Right (NS (JSArrayLiteral [NS (JSIdentifier \"x\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"],NS (JSLiteral \",\") (TokenPn 17 1 18) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 18 1 19) \"/*d*/\"])")++ , testCase "ObjectLiteral1" (testPEC "/*a*/{/*b*/}" "Right (NS (JSObjectLiteral []) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 6 1 7) \"/*b*/\"])")+ , testCase "ObjectLiteral2" (testPEC "/*a*/{/*b*/x/*c*/:/*d*/1/*e*/}" "Right (NS (JSObjectLiteral [NS (JSPropertyNameandValue (NS (JSIdentifier \"x\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]) [NS (JSDecimal \"1\") (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"]]) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 24 1 25) \"/*e*/\"])")+ , testCase "ObjectLiteral3" (testPEC "/*a*/{/*b*/x/*c*/:/*d*/1/*e*/,/*f*/y/*g*/:/*h*/2/*i*/}" "Right (NS (JSObjectLiteral [NS (JSPropertyNameandValue (NS (JSIdentifier \"x\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]) [NS (JSDecimal \"1\") (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"]]) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"],NS (JSPropertyNameandValue (NS (JSIdentifier \"y\") (TokenPn 30 1 31) [CommentA (TokenPn 30 1 31) \"/*f*/\"]) [NS (JSDecimal \"2\") (TokenPn 42 1 43) [CommentA (TokenPn 42 1 43) \"/*h*/\"]]) (TokenPn 36 1 37) [CommentA (TokenPn 24 1 25) \"/*e*/\",CommentA (TokenPn 36 1 37) \"/*g*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 48 1 49) \"/*i*/\"])")++ , testCase "ObjectLiteral5" (testPEC "/*a*/{/*b*/x/*c*/:/*d*/1/*e*/,/*f*/}" "Right (NS (JSObjectLiteral [NS (JSPropertyNameandValue (NS (JSIdentifier \"x\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]) [NS (JSDecimal \"1\") (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\"]]) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"],NS (JSLiteral \",\") (TokenPn 29 1 30) [CommentA (TokenPn 24 1 25) \"/*e*/\"]]) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 30 1 31) \"/*f*/\"])")++ -- Edition 5 extensions+ , testCase "ObjectLiteral7" (testProgC "/*a*/x/*b*/=/*c*/{/*d*/get/*e*/ foo/*f*/(/*g*/)/*h*/ {/*i*/return/*j*/ 1/*k*/}/*l*/,/*m*/set/*n*/ foo/*o*/(/*p*/a/*q*/) /*r*/{/*s*/x/*t*/=/*u*/a/*v*/}/*w*/}" "Right (NS (JSSourceElementsTop [NS (JSExpression [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"],NS (JSOperator \"=\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"],NS (JSObjectLiteral [NS (JSPropertyAccessor \"get\" (NS (JSIdentifier \"foo\") (TokenPn 26 1 27) [CommentA (TokenPn 26 1 27) \"/*e*/\"]) [] (NS (JSFunctionBody [NS (JSSourceElements [NS (JSReturn [NS (JSExpression [NS (JSDecimal \"1\") (TokenPn 65 1 66) [CommentA (TokenPn 65 1 66) \"/*j*/\"]]) (TokenPn 65 1 66) [],NS (JSLiteral \"\") (TokenPn 0 0 0) []]) (TokenPn 54 1 55) [CommentA (TokenPn 54 1 55) \"/*i*/\"]]) (TokenPn 54 1 55) []]) (TokenPn 54 1 55) [])) (TokenPn 18 1 19) [CommentA (TokenPn 18 1 19) \"/*d*/\",CommentA (TokenPn 35 1 36) \"/*f*/\",CommentA (TokenPn 41 1 42) \"/*g*/\",CommentA (TokenPn 47 1 48) \"/*h*/\",CommentA (TokenPn 72 1 73) \"/*k*/\"],NS (JSPropertyAccessor \"set\" (NS (JSIdentifier \"foo\") (TokenPn 92 1 93) [CommentA (TokenPn 92 1 93) \"/*n*/\"]) [NS (JSIdentifier \"a\") (TokenPn 107 1 108) [CommentA (TokenPn 107 1 108) \"/*p*/\"]] (NS (JSFunctionBody [NS (JSSourceElements [NS (JSExpression [NS (JSIdentifier \"x\") (TokenPn 126 1 127) [CommentA (TokenPn 126 1 127) \"/*s*/\"],NS (JSOperator \"=\") (TokenPn 132 1 133) [CommentA (TokenPn 132 1 133) \"/*t*/\"],NS (JSIdentifier \"a\") (TokenPn 138 1 139) [CommentA (TokenPn 138 1 139) \"/*u*/\"]]) (TokenPn 126 1 127) []]) (TokenPn 126 1 127) []]) (TokenPn 126 1 127) [])) (TokenPn 84 1 85) [CommentA (TokenPn 78 1 79) \"/*l*/\",CommentA (TokenPn 84 1 85) \"/*m*/\",CommentA (TokenPn 101 1 102) \"/*o*/\",CommentA (TokenPn 113 1 114) \"/*q*/\",CommentA (TokenPn 120 1 121) \"/*r*/\",CommentA (TokenPn 144 1 145) \"/*v*/\"]]) (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\",CommentA (TokenPn 150 1 151) \"/*w*/\"]]) (TokenPn 0 1 1) []]) (TokenPn 0 1 1) [])")++ , testCase "ExpressionParen" (testPEC "/*a*/(/*b*/56/*c*/)" "Right (NS (JSExpressionParen (NS (JSExpression [NS (JSDecimal \"56\") (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])) (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\",CommentA (TokenPn 13 1 14) \"/*c*/\"])")++ , testCase "Statement1" (testStmtC "/*a*/x" "Right (NS (JSExpression [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]]) (TokenPn 0 1 1) [])")++ , testCase "Statement2" (testStmtC "/*a*/null" "Right (NS (JSExpression [NS (JSLiteral \"null\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]]) (TokenPn 0 1 1) [])")++ , testCase "Statement3" (testStmtC "/*a*/true/*b*/?/*c*/1/*d*/:/*e*/2" "Right (NS (JSExpression [NS (JSExpressionTernary [NS (JSLiteral \"true\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSDecimal \"1\") (TokenPn 15 1 16) [CommentA (TokenPn 15 1 16) \"/*c*/\"]] [NS (JSDecimal \"2\") (TokenPn 27 1 28) [CommentA (TokenPn 27 1 28) \"/*e*/\"]]) (TokenPn 9 1 10) [CommentA (TokenPn 9 1 10) \"/*b*/\",CommentA (TokenPn 21 1 22) \"/*d*/\"]]) (TokenPn 9 1 10) [])")++ , testCase "Statement4" (testStmtC "/*a*/x/*b*/||/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"||\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement5" (testStmtC "/*a*/x/*b*/&&/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"&&\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement6a" (testStmtC "/*a*/x/*b*/|/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"|\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement6b" (testStmtC "/*a*/x/*b*/^/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"^\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement7" (testStmtC "/*a*/x/*b*/&/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"&\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement8" (testStmtC "/*a*/x/*b*/==/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"==\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement9" (testStmtC "/*a*/x/*b*/!=/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"!=\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement10" (testStmtC "/*a*/x/*b*/===/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"===\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 14 1 15) [CommentA (TokenPn 14 1 15) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement11" (testStmtC "/*a*/x/*b*/!==/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"!==\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 14 1 15) [CommentA (TokenPn 14 1 15) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement12a" (testStmtC "/*a*/x/*b*/</*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"<\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement12b" (testStmtC "/*a*/x/*b*/>/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \">\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 12 1 13) [CommentA (TokenPn 12 1 13) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement12c" (testStmtC "/*a*/x/*b*/<=/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \"<=\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement12d" (testStmtC "/*a*/x/*b*/>=/*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \">=\" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 13 1 14) [CommentA (TokenPn 13 1 14) \"/*c*/\"]]) (TokenPn 6 1 7) [CommentA (TokenPn 6 1 7) \"/*b*/\"]]) (TokenPn 6 1 7) [])")++ , testCase "Statement12e" (testStmtC "/*a*/x /*b*/instanceof /*c*/y" "Right (NS (JSExpression [NS (JSExpressionBinary \" instanceof \" [NS (JSIdentifier \"x\") (TokenPn 0 1 1) [CommentA (TokenPn 0 1 1) \"/*a*/\"]] [NS (JSIdentifier \"y\") (TokenPn 23 1 24) [CommentA (TokenPn 23 1 24) \"/*c*/\"]]) (TokenPn 7 1 8) [CommentA (TokenPn 7 1 8) \"/*b*/\"]]) (TokenPn 7 1 8) [])")++ ]++-- ---------------------------------------------------------------------++commentPrintSuite :: Test+commentPrintSuite = testGroup "Comments"+ [+ testCase "Multi-comment" (testRoundTrip "/*a*/\n//foo\nnull")+++ , testCase "LiteralNull" (testRoundTrip "/*a*/null")+ , testCase "LiteralFalse" (testRoundTrip "/*b*/false")+ , testCase "LiteralTrue" (testRoundTrip "true")+ , testCase "LiteralTrue" (testRoundTrip "/*c*/true")++ , testCase "LiteralHexInteger" (testRoundTrip "/*d*/0x1234fF")+ , testCase "LiteralDecimal" (testRoundTrip "/*e*/1.0e4")+ , testCase "LiteralString1" (testRoundTrip "/*f*/\"hello\\nworld\"")+ , testCase "LiteralString2" (testRoundTrip "/*g*/'hello\\nworld'")+++ , testCase "LiteralThis" (testRoundTrip "/*h*/this")++ , testCase "LiteralRegex1" (testRoundTrip "/*i*//blah/")++ , testCase "Identifier2" (testRoundTrip "//j\nthis_")++ , testCase "ArrayLiteral1" (testRoundTrip "/*a*/[/*b*/]")+ , testCase "ArrayLiteral2" (testRoundTrip "/*a*/[/*b*/,/*c*/]")+ , testCase "ArrayLiteral3" (testRoundTrip "/*a*/[/*b*/,/*c*/,/*d*/]")+ , testCase "ArrayLiteral4" (testRoundTrip "/*a*/[/*b/*,/*c*/,/*d*/x/*e*/]")+ , testCase "ArrayLiteral5" (testRoundTrip "/*a*/[/*b*/,/*c*/,/*d*/x/*e*/]")+ , testCase "ArrayLiteral6" (testRoundTrip "/*a*/[/*b*/,/*c*/x/*d*/,/*e*/,/*f*/x/*g*/]")+ , testCase "ArrayLiteral7" (testRoundTrip "/*a*/[/*b*/x/*c*/]")+ , testCase "ArrayLiteral8" (testRoundTrip "/*a*/[/*b*/x/*c*/,/*d*/]")++ , testCase "ObjectLiteral1" (testRoundTrip "/*a*/{/*b*/}")+ , testCase "ObjectLiteral2" (testRoundTrip "/*a*/{/*b*/x/*c*/:/*d*/1/*e*/}")+ , testCase "ObjectLiteral3" (testRoundTrip "x=/*a*/{/*b*/x/*c*/:/*d*/1/*e*/,/*f*/y/*g*/:/*h*/2/*i*/}")+ , testCase "ObjectLiteral3a" (testRoundTrip "x=/*a*/{/*b*/x/*c*/:/*d*/1/*e*/,/*f*/y/*g*/:/*h*/2/*i*/,/*j*/z/*k*/:/*l*/3/*m*/}")++ , testCase "ObjectLiteral5" (testRoundTrip "a=/*a*/{/*b*/x/*c*/:/*d*/1/*e*/,/*f*/}")++ -- Edition 5 extensions+ , testCase "ObjectLiteral7" (testRoundTrip "/*a*/x/*b*/=/*c*/{/*d*/get/*e*/ foo/*f*/(/*g*/)/*h*/ {/*i*/return/*j*/ 1/*k*/}/*l*/,/*m*/set/*n*/ foo/*o*/(/*p*/a/*q*/) /*r*/{/*s*/x/*t*/=/*u*/a/*v*/}/*w*/}")++ , testCase "ExpressionParen" (testRoundTrip "/*a*/(/*b*/56/*c*/)")++ , testCase "Statement1" (testRoundTrip "/*a*/x")++ , testCase "Statement2" (testRoundTrip "/*a*/null")++ , testCase "Statement3" (testRoundTrip "/*a*/true/*b*/?/*c*/1/*d*/:/*e*/2")++ , testCase "Statement4" (testRoundTrip "/*a*/x/*b*/||/*c*/y")++ , testCase "Statement5" (testRoundTrip "/*a*/x/*b*/&&/*c*/y")++ , testCase "Statement6a" (testRoundTrip "/*a*/x/*b*/|/*c*/y")++ , testCase "Statement6b" (testRoundTrip "/*a*/x/*b*/^/*c*/y")++ , testCase "Statement7" (testRoundTrip "/*a*/x/*b*/&/*c*/y")++ , testCase "Statement8" (testRoundTrip "/*a*/x/*b*/==/*c*/y")++ , testCase "Statement9" (testRoundTrip "/*a*/x/*b*/!=/*c*/y")++ , testCase "Statement10" (testRoundTrip "/*a*/x/*b*/===/*c*/y")++ , testCase "Statement11" (testRoundTrip "/*a*/x/*b*/!==/*c*/y")++ , testCase "Statement12a" (testRoundTrip "/*a*/x/*b*/</*c*/y")++ , testCase "Statement12b" (testRoundTrip "/*a*/x/*b*/>/*c*/y")++ , testCase "Statement12c" (testRoundTrip "/*a*/x/*b*/<=/*c*/y")++ , testCase "Statement12d" (testRoundTrip "/*a*/x/*b*/>=/*c*/y")++ , testCase "Statement12e" (testRoundTrip "/*a*/x /*b*/instanceof /*c*/y")++++ , testCase "Statement13" (testRoundTrip "x<<y")+ , testCase "Statement13" (testRoundTrip "x>>y")+ , testCase "Statement13" (testRoundTrip "x>>>y")++ , testCase "Statement14" (testRoundTrip "x+y")+ , testCase "Statement14" (testRoundTrip "x-y")++ , testCase "Statement15" (testRoundTrip "x*y")+ , testCase "Statement16" (testRoundTrip "x/y")+ , testCase "Statement17" (testRoundTrip "x%y")++ , testCase "Statement18" (testRoundTrip "delete y")+ , testCase "Statement19" (testRoundTrip "void y")+ , testCase "Statement20" (testRoundTrip "typeof y")+ , testCase "Statement21" (testRoundTrip "++y")+ , testCase "Statement22" (testRoundTrip "--y")+ , testCase "Statement23" (testRoundTrip "+y")+ , testCase "Statement24" (testRoundTrip "-y")+ , testCase "Statement25" (testRoundTrip "~y")+ , testCase "Statement26" (testRoundTrip "!y")++ , testCase "Statement27" (testRoundTrip "y++")+ , testCase "Statement28" (testRoundTrip "y--")++ -- Member Expressions+ , testCase "MemberExpression1a" (testRoundTrip "function(){}")+ , testCase "MemberExpression1b" (testRoundTrip "function(a){}")+ , testCase "MemberExpression1c" (testRoundTrip "function(a,b){}")++ , testCase "MemberExpression1d" (testRoundTrip "x[y]")+ , testCase "MemberExpression1e" (testRoundTrip "x[y][z]")+ , testCase "MemberExpression1f" (testRoundTrip "x.y")+ , testCase "MemberExpression1g" (testRoundTrip "x.y.z")++ , testCase "MemberExpression1h" (testRoundTrip "new x()")++ , testCase "NewExpression1" (testRoundTrip "new x.y")++ , testCase "CallExpression1" (testRoundTrip "x()")+ , testCase "CallExpression2" (testRoundTrip "x()()")+ , testCase "CallExpression3" (testRoundTrip "x()[4]")+ , testCase "CallExpression4" (testRoundTrip "x().x")+ , testCase "CallExpression5" (testRoundTrip "x(a,b=2).x")++ , testCase "AssignExpression1" (testRoundTrip "x=1")+ , testCase "AssignExpression1" (testRoundTrip "x*=1")+ , testCase "AssignExpression1" (testRoundTrip "x/=1")+ , testCase "AssignExpression1" (testRoundTrip "x%=1")+ , testCase "AssignExpression1" (testRoundTrip "x+=1")+ , testCase "AssignExpression1" (testRoundTrip "x-=1")+ , testCase "AssignExpression1" (testRoundTrip "x<<=1")+ , testCase "AssignExpression1" (testRoundTrip "x>>=1")+ , testCase "AssignExpression1" (testRoundTrip "x>>>=1")+ , testCase "AssignExpression1" (testRoundTrip "x&=1")+ , testCase "AssignExpression1" (testRoundTrip "x^=1")+ , testCase "AssignExpression1" (testRoundTrip "x|=1")+++ , testCase "Block1" (testRoundTrip "{}")+ , testCase "Block2" (testRoundTrip "{x=1}")+ , testCase "Block3" (testRoundTrip "{x=1;y=2}")+ , testCase "Block4" (testRoundTrip "{{}}")+ , testCase "Block5" (testRoundTrip "{{{}}}")+++ , testCase "If1" (testRoundTrip "if (1) {}")++ , testCase "IfElse1" (testRoundTrip "if (1) {} else {}")+ , testCase "IfElse2" (testRoundTrip "if (1) x=1; else {}")++ , testCase "DoWhile1" (testRoundTrip "do {x=1} while (true);")+ , testCase "While1" (testRoundTrip "while(true);")++ , testCase "For1" (testRoundTrip "for(;;);")+ , testCase "For2" (testRoundTrip "for(x=1;x<10;x++);")++ , testCase "ForVar1" (testRoundTrip "for(var x;;);")+ , testCase "ForVar2" (testRoundTrip "for(var x=1;;);")+ , testCase "ForVar2" (testRoundTrip "for(var x;y;z){}")++ , testCase "ForIn1" (testRoundTrip "for(x in 5){}")++ , testCase "ForVarIn1" (testRoundTrip "for(var x in 5){}")++ , testCase "Var1" (testRoundTrip "var x=1;")+ , testCase "Var2" (testRoundTrip "const x=1,y=2;")+++ , testCase "Continue1" (testRoundTrip "continue;")+ , testCase "Continue2" (testRoundTrip "continue x;")++ , testCase "Break1" (testRoundTrip "break;")+ , testCase "Break2" (testRoundTrip "break x;")++ , testCase "Return1" (testRoundTrip "return;")+ , testCase "Return2" (testRoundTrip "return x;")++ , testCase "With1" (testRoundTrip "with (x) {};")++ , testCase "Labelled1" (testRoundTrip "abc:x=1")++ , testCase "Switch1" (testRoundTrip "switch (x) {}")+ , testCase "Switch2" (testRoundTrip "switch (x) {case 1:break;}")+ , testCase "Switch3" (testRoundTrip "switch (x) {case 0:\ncase 1:break;}")+ , testCase "Switch4" (testRoundTrip "switch (x) {default:break;}")+ , testCase "Switch5" (testRoundTrip "switch (x) {default:\ncase 1:break;}")++ , testCase "Throw1" (testRoundTrip "throw 1")++ , testCase "Try1" (testRoundTrip "try{}catch(a){}")+ , testCase "Try2" (testRoundTrip "try{}finally{}")+ , testCase "Try3" (testRoundTrip "try{}catch(a){}finally{}")++ , testCase "Try4" (testRoundTrip "try{}catch(a){}catch(b){}finally{}")+ , testCase "Try5" (testRoundTrip "try{}catch(a){}catch(b){}")+ , testCase "Try6" (testRoundTrip "try{}catch(a if true){}catch(b){}")++ , testCase "Function1" (testRoundTrip "function a(){}")+ , testCase "Function2" (testRoundTrip "function a(b,c){}")+++ , testCase "Comment1" (testRoundTrip "//blah\nx=1;//foo\na")++ , testCase "Comment2" (testRoundTrip "/*x=1\ny=2\n*/z=2;//foo\na")++ , testCase "min_100_animals1" (testRoundTrip "function Animal(name){if(!name)throw new Error('Must specify an animal name');this.name=name};Animal.prototype.toString=function(){return this.name};o=new Animal(\"bob\");o.toString()==\"bob\"")++ , testCase "min_100_animals2" (testRoundTrip "Animal=function(){return this.name};")++ , testCase "min_100_animals3" (testRoundTrip "if(a)x=1;y=2")++ , testCase "min_100_animals4" (testRoundTrip "if(a)x=a()y=2")++ , testCase "05_regex" (testRoundTrip "newlines=spaces.match(/\\n/g)")++ , testCase "05_regex2" (testRoundTrip "x=/\\n/g")++ , testCase "05_regex3" (testRoundTrip "x=i(/[?|^&(){}\\[\\]+\\-*\\/\\.]/g,\"\\\\$&\")")++ , testCase "05_regex4" (testRoundTrip "x=i(/^$/g,\"\\\\$&\")")++ , testCase "05_regex5" (testRoundTrip "if(/^[a-z]/.test(t)){consts+=t.toUpperCase();keywords[t]=i}else consts+=(/^\\W/.test(t)?opTypeNames[t]:t);")++ , testCase "if_semi" (testRoundTrip "if(x);x=1")++ , testCase "67_bob" (testRoundTrip "(match = /^\"(?:\\\\.|[^\"])*\"|^'(?:[^']|\\\\.)*'/(input))")++ , testCase "122_jsexec" (testRoundTrip "v = getValue(execute(n[0], x)) in getValue(execute(n[1], x));")++ , testCase "bug1a" (testRoundTrip "/* */\nfunction f() {\n/* */\n}")+ , testCase "bug1b" (testRoundTrip "/* **/\nfunction f() {\n/* */\n}")++ , testCase "unicode1-ws" (testRoundTrip "a \f\v\t\r\n=\x00a0\x1680\x180e\x2000\x2001\x2002\x2003\x2004\x2005\x2006\x2007\x2008\x2009\x200a\x2028\x2029\x202f\x205f\x3000\&1;")++ , testCase "unicode2-lt" (testRoundTrip "//comment\x000Ax=1;")+ , testCase "unicode3-lt" (testRoundTrip "//comment\x000Dx=1;")+ , testCase "unicode4-lt" (testRoundTrip "//comment\x2028x=1;")+ , testCase "unicode5-lt" (testRoundTrip "//comment\x2029x=1;")++ , testCase "unicode2" (testRoundTrip "àáâãäå = 1;")++ , testCase "unicode3" (testRoundTrip "$aà = 1;_b=2;\0065a=2")++ , testCase "unicode4" (testRoundTrip "x=\"àáâãäå\";y='\3012a\0068'")++ -- , testCase "unicode5" (testFile "./test/Unicode.js")++ , testCase "bug2.a" (testRoundTrip "function() {\nz = function /*z*/(o) {\nreturn r;\n};}")++ , testCase "bug2.b" (testRoundTrip "function() {\nz = function z(o) {\nreturn r;\n};}")++ -- https://github.com/alanz/hjsmin/issues/#issue/3+ , testCase "bug3" (testRoundTrip "var myLatlng = new google.maps.LatLng(56.8379100, 60.5806664);")++ -- https://github.com/alanz/hjsmin/issues/#issue/4+ , testCase "bug4" (testRoundTrip "/* * geolocation. пытаемся определить свое местоположение * если не получается то используем defaultLocation * @Param {object} map экземпляр карты * @Param {object LatLng} defaultLocation Координаты центра по умолчанию * @Param {function} callbackAfterLocation Фу-ия которая вызывается после * геолокации. Т.к запрос геолокации асинхронен */x")++ , testCase "02_sm.js" (testRoundTrip "{zero}\none1;two\n{three\nfour;five;\n{\nsix;{seven;}\n}\n}")++ , testCase "02_sm.js.2" (testRoundTrip "{zero}\nget;two\n{three\nfour;set;\n{\nsix;{seven;}\n}\n}")++ , testCase "loc1" (testRoundTrip "x = 1\n y=2;")++ -- https://github.com/alanz/language-javascript/issues/2+ , testCase "issue2" (testRoundTrip "var img = document.createElement('img');\nimg.src = \"mylogo.jpg\";\n$(img).click(function() {\n alert('clicked!');\n});")+++ -- Working in ECMASCRIPT 5.1 changes+ , testCase "lineTerminatorInString1" (testRoundTrip "x='abc\\\ndef';")+ , testCase "lineTerminatorInString2" (testRoundTrip "x=\"abc\\\ndef\";")+ , testCase "lineTerminatorInString3" (testRoundTrip "x=\"abc\\\rdef\";")+ , testCase "lineTerminatorInString4" (testRoundTrip "x=\"abc\\\x2028 def\";")+ , testCase "lineTerminatorInString5" (testRoundTrip "x=\"abc\\\x2029 def\";")+ , testCase "lineTerminatorInString6" (testRoundTrip "x=\"abc\\\r\ndef\";")+++ -- https://github.com/alanz/language-javascript/issues/4+ , testCase "issue4ok" (testRoundTrip "var k = {\ny: somename\n}")+ , testCase "issue4bug1" (testRoundTrip "var k = {\ny: code\n}")+ , testCase "issue4bug2" (testRoundTrip "var k = {\ny: mode\n}")++ -- https://github.com/alanz/language-javascript/issues/5+ , testCase "issue5bug1" (testRoundTrip "x = { y: 1e8 }")+ , testCase "issue5ok2" (testRoundTrip "{ y: 1e8 }")+ , testCase "issue5ok3" (testRoundTrip "{ y: 18 }")+ , testCase "issue5ok4" (testRoundTrip "x = { y: 18 }")++ -- function body+ , testCase "functionbody" (testRoundTrip "function foo(a,b,c)\n{x=1;}")+ , testCase "functionexpression" (testRoundTrip "function foo(a,b,c)\n{x=1;}")++ , testCase "fn1" (testRoundTrip "function foo() { return 5; }")+ , testCase "fn2" (testRoundTrip "var foo = function() { return 5; }")+ , testCase "fn3" (testRoundTrip "var foo = function foo() { return 5; }")++ ]++-- --------------------------------------------------------------------- -- Test utilities -testLiteral literal expected = expected @=? (showStrippedMaybe $ parseUsing parseLiteral literal "src")+testRoundTrip str = str @=? (renderToString $ readJs str) -testPE str expected = expected @=? (showStrippedMaybe $ parseUsing parsePrimaryExpression str "src")+testLiteral :: String -> String -> Assertion+testLiteral literal expected = expected @=? (showStrippedMaybe $ parseUsing parseLiteral literal "src")+testLiteralC :: String -> String -> Assertion+testLiteralC literal expected = expected @=? (show $ parseUsing parseLiteral literal "src") -testStmt str expected = expected @=? (showStrippedMaybe $ parseUsing parseStatement str "src") +testPE :: String -> String -> Assertion+testPE str expected = expected @=? (showStrippedMaybe $ parseUsing parsePrimaryExpression str "src")+testPEC :: String -> String -> Assertion+testPEC str expected = expected @=? (show $ parseUsing parsePrimaryExpression str "src")++testStmt :: String -> String -> Assertion+testStmt str expected = expected @=? (showStrippedMaybe $ parseUsing parseStatement str "src")+testStmtC :: String -> String -> Assertion+testStmtC str expected = expected @=? (show $ parseUsing parseStatement str "src")+ --testProg str expected = expected @=? (show $ parseUsing parseProgram str "src")-testProg str expected = expected @=? (showStrippedMaybe $ parseUsing parseProgram str "src")+testProg :: String -> String -> Assertion+testProg str expected = expected @=? (showStrippedMaybe $ parseUsing parseProgram str "src")+testProgC :: String -> String -> Assertion+testProgC str expected = expected @=? (show $ parseUsing parseProgram str "src") +testProgUn :: String -> String -> Assertion testProgUn str expected = expected @=? (show $ parseUsing parseProgram str "src") +testFile :: FilePath -> String -> IO () testFile fileName expected = do res <- parseFile fileName -- expected @=? (liftM show $ parseFile fileName)
src/Language/JavaScript/Parser.hs view
@@ -6,23 +6,23 @@ , PA.showStripped , PA.showStrippedMaybe , JSNode(..)- , SrcSpan(..)- , AlexSpan(..) , Node(..)- , ParseError(..)+ -- , ParseError(..) -- Source locations- , AlexPosn(..)- -- ParserMonad- , P- , ParseState (..)+ , TokenPosn(..)+ , tokenPosnEmpty+ -- * Pretty Printing+ , renderJS+ , renderToString ) where import Language.JavaScript.Parser.AST import Language.JavaScript.Parser.ParseError import qualified Language.JavaScript.Parser.Parser as PA-import Language.JavaScript.Parser.ParserMonad+--import Language.JavaScript.Parser.ParserMonad import Language.JavaScript.Parser.SrcLocation+import Language.JavaScript.Pretty.Printer -- EOF
src/Language/JavaScript/Parser/AST.hs view
@@ -3,73 +3,82 @@ ( Node (..) , JSNode(..)- , SrcSpan (..)- , AlexPosn(..)+ -- , TokenPosn (..) , showStripped ) where import Data.Data import Data.List-import Language.JavaScript.Parser.SrcLocation (SrcSpan(..), AlexPosn(..))+import Language.JavaScript.Parser.SrcLocation (TokenPosn(..))+import Language.JavaScript.Parser.Token -- --------------------------------------------------------------------- -data JSNode = NS Node SrcSpan+-- |The JSNode is the building block of the AST.+-- Each has a syntactic part 'Node'. In addition, the leaf elements+-- (terminals) have a position 'TokenPosn', as well as an array of comments+-- and/or whitespace that was collected while parsing.++data JSNode = NN Node -- ^Non Terminal node, does not have any position or comment information+ | NT Node TokenPosn [CommentAnnotation] -- ^Terminal node, including position and comment/whitespace information 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- | 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- | JSIfElse JSNode JSNode JSNode- | JSLabelled JSNode JSNode+data Node =+ -- | Terminals+ JSIdentifier String+ | JSDecimal String | JSLiteral String- | 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]- | JSStatementBlock JSNode- | JSStatementList [JSNode]+ | JSHexInteger String | JSStringLiteral Char [Char]- | JSSwitch JSNode [JSNode]- | JSThrow JSNode- | JSTry JSNode [JSNode]- | JSUnary String- | JSVarDecl JSNode [JSNode]- | JSVariables String [JSNode]- | JSWhile JSNode JSNode- | JSWith JSNode [JSNode]+ | JSRegEx String++ -- | Non Terminals++ | JSArguments JSNode [JSNode] JSNode -- ^lb, args, rb+ | JSArrayLiteral JSNode [JSNode] JSNode -- ^lb, contents, rb+ | JSBlock [JSNode] JSNode [JSNode] -- ^optional lb,block,optional rb+ | JSBreak JSNode [JSNode] JSNode -- ^break, optional identifier, autosemi+ | JSCallExpression String [JSNode] [JSNode] [JSNode] -- ^type : ., (), []; opening [ or ., contents, closing+ | JSCase JSNode JSNode JSNode JSNode -- ^case,expr,colon,stmtlist+ | JSCatch JSNode JSNode JSNode [JSNode] JSNode JSNode -- ^ catch,lb,ident,[if,expr],rb,block+ | JSContinue JSNode [JSNode] JSNode -- ^continue,optional identifier,autosemi+ | JSDefault JSNode JSNode JSNode -- ^default,colon,stmtlist+ | JSDoWhile JSNode JSNode JSNode JSNode JSNode JSNode JSNode -- ^do,stmt,while,lb,expr,rb,autosemi+ | JSElision JSNode -- ^comma+ | JSExpression [JSNode] -- ^expression components+ | JSExpressionBinary String [JSNode] JSNode [JSNode] -- ^what, lhs, op, rhs+ | JSExpressionParen JSNode JSNode JSNode -- ^lb,expression,rb+ | JSExpressionPostfix String [JSNode] JSNode -- ^type, expression, operator+ | JSExpressionTernary [JSNode] JSNode [JSNode] JSNode [JSNode] -- ^cond, ?, trueval, :, falseval+ | JSFinally JSNode JSNode -- ^finally,block+ | JSFor JSNode JSNode [JSNode] JSNode [JSNode] JSNode [JSNode] JSNode JSNode -- ^for,lb,expr,semi,expr,semi,expr,rb.stmt+ | JSForIn JSNode JSNode [JSNode] JSNode JSNode JSNode JSNode -- ^for,lb,expr,in,expr,rb,stmt+ | JSForVar JSNode JSNode JSNode [JSNode] JSNode [JSNode] JSNode [JSNode] JSNode JSNode -- ^for,lb,var,vardecl,semi,expr,semi,expr,rb,stmt+ | JSForVarIn JSNode JSNode JSNode JSNode JSNode JSNode JSNode JSNode -- ^for,lb,var,vardecl,in,expr,rb,stmt+ | JSFunction JSNode JSNode JSNode [JSNode] JSNode JSNode JSNode JSNode -- ^fn,name, lb,parameter list,rb,lb,body,rb+ | JSFunctionBody [JSNode] -- ^body+ | JSFunctionExpression JSNode [JSNode] JSNode [JSNode] JSNode JSNode JSNode JSNode -- ^fn,[name],lb, parameter list,rb,lb, body,rb+ | JSIf JSNode JSNode JSNode JSNode JSNode [JSNode] -- ^if,(,expr,),stmt,optional rest+ | JSLabelled JSNode JSNode JSNode -- ^identifier,colon,stmt+ | JSMemberDot [JSNode] JSNode JSNode -- ^firstpart, dot, name+ | JSMemberSquare [JSNode] JSNode JSNode JSNode -- ^firstpart, lb, expr, rb+ | JSObjectLiteral JSNode [JSNode] JSNode -- ^lbrace contents rbrace+ | JSOperator JSNode -- ^opnode+ | JSPropertyAccessor JSNode JSNode JSNode [JSNode] JSNode JSNode JSNode JSNode -- ^(get|set), name, lb, params, rb, lb, functionbody, rb+ | JSPropertyNameandValue JSNode JSNode [JSNode] -- ^name, colon, value+ | JSReturn JSNode [JSNode] JSNode -- ^return,optional expression,autosemi+ | JSSourceElements [JSNode] -- ^source elements+ | JSSourceElementsTop [JSNode] -- ^source elements+ | JSStatementBlock JSNode JSNode JSNode -- ^lb,block,rb+ | JSStatementList [JSNode] -- ^statements+ | JSSwitch JSNode JSNode JSNode JSNode [JSNode] -- ^switch,lb,expr,rb,stmt+ | JSThrow JSNode JSNode -- ^throw val+ | JSTry JSNode JSNode [JSNode] -- ^try,block,rest+ | JSUnary String JSNode -- ^type, operator+ | JSVarDecl JSNode [JSNode] -- ^identifier, optional initializer+ | JSVariables JSNode [JSNode] JSNode -- ^var|const, decl, autosemi+ | JSWhile JSNode JSNode JSNode JSNode JSNode -- ^while,lb,expr,rb,stmt+ | JSWith JSNode JSNode JSNode JSNode [JSNode] -- ^with,lb,expr,rb,stmt list deriving (Show, Eq, Read, Data, Typeable) -- Strip out the location info, leaving the original JSNode text representation@@ -78,69 +87,64 @@ -- Alias for internal use ss :: JSNode -> String-ss (NS node _) = showStrippedNode node+ss (NN node ) = showStrippedNode node+ss (NT 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 (JSArguments _lb xs _rb) = "JSArguments " ++ sss xs+showStrippedNode (JSArrayLiteral _lb xs _rb) = "JSArrayLiteral " ++ sss xs+showStrippedNode (JSBlock _lb x _rb) = "JSBlock (" ++ ss x ++ ")"+showStrippedNode (JSBreak _b x1s as) = "JSBreak " ++ sss x1s ++ " " ++ ss as+showStrippedNode (JSCallExpression s _os xs _cs) = "JSCallExpression " ++ show s ++ " " ++ sss xs+showStrippedNode (JSCase _ca x1 _c x2) = "JSCase (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"+showStrippedNode (JSCatch _c _lb x1 x2s _rb x3) = "JSCatch (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")"+showStrippedNode (JSContinue _c xs as) = "JSContinue " ++ sss xs ++ " " ++ ss as 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 (JSDefault _d _c x) = "JSDefault (" ++ ss x ++ ")"+showStrippedNode (JSDoWhile _d x1 _w _lb x2 _rb x3) = "JSDoWhile (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"+showStrippedNode (JSElision c) = "JSElision " ++ ss c 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 (JSExpressionBinary s x2s _op x3s) = "JSExpressionBinary " ++ show s ++ " " ++ sss x2s ++ " " ++ sss x3s+showStrippedNode (JSExpressionParen _lp x _rp) = "JSExpressionParen (" ++ ss x ++ ")"+showStrippedNode (JSExpressionPostfix s xs _op) = "JSExpressionPostfix " ++ show s ++ " " ++ sss xs+showStrippedNode (JSExpressionTernary x1s _q x2s _c x3s) = "JSExpressionTernary " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s+showStrippedNode (JSFinally _f x) = "JSFinally (" ++ ss x ++ ")"+showStrippedNode (JSFor _f _lb x1s _s1 x2s _s2 x3s _rb x4) = "JSFor " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s ++ " (" ++ ss x4 ++ ")"+showStrippedNode (JSForIn _f _lb x1s _i x2 _rb x3) = "JSForIn " ++ sss x1s ++ " (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"+showStrippedNode (JSForVar _f _lb _v x1s _s1 x2s _s2 x3s _rb x4) = "JSForVar " ++ sss x1s ++ " " ++ sss x2s ++ " " ++ sss x3s ++ " (" ++ ss x4 ++ ")"+showStrippedNode (JSForVarIn _f _lb _v x1 _i x2 _rb x3) = "JSForVarIn (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ ss x3 ++ ")"+showStrippedNode (JSFunction _f x1 _lb x2s _rb _lb2 x3 _rb2) = "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 (JSFunctionExpression _f x1s _lb x2s _rb _lb2 x3 _rb2) = "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 (JSIf _i _lb x1 _rb x2 x3s) = "JSIf (" ++ ss x1 ++ ") (" ++ ss x2 ++ ") (" ++ sss x3s ++ ")"+showStrippedNode (JSLabelled x1 _c 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 (JSMemberDot x1s _d x2 ) = "JSMemberDot " ++ sss x1s ++ " (" ++ ss x2 ++ ")"+showStrippedNode (JSMemberSquare x1s _lb x2 _rb) = "JSMemberSquare " ++ sss x1s ++ " (" ++ ss x2 ++ ")"+showStrippedNode (JSObjectLiteral _lb xs _rb) = "JSObjectLiteral " ++ sss xs+showStrippedNode (JSOperator n) = "JSOperator " ++ ss n+showStrippedNode (JSPropertyNameandValue x1 _colon x2s) = "JSPropertyNameandValue (" ++ ss x1 ++ ") " ++ sss x2s+showStrippedNode (JSPropertyAccessor s x1 _lb1 x2s _rb1 _lb2 x3 _rb2) = "JSPropertyAccessor " ++ show s ++ " (" ++ ss x1 ++ ") " ++ sss x2s ++ " (" ++ ss x3 ++ ")" showStrippedNode (JSRegEx s) = "JSRegEx " ++ show s-showStrippedNode (JSReturn xs) = "JSReturn " ++ sss xs+showStrippedNode (JSReturn _r xs as) = "JSReturn " ++ sss xs ++ " " ++ ss as showStrippedNode (JSSourceElements xs) = "JSSourceElements " ++ sss xs showStrippedNode (JSSourceElementsTop xs) = "JSSourceElementsTop " ++ sss xs-showStrippedNode (JSStatementBlock x) = "JSStatementBlock (" ++ ss x ++ ")"+showStrippedNode (JSStatementBlock _lb x _rb) = "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 (JSSwitch _s _lb x _rb x2s) = "JSSwitch (" ++ ss x ++ ") " ++ sss x2s+showStrippedNode (JSThrow _t x) = "JSThrow (" ++ ss x ++ ")"+showStrippedNode (JSTry _t x1 x2s) = "JSTry (" ++ ss x1 ++ ") " ++ sss x2s+showStrippedNode (JSUnary s _x) = "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+showStrippedNode (JSVariables n xs _as) = "JSVariables " ++ ss n ++ " " ++ sss xs+showStrippedNode (JSWhile _w _lb x1 _rb x2) = "JSWhile (" ++ ss x1 ++ ") (" ++ ss x2 ++ ")"+showStrippedNode (JSWith _w _lb x1 _rb x2s) = "JSWith (" ++ ss x1 ++ ") " ++ sss x2s -- EOF
src/Language/JavaScript/Parser/Grammar5.y view
@@ -4,30 +4,34 @@ , parseLiteral , parsePrimaryExpression , parseStatement+ -- debug+ , fp ) where -import Control.Monad.Error.Class (throwError)+-- import Control.Monad.Error.Class (throwError) import Data.Char import Language.JavaScript.Parser.Lexer+import Language.JavaScript.Parser.ParseError import Language.JavaScript.Parser.ParserMonad import Language.JavaScript.Parser.SrcLocation+import Language.JavaScript.Parser.Token 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+%name parseLiteral LiteralMain+%name parsePrimaryExpression PrimaryExpressionMain+%name parseStatement StatementMain %tokentype { Token } %error { parseError }-%monad { P } { thenP } { returnP }+%monad { Alex } { >>= } { return } %lexer { lexCont } { EOFToken {} } -%token +%token ';' { SemiColonToken {} } ',' { CommaToken {} }@@ -67,7 +71,7 @@ '(' { LeftParenToken {} } ')' { RightParenToken {} } '@*/' { CondcommentEndToken {} }- + 'break' { BreakToken {} } 'case' { CaseToken {} } 'catch' { CatchToken {} }@@ -101,8 +105,8 @@ 'void' { VoidToken {} } 'while' { WhileToken {} } 'with' { WithToken {} }- - ++ 'ident' { IdentifierToken {} } 'decimal' { DecimalToken {} } 'hexinteger' { HexIntegerToken {} }@@ -112,61 +116,214 @@ 'future' { FutureToken {} } + 'tail' { TailToken {} }+ 'eof' { EOFToken {} } + %% +-- ---------------------------------------------------------------------+-- Sort out automatically inserted semi-colons --- ----------------------------------------------------------------------- Start of GOLD Grammar for Javascript, used as a base--- --------------------------------------------------------------------+AutoSemi :: { AST.JSNode }+AutoSemi : ';' { AST.NT (AST.JSLiteral ";") (ss $1) (gc $1)}+ | { AST.NT (AST.JSLiteral "") tokenPosnEmpty []} --- "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+-- Helpers --- {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]+LParen :: { AST.JSNode }+LParen : '(' { fp (AST.NT (AST.JSLiteral "(") (ss $1) (gc $1))} --- ! ------------------------------------------------- Terminals+RParen :: { AST.JSNode }+RParen : ')' { fp (AST.NT (AST.JSLiteral ")") (ss $1) (gc $1))} --- Identifier = {ID Head}{ID Tail}*--- StringLiteral = '"' ( {String Chars1} | '\' {Printable} )* '"' | '' ( {String Chars2} | '\' {Printable} )* '' --- HexIntegerLiteral = '0x' {Hex Digit}++LBrace :: { AST.JSNode }+LBrace : '{' { fp (AST.NT (AST.JSLiteral "{") (ss $1) (gc $1))} --- 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}++RBrace :: { AST.JSNode }+RBrace : '}' { fp (AST.NT (AST.JSLiteral "}") (ss $1) (gc $1))} --- Comment Start = '/*'--- Comment End = '*/'--- Comment Line = '//' +LSquare :: { AST.JSNode }+LSquare : '[' { fp (AST.NT (AST.JSLiteral "[") (ss $1) (gc $1))} --- ! ------------------------------------------------- Rules+RSquare :: { AST.JSNode }+RSquare : ']' { fp (AST.NT (AST.JSLiteral "]") (ss $1) (gc $1))} +Comma :: { AST.JSNode }+Comma : ',' { fp (AST.NT (AST.JSLiteral ",") (ss $1) (gc $1))} +Colon :: { AST.JSNode }+Colon : ':' { fp (AST.NT (AST.JSLiteral ":") (ss $1) (gc $1))} --- ------------------------------------------------------------------------ Sort out automatically inserted semi-colons+Semi :: { AST.JSNode }+Semi : ';' { fp (AST.NT (AST.JSLiteral ";") (ss $1) (gc $1))} -AutoSemi :: { AST.JSNode }-AutoSemi : ';' { AST.NS (AST.JSLiteral ";") (ss $1)}- | { AST.NS (AST.JSLiteral "") SpanEmpty }- --- ---------------------------------------------------------------------+Dot :: { AST.JSNode }+Dot : '.' { fp (AST.NT (AST.JSLiteral ".") (ss $1) (gc $1))} +Increment :: { AST.JSNode }+Increment : '++' { fp (AST.NT (AST.JSLiteral "++") (ss $1) (gc $1))}++Decrement :: { AST.JSNode }+Decrement : '--' { fp (AST.NT (AST.JSLiteral "--") (ss $1) (gc $1))}++Delete :: { AST.JSNode }+Delete : 'delete' { fp (AST.NT (AST.JSLiteral "delete") (ss $1) (gc $1))}++Void :: { AST.JSNode }+Void : 'void' { fp (AST.NT (AST.JSLiteral "void") (ss $1) (gc $1))}++Typeof :: { AST.JSNode }+Typeof : 'typeof' { fp (AST.NT (AST.JSLiteral "typeof") (ss $1) (gc $1))}++Plus :: { AST.JSNode }+Plus : '+' { fp (AST.NT (AST.JSLiteral "+") (ss $1) (gc $1))}++Minus :: { AST.JSNode }+Minus : '-' { fp (AST.NT (AST.JSLiteral "-") (ss $1) (gc $1))}++Tilde :: { AST.JSNode }+Tilde : '~' { fp (AST.NT (AST.JSLiteral "~") (ss $1) (gc $1))}++Not :: { AST.JSNode }+Not : '!' { fp (AST.NT (AST.JSLiteral "!") (ss $1) (gc $1))}++Mul :: { AST.JSNode }+Mul : '*' { fp (AST.NT (AST.JSLiteral "*") (ss $1) (gc $1))}++Div :: { AST.JSNode }+Div : '/' { fp (AST.NT (AST.JSLiteral "/") (ss $1) (gc $1))}++Mod :: { AST.JSNode }+Mod : '%' { fp (AST.NT (AST.JSLiteral "%") (ss $1) (gc $1))}++Lsh :: { AST.JSNode }+Lsh : '<<' { fp (AST.NT (AST.JSLiteral "<<") (ss $1) (gc $1))}++Rsh :: { AST.JSNode }+Rsh : '>>' { fp (AST.NT (AST.JSLiteral ">>") (ss $1) (gc $1))}++Ursh :: { AST.JSNode }+Ursh : '>>>' { fp (AST.NT (AST.JSLiteral ">>>") (ss $1) (gc $1))}++Le :: { AST.JSNode }+Le : '<=' { fp (AST.NT (AST.JSLiteral "<=") (ss $1) (gc $1))}++Lt :: { AST.JSNode }+Lt : '<' { fp (AST.NT (AST.JSLiteral "<") (ss $1) (gc $1))}++Ge :: { AST.JSNode }+Ge : '>=' { fp (AST.NT (AST.JSLiteral ">=") (ss $1) (gc $1))}++Gt :: { AST.JSNode }+Gt : '>' { fp (AST.NT (AST.JSLiteral ">") (ss $1) (gc $1))}++In :: { AST.JSNode }+In : 'in' { fp (AST.NT (AST.JSLiteral "in") (ss $1) (gc $1))}++Instanceof :: { AST.JSNode }+Instanceof : 'instanceof' { fp (AST.NT (AST.JSLiteral "instanceof") (ss $1) (gc $1))}++StrictEq :: { AST.JSNode }+StrictEq : '===' { fp (AST.NT (AST.JSLiteral "===") (ss $1) (gc $1))}++Equal :: { AST.JSNode }+Equal : '==' { fp (AST.NT (AST.JSLiteral "==") (ss $1) (gc $1))}++StrictNe :: { AST.JSNode }+StrictNe : '!==' { fp (AST.NT (AST.JSLiteral "!==") (ss $1) (gc $1))}++Ne :: { AST.JSNode }+Ne : '!=' { fp (AST.NT (AST.JSLiteral "!=") (ss $1) (gc $1))}++Or :: { AST.JSNode }+Or : '||' { fp (AST.NT (AST.JSLiteral "||") (ss $1) (gc $1))}++And :: { AST.JSNode }+And : '&&' { fp (AST.NT (AST.JSLiteral "&&") (ss $1) (gc $1))}++BitOr :: { AST.JSNode }+BitOr : '|' { fp (AST.NT (AST.JSLiteral "|") (ss $1) (gc $1))}++BitAnd :: { AST.JSNode }+BitAnd : '&' { fp (AST.NT (AST.JSLiteral "&") (ss $1) (gc $1))}++BitXor :: { AST.JSNode }+BitXor : '^' { fp (AST.NT (AST.JSLiteral "^") (ss $1) (gc $1))}++Hook :: { AST.JSNode }+Hook : '?' { fp (AST.NT (AST.JSLiteral "?") (ss $1) (gc $1))}++SimpleAssign :: { AST.JSNode }+SimpleAssign : '=' { fp (AST.NT (AST.JSLiteral "=") (ss $1) (gc $1))}++Assign :: { AST.JSNode }+Assign : 'assign' { fp (AST.NT (AST.JSLiteral (token_literal $1)) (ss $1) (gc $1))}++Var :: { AST.JSNode }+Var : 'var' { fp (AST.NT (AST.JSLiteral "var") (ss $1) (gc $1))}++Const :: { AST.JSNode }+Const : 'const' { fp (AST.NT (AST.JSLiteral "const") (ss $1) (gc $1))}++If :: { AST.JSNode }+If : 'if' { fp (AST.NT (AST.JSLiteral "if") (ss $1) (gc $1))}++Else :: { AST.JSNode }+Else : 'else' { fp (AST.NT (AST.JSLiteral "else") (ss $1) (gc $1))}++Do :: { AST.JSNode }+Do : 'do' { fp (AST.NT (AST.JSLiteral "do") (ss $1) (gc $1))}++While :: { AST.JSNode }+While : 'while' { fp (AST.NT (AST.JSLiteral "while") (ss $1) (gc $1))}++For :: { AST.JSNode }+For : 'for' { fp (AST.NT (AST.JSLiteral "for") (ss $1) (gc $1))}++Continue :: { AST.JSNode }+Continue : 'continue' { fp (AST.NT (AST.JSLiteral "continue") (ss $1) (gc $1))}++Break :: { AST.JSNode }+Break : 'break' { fp (AST.NT (AST.JSLiteral "break") (ss $1) (gc $1))}++Return :: { AST.JSNode }+Return : 'return' { fp (AST.NT (AST.JSLiteral "return") (ss $1) (gc $1))}++With :: { AST.JSNode }+With : 'with' { fp (AST.NT (AST.JSLiteral "with") (ss $1) (gc $1))}++Switch :: { AST.JSNode }+Switch : 'switch' { fp (AST.NT (AST.JSLiteral "switch") (ss $1) (gc $1))}++Case :: { AST.JSNode }+Case : 'case' { fp (AST.NT (AST.JSLiteral "case") (ss $1) (gc $1))}++Default :: { AST.JSNode }+Default : 'default' { fp (AST.NT (AST.JSLiteral "default") (ss $1) (gc $1))}++Throw :: { AST.JSNode }+Throw : 'throw' { fp (AST.NT (AST.JSLiteral "throw") (ss $1) (gc $1))}++Try :: { AST.JSNode }+Try : 'try' { fp (AST.NT (AST.JSLiteral "try") (ss $1) (gc $1))}++CatchL :: { AST.JSNode }+CatchL : 'catch' { fp (AST.NT (AST.JSLiteral "catch") (ss $1) (gc $1))}++FinallyL :: { AST.JSNode }+FinallyL : 'finally' { fp (AST.NT (AST.JSLiteral "finally") (ss $1) (gc $1))}++Function :: { AST.JSNode }+Function : 'function' { fp (AST.NT (AST.JSLiteral "function") (ss $1) (gc $1))}++Eof :: { AST.JSNode }+Eof : 'tail' { fp (AST.NT (AST.JSLiteral "") (ss $1) (gc $1))}+ -- Literal :: See 7.8 -- NullLiteral -- BooleanLiteral@@ -177,27 +334,27 @@ | BooleanLiteral {$1} | NumericLiteral {$1} | StringLiteral {$1}- | RegularExpressionLiteral {$1} + | RegularExpressionLiteral {$1} NullLiteral :: { AST.JSNode }-NullLiteral : 'null' { AST.NS (AST.JSLiteral "null") (ss $1) }+NullLiteral : 'null' { fp (AST.NT (AST.JSLiteral "null") (ss $1) (gc $1))} BooleanLiteral :: { AST.JSNode }-BooleanLiteral : 'true' { AST.NS (AST.JSLiteral "true") (ss $1)}- | 'false' { AST.NS (AST.JSLiteral "false") (ss $1)}+BooleanLiteral : 'true' { fp (AST.NT (AST.JSLiteral "true") (ss $1) (gc $1)) }+ | 'false' { fp (AST.NT (AST.JSLiteral "false") (ss $1) (gc $1)) } -- <Numeric Literal> ::= DecimalLiteral -- | HexIntegerLiteral NumericLiteral :: { AST.JSNode }-NumericLiteral : 'decimal' { AST.NS (AST.JSDecimal (token_literal $1)) (ss $1)}- | 'hexinteger' { AST.NS (AST.JSHexInteger (token_literal $1)) (ss $1)}+NumericLiteral : 'decimal' { fp (AST.NT (AST.JSDecimal (token_literal $1)) (ss $1) (gc $1))}+ | 'hexinteger' { fp (AST.NT (AST.JSHexInteger (token_literal $1)) (ss $1) (gc $1)) } StringLiteral :: { AST.JSNode }-StringLiteral : 'string' { AST.NS (AST.JSStringLiteral (token_delimiter $1) (token_literal $1)) (ss $1)}+StringLiteral : 'string' { fp (AST.NT (AST.JSStringLiteral (token_delimiter $1) (token_literal $1)) (ss $1) (gc $1)) } --- <Regular Expression Literal> ::= RegExp +-- <Regular Expression Literal> ::= RegExp RegularExpressionLiteral :: { AST.JSNode }-RegularExpressionLiteral : 'regex' { AST.NS (AST.JSRegEx (token_literal $1)) (ss $1)}+RegularExpressionLiteral : 'regex' { fp (AST.NT (AST.JSRegEx (token_literal $1)) (ss $1) (gc $1)) } -- PrimaryExpression : See 11.1 -- this@@ -207,60 +364,60 @@ -- ObjectLiteral -- ( Expression ) PrimaryExpression :: { AST.JSNode }-PrimaryExpression : 'this' { AST.NS (AST.JSLiteral "this") (ss $1) }+PrimaryExpression : 'this' { fp (AST.NT (AST.JSLiteral "this") (ss $1) (gc $1))} | Identifier { $1 {- PrimaryExpression1 -}} | Literal { $1 {- PrimaryExpression2 -}} | ArrayLiteral { $1 {- PrimaryExpression3 -}} | ObjectLiteral { $1 {- PrimaryExpression4 -}}- | '(' Expression ')' { AST.NS (AST.JSExpressionParen $2) (ss $1) }- + | LParen Expression RParen { fp (AST.NN (AST.JSExpressionParen $1 $2 $3)) }+ -- Identifier :: See 7.6 -- IdentifierName but not ReservedWord -- IdentifierName :: See 7.6 -- IdentifierStart -- IdentifierName IdentifierPart Identifier :: { AST.JSNode }-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) } +Identifier : 'ident' { (AST.NT (AST.JSIdentifier (token_literal $1)) (ss $1) (gc $1))}+ | 'get' { (AST.NT (AST.JSIdentifier "get") (ss $1) (gc $1))}+ | 'set' { (AST.NT (AST.JSIdentifier "set") (ss $1) (gc $1))} -- TODO: make this include any reserved word too, including future ones IdentifierName :: { AST.JSNode } IdentifierName : Identifier {$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) } + | 'break' { fp (AST.NT (AST.JSIdentifier "break") (ss $1) (gc $1))}+ | 'case' { fp (AST.NT (AST.JSIdentifier "case") (ss $1) (gc $1))}+ | 'catch' { fp (AST.NT (AST.JSIdentifier "catch") (ss $1) (gc $1))}+ | 'const' { fp (AST.NT (AST.JSIdentifier "const") (ss $1) (gc $1))}+ | 'continue' { fp (AST.NT (AST.JSIdentifier "continue") (ss $1) (gc $1))}+ | 'debugger' { fp (AST.NT (AST.JSIdentifier "debugger") (ss $1) (gc $1))}+ | 'default' { fp (AST.NT (AST.JSIdentifier "default") (ss $1) (gc $1))}+ | 'delete' { fp (AST.NT (AST.JSIdentifier "delete") (ss $1) (gc $1))}+ | 'do' { fp (AST.NT (AST.JSIdentifier "do") (ss $1) (gc $1))}+ | 'else' { fp (AST.NT (AST.JSIdentifier "else") (ss $1) (gc $1))}+ | 'enum' { fp (AST.NT (AST.JSIdentifier "enum") (ss $1) (gc $1))}+ | 'false' { fp (AST.NT (AST.JSIdentifier "false") (ss $1) (gc $1))}+ | 'finally' { fp (AST.NT (AST.JSIdentifier "finally") (ss $1) (gc $1))}+ | 'for' { fp (AST.NT (AST.JSIdentifier "for") (ss $1) (gc $1))}+ | 'function' { fp (AST.NT (AST.JSIdentifier "function") (ss $1) (gc $1))}+ | 'get' { fp (AST.NT (AST.JSIdentifier "get") (ss $1) (gc $1))}+ | 'if' { fp (AST.NT (AST.JSIdentifier "if") (ss $1) (gc $1))}+ | 'in' { fp (AST.NT (AST.JSIdentifier "in") (ss $1) (gc $1))}+ | 'instanceof' { fp (AST.NT (AST.JSIdentifier "instanceof") (ss $1) (gc $1))}+ | 'new' { fp (AST.NT (AST.JSIdentifier "new") (ss $1) (gc $1))}+ | 'null' { fp (AST.NT (AST.JSIdentifier "null") (ss $1) (gc $1))}+ | 'return' { fp (AST.NT (AST.JSIdentifier "return") (ss $1) (gc $1))}+ | 'set' { fp (AST.NT (AST.JSIdentifier "set") (ss $1) (gc $1))}+ | 'switch' { fp (AST.NT (AST.JSIdentifier "switch") (ss $1) (gc $1))}+ | 'this' { fp (AST.NT (AST.JSIdentifier "this") (ss $1) (gc $1))}+ | 'throw' { fp (AST.NT (AST.JSIdentifier "throw") (ss $1) (gc $1))}+ | 'true' { fp (AST.NT (AST.JSIdentifier "true") (ss $1) (gc $1))}+ | 'try' { fp (AST.NT (AST.JSIdentifier "try") (ss $1) (gc $1))}+ | 'typeof' { fp (AST.NT (AST.JSIdentifier "typeof") (ss $1) (gc $1))}+ | 'var' { fp (AST.NT (AST.JSIdentifier "var") (ss $1) (gc $1))}+ | 'void' { fp (AST.NT (AST.JSIdentifier "void") (ss $1) (gc $1))}+ | 'while' { fp (AST.NT (AST.JSIdentifier "while") (ss $1) (gc $1))}+ | 'with' { fp (AST.NT (AST.JSIdentifier "with") (ss $1) (gc $1))}+ | 'future' { fp (AST.NT (AST.JSIdentifier (token_literal $1)) (ss $1) (gc $1))} @@ -269,47 +426,51 @@ -- [ ElementList ] -- [ ElementList , Elisionopt ] ArrayLiteral :: { AST.JSNode }-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) }+ArrayLiteral : LSquare RSquare { fp (AST.NN (AST.JSArrayLiteral $1 [] $2))}+ | LSquare Elision RSquare { fp (AST.NN (AST.JSArrayLiteral $1 $2 $3))}+ | LSquare ElementList RSquare { fp (AST.NN (AST.JSArrayLiteral $1 $2 $3))}+ | LSquare ElementList Comma Elision RSquare { fp (AST.NN (AST.JSArrayLiteral $1 ($2++[$3]++$4) $5))}+ | LSquare ElementList Comma RSquare { fp (AST.NN (AST.JSArrayLiteral $1 ($2++[$3]) $4))} ++ -- ElementList : See 11.1.4 -- Elisionopt AssignmentExpression -- ElementList , Elisionopt AssignmentExpression ElementList :: { [AST.JSNode] } ElementList : Elision AssignmentExpression { (($1)++($2)) {- ElementList -}}- | AssignmentExpression { $1 {- 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 -}}+ | AssignmentExpression { $1 {- ElementList -}}+ | ElementList Comma Elision AssignmentExpression { (($1)++[fp (AST.NN (AST.JSElision $2))]++($3)++($4)) {- ElementList -}}+ | ElementList Comma AssignmentExpression { (($1)++[fp (AST.NN (AST.JSElision $2))]++($3)) {- ElementList -}} + -- Elision : See 11.1.4 -- , -- Elision , Elision :: { [AST.JSNode] }-Elision : ',' { [AST.NS (AST.JSElision []) SpanEmpty] }- | Elision ',' { ($1 ++ [(AST.NS (AST.JSElision []) SpanEmpty)]) }+Elision : Comma { [ fp (AST.NN (AST.JSElision $1))] }+ | Elision Comma { ($1 ++ [fp (AST.NN (AST.JSElision $2))]) } -- ObjectLiteral : See 11.1.5 -- { } -- { PropertyNameAndValueList } -- { PropertyNameAndValueList , } ObjectLiteral :: { AST.JSNode }-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)} +ObjectLiteral : LBrace RBrace { fp (AST.NN (AST.JSObjectLiteral $1 [] $2) )}+ | LBrace PropertyNameandValueList RBrace { fp (AST.NN (AST.JSObjectLiteral $1 $2 $3) )}+ | LBrace PropertyNameandValueList Comma RBrace { fp (AST.NN (AST.JSObjectLiteral $1 ($2++[$3]) $4) )} -- <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 +-- Seems we can have function declarations in the value part too -- PropertyNameAndValueList : See 11.1.5 -- PropertyAssignment -- PropertyNameAndValueList , PropertyAssignment PropertyNameandValueList :: { [ AST.JSNode ] } PropertyNameandValueList : PropertyAssignment { [$1] {- PropertyNameandValueList1 -} }- | PropertyNameandValueList ',' PropertyAssignment { ($1 ++ [$3]) {- PropertyNameandValueList2 -} }+ -- | PropertyNameandValueList ',' PropertyAssignment { ($1 ++ [(AST.NT (AST.JSLiteral ",") (ss $2) (gc $2))] ++ [$3]) {- PropertyNameandValueList2 -} }+ | PropertyNameandValueList Comma PropertyAssignment { ($1++[$2]++[$3]) {- PropertyNameandValueList2 -} } -- PropertyAssignment : See 11.1.5 -- PropertyName : AssignmentExpression@@ -317,12 +478,13 @@ -- 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.NS (AST.JSPropertyNameandValue $1 $3) (ex $1)) }+PropertyAssignment : PropertyName Colon AssignmentExpression { fp (AST.NN (AST.JSPropertyNameandValue $1 $2 $3)) } -- Should be "get" in next, but is not a Token- | 'get' PropertyName '(' ')' '{' FunctionBody '}' { (AST.NS (AST.JSPropertyAccessor "get" $2 [] $6) (ss $1)) }+ | 'get' PropertyName LParen RParen LBrace FunctionBody RBrace+ { fp (AST.NN (AST.JSPropertyAccessor (AST.NT (AST.JSLiteral "get") (ss $1) (gc $1)) $2 $3 [] $4 $5 $6 $7)) } -- Should be "set" in next, but is not a Token- | 'set' PropertyName '(' PropertySetParameterList ')' '{' FunctionBody '}' - { (AST.NS (AST.JSPropertyAccessor "set" $2 [$4] $7) (ss $1)) }+ | 'set' PropertyName LParen PropertySetParameterList RParen LBrace FunctionBody RBrace+ { fp (AST.NN (AST.JSPropertyAccessor (AST.NT (AST.JSLiteral "set") (ss $1) (gc $1)) $2 $3 [$4] $5 $6 $7 $8)) } -- PropertyName : See 11.1.5 -- IdentifierName@@ -345,18 +507,18 @@ -- MemberExpression . IdentifierName -- new MemberExpression Arguments MemberExpression :: { [AST.JSNode] }-MemberExpression : PrimaryExpression { [$1] {- MemberExpression -}} +MemberExpression : PrimaryExpression { [$1] {- MemberExpression -}} | FunctionExpression { [$1] {- MemberExpression -}}- | 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])}+ | MemberExpression LSquare Expression RSquare { [fp (AST.NN (AST.JSMemberSquare $1 $2 $3 $4))] }+ | MemberExpression Dot IdentifierName { [fp (AST.NN (AST.JSMemberDot $1 $2 $3))] }+ | 'new' MemberExpression Arguments { (((fp (AST.NT (AST.JSLiteral "new") (ss $1) (gc $1))):$2)++[$3])} -- NewExpression : See 11.2 -- MemberExpression -- new NewExpression NewExpression :: { [AST.JSNode] }-NewExpression : MemberExpression {$1 {- NewExpression -}} - | 'new' NewExpression { (AST.NS (AST.JSLiteral "new ") (ss $1)):$2 }+NewExpression : MemberExpression {$1 {- NewExpression -}}+ | 'new' NewExpression { (fp (AST.NT (AST.JSLiteral "new") (ss $1) (gc $1))):$2 } -- CallExpression : See 11.2 -- MemberExpression Arguments@@ -364,31 +526,31 @@ -- CallExpression [ Expression ] -- CallExpression . IdentifierName CallExpression :: { [AST.JSNode] }-CallExpression : MemberExpression Arguments { $1++[$2] {- CallExpression -} } - | 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))]) }+CallExpression : MemberExpression Arguments { $1++[$2] {- CallExpression -} }+ | CallExpression Arguments { ($1++[fp (AST.NN (AST.JSCallExpression "()" [] [$2] []))]) }+ | CallExpression LSquare Expression RSquare { ($1++[fp (AST.NN (AST.JSCallExpression "[]" [$2] [$3] [$4]))]) }+ | CallExpression Dot IdentifierName { ($1++[fp (AST.NN (AST.JSCallExpression "." [$2] [$3] []))]) } -- Arguments : See 11.2 -- () -- ( ArgumentList ) Arguments :: { AST.JSNode }-Arguments : '(' ')' { (AST.NS (AST.JSArguments []) (ss $1)) } - | '(' ArgumentList ')' { (AST.NS (AST.JSArguments $2) (ss $1)) }+Arguments : LParen RParen { fp (AST.NN (AST.JSArguments $1 [] $2)) }+ | LParen ArgumentList RParen { fp (AST.NN (AST.JSArguments $1 $2 $3)) } -- ArgumentList : See 11.2 -- AssignmentExpression -- ArgumentList , AssignmentExpression-ArgumentList :: { [[AST.JSNode]] }-ArgumentList : AssignmentExpression { [$1] {- ArgumentList -}}- | ArgumentList ',' AssignmentExpression { $1++[$3] {- ArgumentList2 -} }+ArgumentList :: { [AST.JSNode] }+ArgumentList : AssignmentExpression { $1 {- ArgumentList -}}+ | ArgumentList Comma AssignmentExpression { $1++[$2]++$3 {- ArgumentList2 -} } -- LeftHandSideExpression : See 11.2 -- NewExpression -- CallExpression LeftHandSideExpression :: { [AST.JSNode] } LeftHandSideExpression : NewExpression { $1 {- LeftHandSideExpression1 -}}- | CallExpression { $1 {- LeftHandSideExpression12 -}} + | CallExpression { $1 {- LeftHandSideExpression12 -}} -- PostfixExpression : See 11.3 -- LeftHandSideExpression@@ -397,9 +559,9 @@ -- [no LineTerminator here] -- LeftHandSideExpression -- PostfixExpression :: { [AST.JSNode] }-PostfixExpression : LeftHandSideExpression { $1 {- PostfixExpression -} } - | PostfixExpression '++' {[(AST.NS (AST.JSExpressionPostfix "++" $1) (mex $1))]}- | PostfixExpression '--' {[(AST.NS (AST.JSExpressionPostfix "--" $1) (mex $1))]}+PostfixExpression : LeftHandSideExpression { $1 {- PostfixExpression -} }+ | PostfixExpression Increment {[fp (AST.NN (AST.JSExpressionPostfix "++" $1 $2))]}+ | PostfixExpression Decrement {[fp (AST.NN (AST.JSExpressionPostfix "--" $1 $2))]} -- UnaryExpression : See 11.4 -- PostfixExpression@@ -413,16 +575,16 @@ -- ~ UnaryExpression -- ! UnaryExpression UnaryExpression :: { [AST.JSNode] }-UnaryExpression : PostfixExpression { $1 {- UnaryExpression -} } - | '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)}+UnaryExpression : PostfixExpression { $1 {- UnaryExpression -} }+ | Delete UnaryExpression { ((fp (AST.NN (AST.JSUnary "delete " $1))):$2)}+ | Void UnaryExpression { ((fp (AST.NN (AST.JSUnary "void " $1))):$2)}+ | Typeof UnaryExpression { ((fp (AST.NN (AST.JSUnary "typeof " $1))):$2)}+ | Increment UnaryExpression { ((fp (AST.NN (AST.JSUnary "++" $1))):$2) }+ | Decrement UnaryExpression { ((fp (AST.NN (AST.JSUnary "--" $1))):$2)}+ | Plus UnaryExpression { ((fp (AST.NN (AST.JSUnary "+" $1))):$2)}+ | Minus UnaryExpression { ((fp (AST.NN (AST.JSUnary "-" $1))):$2)}+ | Tilde UnaryExpression { ((fp (AST.NN (AST.JSUnary "~" $1))):$2)}+ | Not UnaryExpression { ((fp (AST.NN (AST.JSUnary "!" $1))):$2)} -- MultiplicativeExpression : See 11.5 -- UnaryExpression@@ -430,19 +592,19 @@ -- MultiplicativeExpression / UnaryExpression -- MultiplicativeExpression % UnaryExpression MultiplicativeExpression :: { [AST.JSNode] }-MultiplicativeExpression : UnaryExpression { $1 {- MultiplicativeExpression -}} - | 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))]}+MultiplicativeExpression : UnaryExpression { $1 {- MultiplicativeExpression -}}+ | MultiplicativeExpression Mul UnaryExpression { [fp (AST.NN (AST.JSExpressionBinary "*" $1 $2 $3))]}+ | MultiplicativeExpression Div UnaryExpression { [fp (AST.NN (AST.JSExpressionBinary "/" $1 $2 $3))]}+ | MultiplicativeExpression Mod UnaryExpression { [fp (AST.NN (AST.JSExpressionBinary "%" $1 $2 $3))]} -- AdditiveExpression : See 11.6 -- MultiplicativeExpression -- AdditiveExpression + MultiplicativeExpression -- AdditiveExpression - MultiplicativeExpression AdditiveExpression :: { [AST.JSNode] }-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 -} } +AdditiveExpression : AdditiveExpression Plus MultiplicativeExpression { [fp (AST.NN (AST.JSExpressionBinary "+" $1 $2 $3))]}+ | AdditiveExpression Minus MultiplicativeExpression { [fp (AST.NN (AST.JSExpressionBinary "-" $1 $2 $3))]}+ | MultiplicativeExpression { $1 {- (goRegExp $1)-} {- AdditiveExpression -} } -- ShiftExpression : See 11.7 -- AdditiveExpression@@ -450,10 +612,10 @@ -- ShiftExpression >> AdditiveExpression -- ShiftExpression >>> AdditiveExpression ShiftExpression :: { [AST.JSNode] }-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 -}} +ShiftExpression : ShiftExpression Lsh AdditiveExpression { [fp (AST.NN (AST.JSExpressionBinary "<<" $1 $2 $3))]}+ | ShiftExpression Rsh AdditiveExpression { [fp (AST.NN (AST.JSExpressionBinary ">>" $1 $2 $3))]}+ | ShiftExpression Ursh AdditiveExpression { [fp (AST.NN (AST.JSExpressionBinary ">>>" $1 $2 $3))]}+ | AdditiveExpression { $1 {- ShiftExpression -}} -- RelationalExpression : See 11.8 -- ShiftExpression@@ -464,13 +626,13 @@ -- RelationalExpression instanceof ShiftExpression -- RelationalExpression in ShiftExpression RelationalExpression :: { [AST.JSNode] }-RelationalExpression : ShiftExpression { $1 {- RelationalExpression -}} - | 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))]}+RelationalExpression : ShiftExpression { $1 {- RelationalExpression -}}+ | RelationalExpression Lt ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary "<" $1 $2 $3))]}+ | RelationalExpression Gt ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary ">" $1 $2 $3))]}+ | RelationalExpression Le ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary "<=" $1 $2 $3))]}+ | RelationalExpression Ge ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary ">=" $1 $2 $3))]}+ | RelationalExpression Instanceof ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary " instanceof " $1 $2 $3))]}+ | RelationalExpression In ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary " in " $1 $2 $3))]} -- RelationalExpressionNoIn : See 11.8 -- ShiftExpression@@ -480,12 +642,12 @@ -- RelationalExpressionNoIn >= ShiftExpression -- RelationalExpressionNoIn instanceof ShiftExpression RelationalExpressionNoIn :: { [AST.JSNode] }-RelationalExpressionNoIn : ShiftExpression { $1 {- RelationalExpressionNoIn -}} - | 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))]}+RelationalExpressionNoIn : ShiftExpression { $1 {- RelationalExpressionNoIn -}}+ | RelationalExpressionNoIn Lt ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary "<" $1 $2 $3))]}+ | RelationalExpressionNoIn Gt ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary ">" $1 $2 $3))]}+ | RelationalExpressionNoIn Le ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary "<=" $1 $2 $3))]}+ | RelationalExpressionNoIn Ge ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary ">=" $1 $2 $3))]}+ | RelationalExpressionNoIn Instanceof ShiftExpression { [fp (AST.NN (AST.JSExpressionBinary " instanceof " $1 $2 $3))]} -- EqualityExpression : See 11.9 -- RelationalExpression@@ -494,11 +656,11 @@ -- EqualityExpression === RelationalExpression -- EqualityExpression !== RelationalExpression EqualityExpression :: { [AST.JSNode] }-EqualityExpression : RelationalExpression { $1 {- EqualityExpression -} } - | 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))]}+EqualityExpression : RelationalExpression { $1 {- EqualityExpression -} }+ | EqualityExpression Equal RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "==" $1 $2 $3))]}+ | EqualityExpression Ne RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "!=" $1 $2 $3))]}+ | EqualityExpression StrictEq RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "===" $1 $2 $3))]}+ | EqualityExpression StrictNe RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "!==" $1 $2 $3))]} -- EqualityExpressionNoIn : See 11.9 -- RelationalExpressionNoIn@@ -507,133 +669,133 @@ -- EqualityExpressionNoIn === RelationalExpressionNoIn -- EqualityExpressionNoIn !== RelationalExpressionNoIn EqualityExpressionNoIn :: { [AST.JSNode] }-EqualityExpressionNoIn : RelationalExpressionNoIn { $1 {- EqualityExpressionNoIn -} } - | 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))]}+EqualityExpressionNoIn : RelationalExpressionNoIn { $1 {- EqualityExpressionNoIn -} }+ | EqualityExpressionNoIn Equal RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "==" $1 $2 $3))]}+ | EqualityExpressionNoIn Ne RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "!=" $1 $2 $3))]}+ | EqualityExpressionNoIn StrictEq RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "===" $1 $2 $3))]}+ | EqualityExpressionNoIn StrictNe RelationalExpression { [fp (AST.NN (AST.JSExpressionBinary "!==" $1 $2 $3))]} -- BitwiseANDExpression : See 11.10 -- EqualityExpression -- BitwiseANDExpression & EqualityExpression BitwiseAndExpression :: { [AST.JSNode] }-BitwiseAndExpression : EqualityExpression { $1 {- BitwiseAndExpression -} } - | BitwiseAndExpression '&' EqualityExpression { [(AST.NS (AST.JSExpressionBinary "&" $1 $3) (mex $1))]}+BitwiseAndExpression : EqualityExpression { $1 {- BitwiseAndExpression -} }+ | BitwiseAndExpression BitAnd EqualityExpression { [fp (AST.NN (AST.JSExpressionBinary "&" $1 $2 $3))]} -- BitwiseANDExpressionNoIn : See 11.10 -- EqualityExpressionNoIn -- BitwiseANDExpressionNoIn & EqualityExpressionNoIn BitwiseAndExpressionNoIn :: { [AST.JSNode] }-BitwiseAndExpressionNoIn : EqualityExpressionNoIn { $1 {- BitwiseAndExpression -} } - | BitwiseAndExpressionNoIn '&' EqualityExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "&" $1 $3) (mex $1))]}+BitwiseAndExpressionNoIn : EqualityExpressionNoIn { $1 {- BitwiseAndExpression -} }+ | BitwiseAndExpressionNoIn BitAnd EqualityExpressionNoIn { [fp (AST.NN (AST.JSExpressionBinary "&" $1 $2 $3))]} -- BitwiseXORExpression : See 11.10 -- BitwiseANDExpression -- BitwiseXORExpression ^ BitwiseANDExpression BitwiseXOrExpression :: { [AST.JSNode] }-BitwiseXOrExpression : BitwiseAndExpression { $1 {- BitwiseXOrExpression -} } - | BitwiseXOrExpression '^' BitwiseAndExpression { [(AST.NS (AST.JSExpressionBinary "^" $1 $3) (mex $1))]}+BitwiseXOrExpression : BitwiseAndExpression { $1 {- BitwiseXOrExpression -} }+ | BitwiseXOrExpression BitXor BitwiseAndExpression { [fp (AST.NN (AST.JSExpressionBinary "^" $1 $2 $3))]} -- BitwiseXORExpressionNoIn : See 11.10 -- BitwiseANDExpressionNoIn -- BitwiseXORExpressionNoIn ^ BitwiseANDExpressionNoIn BitwiseXOrExpressionNoIn :: { [AST.JSNode] }-BitwiseXOrExpressionNoIn : BitwiseAndExpressionNoIn { $1 {- BitwiseXOrExpression -} } - | BitwiseXOrExpressionNoIn '^' BitwiseAndExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "^" $1 $3) (mex $1))]}+BitwiseXOrExpressionNoIn : BitwiseAndExpressionNoIn { $1 {- BitwiseXOrExpression -} }+ | BitwiseXOrExpressionNoIn BitXor BitwiseAndExpressionNoIn { [fp (AST.NN (AST.JSExpressionBinary "^" $1 $2 $3))]} -- BitwiseORExpression : See 11.10 -- BitwiseXORExpression -- BitwiseORExpression | BitwiseXORExpression BitwiseOrExpression :: { [AST.JSNode] }-BitwiseOrExpression : BitwiseXOrExpression { $1 {- BitwiseOrExpression -} } - | BitwiseOrExpression '|' BitwiseXOrExpression { [(AST.NS (AST.JSExpressionBinary "|" $1 $3) (mex $1))]}+BitwiseOrExpression : BitwiseXOrExpression { $1 {- BitwiseOrExpression -} }+ | BitwiseOrExpression BitOr BitwiseXOrExpression { [fp (AST.NN (AST.JSExpressionBinary "|" $1 $2 $3))]} -- BitwiseORExpressionNoIn : See 11.10 -- BitwiseXORExpressionNoIn -- BitwiseORExpressionNoIn | BitwiseXORExpressionNoIn BitwiseOrExpressionNoIn :: { [AST.JSNode] }-BitwiseOrExpressionNoIn : BitwiseXOrExpressionNoIn { $1 {- BitwiseOrExpression -} } - | BitwiseOrExpressionNoIn '|' BitwiseXOrExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "|" $1 $3) (mex $1))]}+BitwiseOrExpressionNoIn : BitwiseXOrExpressionNoIn { $1 {- BitwiseOrExpression -} }+ | BitwiseOrExpressionNoIn BitOr BitwiseXOrExpressionNoIn { [fp (AST.NN (AST.JSExpressionBinary "|" $1 $2 $3))]} -- LogicalANDExpression : See 11.11 -- BitwiseORExpression -- LogicalANDExpression && BitwiseORExpression LogicalAndExpression :: { [AST.JSNode] }-LogicalAndExpression : BitwiseOrExpression { $1 {- LogicalAndExpression -} } - | LogicalAndExpression '&&' BitwiseOrExpression { [(AST.NS (AST.JSExpressionBinary "&&" $1 $3) (mex $1))]}+LogicalAndExpression : BitwiseOrExpression { $1 {- LogicalAndExpression -} }+ | LogicalAndExpression And BitwiseOrExpression { [fp (AST.NN (AST.JSExpressionBinary "&&" $1 $2 $3))]} -- LogicalANDExpressionNoIn : See 11.11 -- BitwiseORExpressionNoIn -- LogicalANDExpressionNoIn && BitwiseORExpressionNoIn LogicalAndExpressionNoIn :: { [AST.JSNode] }-LogicalAndExpressionNoIn : BitwiseOrExpressionNoIn { $1 {- LogicalAndExpression -} } - | LogicalAndExpressionNoIn '&&' BitwiseOrExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "&&" $1 $3) (mex $1))]}+LogicalAndExpressionNoIn : BitwiseOrExpressionNoIn { $1 {- LogicalAndExpression -} }+ | LogicalAndExpressionNoIn And BitwiseOrExpressionNoIn { [fp (AST.NN (AST.JSExpressionBinary "&&" $1 $2 $3))]} -- LogicalORExpression : See 11.11 -- LogicalANDExpression -- LogicalORExpression || LogicalANDExpression LogicalOrExpression :: { [AST.JSNode] }-LogicalOrExpression : LogicalAndExpression { $1 {- LogicalOrExpression -} } - | LogicalOrExpression '||' LogicalAndExpression { [(AST.NS (AST.JSExpressionBinary "||" $1 $3) (mex $1))]}+LogicalOrExpression : LogicalAndExpression { $1 {- LogicalOrExpression -} }+ | LogicalOrExpression Or LogicalAndExpression { [fp (AST.NN (AST.JSExpressionBinary "||" $1 $2 $3))]} -- LogicalORExpressionNoIn : See 11.11 -- LogicalANDExpressionNoIn -- LogicalORExpressionNoIn || LogicalANDExpressionNoIn LogicalOrExpressionNoIn :: { [AST.JSNode] }-LogicalOrExpressionNoIn : LogicalAndExpressionNoIn { $1 {- LogicalOrExpression -} } - | LogicalOrExpressionNoIn '||' LogicalAndExpressionNoIn { [(AST.NS (AST.JSExpressionBinary "||" $1 $3) (mex $1))]}+LogicalOrExpressionNoIn : LogicalAndExpressionNoIn { $1 {- LogicalOrExpression -} }+ | LogicalOrExpressionNoIn Or LogicalAndExpressionNoIn { [fp (AST.NN (AST.JSExpressionBinary "||" $1 $2 $3))]} -- ConditionalExpression : See 11.12 -- LogicalORExpression -- LogicalORExpression ? AssignmentExpression : AssignmentExpression ConditionalExpression :: { [AST.JSNode] } ConditionalExpression : LogicalOrExpression { $1 {- ConditionalExpression -} }- | LogicalOrExpression '?' AssignmentExpression ':' AssignmentExpression - { [AST.NS (AST.JSExpressionTernary $1 $3 $5) (mex $1)] } - + | LogicalOrExpression Hook AssignmentExpression Colon AssignmentExpression+ { [fp (AST.NN (AST.JSExpressionTernary $1 $2 $3 $4 $5))] }+ -- ConditionalExpressionNoIn : See 11.12 -- LogicalORExpressionNoIn -- LogicalORExpressionNoIn ? AssignmentExpressionNoIn : AssignmentExpressionNoIn ConditionalExpressionNoIn :: { [AST.JSNode] } ConditionalExpressionNoIn : LogicalOrExpressionNoIn { $1 {- ConditionalExpression -} }- | LogicalOrExpressionNoIn '?' AssignmentExpressionNoIn ':' AssignmentExpressionNoIn- { [AST.NS (AST.JSExpressionTernary $1 $3 $5) (mex $1)] } - + | LogicalOrExpressionNoIn Hook AssignmentExpressionNoIn Colon AssignmentExpressionNoIn+ { [fp (AST.NN (AST.JSExpressionTernary $1 $2 $3 $4 $5))] }+ -- AssignmentExpression : See 11.13 -- ConditionalExpression -- LeftHandSideExpression AssignmentOperator AssignmentExpression AssignmentExpression :: { [AST.JSNode] }-AssignmentExpression : ConditionalExpression { $1 {- AssignmentExpression -}} - | LeftHandSideExpression AssignmentOperator AssignmentExpression +AssignmentExpression : ConditionalExpression { $1 {- AssignmentExpression -}}+ | LeftHandSideExpression AssignmentOperator AssignmentExpression { ($1++[$2]++$3) }- + -- AssignmentExpressionNoIn : See 11.13 -- ConditionalExpressionNoIn -- LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn AssignmentExpressionNoIn :: { [AST.JSNode] }-AssignmentExpressionNoIn : ConditionalExpressionNoIn { $1 {- AssignmentExpression -}} - | LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn +AssignmentExpressionNoIn : ConditionalExpressionNoIn { $1 {- AssignmentExpression -}}+ | LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn { ($1++[$2]++$3) } -- AssignmentOperator : one of See 11.13 -- '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '>>>=' | '&=' | '^=' | '|=' AssignmentOperator :: { AST.JSNode }-AssignmentOperator : 'assign' { AST.NS (AST.JSOperator (token_literal $1)) (ss $1) }- | '=' { AST.NS (AST.JSOperator "=") (ss $1)}+AssignmentOperator : Assign { fp (AST.NN (AST.JSOperator $1))}+ | SimpleAssign { fp (AST.NN (AST.JSOperator $1))} -- Expression : See 11.14 -- AssignmentExpression -- Expression , AssignmentExpression Expression :: { AST.JSNode }-Expression : AssignmentExpression { AST.NS (AST.JSExpression $1) (mex $1) {- Expression -} } - | Expression ',' AssignmentExpression { flattenExpression $1 $3 }+Expression : AssignmentExpression { fp (AST.NN (AST.JSExpression $1)) {- Expression -} }+ | Expression Comma AssignmentExpression { fp (AST.NN (AST.JSExpression ($1:[$2]++$3))) {- Expression2 -} } -- ExpressionNoIn : See 11.14 -- AssignmentExpressionNoIn -- ExpressionNoIn , AssignmentExpressionNoIn ExpressionNoIn :: { AST.JSNode }-ExpressionNoIn : AssignmentExpressionNoIn { AST.NS (AST.JSExpression $1) (mex $1) {- Expression -} } - | ExpressionNoIn ',' AssignmentExpressionNoIn { flattenExpression $1 $3 }+ExpressionNoIn : AssignmentExpressionNoIn { fp (AST.NN (AST.JSExpression $1)) {- ExpressionNoIn -} }+ | ExpressionNoIn Comma AssignmentExpressionNoIn { fp (AST.NN (AST.JSExpression ($1:[$2]++$3))) {- ExpressionNoIn2 -} } -- TODO: still required? ExpressionOpt :: { [AST.JSNode] }@@ -643,8 +805,8 @@ ExpressionNoInOpt :: { [AST.JSNode] } ExpressionNoInOpt : ExpressionNoIn { [$1] {- ExpressionOpt -}} | { [] {- ExpressionOpt -}}- + -- Statement : See clause 12 -- Block -- VariableStatement@@ -682,76 +844,70 @@ | 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.NS (AST.JSStatementBlock (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) }- | '{' StatementList '}' { (AST.NS (AST.JSStatementBlock $2) (ss $1)) }+StatementBlock : LBrace RBrace { fp (AST.NN (AST.JSStatementBlock $1 (AST.NN (AST.JSStatementList [])) $2)) }+ | LBrace StatementList RBrace { fp (AST.NN (AST.JSStatementBlock $1 $2 $3)) } -- Block : See 12.1 -- { StatementListopt } Block :: { AST.JSNode }-Block : '{' '}' { (AST.NS (AST.JSBlock (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) }- | '{' StatementList '}' { (AST.NS (AST.JSBlock $2) (ss $1)) }+Block : LBrace RBrace { fp (AST.NN (AST.JSBlock [$1] (AST.NN (AST.JSStatementList [])) [$2])) }+ | LBrace StatementList RBrace { fp (AST.NN (AST.JSBlock [$1] $2 [$3])) } -- StatementList : See 12.1 -- Statement -- StatementList Statement StatementList :: { AST.JSNode }-StatementList : Statement { (AST.NS (AST.JSStatementList [$1]) (ex $1)) }+StatementList : Statement { fp (AST.NN (AST.JSStatementList [$1])) } | StatementList Statement { (combineStatements $1 $2) } -- VariableStatement : See 12.2 -- var VariableDeclarationList ; VariableStatement :: { AST.JSNode }-VariableStatement : 'var' VariableDeclarationList AutoSemi { AST.NS (AST.JSVariables "var" $2) (ss $1)}- | 'const' VariableDeclarationList AutoSemi { AST.NS (AST.JSVariables "const" $2) (ss $1)}+VariableStatement : Var VariableDeclarationList AutoSemi { fp (AST.NN (AST.JSVariables $1 $2 $3))}+ | Const VariableDeclarationList AutoSemi { fp (AST.NN (AST.JSVariables $1 $2 $3))} -- VariableDeclarationList : See 12.2 -- VariableDeclaration -- VariableDeclarationList , VariableDeclaration VariableDeclarationList :: { [AST.JSNode] } VariableDeclarationList : VariableDeclaration { [$1] {- VariableDeclarationList -}}- | VariableDeclarationList ',' VariableDeclaration { ($1 ++ [$3]) {- VariableDeclarationList -}}+ | VariableDeclarationList Comma VariableDeclaration { ($1++[$2]++[$3]) {- VariableDeclarationList -}} -- VariableDeclarationListNoIn : See 12.2 -- VariableDeclarationNoIn -- VariableDeclarationListNoIn , VariableDeclarationNoIn VariableDeclarationListNoIn :: { [AST.JSNode] } VariableDeclarationListNoIn : VariableDeclarationNoIn { [$1] {- VariableDeclarationList -}}- | VariableDeclarationListNoIn ',' VariableDeclarationNoIn { ($1 ++ [$3]) {- VariableDeclarationList -}}+ | VariableDeclarationListNoIn Comma VariableDeclarationNoIn { ($1++[$2]++[$3]) {- VariableDeclarationListNoIn -}} -- VariableDeclaration : See 12.2 -- Identifier Initialiseropt VariableDeclaration :: { AST.JSNode }-VariableDeclaration : Identifier { (AST.NS (AST.JSVarDecl $1 []) (ex $1) )}- | Identifier Initializer { (AST.NS (AST.JSVarDecl $1 $2) (ex $1))}+VariableDeclaration : Identifier { fp (AST.NN (AST.JSVarDecl $1 []))}+ | Identifier Initializer { fp (AST.NN (AST.JSVarDecl $1 $2))} -- VariableDeclarationNoIn : See 12.2 -- Identifier InitialiserNoInopt VariableDeclarationNoIn :: { AST.JSNode }-VariableDeclarationNoIn : Identifier InitializerNoIn { (AST.NS (AST.JSVarDecl $1 $2) (ex $1)) }- | Identifier { (AST.NS (AST.JSVarDecl $1 []) (ex $1)) }+VariableDeclarationNoIn : Identifier InitializerNoIn { fp (AST.NN (AST.JSVarDecl $1 $2)) }+ | Identifier { fp (AST.NN (AST.JSVarDecl $1 [])) } -- Initialiser : See 12.2 -- = AssignmentExpression Initializer :: { [AST.JSNode] }-Initializer : '=' AssignmentExpression { $2 {- Initializer -} }+Initializer : SimpleAssign AssignmentExpression { $1:$2 {- Initializer -} } -- InitialiserNoIn : See 12.2 -- = AssignmentExpressionNoIn InitializerNoIn :: { [AST.JSNode] }-InitializerNoIn : '=' AssignmentExpressionNoIn { $2 {- InitializerNoIn -}}+InitializerNoIn : SimpleAssign AssignmentExpressionNoIn { $1:$2 {- InitializerNoIn -}} -- EmptyStatement : See 12.3 -- ; EmptyStatement :: { AST.JSNode }-EmptyStatement : ';' { (AST.NS (AST.JSLiteral ";") (ss $1)) }+EmptyStatement : Semi { $1 } -- ExpressionStatement : See 12.4 -- [lookahead ∉ {{, function}] Expression ;@@ -765,35 +921,36 @@ -- IfStatement : See 12.5 -- if ( Expression ) Statement else Statement -- if ( Expression ) Statement-IfStatement :: { AST.JSNode }-IfStatement : 'if' '(' Expression ')' StatementSemi IfElseRest - { (if ($6 /= []) then - (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] }- | { [] } +IfStatement :: { AST.JSNode } -- +++XXXX+++IfStatement : If LParen Expression RParen StatementSemi IfElseRest+ { (if ($6 /= []) then+ (if (length $6 == 1)+ then+ (fp (AST.NN (AST.JSIf $1 $2 $3 $4 $5 $6) ))+ else+ (fp (AST.NN+ (AST.JSIf+ $1 $2+ $3+ $4+ (fp (AST.NN+ (AST.JSBlock [] (AST.NN (AST.JSStatementList [$5])) [] )+ ))+ $6+ ) + ))+ )+ else (fp (AST.NN (AST.JSIf $1 $2 $3 $4 $5 []) )) ) }++IfElseRest :: { [AST.JSNode] }+IfElseRest : Else Statement { [$1,$2] }+ | { [] }+ StatementSemi :: { AST.JSNode }-StatementSemi : StatementNoEmpty ';' { (AST.NS (AST.JSBlock (AST.NS (AST.JSStatementList [$1]) (ex $1))) (ex $1)) } - | StatementNoEmpty { $1 {- StatementSemi -}}- | ';' { AST.NS (AST.JSLiteral ";") (ss $1) } +StatementSemi : StatementNoEmpty Semi { fp (AST.NN (AST.JSBlock [] (AST.NN (AST.JSStatementList [$1,$2])) [])) }+ | StatementNoEmpty { $1 {- StatementSemi -}}+ | Semi { $1 } -- IterationStatement : See 12.6@@ -804,56 +961,56 @@ -- for ( LeftHandSideExpression in Expression ) Statement -- for ( var VariableDeclarationNoIn in Expression ) Statement IterationStatement :: { AST.JSNode }-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.NS (AST.JSForVar $4 $6 $8 $10) (ss $1)) }- | 'for' '(' LeftHandSideExpression 'in' Expression ')' Statement - { (AST.NS (AST.JSForIn $3 $5 $7) (ss $1)) }- | 'for' '(' 'var' VariableDeclarationNoIn 'in' Expression ')' Statement- { (AST.NS (AST.JSForVarIn $4 $6 $8) (ss $1)) }+IterationStatement : Do Statement While LParen Expression RParen AutoSemi+ { fp (AST.NN (AST.JSDoWhile $1 $2 $3 $4 $5 $6 $7)) }+ | While LParen Expression RParen Statement+ { fp (AST.NN (AST.JSWhile $1 $2 $3 $4 $5)) }+ | For LParen ExpressionNoInOpt Semi ExpressionOpt Semi ExpressionOpt RParen Statement+ { fp (AST.NN (AST.JSFor $1 $2 $3 $4 $5 $6 $7 $8 $9)) }+ | For LParen Var VariableDeclarationListNoIn Semi ExpressionOpt Semi ExpressionOpt RParen Statement+ { fp (AST.NN (AST.JSForVar $1 $2 $3 $4 $5 $6 $7 $8 $9 $10)) }+ | For LParen LeftHandSideExpression In Expression RParen Statement+ { fp (AST.NN (AST.JSForIn $1 $2 $3 $4 $5 $6 $7)) }+ | For LParen Var VariableDeclarationNoIn In Expression RParen Statement+ { fp (AST.NN (AST.JSForVarIn $1 $2 $3 $4 $5 $6 $7 $8)) } -- ContinueStatement : See 12.7 -- continue [no LineTerminator here] Identifieropt ; -- TODO: deal with [no LineTerminator here] ContinueStatement :: { AST.JSNode }-ContinueStatement : 'continue' AutoSemi { (AST.NS (AST.JSContinue [$2]) (ss $1)) } - | 'continue' Identifier AutoSemi { (AST.NS (AST.JSContinue [$2,$3]) (ss $1)) } +ContinueStatement : Continue AutoSemi { fp (AST.NN (AST.JSContinue $1 [] $2)) }+ | Continue Identifier AutoSemi { fp (AST.NN (AST.JSContinue $1 [$2] $3)) } -- BreakStatement : See 12.8 -- break [no LineTerminator here] Identifieropt ; -- TODO: deal with [no LineTerminator here] BreakStatement :: { AST.JSNode }-BreakStatement : 'break' AutoSemi { (AST.NS (AST.JSBreak [] [$2]) (ss $1)) } - | 'break' Identifier AutoSemi { (AST.NS (AST.JSBreak [$2] [$3]) (ss $1)) } +BreakStatement : Break AutoSemi { fp (AST.NN (AST.JSBreak $1 [] $2)) }+ | Break Identifier AutoSemi { fp (AST.NN (AST.JSBreak $1 [$2] $3)) } -- ReturnStatement : See 12.9 -- return [no LineTerminator here] Expressionopt ; -- TODO: deal with [no LineTerminator here] ReturnStatement :: { AST.JSNode }-ReturnStatement : 'return' AutoSemi { (AST.NS (AST.JSReturn [$2]) (ss $1)) } - | 'return' Expression AutoSemi { (AST.NS (AST.JSReturn [$2,$3]) (ss $1)) } +ReturnStatement : Return AutoSemi { fp (AST.NN (AST.JSReturn $1 [] $2)) }+ | Return Expression AutoSemi { fp (AST.NN (AST.JSReturn $1 [$2] $3)) } -- WithStatement : See 12.10 -- with ( Expression ) Statement WithStatement :: { AST.JSNode }-WithStatement : 'with' '(' Expression ')' Statement AutoSemi { (AST.NS (AST.JSWith $3 [$5,$6]) (ss $1)) }+WithStatement : With LParen Expression RParen Statement AutoSemi { fp (AST.NN (AST.JSWith $1 $2 $3 $4 [$5,$6])) } -- SwitchStatement : See 12.11 -- switch ( Expression ) CaseBlock SwitchStatement :: { AST.JSNode }-SwitchStatement : 'switch' '(' Expression ')' CaseBlock { (AST.NS (AST.JSSwitch $3 $5) (ss $1)) } +SwitchStatement : Switch LParen Expression RParen CaseBlock { (AST.NN (AST.JSSwitch $1 $2 $3 $4 $5)) } -- CaseBlock : See 12.11 -- { CaseClausesopt } -- { CaseClausesopt DefaultClause CaseClausesopt } CaseBlock :: { [AST.JSNode] }-CaseBlock : '{' CaseClausesOpt '}' { $2 {- CaseBlock1 -}}- | '{' CaseClausesOpt DefaultClause CaseClausesOpt '}' { ($2++($3:$4)) {- CaseBlock2 -}}+CaseBlock : LBrace CaseClausesOpt RBrace { ($1:$2)++[$3] {- CaseBlock1 -}}+ | LBrace CaseClausesOpt DefaultClause CaseClausesOpt RBrace { ($1:$2)++[$3]++$4++[$5] {- CaseBlock2 -}} -- CaseClauses : See 12.11 -- CaseClause@@ -861,31 +1018,31 @@ CaseClausesOpt :: { [AST.JSNode] } CaseClausesOpt : CaseClause { [$1] {- CaseClauses1 -}} | CaseClausesOpt CaseClause { ($1++[$2]) {- CaseClauses2 -}}- | { [] } + | { [fp (AST.NT (AST.JSLiteral "") tokenPosnEmpty []) ] } -- { [] } -- CaseClause : See 12.11 -- case Expression : StatementListopt CaseClause :: { AST.JSNode }-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)) }+CaseClause : Case Expression Colon StatementList { fp (AST.NN (AST.JSCase $1 $2 $3 $4)) }+ | Case Expression Colon { fp (AST.NN (AST.JSCase $1 $2 $3 (AST.NN (AST.JSStatementList [])))) } -- DefaultClause : See 12.11 -- default : StatementListopt DefaultClause :: { AST.JSNode }-DefaultClause : 'default' ':' { (AST.NS (AST.JSDefault (AST.NS (AST.JSStatementList []) (ss $1))) (ss $1)) }- | 'default' ':' StatementList { (AST.NS (AST.JSDefault $3) (ss $1)) }+DefaultClause : Default Colon { fp (AST.NN (AST.JSDefault $1 $2 (AST.NN (AST.JSStatementList [])))) }+ | Default Colon StatementList { fp (AST.NN (AST.JSDefault $1 $2 $3)) } -- LabelledStatement : See 12.12 -- Identifier : Statement LabelledStatement :: { AST.JSNode }-LabelledStatement : Identifier ':' Statement { (AST.NS (AST.JSLabelled $1 $3) (ex $1)) }+LabelledStatement : Identifier Colon Statement { fp (AST.NN (AST.JSLabelled $1 $2 $3)) } -- 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.NS (AST.JSThrow $2) (ss $1)) }+ThrowStatement : Throw Expression { fp (AST.NN (AST.JSThrow $1 $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@@ -894,9 +1051,9 @@ -- try Block Finally -- try Block Catch Finally TryStatement :: { AST.JSNode }-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 -} }+TryStatement : Try Block Catches { fp (AST.NN (AST.JSTry $1 $2 $3) ) {- TryStatement1 -} }+ | Try Block Finally { fp (AST.NN (AST.JSTry $1 $2 [$3]) ) {- TryStatement2 -} }+ | Try Block Catches Finally { fp (AST.NN (AST.JSTry $1 $2 ($3++[$4])) ) {- TryStatement3 -} } Catches :: { [AST.JSNode] } Catches : Catch { [$1] {- Catches 1 -} }@@ -908,34 +1065,34 @@ -- <Catch> ::= 'catch' '(' Identifier ')' <Block> -- | 'catch' '(' Identifier 'if' ConditionalExpression ')' <Block> Catch :: { AST.JSNode }-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)) }+Catch : CatchL LParen Identifier RParen Block { fp (AST.NN (AST.JSCatch $1 $2 $3 [] $4 $5) ) }+ | CatchL LParen Identifier If ConditionalExpression RParen Block { fp (AST.NN (AST.JSCatch $1 $2 $3 ($4:$5) $6 $7)) } -- Finally : See 12.14 -- finally Block Finally :: { AST.JSNode }-Finally : 'finally' Block { (AST.NS (AST.JSFinally $2) (ss $1)) }+Finally : FinallyL Block { fp (AST.NN (AST.JSFinally $1 $2)) } -- DebuggerStatement : See 12.15 -- debugger ; DebuggerStatement :: { AST.JSNode }-DebuggerStatement : 'debugger' AutoSemi { (AST.NS (AST.JSLiteral "debugger") (ss $1)) }+DebuggerStatement : 'debugger' AutoSemi { fp (AST.NT (AST.JSLiteral "debugger") (ss $1) (gc $1)) } -- FunctionDeclaration : See clause 13 -- function Identifier ( FormalParameterListopt ) { FunctionBody } FunctionDeclaration :: { AST.JSNode }-FunctionDeclaration : 'function' Identifier '(' FormalParameterList ')' '{' FunctionBody '}'- { (AST.NS (AST.JSFunction $2 $4 $7) (ss $1)) }- | 'function' Identifier '(' ')' '{' FunctionBody '}'- { (AST.NS (AST.JSFunction $2 [] $6) (ss $1)) }+FunctionDeclaration : Function Identifier LParen FormalParameterList RParen LBrace FunctionBody RBrace+ { fp (AST.NN (AST.JSFunction $1 $2 $3 $4 $5 $6 $7 $8) ) }+ | Function Identifier LParen RParen LBrace FunctionBody RBrace+ { fp (AST.NN (AST.JSFunction $1 $2 $3 [] $4 $5 $6 $7) ) } -- FunctionExpression : See clause 13 -- function Identifieropt ( FormalParameterListopt ) { FunctionBody } FunctionExpression :: { AST.JSNode }-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)) }+FunctionExpression : Function IdentifierOpt LParen RParen LBrace FunctionBody RBrace+ { fp (AST.NN (AST.JSFunctionExpression $1 $2 $3 [] $4 $5 $6 $7) ) }+ | Function IdentifierOpt LParen FormalParameterList RParen LBrace FunctionBody RBrace+ { fp (AST.NN (AST.JSFunctionExpression $1 $2 $3 $4 $5 $6 $7 $8) ) } IdentifierOpt :: { [AST.JSNode] } IdentifierOpt : Identifier { [$1] {- IdentifierOpt -}}@@ -946,29 +1103,40 @@ -- FormalParameterList , Identifier FormalParameterList :: { [AST.JSNode] } FormalParameterList : Identifier { [$1] {- FormalParameterList -}}- | FormalParameterList ',' Identifier { ($1++[$3]) }+ | FormalParameterList Comma Identifier { ($1++[$2]++[$3]) } -- FunctionBody : See clause 13 -- SourceElementsopt FunctionBody :: { AST.JSNode }-FunctionBody : SourceElements { (AST.NS (AST.JSFunctionBody [$1]) (ex $1)) }- | { (AST.NS (AST.JSFunctionBody []) SpanEmpty) } +FunctionBody : SourceElements { (AST.NN (AST.JSFunctionBody [$1]) ) }+ | { (AST.NN (AST.JSFunctionBody [] ) ) } -- Program : See clause 14 -- SourceElementsopt Program :: { AST.JSNode }-Program : SourceElementsTop { $1 {- Program -}}+Program : SourceElementsTop Eof { (combineTop $1 $2) {- Program -}} +-- For debugging/other entry points+LiteralMain :: { AST.JSNode }+LiteralMain : Literal Eof { $1 }++PrimaryExpressionMain :: { AST.JSNode }+PrimaryExpressionMain : PrimaryExpression Eof { $1 }++StatementMain :: { AST.JSNode }+StatementMain : Statement Eof { $1 }++ -- SourceElements : See clause 14 -- SourceElement -- SourceElements SourceElement SourceElements :: { AST.JSNode }-SourceElements : SourceElement { (AST.NS (AST.JSSourceElements [$1]) (ex $1)) }+SourceElements : SourceElement { fp (AST.NN (AST.JSSourceElements [$1]) ) } | SourceElements SourceElement { (combineSourceElements $1 $2) } SourceElementsTop :: { AST.JSNode }-SourceElementsTop : SourceElement { (AST.NS (AST.JSSourceElementsTop [$1]) (ex $1)) }+SourceElementsTop : SourceElement { fp (AST.NN (AST.JSSourceElementsTop [$1]) ) } | SourceElementsTop SourceElement { (combineSourceElementsTop $1 $2) } -- SourceElement :@@ -976,67 +1144,80 @@ -- FunctionDeclaration SourceElement :: { AST.JSNode } SourceElement : Statement { $1 {- SourceElement1 -} }- | FunctionDeclaration { $1 {- SourceElement2 -} } + | FunctionDeclaration { $1 {- SourceElement2 -} } { --- 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.NS (AST.JSSourceElements xs) s1) x1@(AST.NS x s2) = (AST.NS (AST.JSSourceElements (xs++[x1])) s1) +combineSourceElements (AST.NN (AST.JSSourceElements xs)) x1 = fp (AST.NN (AST.JSSourceElements (xs++[x1]))) --- 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.NS (AST.JSSourceElementsTop xs) s1) x1@(AST.NS x s2) = (AST.NS (AST.JSSourceElementsTop (xs++[x1])) s1)+combineSourceElementsTop (AST.NN (AST.JSSourceElementsTop xs)) x1 = fp (AST.NN (AST.JSSourceElementsTop (xs++[x1]))) --- 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]) )+combineTop :: AST.JSNode -> AST.JSNode -> AST.JSNode+combineTop (AST.NN (AST.JSSourceElementsTop xs)) x1 = fp (AST.NN (AST.JSSourceElementsTop (xs++[x1])))+ combineStatements :: AST.JSNode -> AST.JSNode -> AST.JSNode-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)+combineStatements (AST.NN (AST.JSStatementList xs)) (AST.NN (AST.JSStatementList ys)) = fp (AST.NN (AST.JSStatementList (xs++ys) ))+combineStatements (AST.NN (AST.JSStatementList xs)) y = fp (AST.NN (AST.JSStatementList (xs++[y]))) -parseError :: Token -> P a -parseError = throwError . UnexpectedToken +parseError :: Token -> Alex a+-- parseError = throwError . UnexpectedToken+parseError tok = alexError (show tok) --- 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.NS (AST.JSExpression xs) s1) e = (AST.NS (AST.JSExpression (xs++litComma++e)) s1)- where- litComma :: [AST.JSNode]- litComma = [AST.NS (AST.JSLiteral ",") SpanEmpty]+-- -------------------------------- -mex :: [AST.JSNode] -> SrcSpan-mex [] = SpanEmpty+{-+mex :: [AST.JSNode] -> TokenPosn+mex [] = tokenPosnEmpty mex xs = ex (head xs) -ex :: AST.JSNode -> SrcSpan-ex (AST.NS _node span) = span+ex :: AST.JSNode -> TokenPosn+ex (AST.NN _node span _c) = span+-} -ss token = toSrcSpan (token_span token) +--ss token = toSrcSpan (token_span token)+ss :: Token -> TokenPosn+ss token = token_span token +-- ------------------------------++gc :: Token -> [CommentAnnotation]+gc token = token_comment token+mgc :: [Token] -> [CommentAnnotation]+mgc xs = concatMap gc xs+ {--ex :: AST.JSNode -> AST.JSNode-ex (AST.NS node span) = node+-- Get node comment+gnc (AST.NN _ _ ca) = ca+mgnc [(AST.NN _ _ ca)] = ca -mex :: [AST.JSNode] -> [AST.JSNode]-mex xs = map ex xs+-- Prepend a comment+pc :: AST.JSNode -> [CommentAnnotation] -> AST.JSNode+pc (AST.NN node span cs2) cs1 = (AST.NN node span (cs1++cs2)) -combine :: [AST.JSNode] -> AST.JSNode-combine [] = AST.NSS [] SpanEmpty-combine xs = AST.NSS (mex xs) span+mpc :: [AST.JSNode] -> [CommentAnnotation] -> [AST.JSNode]+-- mpc [(AST.NN node span cs2)] cs1 = [(AST.NN node span (cs1++cs2))]+mpc ((AST.NN node span cs2):xs) cs1 = (AST.NN node span (cs1++cs2)):xs+-}++-- ---------------------------------------------------------------------++fp :: AST.JSNode -> AST.JSNode+fp (AST.NN x) = (AST.NN x)+fp (AST.NT x p cs) = (AST.NT x p cs)+{-+fp (AST.NN x p cs) = (AST.NN x p' cs) where- (AST.NS _ span) = head xs+ p' = case (filter (/= NoComment) cs) of+ [] -> p+ [(CommentA posn _)] -> posn+ ((CommentA posn _):_) -> posn -}- + } -- Set emacs mode--- Local Variables: +-- Local Variables: -- mode:haskell--- End: +-- End:
src/Language/JavaScript/Parser/Lexer.hs view
@@ -4,7 +4,11 @@ module Language.JavaScript.Parser.Lexer ( Token(..)+ , AlexPosn(..)+ , Alex , lexCont+ , alexError+ , runAlex ) where --import Control.Monad@@ -36,6 +40,228 @@ #else import GlaExts #endif+{-# LINE 1 "templates/wrappers.hs" #-}+{-# LINE 1 "templates/wrappers.hs" #-}+{-# LINE 1 "<built-in>" #-}+{-# LINE 1 "<command-line>" #-}+{-# LINE 1 "templates/wrappers.hs" #-}+-- -----------------------------------------------------------------------------+-- Alex wrapper code.+--+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use+-- it for any purpose whatsoever.++import Data.Word (Word8)+{-# LINE 22 "templates/wrappers.hs" #-}++import qualified Data.Bits++-- | Encode a Haskell String to a list of Word8 values, in UTF8 format.+utf8Encode :: Char -> [Word8]+utf8Encode = map fromIntegral . go . ord+ where+ go oc+ | oc <= 0x7f = [oc]++ | oc <= 0x7ff = [ 0xc0 + (oc `Data.Bits.shiftR` 6)+ , 0x80 + oc Data.Bits..&. 0x3f+ ]++ | oc <= 0xffff = [ 0xe0 + (oc `Data.Bits.shiftR` 12)+ , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)+ , 0x80 + oc Data.Bits..&. 0x3f+ ]+ | otherwise = [ 0xf0 + (oc `Data.Bits.shiftR` 18)+ , 0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f)+ , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)+ , 0x80 + oc Data.Bits..&. 0x3f+ ]++++type Byte = Word8++-- -----------------------------------------------------------------------------+-- The input type+++type AlexInput = (AlexPosn, -- current position,+ Char, -- previous char+ [Byte], -- pending bytes on current char+ String) -- current input string++ignorePendingBytes (p,c,ps,s) = (p,c,s)++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (p,c,bs,s) = c++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))+alexGetByte (p,c,[],[]) = Nothing+alexGetByte (p,_,[],(c:s)) = let p' = alexMove p c + (b:bs) = utf8Encode c+ in p' `seq` Just (b, (p', c, bs, s))+++{-# LINE 88 "templates/wrappers.hs" #-}++{-# LINE 102 "templates/wrappers.hs" #-}++{-# LINE 117 "templates/wrappers.hs" #-}++-- -----------------------------------------------------------------------------+-- Token positions++-- `Posn' records the location of a token in the input text. It has three+-- fields: the address (number of chacaters preceding the token), line number+-- and column of a token within the file. `start_pos' gives the position of the+-- start of the file and `eof_pos' a standard encoding for the end of file.+-- `move_pos' calculates the new position after traversing a given character,+-- assuming the usual eight character tab stops.+++data AlexPosn = AlexPn !Int !Int !Int+ deriving (Eq,Show)++alexStartPos :: AlexPosn+alexStartPos = AlexPn 0 1 1++alexMove :: AlexPosn -> Char -> AlexPosn+alexMove (AlexPn a l c) '\t' = AlexPn (a+1) l (((c+7) `div` 8)*8+1)+alexMove (AlexPn a l c) '\n' = AlexPn (a+1) (l+1) 1+alexMove (AlexPn a l c) _ = AlexPn (a+1) l (c+1)+++-- -----------------------------------------------------------------------------+-- Default monad+++data AlexState = AlexState {+ alex_pos :: !AlexPosn, -- position at current input location+ alex_inp :: String, -- the current input+ alex_chr :: !Char, -- the character before the input+ alex_bytes :: [Byte],+ alex_scd :: !Int -- the current startcode++ , alex_ust :: AlexUserState -- AlexUserState will be defined in the user program++ }++-- Compile with -funbox-strict-fields for best results!++runAlex :: String -> Alex a -> Either String a+runAlex input (Alex f) + = case f (AlexState {alex_pos = alexStartPos,+ alex_inp = input, + alex_chr = '\n',+ alex_bytes = [],++ alex_ust = alexInitUserState,++ alex_scd = 0}) of Left msg -> Left msg+ Right ( _, a ) -> Right a++newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) }++instance Monad Alex where+ m >>= k = Alex $ \s -> case unAlex m s of + Left msg -> Left msg+ Right (s',a) -> unAlex (k a) s'+ return a = Alex $ \s -> Right (s,a)++alexGetInput :: Alex AlexInput+alexGetInput+ = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp} -> + Right (s, (pos,c,bs,inp))++alexSetInput :: AlexInput -> Alex ()+alexSetInput (pos,c,bs,inp)+ = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp} of+ s@(AlexState{}) -> Right (s, ())++alexError :: String -> Alex a+alexError message = Alex $ \s -> Left message++alexGetStartCode :: Alex Int+alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc)++alexSetStartCode :: Int -> Alex ()+alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ())++alexMonadScan = do+ inp <- alexGetInput+ sc <- alexGetStartCode+ case alexScan inp sc of+ AlexEOF -> alexEOF+ AlexError inp' -> alexError "lexical error"+ AlexSkip inp' len -> do+ alexSetInput inp'+ alexMonadScan+ AlexToken inp' len action -> do+ alexSetInput inp'+ action (ignorePendingBytes inp) len++-- -----------------------------------------------------------------------------+-- Useful token actions++type AlexAction result = AlexInput -> Int -> Alex result++-- just ignore this token and scan another one+-- skip :: AlexAction result+skip input len = alexMonadScan++-- ignore this token, but set the start code to a new value+-- begin :: Int -> AlexAction result+begin code input len = do alexSetStartCode code; alexMonadScan++-- perform an action for this token, and set the start code to a new value+andBegin :: AlexAction result -> Int -> AlexAction result+(action `andBegin` code) input len = do alexSetStartCode code; action input len++token :: (AlexInput -> Int -> token) -> AlexAction token+token t input len = return (t input len)++++-- -----------------------------------------------------------------------------+-- Monad (with ByteString input)++{-# LINE 319 "templates/wrappers.hs" #-}+++-- -----------------------------------------------------------------------------+-- Basic wrapper++{-# LINE 345 "templates/wrappers.hs" #-}+++-- -----------------------------------------------------------------------------+-- Basic wrapper, ByteString version++{-# LINE 363 "templates/wrappers.hs" #-}++{-# LINE 376 "templates/wrappers.hs" #-}+++-- -----------------------------------------------------------------------------+-- Posn wrapper++-- Adds text positions to the basic model.++{-# LINE 393 "templates/wrappers.hs" #-}+++-- -----------------------------------------------------------------------------+-- Posn wrapper, ByteString version++{-# LINE 408 "templates/wrappers.hs" #-}+++-- -----------------------------------------------------------------------------+-- GScan wrapper++-- For compatibility with previous versions of Alex, and because we can.+ alex_base :: AlexAddr alex_base = AlexA# "\x00\x00\x00\x00\xf7\xff\xff\xff\xfc\xff\xff\xff\xe4\x00\x00\x00\xdc\xff\xff\xff\x63\xff\xff\xff\x44\xff\xff\xff\xa6\x00\x00\x00\xb5\x01\x00\x00\x2a\x02\x00\x00\xa9\x02\x00\x00\x28\x03\x00\x00\xa7\x03\x00\x00\x26\x04\x00\x00\xa5\x04\x00\x00\x89\xff\xff\xff\x24\x05\x00\x00\xa3\x05\x00\x00\xdd\x05\x00\x00\x10\x06\x00\x00\x8f\x06\x00\x00\xfd\xff\xff\xff\x0e\x07\x00\x00\x40\x07\x00\x00\x7d\x07\x00\x00\xb2\x01\x00\x00\xb8\x07\x00\x00\xe5\x07\x00\x00\x1a\x08\x00\x00\x36\x08\x00\x00\x6e\x08\x00\x00\x8c\xff\xff\xff\xe9\x08\x00\x00\x22\x09\x00\x00\x9d\x09\x00\x00\xcc\x09\x00\x00\x05\x0a\x00\x00\x3e\x0a\x00\x00\x77\x0a\x00\x00\xb0\x0a\x00\x00\xe9\x0a\x00\x00\x8d\xff\xff\xff\x18\x0b\x00\x00\x8b\x0b\x00\x00\xbc\x0b\x00\x00\x8a\xff\xff\xff\x29\x0c\x00\x00\x83\xff\xff\xff\x92\x0c\x00\x00\xfb\xff\xff\xff\x7e\xff\xff\xff\xf1\x0c\x00\x00\x09\x0d\x00\x00\x64\x0d\x00\x00\xb5\xff\xff\xff\x07\x00\x00\x00\xcd\xff\xff\xff\xdb\xff\xff\xff\xc8\xff\xff\xff\xc7\xff\xff\xff\x5b\x0e\x00\x00\x47\x0f\x00\x00\x1c\x10\x00\x00\xc7\x00\x00\x00\x3b\x02\x00\x00\x56\x00\x00\x00\x37\x0e\x00\x00\xdd\xff\xff\xff\x91\x10\x00\x00\x7d\x08\x00\x00\x48\x0f\x00\x00\x1d\x10\x00\x00\xe5\x0d\x00\x00\x3e\x08\x00\x00\x11\x11\x00\x00\x35\x00\x00\x00\x51\x11\x00\x00\x83\x11\x00\x00\x0b\x06\x00\x00\x91\x07\x00\x00\x53\x0e\x00\x00\x91\x11\x00\x00\x43\x00\x00\x00\x75\x00\x00\x00\xb1\x11\x00\x00\x47\x00\x00\x00\xe5\xff\xff\xff\xf0\x11\x00\x00\x60\x12\x00\x00\x71\x12\x00\x00\xa1\x12\x00\x00\x21\x13\x00\x00\xa1\x13\x00\x00\x21\x14\x00\x00\xa1\x14\x00\x00\x21\x15\x00\x00\xa1\x15\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x12\x16\x00\x00\x00\x00\x00\x00\x83\x16\x00\x00\x00\x00\x00\x00\xf4\x16\x00\x00\xc4\x17\x00\x00\x00\x00\x00\x00\x6c\x17\x00\x00\x00\x00\x00\x00\xad\x17\x00\x00\x00\x00\x00\x00\xee\x17\x00\x00\x00\x00\x00\x00\x2f\x18\x00\x00\xff\x18\x00\x00\x0c\x00\x00\x00\x66\x19\x00\x00\x26\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x19\x00\x00\x8a\x00\x00\x00\x97\x1a\x00\x00\xf7\x1a\x00\x00\xb7\x1a\x00\x00\x00\x00\x00\x00\xec\x1b\x00\x00\x62\x1c\x00\x00\x22\x1c\x00\x00\x00\x00\x00\x00\x57\x1d\x00\x00\xcd\x1d\x00\x00\x8d\x1d\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x4b\x00\x00\x00\x2e\x01\x00\x00\x3d\x00\x00\x00\x48\x00\x00\x00\x92\x1e\x00\x00\x66\x11\x00\x00\x7b\x17\x00\x00\xc2\x0e\x00\x00\xa2\x1e\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\xe3\x1e\x00\x00\x32\x01\x00\x00\x82\x00\x00\x00\xc6\x18\x00\x00\x63\x1f\x00\x00\x59\x1e\x00\x00\x4f\x01\x00\x00\xfd\x00\x00\x00\xb8\x1e\x00\x00\x05\x20\x00\x00\xf1\x20\x00\x00\x2c\x21\x00\x00\x90\x00\x00\x00\x69\x0b\x00\x00\x49\x0f\x00\x00\x1e\x10\x00\x00\x7c\x21\x00\x00\x93\x01\x00\x00\xdc\x21\x00\x00\xe5\x1f\x00\x00\x57\x12\x00\x00\x2f\x07\x00\x00\x32\x08\x00\x00\x1a\x01\x00\x00\x4c\x22\x00\x00\x12\x20\x00\x00\xe1\x20\x00\x00\xbc\x22\x00\x00\x2c\x23\x00\x00\x4f\x23\x00\x00\xe0\x1b\x00\x00\x70\x23\x00\x00\xe0\x23\x00\x00\x3b\x01\x00\x00\x48\x07\x00\x00\x03\x24\x00\x00\x33\x24\x00\x00\x55\x24\x00\x00\x64\x1e\x00\x00\xbd\x01\x00\x00\x8b\x24\x00\x00\x01\x25\x00\x00\xa2\x06\x00\x00\x36\x25\x00\x00\xb0\x01\x00\x00\x65\x25\x00\x00\xe1\x25\x00\x00\x1b\x26\x00\x00\x4c\x26\x00\x00\x88\x26\x00\x00\x06\x27\x00\x00\x84\x27\x00\x00\x65\x24\x00\x00\x02\x28\x00\x00\xdb\x01\x00\x00\x34\x28\x00\x00\x6f\x28\x00\x00\xaf\x28\x00\x00\xbe\x01\x00\x00\x2f\x29\x00\x00\x6f\x29\x00\x00\xef\x29\x00\x00\x6f\x2a\x00\x00\x9c\x2a\x00\x00\xda\x2a\x00\x00\xf4\x2a\x00\x00\x74\x2b\x00\x00\xf4\x2b\x00\x00\x5b\x1d\x00\x00\x30\x2c\x00\x00\xb0\x2c\x00\x00\xe1\x2c\x00\x00\x15\x2d\x00\x00\x4f\x2d\x00\x00\x82\x2d\x00\x00\xab\x2d\x00\x00\xc7\x2d\x00\x00\x47\x2e\x00\x00\xc7\x2e\x00\x00\xeb\x2e\x00\x00\x11\x2f\x00\x00\x91\x2f\x00\x00\xbd\x2f\x00\x00\x3d\x30\x00\x00\x6b\x30\x00\x00\xeb\x30\x00\x00\x29\x31\x00\x00\xa9\x31\x00\x00\xdd\x31\x00\x00\x5d\x32\x00\x00\x93\x32\x00\x00\xce\x32\x00\x00\x06\x33\x00\x00\xc6\x33\x00\x00\xc7\x33\x00\x00\x02\x34\x00\x00\x39\x34\x00\x00\x6e\x34\x00\x00\xad\x34\x00\x00\x2d\x35\x00\x00\xad\x35\x00\x00\xed\x35\x00\x00\x6d\x36\x00\x00\xa7\x36\x00\x00\xe1\x36\x00\x00\x0a\x37\x00\x00\x8a\x37\x00\x00\xca\x37\x00\x00\xed\x37\x00\x00\x6d\x38\x00\x00\x8a\x38\x00\x00\xc6\x38\x00\x00\x46\x39\x00\x00\x5f\x39\x00\x00\xdf\x39\x00\x00\x1e\x3a\x00\x00\x9e\x3a\x00\x00\xb8\x3a\x00\x00\xea\x3a\x00\x00\x1f\x3b\x00\x00\x5e\x3b\x00\x00\x16\x07\x00\x00\x9d\x3b\x00\x00\xd1\x3b\x00\x00\xf0\x3b\x00\x00\x14\x24\x00\x00\x30\x3c\x00\x00\xb0\x3c\x00\x00\xbc\x18\x00\x00\xce\x3c\x00\x00\xc3\x01\x00\x00\xed\x3c\x00\x00\x1d\x3d\x00\x00\x51\x3d\x00\x00\x7a\x12\x00\x00\x21\x3e\x00\x00\xe6\x3d\x00\x00\xdb\x02\x00\x00\x64\x3e\x00\x00\x2b\x0d\x00\x00\x82\x3e\x00\x00\xcb\x01\x00\x00\xfe\x3e\x00\x00\x78\x3f\x00\x00\xf2\x3f\x00\x00\x6c\x40\x00\x00\xe6\x40\x00\x00\x5e\x41\x00\x00\xd6\x41\x00\x00\x4e\x42\x00\x00\xc4\x42\x00\x00\x38\x43\x00\x00\xaa\x43\x00\x00\xc2\x01\x00\x00\x16\x44\x00\x00\x82\x44\x00\x00\xee\x44\x00\x00\x5a\x45\x00\x00\xc4\x45\x00\x00\x5b\x0a\x00\x00\x7f\x0d\x00\x00\x2a\x46\x00\x00\x8c\x46\x00\x00\xee\x46\x00\x00\xb9\x01\x00\x00\x4a\x47\x00\x00\xa4\x47\x00\x00\xfe\x47\x00\x00\x58\x48\x00\x00\xcf\x01\x00\x00\x6b\x0e\x00\x00\xb0\x48\x00\x00\x86\x04\x00\x00\x07\x03\x00\x00\x00\x49\x00\x00\x4e\x49\x00\x00\x77\x02\x00\x00\x98\x49\x00\x00\xe0\x49\x00\x00\x22\x4a\x00\x00\x62\x4a\x00\x00\x00\x00\x00\x00\xa3\x4a\x00\x00\xe6\x4a\x00\x00\x2b\x4b\x00\x00\x70\x4b\x00\x00\xb7\x4b\x00\x00\x02\x4c\x00\x00\x4d\x4c\x00\x00\x9e\x4c\x00\x00\xf1\x4c\x00\x00\x46\x4d\x00\x00\xa1\x4d\x00\x00\xfc\x4d\x00\x00\x59\x4e\x00\x00\x98\x02\x00\x00\xba\x4e\x00\x00\xe5\x3f\x00\x00\x1f\x4f\x00\x00\x84\x4f\x00\x00\x84\x17\x00\x00\x35\x08\x00\x00\x65\x20\x00\x00\xef\x4f\x00\x00\xa6\x02\x00\x00\x24\x03\x00\x00\x5e\x50\x00\x00\xcb\x03\x00\x00\xcf\x50\x00\x00\xa9\x03\x00\x00\x42\x51\x00\x00\xb5\x51\x00\x00\x28\x52\x00\x00\x57\x03\x00\x00\x9d\x52\x00\x00\x71\x40\x00\x00\x14\x53\x00\x00\x8b\x53\x00\x00\x02\x54\x00\x00\xe0\x3d\x00\x00\xad\x04\x00\x00\x7b\x54\x00\x00\xf4\x54\x00\x00\x6d\x55\x00\x00\xe8\x55\x00\x00\x63\x56\x00\x00\xde\x56\x00\x00\x59\x57\x00\x00\xd4\x57\x00\x00\x4f\x58\x00\x00\xca\x58\x00\x00\x47\x59\x00\x00\xc4\x59\x00\x00\x41\x5a\x00\x00\xbe\x5a\x00\x00\x3b\x5b\x00\x00\xba\x5b\x00\x00\x51\x07\x00\x00\xba\x5c\x00\x00\x8c\x03\x00\x00\x7a\x5c\x00\x00\x00\x00\x00\x00\xb2\x02\x00\x00\x16\x0a\x00\x00\xcc\x02\x00\x00\xec\x5c\x00\x00\xff\x3a\x00\x00\x6c\x5d\x00\x00\xec\x5d\x00\x00\x2c\x03\x00\x00\x6b\x5e\x00\x00\xdb\x5e\x00\x00\x00\x00\x00\x00\xb7\x5f\x00\x00\x00\x00\x00\x00\x79\x5e\x00\x00\x5c\x07\x00\x00\xaf\x57\x00\x00\xd6\x20\x00\x00\x5e\x5e\x00\x00\x94\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x07\x00\x00\x7d\x03\x00\x00\x13\x04\x00\x00\x00\x00\x00\x00\x94\x03\x00\x00\x00\x00\x00\x00\x9f\x03\x00\x00\x00\x00\x00\x00\xee\x03\x00\x00\x1d\x04\x00\x00\x00\x00\x00\x00\xa4\x04\x00\x00\x1e\x04\x00\x00\x22\x05\x00\x00\x00\x00\x00\x00\x77\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x07\x00\x00\x99\x08\x00\x00\x6d\x04\x00\x00\x76\x04\x00\x00\x7a\x04\x00\x00\x00\x00\x00\x00\x6f\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# @@ -48,8 +274,8 @@ alex_deflt :: AlexAddr alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\xff\xff\x8e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\x6b\x00\x6d\x00\x6d\x00\x6f\x00\x6f\x00\xff\xff\x75\x00\x75\x00\x7c\x00\x7c\x00\x80\x00\x80\x00\x84\x00\x84\x00\xff\xff\xff\xff\x8e\x00\x8e\x00\x8e\x00\x90\x00\x90\x00\xff\xff\x3e\x00\xff\xff\x3e\x00\x3e\x00\x3c\x00\xff\xff\x3c\x00\x3c\x00\x9a\x00\xff\xff\x9a\x00\x9a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x00\x82\x01\x82\x01\x82\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8e\x01\x8c\x01\x8c\x01\x8c\x01\x8c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x8c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# -alex_accept = listArray (0::Int,446) [[(AlexAccSkip)],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAccSkip)],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAccSkip)],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_21))],[(AlexAcc (alex_action_22))],[(AlexAcc (alex_action_23))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_25))],[(AlexAcc (alex_action_26))],[(AlexAcc (alex_action_27))],[(AlexAcc (alex_action_28))],[(AlexAcc (alex_action_29))],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_49))]]-{-# LINE 308 "src-dev/Language/JavaScript/Parser/Lexer.x" #-}+alex_accept = listArray (0::Int,446) [[(AlexAccSkip)],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[(AlexAcc (alex_action_7))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAcc (alex_action_8))],[(AlexAccSkip)],[(AlexAcc (alex_action_10))],[(AlexAcc (alex_action_11))],[(AlexAcc (alex_action_12))],[(AlexAcc (alex_action_13))],[(AlexAcc (alex_action_14))],[(AlexAcc (alex_action_15))],[(AlexAcc (alex_action_16))],[(AlexAcc (alex_action_17))],[(AlexAcc (alex_action_18))],[(AlexAcc (alex_action_19))],[(AlexAcc (alex_action_20))],[(AlexAcc (alex_action_21))],[(AlexAcc (alex_action_22))],[(AlexAcc (alex_action_23))],[(AlexAcc (alex_action_24))],[(AlexAcc (alex_action_25))],[(AlexAcc (alex_action_26))],[(AlexAcc (alex_action_27))],[(AlexAcc (alex_action_28))],[(AlexAcc (alex_action_29))],[(AlexAcc (alex_action_30))],[(AlexAcc (alex_action_31))],[(AlexAcc (alex_action_32))],[(AlexAcc (alex_action_33))],[(AlexAcc (alex_action_34))],[(AlexAcc (alex_action_35))],[(AlexAcc (alex_action_36))],[(AlexAcc (alex_action_37))],[(AlexAcc (alex_action_38))],[(AlexAcc (alex_action_39))],[(AlexAcc (alex_action_40))],[(AlexAcc (alex_action_41))],[(AlexAcc (alex_action_42))],[(AlexAcc (alex_action_43))],[(AlexAcc (alex_action_44))],[(AlexAcc (alex_action_45))],[(AlexAcc (alex_action_46))],[(AlexAcc (alex_action_47))],[(AlexAcc (alex_action_48))],[(AlexAcc (alex_action_49))]]+{-# LINE 313 "src-dev/Language/JavaScript/Parser/Lexer.x" #-} {-@@ -60,8 +286,8 @@ -} classifyToken :: Token -> Int-classifyToken token =- case token of+classifyToken aToken =+ case aToken of IdentifierToken {} -> divide NullToken {} -> divide TrueToken {} -> divide@@ -76,90 +302,142 @@ _other -> reg --- Each right-hand side has type :: String -> Token--lexToken :: P Token+{-+--lexToken :: Alex Token lexToken = do- -- location <- getLocation- -- input <- getInput- input@(_,_,_,inp) <- alexGetInput- -- startCode <- getStartCode- lt <- getLastToken- -- case alexScan (location, input) (classifyToken lt) of- case alexScan input (classifyToken lt) of- AlexEOF -> return endOfFileToken- AlexError _ -> lexicalError- AlexSkip rest _len -> do- -- setLocation nextLocation- -- setInput rest- alexSetInput rest+ inp <- alexGetInput+ lt <- getLastToken+ case alexScan inp (classifyToken lt) of+ AlexEOF -> alexEOF+ AlexError inp'@(pos,_,_,_) -> alexError ("lexical error @ line " ++ show (getLineNum(pos)) +++ " and column " ++ show (getColumnNum(pos)))+ AlexSkip inp' _len -> do+ alexSetInput inp' lexToken- AlexToken rest len action -> do- --setLocation nextLocation- --setInput rest- alexSetInput rest- --token <- action (mkSrcSpan location $ decColumn 1 nextLocation) len input- token <- action (ignorePendingBytes input) len inp+ AlexToken inp' len action -> do+ alexSetInput inp'+ token <- action (ignorePendingBytes inp) len setLastToken token return token+-} +--lexToken :: Alex Token+lexToken = do+ inp <- alexGetInput+ lt <- getLastToken+ case lt of+ TailToken {} -> alexEOF+ _other ->+ case alexScan inp (classifyToken lt) of+ AlexEOF -> do+ token <- tailToken+ setLastToken token+ return token+ AlexError inp'@(pos,_,_,_) -> alexError ("lexical error @ line " ++ show (getLineNum(pos)) +++ " and column " ++ show (getColumnNum(pos)))+ AlexSkip inp' _len -> do+ alexSetInput inp'+ lexToken+ AlexToken inp' len action -> do+ alexSetInput inp'+ token <- action (ignorePendingBytes inp) len+ setLastToken token+ return token++ -- This is called by the Happy parser.-lexCont :: (Token -> P a) -> P a+--lexCont :: (Token -> P a) -> P a+--lexCont :: (Token -> Alex Token) -> Alex Token lexCont cont = do lexLoop where -- lexLoop :: P a lexLoop = do tok <- lexToken- --tok <- alexMonadScan case tok of- {- CommentToken {} -> do addComment tok lexLoop- LineJoinToken {} -> lexLoop- -}- _other -> cont tok+ WsToken {} -> do+ addComment tok+ lexLoop+ _other -> do+ cs <- getComment+ let tok' = tok{ token_comment=(toCommentAnnotation cs) }+ setComment []+ cont tok' +toCommentAnnotation [] = [NoComment]+--toCommentAnnotation xs = reverse $ map (\tok -> (CommentA (token_span tok) (token_literal tok))) xs -utf8Encode :: Char -> [Byte]-utf8Encode c = head (UTF8.encodeUTF8' [UTF8.c2w c])+toCommentAnnotation xs = reverse $ map go xs+ where+ go tok@(CommentToken {}) = (CommentA (token_span tok) (token_literal tok))+ go tok@(WsToken {}) = (WhiteSpace (token_span tok) (token_literal tok)) ---alexEOF = EOFToken alexSpanEmpty+-- --------------------------------------------------------------------- --- ignorePendingBytes :: forall t t1 t2 t3. (t, t1, t2, t3) -> (t, t1, t3)-ignorePendingBytes (p,c,_ps,s) = (p,c,s)+getLineNum :: AlexPosn -> Int+getLineNum (AlexPn _offset lineNum _colNum) = lineNum +getColumnNum :: AlexPosn -> Int+getColumnNum (AlexPn _offset _lineNum colNum) = colNum -alexInputPrevChar :: AlexInput -> Char-alexInputPrevChar (p,c,bs,s) = c+-- --------------------------------------------------------------------- -alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)-alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))-alexGetByte (_p,_c,[],[]) = Nothing-alexGetByte (p,_,[],(c:s)) = let p' = alexMove p c- (b:bs) = utf8Encode c- in p' `seq` Just (b, (p', c, bs, s))+getLastToken :: Alex Token+getLastToken = Alex $ \s@AlexState{alex_ust=ust} -> Right (s, previousToken ust) -alexMove :: AlexPosn -> Char -> AlexPosn-alexMove (AlexPn a l c) '\t' = AlexPn (a+1) l (((c+7) `div` 8)*8+1)-alexMove (AlexPn a l _c) '\n' = AlexPn (a+1) (l+1) 1-alexMove (AlexPn a l c) _ = AlexPn (a+1) l (c+1)+setLastToken :: Token -> Alex ()+setLastToken tok = Alex $ \s -> Right (s{alex_ust=(alex_ust s){previousToken=tok}}, ()) +getComment :: Alex [Token]+--getComments = reverse <$> Alex $ \s@AlexState{alex_ust=ust} -> Right (s, comments ust)+getComment = Alex $ \s@AlexState{alex_ust=ust} -> Right (s, comment ust)+++addComment :: Token -> Alex ()+addComment c = Alex $ \s -> Right (s{alex_ust=(alex_ust s){comment=c:( comment (alex_ust s) )}}, ())+++setComment :: [Token] -> Alex ()+setComment cs = Alex $ \s -> Right (s{alex_ust=(alex_ust s){comment=cs }}, ())++alexEOF :: Alex Token+alexEOF = do return (EOFToken tokenPosnEmpty [])++tailToken :: Alex Token+tailToken = do return (TailToken tokenPosnEmpty [])++adapt :: (TokenPosn -> Int -> String -> Alex Token) -> (AlexPosn,Char,String) -> Int -> Alex Token+adapt f loc@(p@(AlexPn offset line col),_,inp) len =+ (f (TokenPn offset line col) len inp)++{-+mkComment :: (AlexPosn,Char,String) -> Int -> Alex Token+mkComment loc@(p@(AlexPn offset line col),_,inp) len = do+ return (CommentToken (TokenPn offset line col) (take len inp))+-}++toTokenPosn :: AlexPosn -> TokenPosn+toTokenPosn (AlexPn offset line col) = (TokenPn offset line col)+ -- --------------------------------------------------------------------- -- a keyword or an identifier (the syntax overlaps)-keywordOrIdent :: String -> AlexSpan -> P Token+keywordOrIdent :: String -> TokenPosn -> Alex Token keywordOrIdent str location = return $ case Map.lookup str keywords of- Just symbol -> symbol location str- Nothing -> IdentifierToken location str+ Just symbol -> symbol location str []+ Nothing -> IdentifierToken location str [] -- mapping from strings to keywords-keywords :: Map.Map String (AlexSpan -> String -> Token)+--keywords :: Map.Map String (TokenPosn -> String -> Token)+keywords :: Map.Map String (TokenPosn -> String -> [CommentAnnotation] -> Token) keywords = Map.fromList keywordNames -keywordNames :: [(String, AlexSpan -> String -> Token)]+--keywordNames :: [(String, TokenPosn -> String -> Token)]+keywordNames :: [(String, TokenPosn -> String -> [CommentAnnotation] -> Token)] keywordNames = [ ("break",BreakToken),@@ -250,51 +528,54 @@ bof = 1 divide = 2 reg = 3-alex_action_4 = \loc len str -> keywordOrIdent (take len str) loc -alex_action_5 = mkString stringToken -alex_action_6 = mkString hexIntegerToken -alex_action_7 = mkString regExToken -alex_action_8 = mkString decimalToken -alex_action_10 = mkString assignToken-alex_action_11 = symbolToken DivToken-alex_action_12 = symbolToken SemiColonToken-alex_action_13 = symbolToken CommaToken-alex_action_14 = symbolToken HookToken-alex_action_15 = symbolToken ColonToken-alex_action_16 = symbolToken OrToken-alex_action_17 = symbolToken AndToken-alex_action_18 = symbolToken BitwiseOrToken-alex_action_19 = symbolToken BitwiseXorToken-alex_action_20 = symbolToken BitwiseAndToken-alex_action_21 = symbolToken StrictEqToken-alex_action_22 = symbolToken EqToken-alex_action_23 = mkString assignToken-alex_action_24 = symbolToken SimpleAssignToken-alex_action_25 = symbolToken StrictNeToken-alex_action_26 = symbolToken NeToken-alex_action_27 = symbolToken LshToken-alex_action_28 = symbolToken LeToken-alex_action_29 = symbolToken LtToken-alex_action_30 = symbolToken UrshToken-alex_action_31 = symbolToken RshToken-alex_action_32 = symbolToken GeToken-alex_action_33 = symbolToken GtToken-alex_action_34 = symbolToken IncrementToken-alex_action_35 = symbolToken DecrementToken-alex_action_36 = symbolToken PlusToken-alex_action_37 = symbolToken MinusToken-alex_action_38 = symbolToken MulToken-alex_action_39 = symbolToken ModToken-alex_action_40 = symbolToken NotToken-alex_action_41 = symbolToken BitwiseNotToken-alex_action_42 = symbolToken DotToken-alex_action_43 = symbolToken LeftBracketToken-alex_action_44 = symbolToken RightBracketToken-alex_action_45 = symbolToken LeftCurlyToken-alex_action_46 = symbolToken RightCurlyToken-alex_action_47 = symbolToken LeftParenToken-alex_action_48 = symbolToken RightParenToken-alex_action_49 = symbolToken CondcommentEndToken+alex_action_1 = adapt (mkString wsToken) +alex_action_2 = adapt (mkString commentToken) +alex_action_3 = adapt (mkString commentToken) +alex_action_4 = \ap@(loc,_,str) len -> keywordOrIdent (take len str) (toTokenPosn loc) +alex_action_5 = adapt (mkString stringToken) +alex_action_6 = adapt (mkString hexIntegerToken) +alex_action_7 = adapt (mkString regExToken) +alex_action_8 = adapt (mkString decimalToken) +alex_action_10 = adapt (mkString assignToken)+alex_action_11 = adapt (symbolToken DivToken)+alex_action_12 = adapt (symbolToken SemiColonToken)+alex_action_13 = adapt (symbolToken CommaToken)+alex_action_14 = adapt (symbolToken HookToken)+alex_action_15 = adapt (symbolToken ColonToken)+alex_action_16 = adapt (symbolToken OrToken)+alex_action_17 = adapt (symbolToken AndToken)+alex_action_18 = adapt (symbolToken BitwiseOrToken)+alex_action_19 = adapt (symbolToken BitwiseXorToken)+alex_action_20 = adapt (symbolToken BitwiseAndToken)+alex_action_21 = adapt (symbolToken StrictEqToken)+alex_action_22 = adapt (symbolToken EqToken)+alex_action_23 = adapt (mkString assignToken)+alex_action_24 = adapt (symbolToken SimpleAssignToken)+alex_action_25 = adapt (symbolToken StrictNeToken)+alex_action_26 = adapt (symbolToken NeToken)+alex_action_27 = adapt (symbolToken LshToken)+alex_action_28 = adapt (symbolToken LeToken)+alex_action_29 = adapt (symbolToken LtToken)+alex_action_30 = adapt (symbolToken UrshToken)+alex_action_31 = adapt (symbolToken RshToken)+alex_action_32 = adapt (symbolToken GeToken)+alex_action_33 = adapt (symbolToken GtToken)+alex_action_34 = adapt (symbolToken IncrementToken)+alex_action_35 = adapt (symbolToken DecrementToken)+alex_action_36 = adapt (symbolToken PlusToken)+alex_action_37 = adapt (symbolToken MinusToken)+alex_action_38 = adapt (symbolToken MulToken)+alex_action_39 = adapt (symbolToken ModToken)+alex_action_40 = adapt (symbolToken NotToken)+alex_action_41 = adapt (symbolToken BitwiseNotToken)+alex_action_42 = adapt (symbolToken DotToken)+alex_action_43 = adapt (symbolToken LeftBracketToken)+alex_action_44 = adapt (symbolToken RightBracketToken)+alex_action_45 = adapt (symbolToken LeftCurlyToken)+alex_action_46 = adapt (symbolToken RightCurlyToken)+alex_action_47 = adapt (symbolToken LeftParenToken)+alex_action_48 = adapt (symbolToken RightParenToken)+alex_action_49 = adapt (symbolToken CondcommentEndToken) {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "templates/GenericTemplate.hs" #-} {-# LINE 1 "<built-in>" #-}
src/Language/JavaScript/Parser/LexerUtils.hs view
@@ -12,12 +12,13 @@ module Language.JavaScript.Parser.LexerUtils ( StartCode- , Action -- , AlexInput -- , alexGetChar -- , alexInputPrevChar , symbolToken , mkString+ , commentToken+ , wsToken , regExToken , decimalToken -- , endOfLine@@ -25,79 +26,62 @@ , assignToken , hexIntegerToken , stringToken- , lexicalError+ --, lexicalError ) where -import Control.Monad (liftM)-import Control.Monad.Error.Class (throwError)+--import Control.Monad.Error.Class (throwError) import Language.JavaScript.Parser.Token as Token-import Language.JavaScript.Parser.ParserMonad import Language.JavaScript.Parser.SrcLocation import Prelude hiding (span) -- Functions for building tokens type StartCode = Int---type Action = AlexSpan -> Int -> String -> P Token-type Action result = AlexInput -> Int -> result---type Action = AlexInput -> Int -{--endOfLine :: P Token -> Action-endOfLine lexToken span _len _str = do- setLastEOL $ spanStartPoint span- lexToken--}----symbolToken :: (AlexSpan -> Token) -> Action-symbolToken :: (Monad m) => (t -> a) -> t -> t1 -> t2 -> m a---symbolToken :: (Monad m) => (AlexSpan -> Token) -> t -> t1 -> t2 -> m Token-symbolToken mkToken location _ _ = return (mkToken location)---symbolToken mkToken location = return (mkToken location)+symbolToken :: Monad m => (TokenPosn -> [CommentAnnotation] -> Token) -> TokenPosn -> Int -> String -> m Token+symbolToken mkToken location _ _ = return (mkToken location []) -- special tokens for the end of file and end of line endOfFileToken :: Token-endOfFileToken = EOFToken alexSpanEmpty--- dedentToken = DedentToken SpanEmpty-+endOfFileToken = EOFToken tokenPosnEmpty [] ---mkString :: (AlexSpan -> String -> Token) -> Action mkString- :: (Monad m) => (t -> [a1] -> a) -> t -> Int -> [a1] -> m a-mkString toToken loc len str = do- return $ toToken loc (take len str)--mkStringRemoveContinuation- :: (Monad m) => (t -> [a1] -> a) -> t -> Int -> [a1] -> m a-mkStringRemoveContinuation toToken loc len str = do- -- token <- toToken loc (take len str)- return $ toToken loc (take len str)+ :: (Monad m) => (TokenPosn -> String -> Token) -> TokenPosn -> Int -> String -> m Token+mkString toToken loc len str = do return (toToken loc (take len str)) -decimalToken :: AlexSpan -> String -> Token-decimalToken loc str = DecimalToken loc str+decimalToken :: TokenPosn -> String -> Token+decimalToken loc str = DecimalToken loc str [] -hexIntegerToken :: AlexSpan -> String -> Token-hexIntegerToken loc str = HexIntegerToken loc str+hexIntegerToken :: TokenPosn -> String -> Token+hexIntegerToken loc str = HexIntegerToken loc str [] -assignToken :: AlexSpan -> String -> Token-assignToken loc str = AssignToken loc str+assignToken :: TokenPosn -> String -> Token+assignToken loc str = AssignToken loc str [] -regExToken :: AlexSpan -> String -> Token-regExToken loc str = RegExToken loc str+regExToken :: TokenPosn -> String -> Token+regExToken loc str = RegExToken loc str [] -stringToken :: AlexSpan -> String -> Token-stringToken loc str = StringToken loc str1 delimiter+stringToken :: TokenPosn -> String -> Token+stringToken loc str = StringToken loc str1 delimiter [] where- -- str1 = init $ tail str- str1 = stripLineContinuations $ init $ tail str+ str1 = init $ tail str+ -- str1 = stripLineContinuations $ init $ tail str delimiter = head str +commentToken :: TokenPosn -> String -> Token+commentToken loc str = CommentToken loc str []++wsToken :: TokenPosn -> String -> Token+wsToken loc str = WsToken loc str []+ -- --------------------------------------------------------------------- -- Strip out any embedded line continuations -- Recognise by \ followed by $lf | $cr | $ls | $ps | $cr $lf -- $ls = \x2028, $ps = \x2029+stripLineContinuations :: String -> String stripLineContinuations xs = doStripLineContinuations [] [] xs +doStripLineContinuations :: String -> String -> String -> String doStripLineContinuations acc matched xs | xs == [] = acc -- Assume we are passed well-formed strings, should not be a dangling match | matched == [] = if (head xs == '\\')@@ -111,38 +95,12 @@ -- ----------------------------------------------------------------------------- -- Functionality required by Alex---- type AlexInput = (SrcLocation, String) {--alexInputPrevChar :: AlexInput -> Char-alexInputPrevChar _ = error "alexInputPrevChar not used"--alexGetChar :: AlexInput -> Maybe (Char, AlexInput)-alexGetChar (loc, input)- | null input = Nothing- | otherwise = Just (nextChar, (nextLoc, rest))- where- nextChar = head input- rest = tail input- nextLoc = moveChar nextChar loc--moveChar :: Char -> SrcLocation -> SrcLocation-moveChar '\n' = incLine 1-moveChar '\t' = incTab-moveChar '\r' = id-moveChar _ = incColumn 1--}- lexicalError :: P a lexicalError = do location <- getLocation c <- liftM head getInput -- (_,c,_,_) <- getInput throwError $ UnexpectedChar c location--{--readOctNoO :: String -> Integer-readOctNoO (zero:rest) = read (zero:'O':rest) -}- -- EOF
src/Language/JavaScript/Parser/ParseError.hs view
@@ -2,32 +2,33 @@ -- | -- Module : Language.JavaScript.ParseError -- Based on language-python version by Bernie Pope--- Copyright : (c) 2009 Bernie Pope +-- Copyright : (c) 2009 Bernie Pope -- License : BSD-style -- Stability : experimental -- Portability : ghc ----- Error values for the lexer and parser. +-- Error values for the lexer and parser. ----------------------------------------------------------------------------- module Language.JavaScript.Parser.ParseError ( ParseError (..) ) where --import Language.JavaScript.Parser.Pretty-import Language.JavaScript.Parser.SrcLocation (AlexPosn)-import Language.JavaScript.Parser.Token (Token) import Control.Monad.Error.Class+import Language.JavaScript.Parser.Lexer+import Language.JavaScript.Parser.SrcLocation (TokenPosn)+-- import Language.JavaScript.Parser.Token (Token) -data ParseError - = UnexpectedToken Token - -- ^ An error from the parser. Token found where it should not be. +data ParseError+ = UnexpectedToken Token+ -- ^ An error from the parser. Token found where it should not be. -- Note: tokens contain their own source span.- | UnexpectedChar Char AlexPosn + | UnexpectedChar Char TokenPosn -- ^ An error from the lexer. Character found where it should not be.- | StrError String + | StrError String -- ^ A generic error containing a string message. No source location. deriving (Eq, {- Ord,-} Show) instance Error ParseError where noMsg = StrError ""- strMsg = StrError + strMsg = StrError
src/Language/JavaScript/Parser/Parser.hs view
@@ -1,77 +1,64 @@ module Language.JavaScript.Parser.Parser (- -- * Parsing + -- * Parsing parse , readJs- , parseFile + -- , readJsKeepComments+ , parseFile -- * Parsing expressions -- parseExpr , parseUsing- , showStripped - , showStrippedMaybe + , showStripped+ , showStrippedMaybe ) where import Language.JavaScript.Parser.ParseError---import Language.JavaScript.Parser.Grammar import Language.JavaScript.Parser.Grammar5 import Language.JavaScript.Parser.Lexer-import Language.JavaScript.Parser.ParserMonad import qualified Language.JavaScript.Parser.AST as AST --- | Parse one compound statement, or a sequence of simple statements. --- Generally used for interactive input, such as from the command line of an interpreter. --- Return comments in addition to the parsed statements.-parseStmtKeepComments :: String -- ^ The input stream (Javascript source code). - -> String -- ^ The name of the Javascript source (filename or input device). - -> Either ParseError (AST.JSNode, [Token]) - -- ^ An error or maybe the abstract syntax tree (AST) of zero or more Javascript statements, plus comments.-parseStmtKeepComments input _srcName = - execParserKeepComments parseProgram state - where- state = initialState input ---- | Parse one compound statement, or a sequence of simple statements. --- Generally used for interactive input, such as from the command line of an interpreter. +-- | Parse one compound statement, or a sequence of simple statements.+-- Generally used for interactive input, such as from the command line of an interpreter. -- Return comments in addition to the parsed statements.-parse :: String -- ^ The input stream (Javascript source code). - -> String -- ^ The name of the Javascript source (filename or input device). - -> Either ParseError AST.JSNode - -- ^ An error or maybe the abstract syntax tree (AST) of zero or more Javascript statements, plus comments.-parse input _srcName = - execParser parseProgram state - where- state = initialState input +parse :: String -- ^ The input stream (Javascript source code).+ -> String -- ^ The name of the Javascript source (filename or input device).+ -> Either String AST.JSNode+ -- ^ An error or maybe the abstract syntax tree (AST) of zero+ -- or more Javascript statements, plus comments.+parse input _srcName = runAlex input parseProgram + readJs :: String -> AST.JSNode readJs input = do case (parse input "src") of Left msg -> error (show msg)- Right p -> p + Right p -> p parseFile :: FilePath -> IO AST.JSNode parseFile filename =- do + do x <- readFile (filename) return $ readJs x -showStripped ast = AST.showStripped ast +showStripped :: AST.JSNode -> String+showStripped ast = AST.showStripped ast +showStrippedMaybe :: Show a => Either a AST.JSNode -> String 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. +-- | Parse one compound statement, or a sequence of simple statements.+-- Generally used for interactive input, such as from the command line of an interpreter. -- Return comments in addition to the parsed statements.-parseUsing :: - P AST.JSNode- -> String -- ^ The input stream (Javascript source code). - -> String -- ^ The name of the Javascript source (filename or input device). - -> Either ParseError AST.JSNode - -- ^ An error or maybe the abstract syntax tree (AST) of zero or more Javascript statements, plus comments.-parseUsing p input _srcName = - execParser p state - where- state = initialState input+parseUsing ::+ Alex AST.JSNode -- ^ The parser to be used+ -> String -- ^ The input stream (Javascript source code).+ -> String -- ^ The name of the Javascript source (filename or input device).+ -> Either String AST.JSNode+ -- ^ An error or maybe the abstract syntax tree (AST) of zero+ -- or more Javascript statements, plus comments.++parseUsing p input _srcName = runAlex input p
src/Language/JavaScript/Parser/ParserMonad.hs view
@@ -1,181 +1,37 @@ {-# OPTIONS #-} ----------------------------------------------------------------------------- -- |--- Module : Language.JavaScript.ParserMonad --- Based on language-python version by Bernie Pope--- Copyright : (c) 2009 Bernie Pope +-- Module : Language.JavaScript.ParserMonad+-- Copyright : (c) 2012 Alan Zimmerman -- License : BSD-style -- Stability : experimental -- Portability : ghc ----- Monad support for JavaScript parser and lexer. +-- Monad support for JavaScript parser and lexer. ----------------------------------------------------------------------------- -module Language.JavaScript.Parser.ParserMonad - ( P- , execParser- , execParserKeepComments- , runParser- , thenP- , returnP- , alexSetInput - , alexGetInput - , setLocation- , getLocation- , getInput- , setInput- , getLastToken- , setLastToken- -- , setLastEOL- -- , getLastEOL- , ParseError (..)- , ParseState (..)- , initialState- , addComment- , getComments- , spanError- , AlexInput - , Byte - ) where--import Control.Applicative ((<$>))-import Control.Monad.Error as Error-import Control.Monad.State.Class-import Control.Monad.State.Strict as State-import Language.JavaScript.Parser.ParseError (ParseError (..))-import Language.JavaScript.Parser.SrcLocation (AlexPosn (..), alexStartPos, alexSpanEmpty, Span (..))-import Language.JavaScript.Parser.Token (Token (..))-import Prelude hiding (span)-import Data.Word (Word8)--internalError :: String -> P a -internalError = throwError . StrError --spanError :: Span a => a -> String -> P b ---spanError x str = throwError $ StrError $ unwords [prettyText $ getSpan x, str]-spanError x str = throwError $ StrError $ show ([show (getSpan x), str])--type Byte = Word8--type AlexInput = (AlexPosn, -- current position,- Char, -- previous char- [Byte], -- pending bytes on current char- String) -- current input string+module Language.JavaScript.Parser.ParserMonad+ (+ AlexUserState(..)+ , alexInitUserState+ ) where +import Language.JavaScript.Parser.Token+import Language.JavaScript.Parser.SrcLocation -data ParseState = ParseState {- alex_pos :: !AlexPosn, -- position at current input location- alex_inp :: String, -- the current input- alex_chr :: !Char, -- the character before the input- alex_bytes :: [Byte],- alex_scd :: !Int -- the current startcode- - , previousToken :: !Token -- the previous token- , comments :: [Token] -- accumulated comments - }+data AlexUserState = AlexUserState+ {+ previousToken :: !Token -- ^the previous token+ , comment :: [Token] -- ^the previous comment, if any+ } -initialState :: String -> ParseState-initialState inp - = ParseState - { alex_pos = alexStartPos- , alex_inp = inp- , alex_chr = '\n' - , alex_bytes = [] - , alex_scd = 0 - , previousToken = initToken- , comments = []- }-{--data ParseState = - ParseState - { location :: !SrcLocation -- position at current input location- -- , input :: !String -- the current input- , input :: !AlexInput -- the current input - , previousToken :: !Token -- the previous token- -- , lastEOL :: !SrcSpan -- location of the most recent end-of-line encountered- , comments :: [Token] -- accumulated comments +alexInitUserState :: AlexUserState+alexInitUserState = AlexUserState+ {+ previousToken = initToken+ , comment = [] }- deriving Show--} initToken :: Token---initToken = NewlineToken SpanEmpty -initToken = CommentToken alexSpanEmpty ""----type P a = StateT ParseState (Either ParseError) a--execParser :: P a -> ParseState -> Either ParseError a-execParser = evalStateT --execParserKeepComments :: P a -> ParseState -> Either ParseError (a, [Token])-execParserKeepComments parser astate = - evalStateT (parser >>= \x -> getComments >>= \c -> return (x, c)) astate--runParser :: P a -> ParseState -> Either ParseError (a, ParseState)-runParser = runStateT --{-# INLINE returnP #-}-returnP :: a -> P a-returnP = return --{-# INLINE thenP #-}-thenP :: P a -> (a -> P b) -> P b-thenP = (>>=)--{--failP :: SrcSpan -> [String] -> P a-failP span strs = throwError (prettyText span ++ ": " ++ unwords strs) --}-{--setLastEOL :: SrcSpan -> P ()-setLastEOL span = modify $ \s -> s { lastEOL = span }--getLastEOL :: P SrcSpan-getLastEOL = gets lastEOL--}--alexGetInput :: P AlexInput-alexGetInput- -- = P $ \s@ParseState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp} -> - -- Right (s, (pos,c,bs,inp))- = do- pos <- gets alex_pos- c <- gets alex_chr- bs <- gets alex_bytes- inp <- gets alex_inp- return (pos,c,bs,inp)--alexSetInput :: AlexInput -> P ()-alexSetInput (pos,c,bs,inp)- -- = P $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp} of- -- s@(ParseState{}) -> Right (s, ())- = modify $ \s -> s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp}---setLocation :: AlexPosn -> P ()-setLocation loc = modify $ \s -> s { alex_pos = loc } --getLocation :: P AlexPosn-getLocation = gets alex_pos --getInput :: P String -getInput = gets alex_inp --setInput :: String -> P ()-setInput inp = modify $ \s -> s { alex_inp = inp }--getLastToken :: P Token-getLastToken = gets previousToken --setLastToken :: Token -> P ()-setLastToken tok = modify $ \s -> s { previousToken = tok } --addComment :: Token -> P ()-addComment c = do- oldComments <- gets comments- modify $ \s -> s { comments = c : oldComments }+initToken = CommentToken tokenPosnEmpty "" [] -getComments :: P [Token]-getComments = reverse <$> gets comments
src/Language/JavaScript/Parser/SrcLocation.hs view
@@ -1,297 +1,21 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-}--------------------------------------------------------------------------------- |--- Module : Language.Python.Common.SrcLocation--- Copyright : (c) 2009 Bernie Pope--- License : BSD-style--- Maintainer : bjpop@csse.unimelb.edu.au--- Stability : experimental--- Portability : ghc------ Source location information for the Python lexer and parser. This module--- provides single-point locations and spans, and conversions between them.-------------------------------------------------------------------------------+{-# LANGUAGE DeriveDataTypeable #-} module Language.JavaScript.Parser.SrcLocation (- -- * Construction- AlexPosn (..),- AlexSpan (..),- alexStartPos,- alexSpanEmpty,- SrcLocation (..),- SrcSpan (..),- Span (..),- toSrcSpan,- spanning,- mkSrcSpan,- combineSrcSpans,- initialSrcLocation,- spanStartPoint,- -- * Modification- incColumn,- decColumn,- incLine,- incTab,- -- endCol,- -- * Projection of components of a span- -- endRow,- -- startCol,- -- startRow-) where+ TokenPosn(..)+ , tokenPosnEmpty+ ) where import Data.Data-import Prelude hiding (span) --- | `Posn' records the location of a token in the input text. It has three+-- | `TokenPosn' records the location of a token in the input text. It has three -- fields: the address (number of characters preceding the token), line number--- and column of a token within the file. `start_pos' gives the position of the--- start of the file and `eof_pos' a standard encoding for the end of file.--- `move_pos' calculates the new position after traversing a given character,--- assuming the usual eight character tab stops.--data AlexPosn = AlexPn !Int -- address (number of characters preceding the token)- !Int -- line number- !Int -- column- deriving (Eq,Show)--alexStartPos :: AlexPosn-alexStartPos = AlexPn 0 1 1---- AZ bringing this in as SrcSpan replacement.-type AlexSpan = (AlexPosn, Char, String)-alexSpanEmpty :: AlexSpan-alexSpanEmpty = (alexStartPos, '\n', "")---- | A location for a syntactic entity from the source code.--- The location is specified by its filename, and starting row--- 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- }- | NoLocation- deriving (Eq,Ord,Show,Typeable,Data)-{--instance Pretty SrcLocation where- pretty = pretty . getSpan--}---- | Types which have a span.-class Span a where- getSpan :: a -> SrcSpan- getSpan _x = SpanEmpty---- | Create a new span which encloses two spanned things.-spanning :: (Span a, Span b) => a -> b -> SrcSpan-spanning x y = combineSrcSpans (getSpan x) (getSpan y)--instance Span a => Span [a] where- getSpan [] = SpanEmpty- getSpan [x] = getSpan x- getSpan list@(x:_xs) = combineSrcSpans (getSpan x) (getSpan (last list))--instance Span a => Span (Maybe a) where- getSpan Nothing = SpanEmpty- getSpan (Just x) = getSpan x--instance (Span a, Span b) => Span (Either a b) where- getSpan (Left x) = getSpan x- getSpan (Right x) = getSpan x--instance (Span a, Span b) => Span (a, b) where- getSpan (x,y) = spanning x y--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- }---- | Decrement the column of a location, only if they are on the same row.-decColumn :: Int -> SrcLocation -> SrcLocation-decColumn n loc- | n < col = loc { sloc_column = col - n }- | otherwise = loc- where- col = sloc_column loc---- | Increment the column of a location.-incColumn :: Int -> SrcLocation -> SrcLocation-incColumn n loc@(Sloc { sloc_column = col })- = loc { sloc_column = col + n }-incColumn _ NoLocation = NoLocation---- | Increment the column of a location by one tab stop.-incTab :: SrcLocation -> SrcLocation-incTab loc@(Sloc { sloc_column = col })- = loc { sloc_column = newCol }- where- newCol = col + 8 - (col - 1) `mod` 8-incTab NoLocation = NoLocation---- | Increment the line number (row) of a location by one.-incLine :: Int -> SrcLocation -> SrcLocation-incLine n loc@(Sloc { sloc_row = row })- = loc { sloc_column = 1, sloc_row = row + n }-incLine _ NoLocation = NoLocation-{--Inspired heavily by compiler/basicTypes/SrcLoc.lhs-A SrcSpan delimits a portion of a text file.--}---- | Source location spanning a contiguous section of a file.-data SrcSpan- -- | A span which starts and ends on the same line.- = SpanCoLinear- { span_filename :: !String- , span_row :: {-# UNPACK #-} !Int- , span_start_column :: {-# UNPACK #-} !Int- , span_end_column :: {-# UNPACK #-} !Int- }- -- | A span which starts and ends on different lines.- | SpanMultiLine- { span_filename :: !String- , span_start_row :: {-# UNPACK #-} !Int- , span_start_column :: {-# UNPACK #-} !Int- , span_end_row :: {-# UNPACK #-} !Int- , span_end_column :: {-# UNPACK #-} !Int- }- -- | A span which is actually just one point in the file.- | SpanPoint- { span_filename :: !String- , span_row :: {-# UNPACK #-} !Int- , span_column :: {-# UNPACK #-} !Int- }- -- | No span information.- | SpanEmpty- 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- { span_filename = sloc_filename loc- , span_row = sloc_row loc- , span_column = sloc_column loc- }- getSpan NoLocation = SpanEmpty---- | Make a point span from the start of a span-spanStartPoint :: SrcSpan -> SrcSpan-spanStartPoint SpanEmpty = SpanEmpty-spanStartPoint span =- SpanPoint- { span_filename = span_filename span- , span_row = startRow span- , span_column = startCol span- }---- | Make a span from two locations. Assumption: either the--- arguments are the same, or the left one preceeds the right one.-mkSrcSpan :: SrcLocation -> SrcLocation -> SrcSpan-mkSrcSpan NoLocation _ = SpanEmpty-mkSrcSpan _ NoLocation = SpanEmpty-mkSrcSpan loc1 loc2- | line1 == line2 =- if col2 <= col1- then SpanPoint file line1 col1- else SpanCoLinear file line1 col1 col2- | otherwise =- SpanMultiLine file line1 col1 line2 col2- where- line1 = sloc_row loc1- line2 = sloc_row loc2- col1 = sloc_column loc1- col2 = sloc_column loc2- file = sloc_filename loc1---- | Combines two 'SrcSpan' into one that spans at least all the characters--- within both spans. Assumes the "file" part is the same in both inputs-combineSrcSpans :: SrcSpan -> SrcSpan -> SrcSpan-combineSrcSpans SpanEmpty r = r -- this seems more useful-combineSrcSpans l SpanEmpty = l-combineSrcSpans start end- = case row1 `compare` row2 of- EQ -> case col1 `compare` col2 of- EQ -> SpanPoint file row1 col1- LT -> SpanCoLinear file row1 col1 col2- GT -> SpanCoLinear file row1 col2 col1- LT -> SpanMultiLine file row1 col1 row2 col2- GT -> SpanMultiLine file row2 col2 row1 col1- where- row1 = startRow start- col1 = startCol start- row2 = endRow end- col2 = endCol end- file = span_filename start---- | Get the row of the start of a span.-startRow :: SrcSpan -> Int-startRow (SpanCoLinear { span_row = row }) = row-startRow (SpanMultiLine { span_start_row = row }) = row-startRow (SpanPoint { span_row = row }) = row-startRow SpanEmpty = error "startRow called on empty span"+-- and column of a token within the file.+-- Note: The lexer assumes the usual eight character tab stops. --- | Get the row of the end of a span.-endRow :: SrcSpan -> Int-endRow (SpanCoLinear { span_row = row }) = row-endRow (SpanMultiLine { span_end_row = row }) = row-endRow (SpanPoint { span_row = row }) = row-endRow SpanEmpty = error "endRow called on empty span"+data TokenPosn = TokenPn !Int -- address (number of characters preceding the token)+ !Int -- line number+ !Int -- column+ deriving (Eq,Show, Read, Data, Typeable) --- | Get the column of the start of a span.-startCol :: SrcSpan -> Int-startCol (SpanCoLinear { span_start_column = col }) = col-startCol (SpanMultiLine { span_start_column = col }) = col-startCol (SpanPoint { span_column = col }) = col-startCol SpanEmpty = error "startCol called on empty span"+tokenPosnEmpty :: TokenPosn+tokenPosnEmpty = TokenPn 0 0 0 --- | Get the column of the end of a span.-endCol :: SrcSpan -> Int-endCol (SpanCoLinear { span_end_column = col }) = col-endCol (SpanMultiLine { span_end_column = col }) = col-endCol (SpanPoint { span_column = col }) = col-endCol SpanEmpty = error "endCol called on empty span"
src/Language/JavaScript/Parser/Token.hs view
@@ -1,8 +1,8 @@ {-# LANGUAGE CPP, DeriveDataTypeable #-} ----------------------------------------------------------------------------- -- |--- Module : Language.Python.Common.Token --- Copyright : (c) 2009 Bernie Pope +-- Module : Language.Python.Common.Token+-- Copyright : (c) 2009 Bernie Pope -- License : BSD-style -- Maintainer : bjpop@csse.unimelb.edu.au -- Stability : experimental@@ -12,151 +12,139 @@ -- version 2 and version 3 of Python (they are mostly the same). ----------------------------------------------------------------------------- -module Language.JavaScript.Parser.Token ( - -- * The tokens - Token (..),+module Language.JavaScript.Parser.Token (+ -- * The tokens+ Token (..)+ , CommentAnnotation(..) -- * String conversion- debugTokenString,- -- tokenString,+ , debugTokenString -- * Classification -- TokenClass (..), ) where ---import Language.JavaScript.Parser.Pretty-import Language.JavaScript.Parser.SrcLocation (AlexSpan) import Data.Data+import Language.JavaScript.Parser.SrcLocation +data CommentAnnotation = CommentA TokenPosn String+ | WhiteSpace TokenPosn String+ | NoComment+ deriving (Eq,{-Ord,-}Show,Typeable,Data,Read)+ -- | Lexical tokens.-data Token +-- Each may be annotated with any comment occuring between the prior token and this one+data Token -- Comment- = CommentToken { token_span :: !AlexSpan, token_literal :: !String } -- ^ Single line comment.+ = CommentToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] } -- ^ Single line comment.+ | WsToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] } -- ^ White space, for preservation. - -- Identifiers - | IdentifierToken { token_span :: !AlexSpan, token_literal :: !String } -- ^ Identifier.+ -- Identifiers+ | IdentifierToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] } -- ^ Identifier. - -- Javascript Literals - - | DecimalToken { token_span :: !AlexSpan, token_literal :: !String }- -- ^ Literal: Decimal - | HexIntegerToken { token_span :: !AlexSpan, token_literal :: !String }+ -- Javascript Literals++ | DecimalToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ -- ^ Literal: Decimal+ | HexIntegerToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] } -- ^ Literal: Hexadecimal Integer- | StringToken { token_span :: !AlexSpan, token_literal :: !String, token_delimiter :: !Char } + | StringToken { token_span :: !TokenPosn, token_literal :: !String, token_delimiter :: !Char, token_comment :: ![CommentAnnotation] } -- ^ Literal: string, delimited by either single or double quotes- | RegExToken { token_span :: !AlexSpan, token_literal :: !String }+ | RegExToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] } -- ^ Literal: Regular Expression -- Keywords- | BreakToken { token_span :: !AlexSpan, token_literal :: !String }- | CaseToken { token_span :: !AlexSpan, token_literal :: !String }- | CatchToken { token_span :: !AlexSpan, token_literal :: !String }- | ConstToken { token_span :: !AlexSpan, token_literal :: !String }- | ContinueToken { token_span :: !AlexSpan, token_literal :: !String }- | DebuggerToken { token_span :: !AlexSpan, token_literal :: !String }- | DefaultToken { token_span :: !AlexSpan, token_literal :: !String }- | DeleteToken { token_span :: !AlexSpan, token_literal :: !String }- | DoToken { token_span :: !AlexSpan, token_literal :: !String }- | ElseToken { token_span :: !AlexSpan, token_literal :: !String }- | EnumToken { token_span :: !AlexSpan, token_literal :: !String }- | FalseToken { token_span :: !AlexSpan, token_literal :: !String }- | FinallyToken { token_span :: !AlexSpan, token_literal :: !String }- | ForToken { token_span :: !AlexSpan, token_literal :: !String }- | FunctionToken { token_span :: !AlexSpan, token_literal :: !String }- | IfToken { token_span :: !AlexSpan, token_literal :: !String }- | InToken { token_span :: !AlexSpan, token_literal :: !String }- | InstanceofToken { token_span :: !AlexSpan, token_literal :: !String }- | NewToken { token_span :: !AlexSpan, token_literal :: !String }- | NullToken { token_span :: !AlexSpan, token_literal :: !String }- | ReturnToken { token_span :: !AlexSpan, token_literal :: !String }- | SwitchToken { token_span :: !AlexSpan, token_literal :: !String }- | ThisToken { token_span :: !AlexSpan, token_literal :: !String }- | ThrowToken { token_span :: !AlexSpan, token_literal :: !String }- | TrueToken { token_span :: !AlexSpan, token_literal :: !String }- | TryToken { token_span :: !AlexSpan, token_literal :: !String }- | TypeofToken { token_span :: !AlexSpan, token_literal :: !String }- | VarToken { token_span :: !AlexSpan, token_literal :: !String }- | VoidToken { token_span :: !AlexSpan, token_literal :: !String }- | WhileToken { token_span :: !AlexSpan, token_literal :: !String }- | WithToken { token_span :: !AlexSpan, token_literal :: !String }- -- Future reserved words - | FutureToken { token_span :: !AlexSpan, token_literal :: !String }- -- Needed, not sure what they are though. - | GetToken { token_span :: !AlexSpan, token_literal :: !String }- | SetToken { token_span :: !AlexSpan, token_literal :: !String }- + | BreakToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | CaseToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | CatchToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | ConstToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | ContinueToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | DebuggerToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | DefaultToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | DeleteToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | DoToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | ElseToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | EnumToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | FalseToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | FinallyToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | ForToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | FunctionToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | IfToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | InToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | InstanceofToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | NewToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | NullToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | ReturnToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | SwitchToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | ThisToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | ThrowToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | TrueToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | TryToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | TypeofToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | VarToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | VoidToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | WhileToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | WithToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ -- Future reserved words+ | FutureToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ -- Needed, not sure what they are though.+ | GetToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | SetToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ -- Delimiters -- Operators- | SemiColonToken { token_span :: !AlexSpan }- | CommaToken { token_span :: !AlexSpan }- | HookToken { token_span :: !AlexSpan }- | ColonToken { token_span :: !AlexSpan }- | OrToken { token_span :: !AlexSpan }- | AndToken { token_span :: !AlexSpan }- | BitwiseOrToken { token_span :: !AlexSpan }- | BitwiseXorToken { token_span :: !AlexSpan }- | BitwiseAndToken { token_span :: !AlexSpan }- | StrictEqToken { token_span :: !AlexSpan }- | EqToken { token_span :: !AlexSpan }- | AssignToken { token_span :: !AlexSpan, token_literal :: !String }- | SimpleAssignToken { token_span :: !AlexSpan }- | StrictNeToken { token_span :: !AlexSpan }- | NeToken { token_span :: !AlexSpan }- | LshToken { token_span :: !AlexSpan }- | LeToken { token_span :: !AlexSpan }- | LtToken { token_span :: !AlexSpan }- | UrshToken { token_span :: !AlexSpan }- | RshToken { token_span :: !AlexSpan }- | GeToken { token_span :: !AlexSpan }- | GtToken { token_span :: !AlexSpan }- | IncrementToken { token_span :: !AlexSpan }- | DecrementToken { token_span :: !AlexSpan }- | PlusToken { token_span :: !AlexSpan }- | MinusToken { token_span :: !AlexSpan }- | MulToken { token_span :: !AlexSpan }- | DivToken { token_span :: !AlexSpan }- | ModToken { token_span :: !AlexSpan }- | NotToken { token_span :: !AlexSpan }- | BitwiseNotToken { token_span :: !AlexSpan }- | DotToken { token_span :: !AlexSpan }- | LeftBracketToken { token_span :: !AlexSpan }- | RightBracketToken { token_span :: !AlexSpan }- | LeftCurlyToken { token_span :: !AlexSpan }- | RightCurlyToken { token_span :: !AlexSpan }- | LeftParenToken { token_span :: !AlexSpan }- | RightParenToken { token_span :: !AlexSpan }- | CondcommentEndToken { token_span :: !AlexSpan }+ | SemiColonToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | CommaToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | HookToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | ColonToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | OrToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | AndToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | BitwiseOrToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | BitwiseXorToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | BitwiseAndToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | StrictEqToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | EqToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | AssignToken { token_span :: !TokenPosn, token_literal :: !String, token_comment :: ![CommentAnnotation] }+ | SimpleAssignToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | StrictNeToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | NeToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | LshToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | LeToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | LtToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | UrshToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | RshToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | GeToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | GtToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | IncrementToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | DecrementToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | PlusToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | MinusToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | MulToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | DivToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | ModToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | NotToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | BitwiseNotToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | DotToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | LeftBracketToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | RightBracketToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | LeftCurlyToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | RightCurlyToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | LeftParenToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | RightParenToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] }+ | CondcommentEndToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] } -- Special cases- | EOFToken { token_span :: !AlexSpan } -- ^ End of file + | TailToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] } -- ^ Stuff between last JS and EOF+ | EOFToken { token_span :: !TokenPosn, token_comment :: ![CommentAnnotation] } -- ^ End of file deriving (Eq,{-Ord,-}Show,Typeable{-,Data-}) -{--instance Span Token where- getSpan = token_span --} --- | Produce a string from a token containing detailed information. Mainly intended for debugging. +-- | Produce a string from a token containing detailed information. Mainly intended for debugging. debugTokenString :: Token -> String-debugTokenString token = +debugTokenString _token = "blah" {- render (text (show $ toConstr token) <+> pretty (token_span token) <+> if hasLiteral token then text (token_literal token) else empty) -} -{---- | Classification of tokens-data TokenClass- = Comment- | Number- | Identifier- | Punctuation- | Bracket- | Layout - | Keyword- | String- | Operator- | Assignment- deriving (Show, Eq, Ord)--} -- EOF
+ src/Language/JavaScript/Pretty/Printer.hs view
@@ -0,0 +1,221 @@+module Language.JavaScript.Pretty.Printer (+ -- * Printing+ renderJS+ , renderToString+ ) where++import Data.Char+import Data.List+import Data.Monoid (Monoid, mappend, mempty, mconcat)+import Language.JavaScript.Parser.AST+import Language.JavaScript.Parser.Parser+import Language.JavaScript.Parser.SrcLocation+import Language.JavaScript.Parser.Token+import qualified Blaze.ByteString.Builder as BB+import qualified Blaze.ByteString.Builder.Char.Utf8 as BS+import qualified Data.ByteString.Lazy as LB+import qualified Codec.Binary.UTF8.String as US++import Debug.Trace++-- ---------------------------------------------------------------------++data Foo = Foo (Int,Int) BB.Builder++-- ---------------------------------------------------------------------+-- Pretty printer stuff via blaze-builder++(<>) :: BB.Builder -> BB.Builder -> BB.Builder+(<>) a b = mappend a b++(<+>) :: BB.Builder -> BB.Builder -> BB.Builder+(<+>) a b = mconcat [a, (text " "), b]++--() ((Int, Int), BB.Builder) -> ((Int, Int), BB.Builder) -> ((Int, Int), BB.Builder)+--() a b =++hcat :: (Monoid a) => [a] -> a+hcat xs = mconcat xs++empty :: BB.Builder+empty = mempty++text :: String -> BB.Builder+text s = BS.fromString s++char :: Char -> BB.Builder+char c = BS.fromChar c++comma :: BB.Builder+comma = BS.fromChar ','++punctuate :: a -> [a] -> [a]+punctuate p xs = intersperse p xs++-- ---------------------------------------------------------------------++(<!>) :: Foo -> Foo -> Foo+(<!>) (Foo _ bb1) (Foo (r,c) bb2) = Foo (r,c) (mappend bb1 bb2)+--(<!>) a b = mappend a b++-- ---------------------------------------------------------------------++renderJS :: JSNode -> BB.Builder+renderJS node = bb+ where+ Foo _ bb = rn node (Foo (1,1) empty)++-- Take in the current+-- rn :: (Int, Int) -> JSNode -> ((Int, Int), BB.Builder)+rn :: JSNode -> Foo -> Foo++-- Terminals+rn (NT (JSIdentifier s ) p cs) foo = rcs cs p s foo+rn (NT (JSDecimal i ) p cs) foo = rcs cs p i foo+rn (NT (JSLiteral l ) p cs) foo = rcs cs p l foo+rn (NT (JSHexInteger i ) p cs) foo = rcs cs p i foo+rn (NT (JSStringLiteral s l) p cs) foo = rcs cs p ((s:l)++[s]) foo+rn (NT (JSRegEx s ) p cs) foo = rcs cs p s foo++-- Non-Terminals+rn (NN (JSArguments lb xs rb)) foo = rJS ([lb] ++ xs ++ [rb]) foo+rn (NN (JSArrayLiteral lb xs rb)) foo = rJS ([lb] ++ xs ++ [rb]) foo+rn (NN (JSBlock lb x rb)) foo = rJS (lb ++ [x] ++ rb) foo+rn (NN (JSBreak b x1s as)) foo = rJS ([b]++x1s++[as]) foo+rn (NN (JSCallExpression s os xs cs)) foo = rJS (os ++ xs ++ cs) foo+rn (NN (JSCase ca x1 c x2)) foo = rJS [ca,x1,c,x2] foo+rn (NN (JSCatch c lb x1 x2s rb x3)) foo = rJS ([c,lb,x1]++x2s++[rb,x3]) foo+rn (NN (JSContinue c xs as)) foo = rJS ([c]++xs++[as]) foo+rn (NN (JSDefault d c x)) foo = rJS [d,c,x] foo+rn (NN (JSDoWhile d x1 w lb x2 rb x3)) foo = rJS ([d,x1,w,lb,x2,rb,x3]) foo+rn (NN (JSElision c)) foo = rJS [c] foo+rn (NN (JSExpression xs)) foo = rJS xs foo+rn (NN (JSExpressionBinary s lhs op rhs)) foo = rJS (lhs ++ [op] ++ rhs) foo+rn (NN (JSExpressionParen lb e rb)) foo = rJS ([lb,e,rb]) foo+rn (NN (JSExpressionPostfix s xs op)) foo = rJS (xs ++ [op]) foo+rn (NN (JSExpressionTernary cond h v1 c v2)) foo = rJS (cond ++[h] ++ v1 ++ [c] ++ v2) foo+rn (NN (JSFinally f x)) foo = rJS [f,x] foo+rn (NN (JSFor f lb x1s s1 x2s s2 x3s rb x4)) foo = rJS ([f,lb]++x1s++[s1]++x2s++[s2]++x3s++[rb,x4]) foo+rn (NN (JSForIn f lb x1s i x2 rb x3)) foo = rJS ([f,lb]++x1s++[i,x2,rb,x3]) foo+rn (NN (JSForVar f lb v x1s s1 x2s s2 x3s rb x4)) foo = rJS ([f,lb,v]++x1s++[s1]++x2s++[s2]++x3s++[rb,x4]) foo+rn (NN (JSForVarIn f lb v x1 i x2 rb x3)) foo = rJS [f,lb,v,x1,i,x2,rb,x3] foo+rn (NN (JSFunction f x1 lb x2s rb lb2 x3 rb2)) foo = rJS ([f,x1,lb]++x2s++[rb,lb2,x3,rb2]) foo+rn (NN (JSFunctionBody xs)) foo = rJS xs foo+rn (NN (JSFunctionExpression f x1s lb x2s rb lb2 x3 rb2)) foo = rJS ([f] ++ x1s ++ [lb] ++ x2s ++ [rb,lb2,x3,rb2]) foo+rn (NN (JSIf i lb x1 rb x2 x3s)) foo = rJS ([i,lb,x1,rb,x2]++x3s) foo+rn (NN (JSLabelled l c v)) foo = rJS [l,c,v] foo+rn (NN (JSMemberDot xs dot n)) foo = rJS (xs ++ [dot,n]) foo+rn (NN (JSMemberSquare xs lb e rb)) foo = rJS (xs ++ [lb,e,rb]) foo+rn (NN (JSObjectLiteral lb xs rb)) foo = rJS ([lb] ++ xs ++ [rb]) foo+rn (NN (JSOperator n)) foo = rJS [n] foo+rn (NN (JSPropertyAccessor s n lb1 ps rb1 lb2 b rb2)) foo = rJS ([s,n,lb1] ++ ps ++ [rb1,lb2,b,rb2]) foo+rn (NN (JSPropertyNameandValue n colon vs)) foo = rJS ([n,colon] ++ vs) foo+rn (NN (JSReturn r xs as)) foo = rJS ([r] ++ xs ++ [as]) foo+rn (NN (JSSourceElements xs)) foo = rJS xs foo+rn (NN (JSSourceElementsTop xs)) foo = rJS xs foo+rn (NN (JSStatementBlock lb x rb)) foo = rJS [lb,x,rb] foo+rn (NN (JSStatementList xs)) foo = rJS xs foo+rn (NN (JSSwitch s lb x rb x2s)) foo = rJS ([s,lb,x,rb]++x2s) foo+rn (NN (JSThrow t x)) foo = rJS [t,x] foo+rn (NN (JSTry t x1 x2s)) foo = rJS ([t,x1]++x2s) foo+rn (NN (JSUnary l n)) foo = rJS [n] foo+rn (NN (JSVarDecl x1 x2s)) foo = rJS ([x1]++x2s) foo+rn (NN (JSVariables n xs as)) foo = rJS ([n]++xs++[as]) foo+rn (NN (JSWhile w lb x1 rb x2)) foo = rJS [w,lb,x1,rb,x2] foo+rn (NN (JSWith w lb x1 rb x2s)) foo = rJS ([w,lb,x1,rb]++x2s) foo++-- Debug helper+rn what foo = rs (show what) foo++--rn _ _ = undefined++-- ---------------------------------------------------------------------+-- Helper functions++-- ---------------------------------------------------------------------+-- Need a function that+-- a) renders all comments, according to their positions+-- b) advances to the position of the required string+-- c) renders the string, advancing the position+rcs :: [CommentAnnotation] -> TokenPosn -> String -> Foo -> Foo+rcs cs p s foo = rps p s (rc cs foo)++rc :: [CommentAnnotation] -> Foo -> Foo+rc cs foo = foldl' go foo cs+ where+ go :: Foo -> CommentAnnotation -> Foo+ go foo NoComment = foo+ go foo (CommentA p s) = rps p s foo+ go foo (WhiteSpace p s) = rps p s foo++-- Render a string at the given position+rps :: TokenPosn -> String -> Foo -> Foo+rps p s foo = (rs s foo')+ where+ foo' = (goto p foo)++-- Render a string+rs :: String -> Foo -> Foo+rs s (Foo (r,c) bb) = (Foo (r',c') (bb <> (text s)))+ where+ (r',c') = foldl' (\(row,col) char -> go (row,col) char) (r,c) s++ go (r,c) '\n' = (r+1,1)+ go (r,c) _ = (r,c+1)+++goto :: TokenPosn -> Foo -> Foo+goto (TokenPn _ ltgt ctgt) (Foo (lcur,ccur) bb) = (Foo (lnew,cnew) (bb <> bb'))+-- goto (TokenPn _ ltgt ctgt) (Foo (lcur,ccur) bb) = trace ("goto " ++ (show $ (ltgt,ctgt)) ++ "," ++ (show $ (lcur,ccur)) ++ "," ++ (show $ (lnew,cnew)) ) $ (Foo (lnew,cnew) (bb <> bb'))+ where+ (bbline,ccur') = if (lcur < ltgt) then (text $ (take (ltgt - lcur) $ repeat '\n'),1) else (mempty,ccur)+ bbcol = if (ccur' < ctgt) then (text $ take (ctgt - ccur') $ repeat ' ' ) else mempty+ bb' = bbline <> bbcol+ lnew = if (lcur < ltgt) then ltgt else lcur+ cnew = if (ccur' < ctgt) then ctgt else ccur'+++rJS :: [JSNode] -> Foo -> Foo+rJS xs foo = foldl' (flip rn) foo xs++renderToString :: JSNode -> String+-- need to be careful to not lose the unicode encoding on output+renderToString js = US.decode $ LB.unpack $ BB.toLazyByteString $ renderJS js+++-- ---------------------------------------------------------------------+-- Test stuff++_r :: JSNode -> String+_r js = map (\x -> chr (fromIntegral x)) $ LB.unpack $ BB.toLazyByteString $ renderJS js++_t :: String -> String+_t str = _r $ readJs str+++-- readJs "/*a*/x"+_ax = (NN+ (JSExpression+ [NT+ (JSIdentifier "x")+ (TokenPn 5 1 6)+ [CommentA (TokenPn 0 1 1) "/*a*/"]])+ )+++-- readJs "//j\nthis_"+-- NS (JSSourceElementsTop [NS (JSExpression [NS (JSIdentifier "this_") (TokenPn 4 2 1) [CommentA (TokenPn 0 1 1) "//j"]]) (TokenPn 4 2 1) []]) (TokenPn 4 2 1) []++_r1 = NN+ (+ JSExpression+ [+ NT+ (JSIdentifier "this_")+ (TokenPn 4 2 1)+ [CommentA (TokenPn 0 1 1) "//j"]+ ])+++-- EOF+