fregel-1.2.0: compiler/Lexer.hs
{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-missing-signatures #-}
{-# LANGUAGE CPP #-}
{-# LINE 2 "Lexer.x" #-}
module Lexer where
import Data.Char (chr)
#if __GLASGOW_HASKELL__ >= 603
#include "ghcconfig.h"
#elif defined(__GLASGOW_HASKELL__)
#include "config.h"
#endif
#if __GLASGOW_HASKELL__ >= 503
import Data.Array
import Data.Array.Base (unsafeAt)
#else
import Array
#endif
{-# 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 Control.Applicative as App (Applicative (..))
import qualified Control.Monad (ap)
import Data.Word (Word8)
import Data.Char (ord)
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 :: AlexInput -> AlexInput
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 (_,_,[],[]) = Nothing
alexGetByte (p,_,[],(c:s)) = let p' = alexMove p c
(b:bs) = utf8Encode c
in p' `seq` Just (b, (p', c, bs, s))
-- -----------------------------------------------------------------------------
-- 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+alex_tab_size-1) `div` alex_tab_size)*alex_tab_size+1)
alexMove (AlexPn a l _) '\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
}
-- 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_scd = 0}) of Left msg -> Left msg
Right ( _, a ) -> Right a
newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) }
instance Functor Alex where
fmap f a = Alex $ \s -> case unAlex a s of
Left msg -> Left msg
Right (s', a') -> Right (s', f a')
instance Applicative Alex where
pure a = Alex $ \s -> Right (s, a)
fa <*> a = Alex $ \s -> case unAlex fa s of
Left msg -> Left msg
Right (s', f) -> case unAlex a s' of
Left msg -> Left msg
Right (s'', b) -> Right (s'', f b)
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 = App.pure
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
state__@(AlexState{}) -> Right (state__, ())
alexError :: String -> Alex a
alexError message = Alex $ const $ 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 ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)
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)
-- -----------------------------------------------------------------------------
-- Basic wrapper
-- -----------------------------------------------------------------------------
-- Basic wrapper, ByteString version
-- -----------------------------------------------------------------------------
-- Posn wrapper
-- Adds text positions to the basic model.
-- -----------------------------------------------------------------------------
-- Posn wrapper, ByteString version
-- -----------------------------------------------------------------------------
-- GScan wrapper
-- For compatibility with previous versions of Alex, and because we can.
alex_tab_size :: Int
alex_tab_size = 8
alex_base :: Array Int Int
alex_base = listArray (0 :: Int, 104)
[ -8
, -58
, -73
, 0
, 40
, 0
, 168
, 296
, 552
, 488
, 0
, 734
, -39
, 697
, -31
, -86
, -38
, 746
, 0
, 731
, 951
, 1035
, 1119
, 1203
, 1287
, 1371
, 1455
, 1539
, 1623
, 1707
, 1791
, 1875
, -42
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, -103
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 712
, -34
, 0
, -40
, 0
, -33
, 0
, 0
, 0
, -22
, 0
, 0
, 0
, 1950
, 2025
, 2102
, 2112
, 2134
, 0
, 2166
, 2250
, 2334
, 2418
, 2502
, 2586
, 2670
, 2754
, 2838
, 2922
, 3006
, 3090
, 3174
, 3258
, 3342
, 3426
, 3510
, 3594
, 3678
, 3762
, 3846
, 3930
, 4014
, 4098
, 4182
, 4266
, 4350
, 4434
, 4518
, 4602
, 4677
, 4752
, 4827
, 4902
, 4977
, 5052
, 5127
, 5202
]
alex_table :: Array Int Int
alex_table = listArray (0 :: Int, 5457)
[ 0
, 17
, 17
, 44
, 13
, 17
, 13
, 41
, 39
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 43
, 33
, 42
, 37
, 18
, 17
, 1
, 11
, 47
, 45
, 0
, 14
, 0
, 55
, 56
, 52
, 50
, 34
, 51
, 15
, 53
, 63
, 63
, 63
, 63
, 63
, 63
, 63
, 63
, 63
, 63
, 16
, 35
, 48
, 32
, 49
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 101
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 104
, 102
, 102
, 102
, 102
, 102
, 102
, 59
, 36
, 60
, 0
, 81
, 54
, 81
, 81
, 79
, 77
, 85
, 81
, 76
, 81
, 95
, 81
, 81
, 71
, 81
, 81
, 81
, 84
, 81
, 70
, 81
, 86
, 81
, 75
, 81
, 81
, 81
, 81
, 57
, 40
, 58
, 9
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 2
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 7
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 8
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 17
, 17
, 38
, 0
, 17
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 66
, 0
, 81
, 0
, 0
, 46
, 0
, 0
, 0
, 0
, 17
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 8
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 10
, 9
, 7
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 3
, 2
, 6
, 5
, 5
, 5
, 4
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 102
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 102
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 64
, 0
, 63
, 63
, 63
, 63
, 63
, 63
, 63
, 63
, 63
, 63
, 64
, 64
, 64
, 64
, 64
, 64
, 64
, 64
, 64
, 64
, 0
, 12
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 12
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 65
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 12
, 0
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 12
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 19
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 20
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 25
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 30
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 96
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 94
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 69
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 93
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 91
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 90
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 89
, 81
, 81
, 81
, 82
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 88
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 87
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 83
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 80
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 78
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 74
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 73
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 72
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 92
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 68
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 67
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 31
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 28
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 27
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 26
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 24
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 23
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 22
, 81
, 81
, 81
, 81
, 29
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 0
, 0
, 0
, 0
, 81
, 0
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 81
, 21
, 81
, 81
, 81
, 81
, 81
, 81
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 102
, 0
, 102
, 102
, 102
, 102
, 61
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 102
, 0
, 102
, 102
, 102
, 102
, 62
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 102
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 97
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 102
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 98
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 102
, 0
, 103
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 102
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 102
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 100
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 102
, 0
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 99
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 102
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
, 0
]
alex_check :: Array Int Int
alex_check = listArray (0 :: Int, 5457)
[ -1
, 9
, 10
, 61
, 43
, 13
, 45
, 38
, 94
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, 61
, 58
, 124
, 62
, 45
, 32
, 33
, 34
, 61
, 61
, -1
, 38
, -1
, 40
, 41
, 42
, 43
, 44
, 45
, 46
, 47
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, 58
, 59
, 60
, 61
, 62
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, 91
, 92
, 93
, -1
, 95
, 96
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 123
, 124
, 125
, 191
, 192
, 193
, 194
, 195
, 196
, 197
, 198
, 199
, 200
, 201
, 202
, 203
, 204
, 205
, 206
, 207
, 208
, 209
, 210
, 211
, 212
, 213
, 214
, 215
, 216
, 217
, 218
, 219
, 220
, 221
, 222
, 223
, 224
, 225
, 226
, 227
, 228
, 229
, 230
, 231
, 232
, 233
, 234
, 235
, 236
, 237
, 238
, 239
, 240
, 241
, 242
, 243
, 244
, 245
, 246
, 247
, 248
, 249
, 250
, 251
, 252
, 253
, 254
, 255
, 143
, 144
, 145
, 146
, 147
, 148
, 149
, 150
, 151
, 152
, 153
, 154
, 155
, 156
, 157
, 158
, 159
, 160
, 161
, 162
, 163
, 164
, 165
, 166
, 167
, 168
, 169
, 170
, 171
, 172
, 173
, 174
, 175
, 176
, 177
, 178
, 179
, 180
, 181
, 182
, 183
, 184
, 185
, 186
, 187
, 188
, 189
, 190
, 191
, 192
, 193
, 194
, 195
, 196
, 197
, 198
, 199
, 200
, 201
, 202
, 203
, 204
, 205
, 206
, 207
, 208
, 209
, 210
, 211
, 212
, 213
, 214
, 215
, 216
, 217
, 218
, 219
, 220
, 221
, 222
, 223
, 224
, 225
, 226
, 227
, 228
, 229
, 230
, 231
, 232
, 233
, 234
, 235
, 236
, 237
, 238
, 239
, 240
, 241
, 242
, 243
, 244
, 245
, 246
, 247
, 248
, 249
, 250
, 251
, 252
, 253
, 254
, 255
, 128
, 129
, 130
, 131
, 132
, 133
, 134
, 135
, 136
, 137
, 138
, 139
, 140
, 141
, 142
, 143
, 144
, 145
, 146
, 147
, 148
, 149
, 150
, 151
, 152
, 153
, 154
, 155
, 156
, 157
, 158
, 159
, 160
, 161
, 162
, 163
, 164
, 165
, 166
, 167
, 168
, 169
, 170
, 171
, 172
, 173
, 174
, 175
, 176
, 177
, 178
, 179
, 180
, 181
, 182
, 183
, 184
, 185
, 186
, 187
, 188
, 189
, 190
, 191
, 192
, 193
, 194
, 195
, 196
, 197
, 198
, 199
, 200
, 201
, 202
, 203
, 204
, 205
, 206
, 207
, 208
, 209
, 210
, 211
, 212
, 213
, 214
, 215
, 216
, 217
, 218
, 219
, 220
, 221
, 222
, 223
, 224
, 225
, 226
, 227
, 228
, 229
, 230
, 231
, 232
, 233
, 234
, 235
, 236
, 237
, 238
, 239
, 240
, 241
, 242
, 243
, 244
, 245
, 246
, 247
, 248
, 249
, 250
, 251
, 252
, 253
, 254
, 255
, 128
, 129
, 130
, 131
, 132
, 133
, 134
, 135
, 136
, 137
, 138
, 139
, 140
, 141
, 142
, 143
, 144
, 145
, 146
, 147
, 148
, 149
, 150
, 151
, 152
, 153
, 154
, 155
, 156
, 157
, 158
, 159
, 160
, 161
, 162
, 163
, 164
, 165
, 166
, 167
, 168
, 169
, 170
, 171
, 172
, 173
, 174
, 175
, 176
, 177
, 178
, 179
, 180
, 181
, 182
, 183
, 184
, 185
, 186
, 187
, 188
, 189
, 190
, 191
, 192
, 193
, 194
, 195
, 196
, 197
, 198
, 199
, 200
, 201
, 202
, 203
, 204
, 205
, 206
, 207
, 208
, 209
, 210
, 211
, 212
, 213
, 214
, 215
, 216
, 217
, 218
, 219
, 220
, 221
, 222
, 223
, 224
, 225
, 226
, 227
, 228
, 229
, 230
, 231
, 232
, 233
, 234
, 235
, 236
, 237
, 238
, 239
, 240
, 241
, 242
, 243
, 244
, 245
, 246
, 247
, 248
, 249
, 250
, 251
, 252
, 253
, 254
, 255
, 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, 10
, 11
, 12
, 13
, 14
, 15
, 16
, 17
, 18
, 19
, 20
, 21
, 22
, 23
, 24
, 25
, 26
, 27
, 28
, 29
, 30
, 31
, 32
, 33
, 34
, 35
, 36
, 37
, 38
, 39
, 40
, 41
, 42
, 43
, 44
, 45
, 46
, 47
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, 58
, 59
, 60
, 61
, 62
, 63
, 64
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, 91
, 92
, 93
, 94
, 95
, 96
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 123
, 124
, 125
, 126
, 127
, 192
, 193
, 194
, 195
, 196
, 197
, 198
, 199
, 200
, 201
, 202
, 203
, 204
, 205
, 206
, 207
, 208
, 209
, 210
, 211
, 212
, 213
, 214
, 215
, 216
, 217
, 218
, 219
, 220
, 221
, 222
, 223
, 224
, 225
, 226
, 227
, 228
, 229
, 230
, 231
, 232
, 233
, 234
, 235
, 236
, 237
, 238
, 239
, 240
, 241
, 242
, 243
, 244
, 245
, 246
, 247
, 248
, 249
, 250
, 251
, 252
, 253
, 254
, 255
, 10
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, 9
, 10
, 45
, -1
, 13
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 34
, -1
, 39
, -1
, -1
, 61
, -1
, -1
, -1
, -1
, 32
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 128
, 129
, 130
, 131
, 132
, 133
, 134
, 135
, 136
, 137
, 138
, 139
, 140
, 141
, 142
, 143
, 144
, 145
, 146
, 147
, 148
, 149
, 150
, 151
, 152
, 153
, 154
, 155
, 156
, 157
, 158
, 159
, 160
, 161
, 162
, 163
, 164
, 165
, 166
, 167
, 168
, 169
, 170
, 171
, 172
, 173
, 174
, 175
, 176
, 177
, 178
, 179
, 180
, 181
, 182
, 183
, 184
, 185
, 186
, 187
, 188
, 189
, 190
, 191
, 192
, 193
, 194
, 195
, 196
, 197
, 198
, 199
, 200
, 201
, 202
, 203
, 204
, 205
, 206
, 207
, 208
, 209
, 210
, 211
, 212
, 213
, 214
, 215
, 216
, 217
, 218
, 219
, 220
, 221
, 222
, 223
, 224
, 225
, 226
, 227
, 228
, 229
, 230
, 231
, 232
, 233
, 234
, 235
, 236
, 237
, 238
, 239
, 240
, 241
, 242
, 243
, 244
, 245
, 246
, 247
, 248
, 249
, 250
, 251
, 252
, 253
, 254
, 255
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 46
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, 69
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 69
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 101
, -1
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 101
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 39
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, 48
, 49
, 50
, 51
, 52
, 53
, 54
, 55
, 56
, 57
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, 65
, 66
, 67
, 68
, 69
, 70
, 71
, 72
, 73
, 74
, 75
, 76
, 77
, 78
, 79
, 80
, 81
, 82
, 83
, 84
, 85
, 86
, 87
, 88
, 89
, 90
, -1
, -1
, -1
, -1
, 95
, -1
, 97
, 98
, 99
, 100
, 101
, 102
, 103
, 104
, 105
, 106
, 107
, 108
, 109
, 110
, 111
, 112
, 113
, 114
, 115
, 116
, 117
, 118
, 119
, 120
, 121
, 122
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
]
alex_deflt :: Array Int Int
alex_deflt = listArray (0 :: Int, 104)
[ -1
, -1
, 10
, 10
, 3
, 3
, -1
, -1
, 11
, 11
, 11
, 11
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
, -1
]
alex_accept = listArray (0 :: Int, 104)
[ AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAccNone
, AlexAcc 87
, AlexAcc 86
, AlexAcc 85
, AlexAcc 84
, AlexAcc 83
, AlexAcc 82
, AlexAcc 81
, AlexAcc 80
, AlexAcc 79
, AlexAcc 78
, AlexAcc 77
, AlexAcc 76
, AlexAcc 75
, AlexAcc 74
, AlexAcc 73
, AlexAcc 72
, AlexAcc 71
, AlexAcc 70
, AlexAcc 69
, AlexAcc 68
, AlexAcc 67
, AlexAcc 66
, AlexAcc 65
, AlexAcc 64
, AlexAcc 63
, AlexAcc 62
, AlexAcc 61
, AlexAcc 60
, AlexAcc 59
, AlexAcc 58
, AlexAcc 57
, AlexAcc 56
, AlexAcc 55
, AlexAcc 54
, AlexAcc 53
, AlexAcc 52
, AlexAcc 51
, AlexAcc 50
, AlexAcc 49
, AlexAcc 48
, AlexAcc 47
, AlexAcc 46
, AlexAcc 45
, AlexAcc 44
, AlexAcc 43
, AlexAcc 42
, AlexAcc 41
, AlexAcc 40
, AlexAcc 39
, AlexAcc 38
, AlexAcc 37
, AlexAcc 36
, AlexAcc 35
, AlexAcc 34
, AlexAcc 33
, AlexAcc 32
, AlexAcc 31
, AlexAcc 30
, AlexAcc 29
, AlexAcc 28
, AlexAcc 27
, AlexAcc 26
, AlexAcc 25
, AlexAcc 24
, AlexAcc 23
, AlexAcc 22
, AlexAcc 21
, AlexAcc 20
, AlexAcc 19
, AlexAcc 18
, AlexAcc 17
, AlexAcc 16
, AlexAcc 15
, AlexAcc 14
, AlexAcc 13
, AlexAcc 12
, AlexAcc 11
, AlexAcc 10
, AlexAcc 9
, AlexAcc 8
, AlexAcc 7
, AlexAcc 6
, AlexAcc 5
, AlexAcc 4
, AlexAcc 3
, AlexAcc 2
, AlexAcc 1
, AlexAcc 0
]
alex_actions = array (0 :: Int, 88)
[ (87,alex_action_0)
, (86,alex_action_1)
, (85,alex_action_2)
, (84,alex_action_3)
, (83,alex_action_4)
, (82,alex_action_5)
, (81,alex_action_6)
, (80,alex_action_7)
, (79,alex_action_8)
, (78,alex_action_9)
, (77,alex_action_10)
, (76,alex_action_11)
, (75,alex_action_12)
, (74,alex_action_13)
, (73,alex_action_14)
, (72,alex_action_15)
, (71,alex_action_16)
, (70,alex_action_17)
, (69,alex_action_18)
, (68,alex_action_19)
, (67,alex_action_20)
, (66,alex_action_21)
, (65,alex_action_22)
, (64,alex_action_23)
, (63,alex_action_24)
, (62,alex_action_25)
, (61,alex_action_26)
, (60,alex_action_27)
, (59,alex_action_28)
, (58,alex_action_29)
, (57,alex_action_30)
, (56,alex_action_31)
, (55,alex_action_32)
, (54,alex_action_33)
, (53,alex_action_34)
, (52,alex_action_35)
, (51,alex_action_36)
, (50,alex_action_37)
, (49,alex_action_38)
, (48,alex_action_39)
, (47,alex_action_40)
, (46,alex_action_41)
, (45,alex_action_42)
, (44,alex_action_43)
, (43,alex_action_44)
, (42,alex_action_45)
, (41,alex_action_46)
, (40,alex_action_47)
, (39,alex_action_47)
, (38,alex_action_48)
, (37,alex_action_49)
, (36,alex_action_49)
, (35,alex_action_49)
, (34,alex_action_49)
, (33,alex_action_49)
, (32,alex_action_49)
, (31,alex_action_49)
, (30,alex_action_49)
, (29,alex_action_49)
, (28,alex_action_49)
, (27,alex_action_49)
, (26,alex_action_49)
, (25,alex_action_49)
, (24,alex_action_49)
, (23,alex_action_49)
, (22,alex_action_49)
, (21,alex_action_49)
, (20,alex_action_49)
, (19,alex_action_49)
, (18,alex_action_49)
, (17,alex_action_49)
, (16,alex_action_49)
, (15,alex_action_49)
, (14,alex_action_49)
, (13,alex_action_49)
, (12,alex_action_49)
, (11,alex_action_49)
, (10,alex_action_49)
, (9,alex_action_49)
, (8,alex_action_49)
, (7,alex_action_50)
, (6,alex_action_50)
, (5,alex_action_50)
, (4,alex_action_50)
, (3,alex_action_50)
, (2,alex_action_50)
, (1,alex_action_50)
, (0,alex_action_50)
]
{-# LINE 76 "Lexer.x" #-}
mkL :: LexemeClass -> AlexInput -> Int -> Alex Lexeme
mkL c (p,_,_,str) len = return (L p c (take len str))
data Lexeme = L AlexPosn LexemeClass String
deriving (Eq, Show)
data LexemeClass
= L_DATA
| L_DERIVING
| L_LET
| L_IN
| L_IF
| L_THEN
| L_ELSE
| L_PREV
| L_CURR
| L_VAL
| L_IS
| L_RS
| L_GOF
| L_EQUAL
| L_DBLCOLON
| L_COMMA
| L_SEMICOLON
| L_BACKSLASH
| L_RARROW
| L_LARROW
| L_DOTHAT
| L_PIPE
| L_DBLAND
| L_DBLOR
| L_EQ
| L_NE
| L_LE
| L_GE
| L_LT
| L_GT
| L_PLUS
| L_MINUS
| L_AST
| L_SLASH
| L_BACKQUOTE
| L_LPAREN
| L_RPAREN
| L_LBRACE
| L_RBRACE
| L_LBRACKET
| L_RBRACKET
| L_IDENT
| L_CONSTRUCTOR
| L_BOOL
| L_INT
| L_FLOAT
| L_STRING
| LEOF
deriving (Eq, Show)
-- the idea of nested comments is borrowed from an Alex example for Haskell 98:
-- https://github.com/simonmar/alex/blob/master/examples/haskell.x
--
nested_comment :: AlexInput -> Int -> Alex Lexeme
nested_comment _ _ = do
input <- alexGetInput
go 1 input
where go 0 input = do alexSetInput input; alexMonadScan
go n input = do
case alexGetByte input of
Nothing -> err input
Just (c,input) -> do
case chr (fromIntegral c) of
'-' -> do -- checking the end of the commnet ?
case alexGetByte input of
Nothing -> err input
Just (125,input) -> go (n-1) input
Just (c,input) -> go n input
'\123' -> do -- checking the beginnig of a new comment ?
case alexGetByte input of
Nothing -> err input
Just (c,input) | c == fromIntegral (ord '-') -> go (n+1) input
Just (c,input) -> go n input
c -> go n input
err input = do alexSetInput input; lexError "error in nested comment"
lexError s = do
(p,c,_,input) <- alexGetInput
alexError (showPosn p ++ ": " ++ s ++
(if (not (null input))
then " before " ++ show (head input)
else " at end of file"))
scanner str = runAlex str $ do
let loop i ts = do tok@(L _ cl _) <- alexMonadScan;
if cl == LEOF
then return (i, reverse ts)
else do loop (i+1) (tok:ts)
loop 0 []
alexEOF = return (L undefined LEOF "")
showPosn (AlexPn _ line col) = show line ++ ':': show col
main = getContents >>= print . scanner
alex_action_0 = skip
alex_action_1 = nested_comment
alex_action_2 = mkL L_DATA
alex_action_3 = mkL L_DERIVING
alex_action_4 = mkL L_LET
alex_action_5 = mkL L_IN
alex_action_6 = mkL L_IF
alex_action_7 = mkL L_THEN
alex_action_8 = mkL L_ELSE
alex_action_9 = mkL L_PREV
alex_action_10 = mkL L_CURR
alex_action_11 = mkL L_VAL
alex_action_12 = mkL L_IS
alex_action_13 = mkL L_RS
alex_action_14 = mkL L_GOF
alex_action_15 = mkL L_EQUAL
alex_action_16 = mkL L_DBLCOLON
alex_action_17 = mkL L_COMMA
alex_action_18 = mkL L_SEMICOLON
alex_action_19 = mkL L_BACKSLASH
alex_action_20 = mkL L_RARROW
alex_action_21 = mkL L_LARROW
alex_action_22 = mkL L_DOTHAT
alex_action_23 = mkL L_PIPE
alex_action_24 = mkL L_DBLAND
alex_action_25 = mkL L_DBLOR
alex_action_26 = mkL L_EQ
alex_action_27 = mkL L_NE
alex_action_28 = mkL L_NE
alex_action_29 = mkL L_LE
alex_action_30 = mkL L_GE
alex_action_31 = mkL L_LT
alex_action_32 = mkL L_GT
alex_action_33 = mkL L_PLUS
alex_action_34 = mkL L_MINUS
alex_action_35 = mkL L_AST
alex_action_36 = mkL L_SLASH
alex_action_37 = mkL L_BACKQUOTE
alex_action_38 = mkL L_LPAREN
alex_action_39 = mkL L_RPAREN
alex_action_40 = mkL L_LBRACE
alex_action_41 = mkL L_RBRACE
alex_action_42 = mkL L_LBRACKET
alex_action_43 = mkL L_RBRACKET
alex_action_44 = mkL L_BOOL
alex_action_45 = mkL L_BOOL
alex_action_46 = mkL L_INT
alex_action_47 = mkL L_FLOAT
alex_action_48 = mkL L_STRING
alex_action_49 = mkL L_IDENT
alex_action_50 = mkL L_CONSTRUCTOR
{-# LINE 1 "templates/GenericTemplate.hs" #-}
-- -----------------------------------------------------------------------------
-- ALEX TEMPLATE
--
-- This code is in the PUBLIC DOMAIN; you may copy it freely and use
-- it for any purpose whatsoever.
-- -----------------------------------------------------------------------------
-- INTERNALS and main scanner engine
alexIndexInt16OffAddr arr off = arr ! off
alexIndexInt32OffAddr arr off = arr ! off
quickIndex arr i = arr ! i
-- -----------------------------------------------------------------------------
-- Main lexing routines
data AlexReturn a
= AlexEOF
| AlexError !AlexInput
| AlexSkip !AlexInput !Int
| AlexToken !AlexInput !Int a
-- alexScan :: AlexInput -> StartCode -> AlexReturn a
alexScan input__ (sc)
= alexScanUser undefined input__ (sc)
alexScanUser user__ input__ (sc)
= case alex_scan_tkn user__ input__ (0) input__ sc AlexNone of
(AlexNone, input__') ->
case alexGetByte input__ of
Nothing ->
AlexEOF
Just _ ->
AlexError input__'
(AlexLastSkip input__'' len, _) ->
AlexSkip input__'' len
(AlexLastAcc k input__''' len, _) ->
AlexToken input__''' len (alex_actions ! k)
-- Push the input through the DFA, remembering the most recent accepting
-- state it encountered.
alex_scan_tkn user__ orig_input len input__ s last_acc =
input__ `seq` -- strict in the input
let
new_acc = (check_accs (alex_accept `quickIndex` (s)))
in
new_acc `seq`
case alexGetByte input__ of
Nothing -> (new_acc, input__)
Just (c, new_input) ->
case fromIntegral c of { (ord_c) ->
let
base = alexIndexInt32OffAddr alex_base s
offset = (base + ord_c)
check = alexIndexInt16OffAddr alex_check offset
new_s = if (offset >= (0)) && (check == ord_c)
then alexIndexInt16OffAddr alex_table offset
else alexIndexInt16OffAddr alex_deflt s
in
case new_s of
(-1) -> (new_acc, input__)
-- on an error, we want to keep the input *before* the
-- character that failed, not after.
_ -> alex_scan_tkn user__ orig_input (if c < 0x80 || c >= 0xC0 then (len + (1)) else len)
-- note that the length is increased ONLY if this is the 1st byte in a char encoding)
new_input new_s new_acc
}
where
check_accs (AlexAccNone) = last_acc
check_accs (AlexAcc a ) = AlexLastAcc a input__ (len)
check_accs (AlexAccSkip) = AlexLastSkip input__ (len)
check_accs (AlexAccPred a predx rest)
| predx user__ orig_input (len) input__
= AlexLastAcc a input__ (len)
| otherwise
= check_accs rest
check_accs (AlexAccSkipPred predx rest)
| predx user__ orig_input (len) input__
= AlexLastSkip input__ (len)
| otherwise
= check_accs rest
data AlexLastAcc
= AlexNone
| AlexLastAcc !Int !AlexInput !Int
| AlexLastSkip !AlexInput !Int
data AlexAcc user
= AlexAccNone
| AlexAcc Int
| AlexAccSkip
| AlexAccPred Int (AlexAccPred user) (AlexAcc user)
| AlexAccSkipPred (AlexAccPred user) (AlexAcc user)
type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool
-- -----------------------------------------------------------------------------
-- Predicates on a rule
alexAndPred p1 p2 user__ in1 len in2
= p1 user__ in1 len in2 && p2 user__ in1 len in2
--alexPrevCharIsPred :: Char -> AlexAccPred _
alexPrevCharIs c _ input__ _ _ = c == alexInputPrevChar input__
alexPrevCharMatches f _ input__ _ _ = f (alexInputPrevChar input__)
--alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _
alexPrevCharIsOneOf arr _ input__ _ _ = arr ! alexInputPrevChar input__
--alexRightContext :: Int -> AlexAccPred _
alexRightContext (sc) user__ _ _ input__ =
case alex_scan_tkn user__ input__ (0) input__ sc AlexNone of
(AlexNone, _) -> False
_ -> True
-- TODO: there's no need to find the longest
-- match when checking the right context, just
-- the first match will do.