wasm 1.0.0 → 1.1.0
raw patch · 16 files changed
+1193/−9612 lines, 16 filesdep +primitivedep −base64-bytestringdep −optparse-applicativedep ~basedep ~bytestringdep ~cerealsetup-changedPVP ok
version bump matches the API change (PVP)
Dependencies added: primitive
Dependencies removed: base64-bytestring, optparse-applicative
Dependency ranges changed: base, bytestring, cereal, containers, deepseq, filepath, ieee754, mtl, tasty-hunit, text, utf8-string, vector
API changes (from Hackage documentation)
- Language.Wasm: ExportedGlobalIsNotConst :: ValidationError
- Language.Wasm: ImportedGlobalIsNotConst :: ValidationError
- Language.Wasm.Binary: decodeModule :: ByteString -> Either String Module
- Language.Wasm.Binary: decodeModuleLazy :: ByteString -> Either String Module
- Language.Wasm.Binary: dumpModule :: Module -> ByteString
- Language.Wasm.Binary: dumpModuleLazy :: Module -> ByteString
- Language.Wasm.Binary: instance Data.Serialize.Serialize (Language.Wasm.Structure.Instruction GHC.Natural.Natural)
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Binary.Index
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Binary.LocalTypeRange
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Binary.SectionType
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.DataSegment
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.ElemSegment
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.ElemType
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.Export
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.ExportDesc
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.FuncType
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.Function
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.Global
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.GlobalType
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.Import
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.ImportDesc
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.Limit
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.MemArg
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.Memory
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.Module
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.Table
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.TableType
- Language.Wasm.Binary: instance Data.Serialize.Serialize Language.Wasm.Structure.ValueType
- Language.Wasm.Binary: instance GHC.Classes.Eq Language.Wasm.Binary.Index
- Language.Wasm.Binary: instance GHC.Classes.Eq Language.Wasm.Binary.LocalTypeRange
- Language.Wasm.Binary: instance GHC.Classes.Eq Language.Wasm.Binary.SectionType
- Language.Wasm.Binary: instance GHC.Enum.Enum Language.Wasm.Binary.SectionType
- Language.Wasm.Binary: instance GHC.Show.Show Language.Wasm.Binary.Index
- Language.Wasm.Binary: instance GHC.Show.Show Language.Wasm.Binary.LocalTypeRange
- Language.Wasm.Binary: instance GHC.Show.Show Language.Wasm.Binary.SectionType
- Language.Wasm.Builder: (.=) :: (Consumer loc, (Producer expr)) => loc -> expr -> GenFun ()
- Language.Wasm.Builder: Fn :: Natural -> Fn a
- Language.Wasm.Builder: abs_f :: (Producer a, IsFloat (OutType a) ~ True) => a -> GenFun (OutType a)
- Language.Wasm.Builder: add :: (Producer a, Producer b, OutType a ~ OutType b) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: after :: Expression -> GenFun a -> GenFun a
- Language.Wasm.Builder: and :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: appendExpr :: Expression -> GenFun ()
- Language.Wasm.Builder: arg :: (Producer expr) => expr -> GenFun ()
- Language.Wasm.Builder: block :: (Returnable res) => res -> GenFun res -> GenFun res
- Language.Wasm.Builder: br :: Label t -> GenFun ()
- Language.Wasm.Builder: brIf :: (Producer pred, OutType pred ~ Proxy I32) => pred -> Label t -> GenFun ()
- Language.Wasm.Builder: brTable :: (Producer selector, OutType selector ~ Proxy I32) => selector -> [Label t] -> Label t -> GenFun ()
- Language.Wasm.Builder: call :: (Returnable res) => Fn res -> [GenFun a] -> GenFun res
- Language.Wasm.Builder: callIndirect :: (Producer index, OutType index ~ Proxy I32, Returnable res) => TypeDef res -> index -> [GenFun a] -> GenFun res
- Language.Wasm.Builder: ceil_f :: (Producer a, IsFloat (OutType a) ~ True) => a -> GenFun (OutType a)
- Language.Wasm.Builder: class Consumer loc
- Language.Wasm.Builder: class Producer expr where {
- Language.Wasm.Builder: clz :: (Producer a, IsInt (OutType a) ~ True) => a -> GenFun (OutType a)
- Language.Wasm.Builder: convert_s :: (Producer i, IsInt (OutType i) ~ True, IsFloat (Proxy t) ~ True, ValueTypeable t) => Proxy t -> i -> GenFun (Proxy t)
- Language.Wasm.Builder: convert_u :: (Producer i, IsInt (OutType i) ~ True, IsFloat (Proxy t) ~ True, ValueTypeable t) => Proxy t -> i -> GenFun (Proxy t)
- Language.Wasm.Builder: copySign :: (Producer a, Producer b, OutType a ~ OutType b, IsFloat (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: ctz :: (Producer a, IsInt (OutType a) ~ True) => a -> GenFun (OutType a)
- Language.Wasm.Builder: data Glob t
- Language.Wasm.Builder: data Label i
- Language.Wasm.Builder: data Loc t
- Language.Wasm.Builder: data Mem
- Language.Wasm.Builder: data Tbl
- Language.Wasm.Builder: dataSegment :: (Producer offset, OutType offset ~ Proxy I32) => offset -> ByteString -> GenMod ()
- Language.Wasm.Builder: dec :: (Consumer a, Producer a, Integral i) => i -> a -> GenFun ()
- Language.Wasm.Builder: declare :: (Returnable res) => res -> [ValueType] -> GenMod (Fn res)
- Language.Wasm.Builder: demote :: (Producer f, OutType f ~ Proxy F64) => f -> GenFun (Proxy F32)
- Language.Wasm.Builder: div_f :: (Producer a, Producer b, OutType a ~ OutType b, IsFloat (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: div_s :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: div_u :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: drop :: (Producer val) => val -> GenFun ()
- Language.Wasm.Builder: eq :: (Producer a, Producer b, OutType a ~ OutType b) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: eqz :: (Producer a, IsInt (OutType a) ~ True) => a -> GenFun (Proxy I32)
- Language.Wasm.Builder: export :: Exportable e => Text -> e -> GenMod (AfterExport e)
- Language.Wasm.Builder: extend_s :: (Producer i, OutType i ~ Proxy I32) => i -> GenFun (Proxy I64)
- Language.Wasm.Builder: extend_u :: (Producer i, OutType i ~ Proxy I32) => i -> GenFun (Proxy I64)
- Language.Wasm.Builder: f32 :: Proxy ValueType F32
- Language.Wasm.Builder: f32c :: Float -> GenFun (Proxy F32)
- Language.Wasm.Builder: f64 :: Proxy ValueType F64
- Language.Wasm.Builder: f64c :: Double -> GenFun (Proxy F64)
- Language.Wasm.Builder: finish :: (Producer val) => val -> GenFun ()
- Language.Wasm.Builder: floor_f :: (Producer a, IsFloat (OutType a) ~ True) => a -> GenFun (OutType a)
- Language.Wasm.Builder: for :: (Producer pred, OutType pred ~ Proxy I32) => GenFun () -> pred -> GenFun () -> GenFun () -> GenFun ()
- Language.Wasm.Builder: fun :: (Returnable res) => res -> GenFun res -> GenMod (Fn res)
- Language.Wasm.Builder: funRec :: (Returnable res) => res -> (Fn res -> GenFun res) -> GenMod (Fn res)
- Language.Wasm.Builder: ge_f :: (Producer a, Producer b, OutType a ~ OutType b, IsFloat (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: ge_s :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: ge_u :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: genMod :: GenMod a -> Module
- Language.Wasm.Builder: global :: (ValueTypeable t) => (ValueType -> GlobalType) -> Proxy t -> (ValType t) -> GenMod (Glob t)
- Language.Wasm.Builder: growMemory :: (Producer size, OutType size ~ Proxy I32) => size -> GenFun ()
- Language.Wasm.Builder: gt_f :: (Producer a, Producer b, OutType a ~ OutType b, IsFloat (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: gt_s :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: gt_u :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: i32 :: Proxy ValueType I32
- Language.Wasm.Builder: i32c :: (Integral i) => i -> GenFun (Proxy I32)
- Language.Wasm.Builder: i64 :: Proxy ValueType I64
- Language.Wasm.Builder: i64c :: (Integral i) => i -> GenFun (Proxy I64)
- Language.Wasm.Builder: if' :: (Producer pred, OutType pred ~ Proxy I32, Returnable res) => res -> pred -> GenFun res -> GenFun res -> GenFun res
- Language.Wasm.Builder: implement :: (Returnable res) => Fn res -> GenFun res -> GenMod (Fn res)
- Language.Wasm.Builder: importFunction :: (Returnable res) => Text -> Text -> res -> [ValueType] -> GenMod (Fn res)
- Language.Wasm.Builder: importGlobal :: (ValueTypeable t) => Text -> Text -> Proxy t -> GenMod (Glob t)
- Language.Wasm.Builder: importMemory :: Text -> Text -> Natural -> Maybe Natural -> GenMod Mem
- Language.Wasm.Builder: importTable :: Text -> Text -> Natural -> Maybe Natural -> GenMod Tbl
- Language.Wasm.Builder: inc :: (Consumer a, Producer a, Integral i) => i -> a -> GenFun ()
- Language.Wasm.Builder: infixr 2 .=
- Language.Wasm.Builder: instance GHC.Classes.Eq Language.Wasm.Builder.FuncDef
- Language.Wasm.Builder: instance GHC.Classes.Eq Language.Wasm.Builder.GenModState
- Language.Wasm.Builder: instance GHC.Classes.Eq Language.Wasm.Builder.Mem
- Language.Wasm.Builder: instance GHC.Classes.Eq Language.Wasm.Builder.Tbl
- Language.Wasm.Builder: instance GHC.Show.Show Language.Wasm.Builder.FuncDef
- Language.Wasm.Builder: instance GHC.Show.Show Language.Wasm.Builder.GenModState
- Language.Wasm.Builder: instance GHC.Show.Show Language.Wasm.Builder.Mem
- Language.Wasm.Builder: instance GHC.Show.Show Language.Wasm.Builder.Tbl
- Language.Wasm.Builder: instance Language.Wasm.Builder.Exportable Language.Wasm.Builder.Mem
- Language.Wasm.Builder: instance Language.Wasm.Builder.Exportable Language.Wasm.Builder.Tbl
- Language.Wasm.Builder: instance Language.Wasm.Builder.Exportable e => Language.Wasm.Builder.Exportable (Language.Wasm.Builder.GenMod e)
- Language.Wasm.Builder: instance Language.Wasm.Builder.Returnable ()
- Language.Wasm.Builder: instance Language.Wasm.Builder.ValueTypeable 'Language.Wasm.Structure.F32
- Language.Wasm.Builder: instance Language.Wasm.Builder.ValueTypeable 'Language.Wasm.Structure.F64
- Language.Wasm.Builder: instance Language.Wasm.Builder.ValueTypeable 'Language.Wasm.Structure.I32
- Language.Wasm.Builder: instance Language.Wasm.Builder.ValueTypeable 'Language.Wasm.Structure.I64
- Language.Wasm.Builder: instance forall k (a :: k). GHC.Classes.Eq (Language.Wasm.Builder.Fn a)
- Language.Wasm.Builder: instance forall k (a :: k). GHC.Show.Show (Language.Wasm.Builder.Fn a)
- Language.Wasm.Builder: instance forall k (i :: k). GHC.Classes.Eq (Language.Wasm.Builder.Label i)
- Language.Wasm.Builder: instance forall k (i :: k). GHC.Show.Show (Language.Wasm.Builder.Label i)
- Language.Wasm.Builder: instance forall k (t :: k). GHC.Classes.Eq (Language.Wasm.Builder.Glob t)
- Language.Wasm.Builder: instance forall k (t :: k). GHC.Classes.Eq (Language.Wasm.Builder.Loc t)
- Language.Wasm.Builder: instance forall k (t :: k). GHC.Classes.Eq (Language.Wasm.Builder.TypeDef t)
- Language.Wasm.Builder: instance forall k (t :: k). GHC.Show.Show (Language.Wasm.Builder.Glob t)
- Language.Wasm.Builder: instance forall k (t :: k). GHC.Show.Show (Language.Wasm.Builder.Loc t)
- Language.Wasm.Builder: instance forall k (t :: k). GHC.Show.Show (Language.Wasm.Builder.TypeDef t)
- Language.Wasm.Builder: instance forall k (t :: k). Language.Wasm.Builder.Consumer (Language.Wasm.Builder.Glob t)
- Language.Wasm.Builder: instance forall k (t :: k). Language.Wasm.Builder.Consumer (Language.Wasm.Builder.Loc t)
- Language.Wasm.Builder: instance forall k (t :: k). Language.Wasm.Builder.Exportable (Language.Wasm.Builder.Fn t)
- Language.Wasm.Builder: instance forall k (t :: k). Language.Wasm.Builder.Exportable (Language.Wasm.Builder.Glob t)
- Language.Wasm.Builder: instance forall k (t :: k). Language.Wasm.Builder.ValueTypeable t => Language.Wasm.Builder.Producer (Language.Wasm.Builder.GenFun (Data.Proxy.Proxy t))
- Language.Wasm.Builder: instance forall k (t :: k). Language.Wasm.Builder.ValueTypeable t => Language.Wasm.Builder.Producer (Language.Wasm.Builder.Glob t)
- Language.Wasm.Builder: instance forall k (t :: k). Language.Wasm.Builder.ValueTypeable t => Language.Wasm.Builder.Producer (Language.Wasm.Builder.Loc t)
- Language.Wasm.Builder: instance forall k (t :: k). Language.Wasm.Builder.ValueTypeable t => Language.Wasm.Builder.Returnable (Data.Proxy.Proxy t)
- Language.Wasm.Builder: label :: GenFun (Label t)
- Language.Wasm.Builder: le_f :: (Producer a, Producer b, OutType a ~ OutType b, IsFloat (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: le_s :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: le_u :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: load :: (ValueTypeable t, Producer addr, OutType addr ~ Proxy I32, Integral offset, Integral align) => Proxy t -> addr -> offset -> align -> GenFun (Proxy t)
- Language.Wasm.Builder: load16_s :: (ValueTypeable t, IsInt (Proxy t) ~ True, Producer addr, OutType addr ~ Proxy I32, Integral offset, Integral align) => Proxy t -> addr -> offset -> align -> GenFun (Proxy t)
- Language.Wasm.Builder: load16_u :: (ValueTypeable t, IsInt (Proxy t) ~ True, Producer addr, OutType addr ~ Proxy I32, Integral offset, Integral align) => Proxy t -> addr -> offset -> align -> GenFun (Proxy t)
- Language.Wasm.Builder: load32_s :: (ValueTypeable t, IsInt (Proxy t) ~ True, Producer addr, OutType addr ~ Proxy I32, Integral offset, Integral align) => Proxy t -> addr -> offset -> align -> GenFun (Proxy t)
- Language.Wasm.Builder: load32_u :: (ValueTypeable t, IsInt (Proxy t) ~ True, Producer addr, OutType addr ~ Proxy I32, Integral offset, Integral align) => Proxy t -> addr -> offset -> align -> GenFun (Proxy t)
- Language.Wasm.Builder: load8_s :: (ValueTypeable t, IsInt (Proxy t) ~ True, Producer addr, OutType addr ~ Proxy I32, Integral offset, Integral align) => Proxy t -> addr -> offset -> align -> GenFun (Proxy t)
- Language.Wasm.Builder: load8_u :: (ValueTypeable t, IsInt (Proxy t) ~ True, Producer addr, OutType addr ~ Proxy I32, Integral offset, Integral align) => Proxy t -> addr -> offset -> align -> GenFun (Proxy t)
- Language.Wasm.Builder: local :: (ValueTypeable t) => Proxy t -> GenFun (Loc t)
- Language.Wasm.Builder: loop :: (Returnable res) => res -> GenFun res -> GenFun res
- Language.Wasm.Builder: lt_f :: (Producer a, Producer b, OutType a ~ OutType b, IsFloat (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: lt_s :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: lt_u :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: max_f :: (Producer a, Producer b, OutType a ~ OutType b, IsFloat (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: memory :: Natural -> Maybe Natural -> GenMod Mem
- Language.Wasm.Builder: memorySize :: GenFun (Proxy I32)
- Language.Wasm.Builder: min_f :: (Producer a, Producer b, OutType a ~ OutType b, IsFloat (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: mul :: (Producer a, Producer b, OutType a ~ OutType b) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: ne :: (Producer a, Producer b, OutType a ~ OutType b) => a -> b -> GenFun (Proxy I32)
- Language.Wasm.Builder: nearest_f :: (Producer a, IsFloat (OutType a) ~ True) => a -> GenFun (OutType a)
- Language.Wasm.Builder: neg_f :: (Producer a, IsFloat (OutType a) ~ True) => a -> GenFun (OutType a)
- Language.Wasm.Builder: newtype Fn a
- Language.Wasm.Builder: nextFuncIndex :: GenMod Natural
- Language.Wasm.Builder: nop :: GenFun ()
- Language.Wasm.Builder: or :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: param :: (ValueTypeable t) => Proxy t -> GenFun (Loc t)
- Language.Wasm.Builder: popcnt :: (Producer a, IsInt (OutType a) ~ True) => a -> GenFun (OutType a)
- Language.Wasm.Builder: produce :: Producer expr => expr -> GenFun (OutType expr)
- Language.Wasm.Builder: promote :: (Producer f, OutType f ~ Proxy F32) => f -> GenFun (Proxy F64)
- Language.Wasm.Builder: reinterpret :: (ValueTypeable t, Producer val, SameSize (Proxy t) (OutType val) ~ True) => Proxy t -> val -> GenFun (Proxy t)
- Language.Wasm.Builder: rem_s :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: rem_u :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: ret :: (Producer expr) => expr -> GenFun (OutType expr)
- Language.Wasm.Builder: rotl :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: rotr :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: select :: (Producer a, Producer b, OutType a ~ OutType b, Producer pred, OutType pred ~ Proxy I32) => pred -> a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: setGlobalInitializer :: forall t. (ValueTypeable t) => Glob t -> (ValType t) -> GenMod ()
- Language.Wasm.Builder: shl :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: shr_s :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: shr_u :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: sqrt_f :: (Producer a, IsFloat (OutType a) ~ True) => a -> GenFun (OutType a)
- Language.Wasm.Builder: store :: (Producer addr, OutType addr ~ Proxy I32, Producer val, Integral offset, Integral align) => addr -> val -> offset -> align -> GenFun ()
- Language.Wasm.Builder: store16 :: (Producer addr, OutType addr ~ Proxy I32, Producer val, IsInt (OutType val) ~ True, Integral offset, Integral align) => addr -> val -> offset -> align -> GenFun ()
- Language.Wasm.Builder: store32 :: (Producer addr, OutType addr ~ Proxy I32, Producer val, OutType val ~ Proxy I64, Integral offset, Integral align) => addr -> val -> offset -> align -> GenFun ()
- Language.Wasm.Builder: store8 :: (Producer addr, OutType addr ~ Proxy I32, Producer val, IsInt (OutType val) ~ True, Integral offset, Integral align) => addr -> val -> offset -> align -> GenFun ()
- Language.Wasm.Builder: sub :: (Producer a, Producer b, OutType a ~ OutType b) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: table :: Natural -> Maybe Natural -> GenMod Tbl
- Language.Wasm.Builder: trap :: Proxy t -> GenFun (Proxy t)
- Language.Wasm.Builder: trunc_f :: (Producer a, IsFloat (OutType a) ~ True) => a -> GenFun (OutType a)
- Language.Wasm.Builder: trunc_s :: (Producer f, IsFloat (OutType f) ~ True, IsInt (Proxy t) ~ True, ValueTypeable t) => Proxy t -> f -> GenFun (Proxy t)
- Language.Wasm.Builder: trunc_u :: (Producer f, IsFloat (OutType f) ~ True, IsInt (Proxy t) ~ True, ValueTypeable t) => Proxy t -> f -> GenFun (Proxy t)
- Language.Wasm.Builder: type GenFun = ReaderT Natural (State FuncDef)
- Language.Wasm.Builder: type GenMod = State GenModState
- Language.Wasm.Builder: type family OutType expr;
- Language.Wasm.Builder: typedef :: (Returnable res) => res -> [ValueType] -> GenMod (TypeDef res)
- Language.Wasm.Builder: unreachable :: GenFun ()
- Language.Wasm.Builder: when :: (Producer pred, OutType pred ~ Proxy I32) => pred -> GenFun () -> GenFun ()
- Language.Wasm.Builder: while :: (Producer pred, OutType pred ~ Proxy I32) => pred -> GenFun () -> GenFun ()
- Language.Wasm.Builder: wrap :: (Producer i, OutType i ~ Proxy I64) => i -> GenFun (Proxy I32)
- Language.Wasm.Builder: xor :: (Producer a, Producer b, OutType a ~ OutType b, IsInt (OutType a) ~ True) => a -> b -> GenFun (OutType a)
- Language.Wasm.Builder: }
- Language.Wasm.FloatUtils: doubleToFloat :: Double -> Float
- Language.Wasm.FloatUtils: doubleToWord :: Double -> Word64
- Language.Wasm.FloatUtils: floatToWord :: Float -> Word32
- Language.Wasm.FloatUtils: makeNaN :: Word64 -> Double
- Language.Wasm.FloatUtils: wordToDouble :: Word64 -> Double
- Language.Wasm.FloatUtils: wordToFloat :: Word32 -> Float
- Language.Wasm.Interpreter: ExportInstance :: Text -> ExternalValue -> ExportInstance
- Language.Wasm.Interpreter: ExternFunction :: Address -> ExternalValue
- Language.Wasm.Interpreter: ExternGlobal :: Address -> ExternalValue
- Language.Wasm.Interpreter: ExternMemory :: Address -> ExternalValue
- Language.Wasm.Interpreter: ExternTable :: Address -> ExternalValue
- Language.Wasm.Interpreter: GIConst :: ValueType -> Value -> GlobalInstance
- Language.Wasm.Interpreter: GIMut :: ValueType -> (IORef Value) -> GlobalInstance
- Language.Wasm.Interpreter: HostFunction :: FuncType -> HostFunction -> HostItem
- Language.Wasm.Interpreter: HostGlobal :: GlobalInstance -> HostItem
- Language.Wasm.Interpreter: HostMemory :: Limit -> HostItem
- Language.Wasm.Interpreter: HostTable :: Limit -> HostItem
- Language.Wasm.Interpreter: ModuleInstance :: Vector FuncType -> Vector Address -> Vector Address -> Vector Address -> Vector Address -> Vector ExportInstance -> ModuleInstance
- Language.Wasm.Interpreter: VF32 :: Float -> Value
- Language.Wasm.Interpreter: VF64 :: Double -> Value
- Language.Wasm.Interpreter: VI32 :: Word32 -> Value
- Language.Wasm.Interpreter: VI64 :: Word64 -> Value
- Language.Wasm.Interpreter: [$sel:exports:ModuleInstance] :: ModuleInstance -> Vector ExportInstance
- Language.Wasm.Interpreter: [$sel:funcTypes:ModuleInstance] :: ModuleInstance -> Vector FuncType
- Language.Wasm.Interpreter: [$sel:funcaddrs:ModuleInstance] :: ModuleInstance -> Vector Address
- Language.Wasm.Interpreter: [$sel:globaladdrs:ModuleInstance] :: ModuleInstance -> Vector Address
- Language.Wasm.Interpreter: [$sel:memaddrs:ModuleInstance] :: ModuleInstance -> Vector Address
- Language.Wasm.Interpreter: [$sel:tableaddrs:ModuleInstance] :: ModuleInstance -> Vector Address
- Language.Wasm.Interpreter: data ExportInstance
- Language.Wasm.Interpreter: data ExternalValue
- Language.Wasm.Interpreter: data GlobalInstance
- Language.Wasm.Interpreter: data HostItem
- Language.Wasm.Interpreter: data ModuleInstance
- Language.Wasm.Interpreter: data Store
- Language.Wasm.Interpreter: data Value
- Language.Wasm.Interpreter: emptyImports :: Imports
- Language.Wasm.Interpreter: emptyStore :: Store
- Language.Wasm.Interpreter: getGlobalValueByName :: Store -> ModuleInstance -> Text -> IO Value
- Language.Wasm.Interpreter: instance GHC.Classes.Eq Language.Wasm.Interpreter.EvalCtx
- Language.Wasm.Interpreter: instance GHC.Classes.Eq Language.Wasm.Interpreter.EvalResult
- Language.Wasm.Interpreter: instance GHC.Classes.Eq Language.Wasm.Interpreter.ExportInstance
- Language.Wasm.Interpreter: instance GHC.Classes.Eq Language.Wasm.Interpreter.ExternalValue
- Language.Wasm.Interpreter: instance GHC.Classes.Eq Language.Wasm.Interpreter.Label
- Language.Wasm.Interpreter: instance GHC.Classes.Eq Language.Wasm.Interpreter.ModuleInstance
- Language.Wasm.Interpreter: instance GHC.Classes.Eq Language.Wasm.Interpreter.Value
- Language.Wasm.Interpreter: instance GHC.Show.Show Language.Wasm.Interpreter.EvalCtx
- Language.Wasm.Interpreter: instance GHC.Show.Show Language.Wasm.Interpreter.EvalResult
- Language.Wasm.Interpreter: instance GHC.Show.Show Language.Wasm.Interpreter.ExportInstance
- Language.Wasm.Interpreter: instance GHC.Show.Show Language.Wasm.Interpreter.ExternalValue
- Language.Wasm.Interpreter: instance GHC.Show.Show Language.Wasm.Interpreter.Label
- Language.Wasm.Interpreter: instance GHC.Show.Show Language.Wasm.Interpreter.ModuleInstance
- Language.Wasm.Interpreter: instance GHC.Show.Show Language.Wasm.Interpreter.Value
- Language.Wasm.Interpreter: instantiate :: Store -> Imports -> ValidModule -> IO (Either String (ModuleInstance, Store))
- Language.Wasm.Interpreter: invoke :: Store -> Address -> [Value] -> IO (Maybe [Value])
- Language.Wasm.Interpreter: invokeExport :: Store -> ModuleInstance -> Text -> [Value] -> IO (Maybe [Value])
- Language.Wasm.Interpreter: makeHostModule :: Store -> [(Text, HostItem)] -> IO (Store, ModuleInstance)
- Language.Wasm.Interpreter: makeMutGlobal :: Value -> IO GlobalInstance
- Language.Wasm.Interpreter: type Imports = Map (Text, Text) ExternalValue
- Language.Wasm.Parser: Action :: Action -> Command
- Language.Wasm.Parser: AnonimousTypeUse :: FuncType -> TypeUse
- Language.Wasm.Parser: AssertExhaustion :: Action -> FailureString -> Assertion
- Language.Wasm.Parser: AssertInvalid :: ModuleDef -> FailureString -> Assertion
- Language.Wasm.Parser: AssertMalformed :: ModuleDef -> FailureString -> Assertion
- Language.Wasm.Parser: AssertReturn :: Action -> [Expression] -> Assertion
- Language.Wasm.Parser: AssertReturnArithmeticNaN :: Action -> Assertion
- Language.Wasm.Parser: AssertReturnCanonicalNaN :: Action -> Assertion
- Language.Wasm.Parser: AssertTrap :: (Either Action ModuleDef) -> FailureString -> Assertion
- Language.Wasm.Parser: AssertUnlinkable :: ModuleDef -> FailureString -> Assertion
- Language.Wasm.Parser: Assertion :: Assertion -> Command
- Language.Wasm.Parser: BinaryModDef :: (Maybe Ident) -> ByteString -> ModuleDef
- Language.Wasm.Parser: BlockInstr :: Maybe Ident -> [ValueType] -> [Instruction] -> Instruction
- Language.Wasm.Parser: Br :: LabelIndex -> PlainInstr
- Language.Wasm.Parser: BrIf :: LabelIndex -> PlainInstr
- Language.Wasm.Parser: BrTable :: [LabelIndex] -> LabelIndex -> PlainInstr
- Language.Wasm.Parser: Call :: FuncIndex -> PlainInstr
- Language.Wasm.Parser: CallIndirect :: TypeUse -> PlainInstr
- Language.Wasm.Parser: CurrentMemory :: PlainInstr
- Language.Wasm.Parser: DataSegment :: MemoryIndex -> [Instruction] -> ByteString -> DataSegment
- Language.Wasm.Parser: Drop :: PlainInstr
- Language.Wasm.Parser: ElemSegment :: TableIndex -> [Instruction] -> [FuncIndex] -> ElemSegment
- Language.Wasm.Parser: Export :: Text -> ExportDesc -> Export
- Language.Wasm.Parser: ExportFunc :: FuncIndex -> ExportDesc
- Language.Wasm.Parser: ExportGlobal :: GlobalIndex -> ExportDesc
- Language.Wasm.Parser: ExportMemory :: MemoryIndex -> ExportDesc
- Language.Wasm.Parser: ExportTable :: TableIndex -> ExportDesc
- Language.Wasm.Parser: F32Const :: Float -> PlainInstr
- Language.Wasm.Parser: F32DemoteF64 :: PlainInstr
- Language.Wasm.Parser: F32Load :: MemArg -> PlainInstr
- Language.Wasm.Parser: F32Store :: MemArg -> PlainInstr
- Language.Wasm.Parser: F64Const :: Double -> PlainInstr
- Language.Wasm.Parser: F64Load :: MemArg -> PlainInstr
- Language.Wasm.Parser: F64PromoteF32 :: PlainInstr
- Language.Wasm.Parser: F64Store :: MemArg -> PlainInstr
- Language.Wasm.Parser: FBinOp :: BitSize -> FBinOp -> PlainInstr
- Language.Wasm.Parser: FConvertIS :: BitSize -> BitSize -> PlainInstr
- Language.Wasm.Parser: FConvertIU :: BitSize -> BitSize -> PlainInstr
- Language.Wasm.Parser: FReinterpretI :: BitSize -> PlainInstr
- Language.Wasm.Parser: FRelOp :: BitSize -> FRelOp -> PlainInstr
- Language.Wasm.Parser: FUnOp :: BitSize -> FUnOp -> PlainInstr
- Language.Wasm.Parser: FuncType :: [ParamType] -> [ValueType] -> FuncType
- Language.Wasm.Parser: Function :: [Text] -> Maybe Ident -> TypeUse -> [LocalType] -> [Instruction] -> Function
- Language.Wasm.Parser: Get :: (Maybe Ident) -> Text -> Action
- Language.Wasm.Parser: GetGlobal :: GlobalIndex -> PlainInstr
- Language.Wasm.Parser: GetLocal :: LocalIndex -> PlainInstr
- Language.Wasm.Parser: Global :: [Text] -> Maybe Ident -> GlobalType -> [Instruction] -> Global
- Language.Wasm.Parser: GrowMemory :: PlainInstr
- Language.Wasm.Parser: I32Const :: Integer -> PlainInstr
- Language.Wasm.Parser: I32Eqz :: PlainInstr
- Language.Wasm.Parser: I32Load :: MemArg -> PlainInstr
- Language.Wasm.Parser: I32Load16S :: MemArg -> PlainInstr
- Language.Wasm.Parser: I32Load16U :: MemArg -> PlainInstr
- Language.Wasm.Parser: I32Load8S :: MemArg -> PlainInstr
- Language.Wasm.Parser: I32Load8U :: MemArg -> PlainInstr
- Language.Wasm.Parser: I32Store :: MemArg -> PlainInstr
- Language.Wasm.Parser: I32Store16 :: MemArg -> PlainInstr
- Language.Wasm.Parser: I32Store8 :: MemArg -> PlainInstr
- Language.Wasm.Parser: I32WrapI64 :: PlainInstr
- Language.Wasm.Parser: I64Const :: Integer -> PlainInstr
- Language.Wasm.Parser: I64Eqz :: PlainInstr
- Language.Wasm.Parser: I64ExtendSI32 :: PlainInstr
- Language.Wasm.Parser: I64ExtendUI32 :: PlainInstr
- Language.Wasm.Parser: I64Load :: MemArg -> PlainInstr
- Language.Wasm.Parser: I64Load16S :: MemArg -> PlainInstr
- Language.Wasm.Parser: I64Load16U :: MemArg -> PlainInstr
- Language.Wasm.Parser: I64Load32S :: MemArg -> PlainInstr
- Language.Wasm.Parser: I64Load32U :: MemArg -> PlainInstr
- Language.Wasm.Parser: I64Load8S :: MemArg -> PlainInstr
- Language.Wasm.Parser: I64Load8U :: MemArg -> PlainInstr
- Language.Wasm.Parser: I64Store :: MemArg -> PlainInstr
- Language.Wasm.Parser: I64Store16 :: MemArg -> PlainInstr
- Language.Wasm.Parser: I64Store32 :: MemArg -> PlainInstr
- Language.Wasm.Parser: I64Store8 :: MemArg -> PlainInstr
- Language.Wasm.Parser: IBinOp :: BitSize -> IBinOp -> PlainInstr
- Language.Wasm.Parser: IReinterpretF :: BitSize -> PlainInstr
- Language.Wasm.Parser: IRelOp :: BitSize -> IRelOp -> PlainInstr
- Language.Wasm.Parser: ITruncFS :: BitSize -> BitSize -> PlainInstr
- Language.Wasm.Parser: ITruncFU :: BitSize -> BitSize -> PlainInstr
- Language.Wasm.Parser: IUnOp :: BitSize -> IUnOp -> PlainInstr
- Language.Wasm.Parser: Ident :: Text -> Ident
- Language.Wasm.Parser: IfInstr :: Maybe Ident -> [ValueType] -> [Instruction] -> [Instruction] -> Instruction
- Language.Wasm.Parser: Import :: [Text] -> Text -> Text -> ImportDesc -> Import
- Language.Wasm.Parser: ImportFunc :: (Maybe Ident) -> TypeUse -> ImportDesc
- Language.Wasm.Parser: ImportGlobal :: (Maybe Ident) -> GlobalType -> ImportDesc
- Language.Wasm.Parser: ImportMemory :: (Maybe Ident) -> Limit -> ImportDesc
- Language.Wasm.Parser: ImportTable :: (Maybe Ident) -> TableType -> ImportDesc
- Language.Wasm.Parser: Index :: Natural -> Index
- Language.Wasm.Parser: IndexedTypeUse :: TypeIndex -> (Maybe FuncType) -> TypeUse
- Language.Wasm.Parser: Input :: (Maybe Ident) -> Text -> Meta
- Language.Wasm.Parser: Invoke :: (Maybe Ident) -> Text -> [Expression] -> Action
- Language.Wasm.Parser: LocalType :: Maybe Ident -> ValueType -> LocalType
- Language.Wasm.Parser: LoopInstr :: Maybe Ident -> [ValueType] -> [Instruction] -> Instruction
- Language.Wasm.Parser: MFData :: DataSegment -> ModuleField
- Language.Wasm.Parser: MFElem :: ElemSegment -> ModuleField
- Language.Wasm.Parser: MFExport :: Export -> ModuleField
- Language.Wasm.Parser: MFFunc :: Function -> ModuleField
- Language.Wasm.Parser: MFGlobal :: Global -> ModuleField
- Language.Wasm.Parser: MFImport :: Import -> ModuleField
- Language.Wasm.Parser: MFMem :: Memory -> ModuleField
- Language.Wasm.Parser: MFStart :: StartFunction -> ModuleField
- Language.Wasm.Parser: MFTable :: Table -> ModuleField
- Language.Wasm.Parser: MFType :: TypeDef -> ModuleField
- Language.Wasm.Parser: Memory :: [Text] -> (Maybe Ident) -> Limit -> Memory
- Language.Wasm.Parser: Meta :: Meta -> Command
- Language.Wasm.Parser: ModuleDef :: ModuleDef -> Command
- Language.Wasm.Parser: Named :: Ident -> Index
- Language.Wasm.Parser: Nop :: PlainInstr
- Language.Wasm.Parser: Output :: (Maybe Ident) -> Text -> Meta
- Language.Wasm.Parser: ParamType :: Maybe Ident -> ValueType -> ParamType
- Language.Wasm.Parser: PlainInstr :: PlainInstr -> Instruction
- Language.Wasm.Parser: RawModDef :: (Maybe Ident) -> Module -> ModuleDef
- Language.Wasm.Parser: Register :: Text -> (Maybe Ident) -> Command
- Language.Wasm.Parser: Return :: PlainInstr
- Language.Wasm.Parser: Script :: (Maybe Ident) -> Script -> Meta
- Language.Wasm.Parser: Select :: PlainInstr
- Language.Wasm.Parser: SetGlobal :: GlobalIndex -> PlainInstr
- Language.Wasm.Parser: SetLocal :: LocalIndex -> PlainInstr
- Language.Wasm.Parser: StartFunction :: FuncIndex -> StartFunction
- Language.Wasm.Parser: Table :: [Text] -> (Maybe Ident) -> TableType -> Table
- Language.Wasm.Parser: TeeLocal :: LocalIndex -> PlainInstr
- Language.Wasm.Parser: TextModDef :: (Maybe Ident) -> Text -> ModuleDef
- Language.Wasm.Parser: TypeDef :: (Maybe Ident) -> FuncType -> TypeDef
- Language.Wasm.Parser: Unreachable :: PlainInstr
- Language.Wasm.Parser: [$sel:body:Function] :: Function -> [Instruction]
- Language.Wasm.Parser: [$sel:body:PlainInstr] :: Instruction -> [Instruction]
- Language.Wasm.Parser: [$sel:datastring:DataSegment] :: DataSegment -> ByteString
- Language.Wasm.Parser: [$sel:desc:Export] :: Export -> ExportDesc
- Language.Wasm.Parser: [$sel:desc:Import] :: Import -> ImportDesc
- Language.Wasm.Parser: [$sel:exportFuncAs:Function] :: Function -> [Text]
- Language.Wasm.Parser: [$sel:exportGlobalAs:Global] :: Global -> [Text]
- Language.Wasm.Parser: [$sel:falseBranch:PlainInstr] :: Instruction -> [Instruction]
- Language.Wasm.Parser: [$sel:funcIndexes:ElemSegment] :: ElemSegment -> [FuncIndex]
- Language.Wasm.Parser: [$sel:funcType:Function] :: Function -> TypeUse
- Language.Wasm.Parser: [$sel:globalType:Global] :: Global -> GlobalType
- Language.Wasm.Parser: [$sel:ident:Function] :: Function -> Maybe Ident
- Language.Wasm.Parser: [$sel:ident:Global] :: Global -> Maybe Ident
- Language.Wasm.Parser: [$sel:ident:LocalType] :: LocalType -> Maybe Ident
- Language.Wasm.Parser: [$sel:ident:ParamType] :: ParamType -> Maybe Ident
- Language.Wasm.Parser: [$sel:initializer:Global] :: Global -> [Instruction]
- Language.Wasm.Parser: [$sel:label:PlainInstr] :: Instruction -> Maybe Ident
- Language.Wasm.Parser: [$sel:localType:LocalType] :: LocalType -> ValueType
- Language.Wasm.Parser: [$sel:locals:Function] :: Function -> [LocalType]
- Language.Wasm.Parser: [$sel:memIndex:DataSegment] :: DataSegment -> MemoryIndex
- Language.Wasm.Parser: [$sel:name:Export] :: Export -> Text
- Language.Wasm.Parser: [$sel:name:Import] :: Import -> Text
- Language.Wasm.Parser: [$sel:offset:DataSegment] :: DataSegment -> [Instruction]
- Language.Wasm.Parser: [$sel:offset:ElemSegment] :: ElemSegment -> [Instruction]
- Language.Wasm.Parser: [$sel:paramType:ParamType] :: ParamType -> ValueType
- Language.Wasm.Parser: [$sel:params:FuncType] :: FuncType -> [ParamType]
- Language.Wasm.Parser: [$sel:reExportAs:Import] :: Import -> [Text]
- Language.Wasm.Parser: [$sel:resultType:PlainInstr] :: Instruction -> [ValueType]
- Language.Wasm.Parser: [$sel:results:FuncType] :: FuncType -> [ValueType]
- Language.Wasm.Parser: [$sel:sourceModule:Import] :: Import -> Text
- Language.Wasm.Parser: [$sel:tableIndex:ElemSegment] :: ElemSegment -> TableIndex
- Language.Wasm.Parser: [$sel:trueBranch:PlainInstr] :: Instruction -> [Instruction]
- Language.Wasm.Parser: data Action
- Language.Wasm.Parser: data Assertion
- Language.Wasm.Parser: data Command
- Language.Wasm.Parser: data DataSegment
- Language.Wasm.Parser: data ElemSegment
- Language.Wasm.Parser: data Export
- Language.Wasm.Parser: data ExportDesc
- Language.Wasm.Parser: data FuncType
- Language.Wasm.Parser: data Function
- Language.Wasm.Parser: data Global
- Language.Wasm.Parser: data Import
- Language.Wasm.Parser: data ImportDesc
- Language.Wasm.Parser: data Index
- Language.Wasm.Parser: data Instruction
- Language.Wasm.Parser: data LocalType
- Language.Wasm.Parser: data Memory
- Language.Wasm.Parser: data Meta
- Language.Wasm.Parser: data ModuleDef
- Language.Wasm.Parser: data ModuleField
- Language.Wasm.Parser: data ParamType
- Language.Wasm.Parser: data PlainInstr
- Language.Wasm.Parser: data StartFunction
- Language.Wasm.Parser: data Table
- Language.Wasm.Parser: data TypeDef
- Language.Wasm.Parser: data TypeUse
- Language.Wasm.Parser: desugarize :: [ModuleField] -> Either String Module
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.DataSegment
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.ElemSegment
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.Export
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.ExportDesc
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.FuncType
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.Function
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.Global
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.Ident
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.Import
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.ImportDesc
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.Index
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.Instruction
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.LocalType
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.Memory
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.ModuleField
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.ParamType
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.PlainInstr
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.StartFunction
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.Table
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.TypeDef
- Language.Wasm.Parser: instance Control.DeepSeq.NFData Language.Wasm.Parser.TypeUse
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Action
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Assertion
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Command
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.DataSegment
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.ElemSegment
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Export
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.ExportDesc
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.FunCtx
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.FuncType
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Function
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Global
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Ident
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Import
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.ImportDesc
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Index
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Instruction
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.LocalType
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Memory
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Meta
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Module
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.ModuleDef
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.ModuleField
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.ParamType
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.PlainInstr
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.StartFunction
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.Table
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.TypeDef
- Language.Wasm.Parser: instance GHC.Classes.Eq Language.Wasm.Parser.TypeUse
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.DataSegment
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.ElemSegment
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.Export
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.ExportDesc
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.FuncType
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.Function
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.Global
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.Ident
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.Import
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.ImportDesc
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.Index
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.Instruction
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.LocalType
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.Memory
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.ModuleField
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.ParamType
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.PlainInstr
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.StartFunction
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.Table
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.TypeDef
- Language.Wasm.Parser: instance GHC.Generics.Generic Language.Wasm.Parser.TypeUse
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Action
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Assertion
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Command
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.DataSegment
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.ElemSegment
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Export
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.ExportDesc
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.FunCtx
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.FuncType
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Function
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Global
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Ident
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Import
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.ImportDesc
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Index
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Instruction
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.LocalType
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Memory
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Meta
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Module
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.ModuleDef
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.ModuleField
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.ParamType
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.PlainInstr
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.StartFunction
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.Table
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.TypeDef
- Language.Wasm.Parser: instance GHC.Show.Show Language.Wasm.Parser.TypeUse
- Language.Wasm.Parser: newtype Ident
- Language.Wasm.Parser: parseModule :: [Lexeme] -> Either String Module
- Language.Wasm.Parser: parseModuleFields :: [Lexeme] -> Either String [ModuleField]
- Language.Wasm.Parser: parseScript :: [Lexeme] -> Either String Script
- Language.Wasm.Parser: type Script = [Command]
- Language.Wasm.Structure: AnyFunc :: ElemType
- Language.Wasm.Structure: [$sel:resultType:Unreachable] :: Instruction index -> ResultType
- Language.Wasm.Validate: ($sel:getModule:ValidModule) :: ValidModule -> Module
- Language.Wasm.Validate: AlignmentOverflow :: ValidationError
- Language.Wasm.Validate: DuplicatedExportNames :: [String] -> ValidationError
- Language.Wasm.Validate: ExportedGlobalIsNotConst :: ValidationError
- Language.Wasm.Validate: FunctionIndexOutOfRange :: ValidationError
- Language.Wasm.Validate: GlobalIndexOutOfRange :: ValidationError
- Language.Wasm.Validate: GlobalIsImmutable :: ValidationError
- Language.Wasm.Validate: ImportedGlobalIsNotConst :: ValidationError
- Language.Wasm.Validate: InvalidConstantExpr :: ValidationError
- Language.Wasm.Validate: InvalidResultArity :: ValidationError
- Language.Wasm.Validate: InvalidStartFunctionType :: ValidationError
- Language.Wasm.Validate: InvalidTableType :: ValidationError
- Language.Wasm.Validate: LabelIndexOutOfRange :: ValidationError
- Language.Wasm.Validate: LocalIndexOutOfRange :: ValidationError
- Language.Wasm.Validate: MemoryIndexOutOfRange :: ValidationError
- Language.Wasm.Validate: MemoryLimitExceeded :: ValidationError
- Language.Wasm.Validate: MinMoreThanMaxInMemoryLimit :: ValidationError
- Language.Wasm.Validate: MoreThanOneMemory :: ValidationError
- Language.Wasm.Validate: MoreThanOneTable :: ValidationError
- Language.Wasm.Validate: ResultTypeDoesntMatch :: ValidationError
- Language.Wasm.Validate: TableIndexOutOfRange :: ValidationError
- Language.Wasm.Validate: TypeIndexOutOfRange :: ValidationError
- Language.Wasm.Validate: TypeMismatch :: Arrow -> Arrow -> ValidationError
- Language.Wasm.Validate: [$sel:actual:DuplicatedExportNames] :: ValidationError -> Arrow
- Language.Wasm.Validate: [$sel:expected:DuplicatedExportNames] :: ValidationError -> Arrow
- Language.Wasm.Validate: data ValidModule
- Language.Wasm.Validate: data ValidationError
- Language.Wasm.Validate: instance GHC.Base.Monoid Language.Wasm.Validate.ValidationResult
- Language.Wasm.Validate: instance GHC.Classes.Eq Language.Wasm.Validate.Arrow
- Language.Wasm.Validate: instance GHC.Classes.Eq Language.Wasm.Validate.Ctx
- Language.Wasm.Validate: instance GHC.Classes.Eq Language.Wasm.Validate.VType
- Language.Wasm.Validate: instance GHC.Classes.Eq Language.Wasm.Validate.ValidModule
- Language.Wasm.Validate: instance GHC.Classes.Eq Language.Wasm.Validate.ValidationError
- Language.Wasm.Validate: instance GHC.Show.Show Language.Wasm.Validate.Arrow
- Language.Wasm.Validate: instance GHC.Show.Show Language.Wasm.Validate.Ctx
- Language.Wasm.Validate: instance GHC.Show.Show Language.Wasm.Validate.VType
- Language.Wasm.Validate: instance GHC.Show.Show Language.Wasm.Validate.ValidModule
- Language.Wasm.Validate: instance GHC.Show.Show Language.Wasm.Validate.ValidationError
- Language.Wasm.Validate: instance Language.Wasm.Validate.ToEnd Language.Wasm.Structure.ValueType
- Language.Wasm.Validate: instance Language.Wasm.Validate.ToEnd Language.Wasm.Validate.VType
- Language.Wasm.Validate: instance Language.Wasm.Validate.ToEnd [Language.Wasm.Structure.ValueType]
- Language.Wasm.Validate: instance Language.Wasm.Validate.ToEnd [Language.Wasm.Validate.VType]
- Language.Wasm.Validate: isValid :: ValidationResult -> Bool
- Language.Wasm.Validate: type ValidationResult = Either ValidationError ()
- Language.Wasm.Validate: validate :: Module -> Either ValidationError ValidModule
+ Language.Wasm: ($sel:getModule:ValidModule) :: ValidModule -> Module
+ Language.Wasm: Action :: Action -> Command
+ Language.Wasm: AssertExhaustion :: Action -> FailureString -> Assertion
+ Language.Wasm: AssertInvalid :: ModuleDef -> FailureString -> Assertion
+ Language.Wasm: AssertMalformed :: ModuleDef -> FailureString -> Assertion
+ Language.Wasm: AssertReturn :: Action -> [Expression] -> Assertion
+ Language.Wasm: AssertReturnArithmeticNaN :: Action -> Assertion
+ Language.Wasm: AssertReturnCanonicalNaN :: Action -> Assertion
+ Language.Wasm: AssertTrap :: Either Action ModuleDef -> FailureString -> Assertion
+ Language.Wasm: AssertUnlinkable :: ModuleDef -> FailureString -> Assertion
+ Language.Wasm: Assertion :: Int -> Assertion -> Command
+ Language.Wasm: BinaryModDef :: Maybe Ident -> ByteString -> ModuleDef
+ Language.Wasm: Get :: Maybe Ident -> Text -> Action
+ Language.Wasm: Ident :: Text -> Ident
+ Language.Wasm: Input :: Maybe Ident -> Text -> Meta
+ Language.Wasm: Invoke :: Maybe Ident -> Text -> [Expression] -> Action
+ Language.Wasm: Meta :: Meta -> Command
+ Language.Wasm: ModuleDef :: ModuleDef -> Command
+ Language.Wasm: Output :: Maybe Ident -> Text -> Meta
+ Language.Wasm: RawModDef :: Maybe Ident -> Module -> ModuleDef
+ Language.Wasm: Register :: Text -> Maybe Ident -> Command
+ Language.Wasm: Script :: Maybe Ident -> Script -> Meta
+ Language.Wasm: TextModDef :: Maybe Ident -> Text -> ModuleDef
+ Language.Wasm: data Action
+ Language.Wasm: data Assertion
+ Language.Wasm: data Command
+ Language.Wasm: data Meta
+ Language.Wasm: data ModuleDef
+ Language.Wasm: newtype Ident
+ Language.Wasm.Lexer: doubleFromInteger :: Integer -> Either String Double
+ Language.Wasm.Lexer: instance GHC.Classes.Eq Language.Wasm.Lexer.NaN
+ Language.Wasm.Lexer: instance GHC.Show.Show Language.Wasm.Lexer.NaN
+ Language.Wasm.Structure: FuncRef :: ElemType
+ Language.Wasm.Structure: IExtend16S :: IUnOp
+ Language.Wasm.Structure: IExtend32S :: IUnOp
+ Language.Wasm.Structure: IExtend8S :: IUnOp
+ Language.Wasm.Structure: ITruncSatFS :: BitSize -> BitSize -> Instruction index
+ Language.Wasm.Structure: ITruncSatFU :: BitSize -> BitSize -> Instruction index
+ Language.Wasm.Structure: Inline :: Maybe ValueType -> BlockType
+ Language.Wasm.Structure: TypeIndex :: TypeIndex -> BlockType
+ Language.Wasm.Structure: [$sel:blockType:Unreachable] :: Instruction index -> BlockType
+ Language.Wasm.Structure: data BlockType
+ Language.Wasm.Structure: instance Control.DeepSeq.NFData Language.Wasm.Structure.BlockType
+ Language.Wasm.Structure: instance GHC.Classes.Eq Language.Wasm.Structure.BlockType
+ Language.Wasm.Structure: instance GHC.Generics.Generic Language.Wasm.Structure.BlockType
+ Language.Wasm.Structure: instance GHC.Show.Show Language.Wasm.Structure.BlockType
+ Language.Wasm.Structure: type FuncIndex = Natural
+ Language.Wasm.Structure: type LocalsType = [ValueType]
+ Language.Wasm.Structure: type MemoryIndex = Natural
+ Language.Wasm.Structure: type ParamsType = [ValueType]
+ Language.Wasm.Structure: type TableIndex = Natural
+ Language.Wasm.Structure: type TypeIndex = Natural
- Language.Wasm: GlobalIndexOutOfRange :: ValidationError
+ Language.Wasm: GlobalIndexOutOfRange :: Natural -> ValidationError
- Language.Wasm: LocalIndexOutOfRange :: ValidationError
+ Language.Wasm: LocalIndexOutOfRange :: Natural -> ValidationError
- Language.Wasm: MemoryIndexOutOfRange :: ValidationError
+ Language.Wasm: MemoryIndexOutOfRange :: Natural -> ValidationError
- Language.Wasm: TableIndexOutOfRange :: ValidationError
+ Language.Wasm: TableIndexOutOfRange :: Natural -> ValidationError
- Language.Wasm.Structure: Block :: ResultType -> Expression -> Instruction index
+ Language.Wasm.Structure: Block :: BlockType -> Expression -> Instruction index
- Language.Wasm.Structure: If :: ResultType -> Expression -> Expression -> Instruction index
+ Language.Wasm.Structure: If :: BlockType -> Expression -> Expression -> Instruction index
- Language.Wasm.Structure: Limit :: Natural -> (Maybe Natural) -> Limit
+ Language.Wasm.Structure: Limit :: Natural -> Maybe Natural -> Limit
- Language.Wasm.Structure: Loop :: ResultType -> Expression -> Instruction index
+ Language.Wasm.Structure: Loop :: BlockType -> Expression -> Instruction index
Files
- README.md +28/−0
- Setup.hs +0/−2
- dist/build/Language/Wasm/Lexer.hs +0/−1413
- dist/build/Language/Wasm/Parser.hs +0/−7182
- exec/Main.hs +0/−148
- src/Language/Wasm.hs +9/−2
- src/Language/Wasm/Binary.hs +79/−17
- src/Language/Wasm/Builder.hs +58/−58
- src/Language/Wasm/Interpreter.hs +209/−109
- src/Language/Wasm/Lexer.x +90/−34
- src/Language/Wasm/Parser.y +439/−425
- src/Language/Wasm/Script.hs +80/−55
- src/Language/Wasm/Structure.hs +26/−5
- src/Language/Wasm/Validate.hs +104/−86
- tests/Test.hs +9/−3
- wasm.cabal +62/−73
+ README.md view
@@ -0,0 +1,28 @@+# Haskell WebAssembly Toolkit++## Goals+ * Provide a WebAssembly code generation tool for Haskell+ * Create an infrastructure for Cmm to WebAssembly code generator+ * Have Fun :)++## Status+ * [x] Lexer: supports nested block comments and all lexemes from the WebAssembly Spec+ * [x] Parser: parses all examples from WebAssembly Core TestsSuit (including folded instructions parsing)+ * [x] Renaming Phase: substitute identifiers with correct indexes, expand all implicit type declarations)+ * [x] Binary format parser/serializer+ * [x] Validation Phase: execute a verification procedure from the Spec+ * [x] Execution Phase: implement a simple interpreter+ * [x] Support extended Core Test Suit assertion grammar+ * [X] Compile Core Tests to Tasty test cases and pass all tests++## Todo+ * [ ] Improve error messages for text representation parsing+ * [ ] Text Representation pretty-printer+ * [ ] Command line tool for calling interpreter/compiler/validator+ * [ ] Codegen interface for type enforced generating valid WASM code++## Development+Clond sources to directory and use `stack` for running tests:+```+stack build && stack test+```
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
− dist/build/Language/Wasm/Lexer.hs
@@ -1,1413 +0,0 @@-{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-missing-signatures #-}-{-# LANGUAGE CPP,MagicHash #-}-{-# LINE 1 "src/Language/Wasm/Lexer.x" #-}--{-# LANGUAGE FlexibleContexts #-}--module Language.Wasm.Lexer (- Lexeme(..),- Token(..),- AlexPosn(..),- scanner,- asFloat,- asDouble-) where--import qualified Data.ByteString.Lazy as LBS-import qualified Data.Char as Char-import qualified Data.ByteString.Lazy.UTF8 as LBSUtf8-import Control.Applicative ((<$>))-import Control.Monad (when)-import Numeric.IEEE (infinity, nan)-import Language.Wasm.FloatUtils (makeNaN, doubleToFloat)-import Data.Word (Word8)-import Data.List (isPrefixOf)-import Text.Read (readEither)---#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-#if __GLASGOW_HASKELL__ >= 503-import GHC.Exts-#else-import GlaExts-#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.Int (Int64)-import qualified Data.Char-import qualified Data.ByteString.Lazy as ByteString-import qualified Data.ByteString.Internal as ByteString (w2c)----type Byte = Word8---- -------------------------------------------------------------------------------- The input type-----type AlexInput = (AlexPosn, -- current position,- Char, -- previous char- ByteString.ByteString, -- current input string- Int64) -- bytes consumed so far--ignorePendingBytes :: AlexInput -> AlexInput-ignorePendingBytes i = i -- no pending bytes when lexing bytestrings--alexInputPrevChar :: AlexInput -> Char-alexInputPrevChar (_,c,_,_) = c--alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)-alexGetByte (p,_,cs,n) =- case ByteString.uncons cs of- Nothing -> Nothing- Just (b, cs') ->- let c = ByteString.w2c b- p' = alexMove p c- n' = n+1- in p' `seq` cs' `seq` n' `seq` Just (b, (p', c, cs',n'))--------- -------------------------------------------------------------------------------- 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------- -------------------------------------------------------------------------------- Monad (with ByteString input)---data AlexState = AlexState {- alex_pos :: !AlexPosn, -- position at current input location- alex_bpos:: !Int64, -- bytes consumed so far- alex_inp :: ByteString.ByteString, -- the current input- alex_chr :: !Char, -- the character before the input- 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 :: ByteString.ByteString -> Alex a -> Either String a-runAlex input__ (Alex f)- = case f (AlexState {alex_pos = alexStartPos,- alex_bpos = 0,- alex_inp = input__,- alex_chr = '\n',-- 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 Functor Alex where- fmap f m = do x <- m; return (f x)--instance Applicative Alex where- pure a = Alex $ \s -> Right (s,a)- (<*>) = Control.Monad.ap--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_bpos=bpos,alex_chr=c,alex_inp=inp__} ->- Right (s, (pos,c,inp__,bpos))--alexSetInput :: AlexInput -> Alex ()-alexSetInput (pos,c,inp__,bpos)- = Alex $ \s -> case s{alex_pos=pos,- alex_bpos=bpos,- alex_chr=c,- 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__@(_,_,_,n) <- 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__'@(_,_,_,n') _ action -> do- alexSetInput inp__'- action (ignorePendingBytes inp__) len- where- len = n'-n---- -------------------------------------------------------------------------------- Useful token actions--type AlexAction result = AlexInput -> Int64 -> 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 -> Int64 -> token) -> AlexAction token-token t input__ len = return (t input__ len)------ -------------------------------------------------------------------------------- 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 :: AlexAddr-alex_base = AlexA#- "\xf8\xff\xff\xff\x5b\x00\x00\x00\x51\x01\x00\x00\x47\x00\x00\x00\xc8\xff\xff\xff\xd1\x01\x00\x00\x51\x02\x00\x00\xd1\x02\x00\x00\x51\x03\x00\x00\xd1\x03\x00\x00\x51\x04\x00\x00\x00\x00\x00\x00\xc2\x04\x00\x00\x00\x00\x00\x00\x33\x05\x00\x00\x00\x00\x00\x00\xa4\x05\x00\x00\x00\x00\x00\x00\xe5\x05\x00\x00\x7c\xff\xff\xff\x00\x00\x00\x00\x26\x06\x00\x00\x2c\x01\x00\x00\x00\x00\x00\x00\x67\x06\x00\x00\x7e\xff\xff\xff\x67\x07\x00\x00\x27\x07\x00\x00\x00\x00\x00\x00\x7f\xff\xff\xff\x72\xff\xff\xff\x27\x08\x00\x00\xe7\x07\x00\x00\x00\x00\x00\x00\x44\x01\x00\x00\xe7\x08\x00\x00\xa7\x08\x00\x00\x00\x00\x00\x00\x73\xff\xff\xff\x9e\x09\x00\x00\x74\xff\xff\xff\x00\x00\x00\x00\x7d\x0a\x00\x00\xd9\x0a\x00\x00\x37\x0b\x00\x00\x93\x0b\x00\x00\xf1\x0b\x00\x00\x4d\x0c\x00\x00\xab\x0c\x00\x00\x07\x0d\x00\x00\x65\x0d\x00\x00\xc1\x0d\x00\x00\x1f\x0e\x00\x00\x7b\x0e\x00\x00\xd9\x0e\x00\x00\x35\x0f\x00\x00\x93\x0f\x00\x00\xef\x0f\x00\x00\x00\x00\x00\x00\x4d\x10\x00\x00\xd0\xff\xff\xff\x00\x00\x00\x00\xa9\x10\x00\x00\x07\x11\x00\x00\x63\x11\x00\x00\xc1\x11\x00\x00\x1d\x12\x00\x00\x7b\x12\x00\x00\xd7\x12\x00\x00\x35\x13\x00\x00\x91\x13\x00\x00\x00\x00\x00\x00\xd1\xff\xff\xff\xe4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\xff\xff\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\x87\x09\x00\x00\xef\x13\x00\x00\x4b\x14\x00\x00\xa9\x14\x00\x00\x05\x15\x00\x00\x63\x15\x00\x00\xbf\x15\x00\x00\x1d\x16\x00\x00\x79\x16\x00\x00\xd7\x16\x00\x00\x33\x17\x00\x00\x91\x17\x00\x00\xed\x17\x00\x00\x4b\x18\x00\x00\xa7\x18\x00\x00\x05\x19\x00\x00\x61\x19\x00\x00\xbf\x19\x00\x00\x1b\x1a\x00\x00\x79\x1a\x00\x00\xd5\x1a\x00\x00\x33\x1b\x00\x00\x8f\x1b\x00\x00\xed\x1b\x00\x00"#--alex_table :: AlexAddr-alex_table = AlexA#- "\x00\x00\x29\x00\x29\x00\x27\x00\x1e\x00\x29\x00\x26\x00\x28\x00\x5b\x00\x3b\x00\x33\x00\x47\x00\x47\x00\x4b\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x5b\x00\x4c\x00\x5b\x00\x58\x00\x5b\x00\x5b\x00\x5b\x00\x3c\x00\x3d\x00\x5b\x00\x69\x00\x00\x00\x68\x00\x5b\x00\x5b\x00\x3f\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x5b\x00\x04\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x35\x00\x33\x00\x33\x00\x33\x00\x33\x00\x32\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x24\x00\x05\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x18\x00\x08\x00\x0f\x00\x0f\x00\x0f\x00\x10\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\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x55\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\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\x00\x00\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x00\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x1f\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x20\x00\x06\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x15\x00\x09\x00\x0d\x00\x0d\x00\x0d\x00\x0e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x1f\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x1a\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x05\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x06\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x14\x00\x07\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\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\x20\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x1a\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1c\x00\x1b\x00\x07\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x0b\x00\x0b\x00\x0c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x34\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x5b\x00\x33\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5c\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x1d\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5c\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x33\x00\x5b\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x13\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x38\x00\x33\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x00\x00\x33\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x6c\x00\x5b\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x33\x00\x5b\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x1d\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x00\x00\x33\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x1d\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x13\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x39\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x13\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x1d\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x36\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x1d\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x37\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x1d\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x38\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x1d\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x2f\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x1d\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x2d\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x1d\x00\x00\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x2a\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x33\x00\x00\x00\x33\x00\x3b\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x1d\x00\x00\x00\x3b\x00\x3b\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x3b\x00\x5b\x00\x3b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x1d\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x42\x00\x5b\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x63\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x67\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x63\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x19\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x42\x00\x5b\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x63\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x67\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x63\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x66\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x45\x00\x5b\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x61\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x66\x00\x5b\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x61\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x63\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x65\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x63\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x63\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x63\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x64\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x61\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x60\x00\x5b\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x61\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x61\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x61\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x62\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x3b\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x13\x00\x00\x00\x3b\x00\x3b\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x3b\x00\x5b\x00\x3b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x6e\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x19\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x6d\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5f\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x6a\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x6b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x6c\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x44\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x62\x00\x00\x00\x62\x00\x5b\x00\x5b\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x46\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x64\x00\x00\x00\x64\x00\x5b\x00\x5b\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x3f\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5d\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5a\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x3f\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5e\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x59\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x31\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x30\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x2c\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x13\x00\x00\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x2b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--alex_check :: AlexAddr-alex_check = AlexA#- "\xff\xff\x09\x00\x0a\x00\x3b\x00\x88\x00\x0d\x00\x88\x00\x88\x00\x96\x00\x96\x00\x96\x00\x3b\x00\x3b\x00\x29\x00\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xff\xff\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\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\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\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\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\x7d\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\xe2\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x22\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\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\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\x5c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x09\x00\x0a\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\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\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x74\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xe2\x00\xff\xff\x2a\x00\x2b\x00\xff\xff\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\xff\xff\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\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe2\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe2\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"#--alex_deflt :: AlexAddr-alex_deflt = AlexA#- "\xff\xff\x4a\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\x11\x00\x14\x00\x14\x00\x17\x00\x17\x00\x1c\x00\x1c\x00\xff\xff\x21\x00\x21\x00\xff\xff\x25\x00\x25\x00\xff\xff\x27\x00\x27\x00\x27\x00\xff\xff\xff\xff\x56\x00\x56\x00\x56\x00\xff\xff\x4a\x00\x4a\x00\x4a\x00\xff\xff\x27\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"#--alex_accept = listArray (0 :: Int, 110)- [ AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccSkip- , 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- , AlexAccSkip- , 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- , AlexAccSkip- , AlexAccSkip- , AlexAccSkip- , AlexAcc 35- , AlexAcc 34- , AlexAcc 33- , AlexAcc 32- , AlexAcc 31- , AlexAcc 30- , AlexAcc 29- , AlexAcc 28- , AlexAcc 27- , AlexAcc 26- , AlexAcc 25- , AlexAccPred 24 (isAllowedStringChar)(AlexAccNone)- , AlexAccPred 23 (isAllowedStringChar)(AlexAccNone)- , 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, 65)- [ (64,alex_action_1)- , (63,alex_action_2)- , (62,alex_action_3)- , (61,alex_action_4)- , (60,alex_action_4)- , (59,alex_action_5)- , (58,alex_action_6)- , (57,alex_action_7)- , (56,alex_action_8)- , (55,alex_action_8)- , (54,alex_action_8)- , (53,alex_action_8)- , (52,alex_action_8)- , (51,alex_action_8)- , (50,alex_action_8)- , (49,alex_action_8)- , (48,alex_action_10)- , (47,alex_action_11)- , (46,alex_action_12)- , (45,alex_action_13)- , (44,alex_action_13)- , (43,alex_action_14)- , (42,alex_action_15)- , (41,alex_action_15)- , (40,alex_action_15)- , (39,alex_action_16)- , (38,alex_action_16)- , (37,alex_action_16)- , (36,alex_action_17)- , (35,alex_action_19)- , (34,alex_action_20)- , (33,alex_action_21)- , (32,alex_action_22)- , (31,alex_action_23)- , (30,alex_action_24)- , (29,alex_action_25)- , (28,alex_action_26)- , (27,alex_action_27)- , (26,alex_action_28)- , (25,alex_action_29)- , (24,alex_action_30)- , (23,alex_action_30)- , (22,alex_action_31)- , (21,alex_action_31)- , (20,alex_action_31)- , (19,alex_action_31)- , (18,alex_action_31)- , (17,alex_action_31)- , (16,alex_action_31)- , (15,alex_action_31)- , (14,alex_action_31)- , (13,alex_action_31)- , (12,alex_action_31)- , (11,alex_action_31)- , (10,alex_action_31)- , (9,alex_action_31)- , (8,alex_action_31)- , (7,alex_action_31)- , (6,alex_action_31)- , (5,alex_action_31)- , (4,alex_action_31)- , (3,alex_action_31)- , (2,alex_action_31)- , (1,alex_action_31)- , (0,alex_action_31)- ]--{-# LINE 95 "src/Language/Wasm/Lexer.x" #-}---{- Lexem Helpers -}--defaultStartCode :: Int-defaultStartCode = 0---- inner string literal character predicate-isAllowedStringChar :: user -> AlexInput -> Int -> AlexInput -> Bool-isAllowedStringChar _userState (_pos, _rest, inp, _) _len _nextInp =- let Just (char, _) = LBSUtf8.decode inp in- let code = Char.ord char in- code >= 0x20 && code /= 0x7f && char /= '"' && char /= '\\'--minusNaN, inf, minusInf :: Double-minusNaN = negate nan-inf = infinity-minusInf = -infinity--parseSign :: (Num a) => LBS.ByteString -> ((a -> a), Int64)-parseSign str =- let Just (ch, _) = LBSUtf8.decode str in- case ch of- '-' -> (negate, 1)- '+' -> (abs, 1)- otherwise -> (abs, 0)--{-# SPECIALIZE parseSign :: LBS.ByteString -> ((Integer -> Integer), Int64) #-}-{-# SPECIALIZE parseSign :: LBS.ByteString -> ((Double -> Double), Int64) #-}--parseHexalSignedInt :: AlexAction Lexeme-parseHexalSignedInt = token $ \(pos, _, s, _) len -> - let (sign, slen) = parseSign s in- let num = readHexFromPrefix (len - 2 - slen) $ LBSUtf8.drop (2 + slen) s in- Lexeme (Just pos) $ TIntLit $ sign num--parseNanSigned :: AlexAction Lexeme-parseNanSigned = token $ \(pos, _, s, _) len -> - let (sign, slen) = parseSign s in- let num = readHexFromPrefix (len - 6 - slen) $ LBSUtf8.drop (6 + slen) s in- Lexeme (Just pos) $ TFloatLit $ BinRep $ sign $ makeNaN $ fromIntegral num--parseDecimalSignedInt :: AlexAction Lexeme-parseDecimalSignedInt = token $ \(pos, _, s, _) len ->- let (sign, slen) = parseSign s in- let num = readDecFromPrefix (len - slen) $ LBSUtf8.drop slen s in- Lexeme (Just pos) $ TIntLit $ sign num--parseDecFloat :: AlexAction Lexeme-parseDecFloat = token $ \(pos, _, s, _) len ->- Lexeme (Just pos) $ TFloatLit $ DecRep $ filter (/= '_') $ takeChars len s--expAsInt :: String -> Int-expAsInt [] = 0-expAsInt ('+' : rest) = expAsInt rest-expAsInt ('-' : rest) = negate $ expAsInt rest-expAsInt str = read str--readDecFloat :: String -> Either String Float-readDecFloat str =- let (sign, rest) = case str of- ('+':rest) -> (abs, rest)- ('-':rest) -> (negate, rest)- rest -> (abs, rest)- in- let (val, exp) = splitBy (\c -> c == 'E' || c == 'e') rest in- let (int, frac) = splitBy (== '.') val in- let nullIfEmpty str = if null str then "0" else str in- let expInt = expAsInt $ nullIfEmpty exp in- if expInt > 38- then Left $ "constant out of range"- else fmap sign $ readEither $ nullIfEmpty int ++ "." ++ nullIfEmpty frac ++ "e" ++ nullIfEmpty exp--readDecDouble :: String -> Either String Double-readDecDouble str =- let (sign, rest) = case str of- ('+':rest) -> (abs, rest)- ('-':rest) -> (negate, rest)- rest -> (abs, rest)- in- let (val, exp) = splitBy (\c -> c == 'E' || c == 'e') rest in- let (int, frac) = splitBy (== '.') val in- let nullIfEmpty str = if null str then "0" else str in- let expInt = expAsInt $ nullIfEmpty exp in- if expInt > 308- then Left $ "constant out of range"- else fmap sign $ readEither $ nullIfEmpty int ++ "." ++ nullIfEmpty frac ++ "e" ++ nullIfEmpty exp--parseHexFloat :: AlexAction Lexeme-parseHexFloat = token $ \(pos, _, s, _) len ->- Lexeme (Just pos) $ TFloatLit $ HexRep $ filter (/= '_') $ takeChars len s--readHexFloat :: Int -> String -> String -> Either String Double-readHexFloat expLimit restrictedPrefix str =- let (sign, '0':'x':rest) = case str of- ('+':rest) -> (abs, rest)- ('-':rest) -> (negate, rest)- rest -> (abs, rest)- in- let (val, exp) = splitBy (\c -> c == 'P' || c == 'p') rest in- let (int, frac) = splitBy (== '.') val in- let intLen = length int in- let expInt = expAsInt exp in- if int == "1" && ((restrictedPrefix `isPrefixOf` frac && expInt == expLimit - 1) || expInt >= expLimit)- then Left $ "constant out of range"- else- let intVal = sum $ zipWith (\i c -> readHexFromChar c * (16 ^ (intLen - i))) [1..] int in- Right $ sign $ (intVal + readHexFrac frac) * readHexExp exp- where- readHexExp :: String -> Double- readHexExp [] = 1- readHexExp ('+' : rest) = readHexExp rest- readHexExp ('-' : rest) = 1 / readHexExp rest- readHexExp expStr = 2 ^ read expStr-- readHexFrac :: String -> Double- readHexFrac [] = 0- readHexFrac val =- let len = length val in- sum $ zipWith (\i c -> readHexFromChar c / (16 ^ i)) [1..] val--asFloat :: FloatRep -> Either String Float-asFloat (BinRep d) = Right $ doubleToFloat d-asFloat (HexRep s) = doubleToFloat <$> readHexFloat 128 "ffffff" s-asFloat (DecRep s) = readDecFloat s--asDouble :: FloatRep -> Either String Double-asDouble (BinRep d) = Right d-asDouble (HexRep s) = readHexFloat 1024 "fffffffffffff8" s-asDouble (DecRep s) = readDecDouble s--startBlockComment :: AlexAction Lexeme-startBlockComment _inp _len = do- depth <- getLexerCommentDepth- if depth <= 0- then do- alexSetStartCode blockComment- setLexerCommentDepth 1- else- setLexerCommentDepth (depth + 1)- alexMonadScan--endBlockComment :: AlexAction Lexeme-endBlockComment _inp _len = do- depth <- getLexerCommentDepth- if depth == 1- then do- alexSetStartCode defaultStartCode- setLexerCommentDepth 0- else- setLexerCommentDepth (depth - 1)- alexMonadScan--startStringLiteral :: AlexAction Lexeme-startStringLiteral _inp _len = do- alexSetStartCode stringLiteral- setLexerStringFlag True- alexMonadScan--appendCharToStringLiteral :: Char -> AlexAction Lexeme-appendCharToStringLiteral chr _inp _len = do- addCharToLexerStringValue chr- alexMonadScan--appendFromHead :: AlexAction Lexeme-appendFromHead (_pos, _rest, inp, _) _len = do- let Just (first, _) = LBSUtf8.decode inp- addCharToLexerStringValue first- alexMonadScan--appendDoubleHexChar :: AlexAction Lexeme-appendDoubleHexChar (_pos, _rest, inp, _) _len = do- addCharCodeToLexerStringValue $ fromIntegral $ readHexFromPrefix 2 $ LBSUtf8.drop 1 inp- alexMonadScan---- TODO: add a predicate with code ranges check--- if 𝑛 < 0xD800 ∨ 0xE000 ≤ 𝑛 < 0x110000-appendHexEscapedChar :: AlexAction Lexeme-appendHexEscapedChar (pos, _rest, inp, _) len = do- let code = readHexFromPrefix (len - 3) $ LBSUtf8.drop 2 inp- if code < 0xD800 || (code >= 0xE000 && code < 0x110000)- then do- addCharToLexerStringValue $ Char.chr $ fromIntegral code- alexMonadScan- else- alexError $ "Character code should be in valid UTF range (code < 0xD800 || (code >= 0xE000 && code < 0x110000)): " ++ show pos--endStringLiteral :: AlexAction Lexeme-endStringLiteral (pos, _, _inp, _) _len = do- alexSetStartCode defaultStartCode- setLexerStringFlag False- str <- LBS.pack . reverse <$> getLexerStringValue- setLexerStringValue []- return $ Lexeme (Just pos) $ TStringLit str--tokenStr :: (LBS.ByteString -> Token) -> AlexAction Lexeme-tokenStr f = token $ \(pos, _, s, _) len -> (Lexeme (Just pos) $ f $ LBS.take len s)--constToken :: Token -> AlexAction Lexeme-constToken tok = token $ \(pos, _, _, _) _len -> (Lexeme (Just pos) tok)--{- End Lexem Helpers -}--data FloatRep- = BinRep Double- | DecRep String- | HexRep String- deriving (Show, Eq)--data Token = TKeyword LBS.ByteString- | TIntLit Integer- | TFloatLit FloatRep- | TStringLit LBS.ByteString- | TId LBS.ByteString- | TOpenBracket- | TCloseBracket- | TReserved LBS.ByteString- | EOF- deriving (Show, Eq)--data Lexeme = Lexeme { pos :: Maybe AlexPosn, tok :: Token } deriving (Show, Eq)--data AlexUserState = AlexUserState {- lexerCommentDepth :: Int,- lexerStringValue :: [Word8],- lexerIsString :: Bool- }--alexInitUserState :: AlexUserState-alexInitUserState = AlexUserState {- lexerCommentDepth = 0,- lexerIsString = False,- lexerStringValue = []- }--getLexerCommentDepth :: Alex Int-getLexerCommentDepth = Alex $ \s@AlexState{alex_ust=ust} ->- Right (s, lexerCommentDepth ust)--setLexerCommentDepth :: Int -> Alex ()-setLexerCommentDepth ss = Alex $ \s ->- Right (s{ alex_ust=(alex_ust s){ lexerCommentDepth = ss } }, ())--getLexerStringFlag :: Alex Bool-getLexerStringFlag = Alex $ \s@AlexState{alex_ust=ust} -> Right (s, lexerIsString ust)--setLexerStringFlag :: Bool -> Alex ()-setLexerStringFlag isString = Alex $ \s ->- Right (s{ alex_ust=(alex_ust s){ lexerIsString = isString } }, ())--getLexerStringValue :: Alex [Word8]-getLexerStringValue = Alex $ \s@AlexState{alex_ust=ust} -> Right (s, lexerStringValue ust)--setLexerStringValue :: [Word8] -> Alex ()-setLexerStringValue ss = Alex $ \s ->- Right (s{ alex_ust=(alex_ust s){ lexerStringValue = ss } }, ())--addCharToLexerStringValue :: Char -> Alex ()-addCharToLexerStringValue c = Alex $ \s ->- let ust = alex_ust s in- Right (s{ alex_ust = ust{ lexerStringValue = (reverse $ LBS.unpack $ LBSUtf8.fromString [c]) ++ lexerStringValue ust } }, ())--addCharCodeToLexerStringValue :: Word8 -> Alex ()-addCharCodeToLexerStringValue c = Alex $ \s ->- let ust = alex_ust s in- Right (s{ alex_ust = ust{ lexerStringValue = c : lexerStringValue ust } }, ())--alexEOF = return $ Lexeme Nothing EOF--takeChars :: Int64 -> LBS.ByteString -> String-takeChars n str = reverse $ go n str []- where- go :: Int64 -> LBS.ByteString -> String -> String- go 0 _ acc = acc- go n str acc = case LBSUtf8.uncons str of- Just (c, rest) -> go (n - 1) rest (c : acc)- Nothing -> acc--readHexFromChar :: (Num a) => Char -> a-readHexFromChar chr =- case chr of - '0' -> 0 - '1' -> 1 - '2' -> 2 - '3' -> 3 - '4' -> 4 - '5' -> 5 - '6' -> 6 - '7' -> 7 - '8' -> 8 - '9' -> 9 - 'A' -> 10 - 'B' -> 11 - 'C' -> 12 - 'D' -> 13 - 'E' -> 14 - 'F' -> 15- 'a' -> 10 - 'b' -> 11 - 'c' -> 12 - 'd' -> 13 - 'e' -> 14 - 'f' -> 15- otherwise -> 0--{-# SPECIALIZE readHexFromChar :: Char -> Integer #-}-{-# SPECIALIZE readHexFromChar :: Char -> Double #-}--readFromPrefix :: Int -> Int64 -> LBS.ByteString -> Integer-readFromPrefix base n bstr- | base <= 16 =- let str = filter (/= '_') $ takeChars n bstr in- let len = length str in- sum $ zipWith (\i c -> readHexFromChar c * (fromIntegral base ^ fromIntegral (len - i))) [1..] str- | otherwise = error "base has to be less than or equal 16"--readHexFromPrefix :: Int64 -> LBS.ByteString -> Integer-readHexFromPrefix = readFromPrefix 16--readDecFromPrefix :: Int64 -> LBS.ByteString -> Integer-readDecFromPrefix = readFromPrefix 10--splitBy :: (Char -> Bool) -> String -> (String, String)-splitBy pred str =- case break pred str of- (left, (_ : rest)) -> (left, rest)- res -> res--scanner :: LBS.ByteString -> Either String [Lexeme]-scanner str = runAlex str loop- where- loop :: Alex [Lexeme]- loop = do- lex <- alexMonadScan- case lex of- Lexeme _ EOF -> do- strFlag <- getLexerStringFlag- when strFlag $ alexError "End of file reached before string literal end"- commentDepth <- getLexerCommentDepth- when (commentDepth > 0) $ alexError "End of file reached before block comment end"- return [lex]- otherwise -> (lex :) <$> loop---blockComment,stringLiteral :: Int-blockComment = 1-stringLiteral = 2-alex_action_1 = constToken $ TFloatLit $ BinRep (abs nan) -alex_action_2 = constToken $ TFloatLit $ BinRep (abs nan) -alex_action_3 = constToken $ TFloatLit $ BinRep nan -alex_action_4 = parseNanSigned -alex_action_5 = constToken $ TFloatLit $ BinRep inf -alex_action_6 = constToken $ TFloatLit $ BinRep inf -alex_action_7 = constToken $ TFloatLit $ BinRep minusInf -alex_action_8 = tokenStr TKeyword -alex_action_10 = tokenStr TId -alex_action_11 = constToken TOpenBracket -alex_action_12 = constToken TCloseBracket -alex_action_13 = parseDecimalSignedInt -alex_action_14 = parseHexalSignedInt -alex_action_15 = parseDecFloat -alex_action_16 = parseHexFloat -alex_action_17 = startBlockComment -alex_action_19 = endBlockComment -alex_action_20 = startStringLiteral -alex_action_21 = appendDoubleHexChar -alex_action_22 = appendCharToStringLiteral '\x09' -alex_action_23 = appendCharToStringLiteral '\x0A' -alex_action_24 = appendCharToStringLiteral '\x0D' -alex_action_25 = appendCharToStringLiteral '\x22' -alex_action_26 = appendCharToStringLiteral '\x27' -alex_action_27 = appendCharToStringLiteral '\x5C' -alex_action_28 = appendHexEscapedChar -alex_action_29 = endStringLiteral -alex_action_30 = appendFromHead -alex_action_31 = tokenStr TReserved -{-# 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---------- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-#if __GLASGOW_HASKELL__ > 706-#define GTE(n,m) (tagToEnum# (n >=# m))-#define EQ(n,m) (tagToEnum# (n ==# m))-#else-#define GTE(n,m) (n >=# m)-#define EQ(n,m) (n ==# m)-#endif----data AlexAddr = AlexA# Addr#--- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-#if __GLASGOW_HASKELL__ < 503-uncheckedShiftL# = shiftL#-#endif--{-# INLINE alexIndexInt16OffAddr #-}-alexIndexInt16OffAddr (AlexA# arr) off =-#ifdef WORDS_BIGENDIAN- narrow16Int# i- where- i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)- high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- low = int2Word# (ord# (indexCharOffAddr# arr off'))- off' = off *# 2#-#else- indexInt16OffAddr# arr off-#endif------{-# INLINE alexIndexInt32OffAddr #-}-alexIndexInt32OffAddr (AlexA# arr) off =-#ifdef WORDS_BIGENDIAN- narrow32Int# i- where- i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`- (b2 `uncheckedShiftL#` 16#) `or#`- (b1 `uncheckedShiftL#` 8#) `or#` b0)- b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))- b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))- b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- b0 = int2Word# (ord# (indexCharOffAddr# arr off'))- off' = off *# 4#-#else- indexInt32OffAddr# arr off-#endif-------#if __GLASGOW_HASKELL__ < 503-quickIndex arr i = arr ! i-#else--- GHC >= 503, unsafeAt is available from Data.Array.Base.-quickIndex = unsafeAt-#endif------- -------------------------------------------------------------------------------- Main lexing routines--data AlexReturn a- = AlexEOF- | AlexError !AlexInput- | AlexSkip !AlexInput !Int- | AlexToken !AlexInput !Int a---- alexScan :: AlexInput -> StartCode -> AlexReturn a-alexScan input__ (I# (sc))- = alexScanUser undefined input__ (I# (sc))--alexScanUser user__ input__ (I# (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` (I# (s))))- in- new_acc `seq`- case alexGetByte input__ of- Nothing -> (new_acc, input__)- Just (c, new_input) ->---- case fromIntegral c of { (I# (ord_c)) ->- let- base = alexIndexInt32OffAddr alex_base s- offset = (base +# ord_c)- check = alexIndexInt16OffAddr alex_check offset-- new_s = if GTE(offset,0#) && EQ(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__ (I# (len))- check_accs (AlexAccSkip) = AlexLastSkip input__ (I# (len))-- check_accs (AlexAccPred a predx rest)- | predx user__ orig_input (I# (len)) input__- = AlexLastAcc a input__ (I# (len))- | otherwise- = check_accs rest- check_accs (AlexAccSkipPred predx rest)- | predx user__ orig_input (I# (len)) input__- = AlexLastSkip input__ (I# (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 (I# (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.-
− dist/build/Language/Wasm/Parser.hs
@@ -1,7182 +0,0 @@-{-# OPTIONS_GHC -w #-}-{-# OPTIONS -XMagicHash -XBangPatterns -XTypeSynonymInstances -XFlexibleInstances -cpp #-}-#if __GLASGOW_HASKELL__ >= 710-{-# OPTIONS_GHC -XPartialTypeSignatures #-}-#endif-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE ViewPatterns #-}-{-# LANGUAGE DuplicateRecordFields #-}-{-# LANGUAGE NamedFieldPuns #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE DeriveAnyClass #-}--module Language.Wasm.Parser (- parseModule,- parseModuleFields,- parseScript,- desugarize,- ModuleField(..),- DataSegment(..),- ElemSegment(..),- StartFunction(..),- Export(..),- ExportDesc(..),- Table(..),- Memory(..),- Global(..),- Function(..),- LocalType(..),- Import(..),- ImportDesc(..),- Instruction(..),- TypeUse(..),- TypeDef(..),- PlainInstr(..),- Index(..),- Ident(..),- ParamType(..),- FuncType(..),- -- script- Script,- ModuleDef(..),- Command(..),- Action(..),- Assertion(..),- Meta(..)-) where--import Language.Wasm.Structure (- MemArg(..),- IUnOp(..),- IBinOp(..),- IRelOp(..),- FUnOp(..),- FBinOp(..),- FRelOp(..),- BitSize(..),- TableType(..),- ElemType(..),- Limit(..),- GlobalType(..),- ValueType(..)- )--import qualified Language.Wasm.Structure as S--import qualified Data.Text as T-import qualified Data.Text.Lazy as TL-import qualified Data.Text.Lazy.Encoding as TLEncoding-import qualified Data.Text.Lazy.Read as TLRead--import qualified Data.ByteString.Lazy as LBS-import qualified Data.ByteString.Lazy.Char8 as LBSChar8-import Data.Maybe (fromMaybe, fromJust, isNothing)-import Data.List (foldl', findIndex, find)-import Control.Monad (guard, foldM)--import Numeric.Natural (Natural)-import Data.Word (Word32, Word64)-import Data.Bits ((.|.))-import Numeric.IEEE (infinity, nan, maxFinite)-import Language.Wasm.FloatUtils (doubleToFloat)-import Control.DeepSeq (NFData)-import GHC.Generics (Generic)--import Language.Wasm.Lexer (- Token (- TKeyword,- TIntLit,- TFloatLit,- TStringLit,- TId,- TOpenBracket,- TCloseBracket,- TReserved,- EOF- ),- Lexeme(..),- AlexPosn(..),- asFloat,- asDouble- )-import qualified Data.Array as Happy_Data_Array-import qualified Data.Bits as Bits-import qualified GHC.Exts as Happy_GHC_Exts-import Control.Applicative(Applicative(..))-import Control.Monad (ap)---- parser produced by Happy Version 1.19.8--newtype HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131 = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = Happy_GHC_Exts.Any-#else-type HappyAny = forall a . a-#endif-happyIn6 :: (TL.Text) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn6 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn6 #-}-happyOut6 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (TL.Text)-happyOut6 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut6 #-}-happyIn7 :: (TL.Text) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn7 #-}-happyOut7 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (TL.Text)-happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut7 #-}-happyIn8 :: (Ident) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn8 #-}-happyOut8 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Ident)-happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut8 #-}-happyIn9 :: (ValueType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn9 #-}-happyOut9 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (ValueType)-happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut9 #-}-happyIn10 :: (Index) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn10 #-}-happyOut10 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Index)-happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut10 #-}-happyIn11 :: (Integer) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn11 #-}-happyOut11 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Integer)-happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut11 #-}-happyIn12 :: (Natural) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn12 #-}-happyOut12 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Natural)-happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut12 #-}-happyIn13 :: (Integer) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn13 #-}-happyOut13 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Integer)-happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut13 #-}-happyIn14 :: (Float) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn14 #-}-happyOut14 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Float)-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut14 #-}-happyIn15 :: (Double) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn15 #-}-happyOut15 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Double)-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut15 #-}-happyIn16 :: (PlainInstr) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn16 #-}-happyOut16 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (PlainInstr)-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut16 #-}-happyIn17 :: (TypeUse) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn17 #-}-happyOut17 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (TypeUse)-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut17 #-}-happyIn18 :: (TypeUse) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn18 #-}-happyOut18 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (TypeUse)-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut18 #-}-happyIn19 :: (Maybe FuncType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn19 #-}-happyOut19 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe FuncType)-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut19 #-}-happyIn20 :: (TypeDef) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn20 #-}-happyOut20 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (TypeDef)-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut20 #-}-happyIn21 :: (FuncType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn21 #-}-happyOut21 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (FuncType)-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut21 #-}-happyIn22 :: (FuncType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn22 #-}-happyOut22 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (FuncType)-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut22 #-}-happyIn23 :: (FuncType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn23 #-}-happyOut23 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (FuncType)-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut23 #-}-happyIn24 :: (FuncType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn24 #-}-happyOut24 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (FuncType)-happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut24 #-}-happyIn25 :: (FuncType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn25 #-}-happyOut25 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (FuncType)-happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut25 #-}-happyIn26 :: (FuncType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn26 #-}-happyOut26 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (FuncType)-happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut26 #-}-happyIn27 :: (FuncType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn27 #-}-happyOut27 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (FuncType)-happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut27 #-}-happyIn28 :: (MemArg) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn28 #-}-happyOut28 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (MemArg)-happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut28 #-}-happyIn29 :: (MemArg) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn29 #-}-happyOut29 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (MemArg)-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut29 #-}-happyIn30 :: (MemArg) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn30 #-}-happyOut30 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (MemArg)-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut30 #-}-happyIn31 :: (MemArg) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn31 #-}-happyOut31 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (MemArg)-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut31 #-}-happyIn32 :: ([Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn32 #-}-happyOut32 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([Instruction])-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut32 #-}-happyIn33 :: ([Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn33 #-}-happyOut33 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([Instruction])-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut33 #-}-happyIn34 :: (Maybe Ident -> Either String Instruction) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn34 #-}-happyOut34 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Either String Instruction)-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut34 #-}-happyIn35 :: (Maybe Ident -> Either String Instruction) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn35 #-}-happyOut35 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Either String Instruction)-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut35 #-}-happyIn36 :: (Maybe Ident -> Either String Instruction) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn36 #-}-happyOut36 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Either String Instruction)-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut36 #-}-happyIn37 :: (Maybe Ident -> Either String Instruction) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn37 #-}-happyOut37 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Either String Instruction)-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut37 #-}-happyIn38 :: (Maybe Ident -> Either String [Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn38 #-}-happyOut38 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Either String [Instruction])-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut38 #-}-happyIn39 :: (Maybe Ident -> Either String [Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn39 #-}-happyOut39 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Either String [Instruction])-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut39 #-}-happyIn40 :: (([Instruction], Maybe Ident)) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn40 #-}-happyOut40 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (([Instruction], Maybe Ident))-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut40 #-}-happyIn41 :: ([Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn41 #-}-happyOut41 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([Instruction])-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut41 #-}-happyIn42 :: ((TypeUse, [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn42 #-}-happyOut42 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ((TypeUse, [Instruction]))-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut42 #-}-happyIn43 :: ((Maybe FuncType, [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn43 #-}-happyOut43 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ((Maybe FuncType, [Instruction]))-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut43 #-}-happyIn44 :: ((Maybe FuncType, [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn44 #-}-happyOut44 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ((Maybe FuncType, [Instruction]))-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut44 #-}-happyIn45 :: ((Maybe FuncType, [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn45 #-}-happyOut45 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ((Maybe FuncType, [Instruction]))-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut45 #-}-happyIn46 :: ((Maybe FuncType, [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn46 #-}-happyOut46 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ((Maybe FuncType, [Instruction]))-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut46 #-}-happyIn47 :: ([Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([Instruction])-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut47 #-}-happyIn48 :: ([Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([Instruction])-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut48 #-}-happyIn49 :: (Maybe Ident -> Instruction) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Instruction)-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut49 #-}-happyIn50 :: (Maybe Ident -> Instruction) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Instruction)-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut50 #-}-happyIn51 :: (Maybe Ident -> Instruction) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Instruction)-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut51 #-}-happyIn52 :: (Maybe Ident -> Instruction) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Instruction)-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut52 #-}-happyIn53 :: (Maybe Ident -> [Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> [Instruction])-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut53 #-}-happyIn54 :: (([Instruction], ([Instruction], [Instruction]))) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (([Instruction], ([Instruction], [Instruction])))-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut54 #-}-happyIn55 :: ([Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([Instruction])-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut55 #-}-happyIn56 :: ([Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([Instruction])-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut56 #-}-happyIn57 :: ((TypeUse, [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ((TypeUse, [Instruction]))-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut57 #-}-happyIn58 :: ((Maybe FuncType, [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn58 #-}-happyOut58 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ((Maybe FuncType, [Instruction]))-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut58 #-}-happyIn59 :: ((Maybe FuncType, [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn59 #-}-happyOut59 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ((Maybe FuncType, [Instruction]))-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut59 #-}-happyIn60 :: ((Maybe FuncType, [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn60 #-}-happyOut60 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ((Maybe FuncType, [Instruction]))-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut60 #-}-happyIn61 :: ((Maybe FuncType, [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn61 #-}-happyOut61 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ((Maybe FuncType, [Instruction]))-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut61 #-}-happyIn62 :: (ImportDesc) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn62 #-}-happyOut62 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (ImportDesc)-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut62 #-}-happyIn63 :: (Import) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn63 #-}-happyOut63 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Import)-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut63 #-}-happyIn64 :: (ModuleField) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn64 #-}-happyOut64 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (ModuleField)-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut64 #-}-happyIn65 :: (Maybe Ident -> ModuleField) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn65 #-}-happyOut65 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> ModuleField)-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut65 #-}-happyIn66 :: (Maybe Ident -> ModuleField) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn66 #-}-happyOut66 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> ModuleField)-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut66 #-}-happyIn67 :: (Maybe Ident -> ModuleField) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn67 #-}-happyOut67 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> ModuleField)-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut67 #-}-happyIn68 :: (Maybe Ident -> Function) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn68 #-}-happyOut68 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> Function)-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut68 #-}-happyIn69 :: (Function) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn69 #-}-happyOut69 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Function)-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut69 #-}-happyIn70 :: (Function) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn70 #-}-happyOut70 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Function)-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut70 #-}-happyIn71 :: (Function) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn71 #-}-happyOut71 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Function)-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut71 #-}-happyIn72 :: (Function) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn72 #-}-happyOut72 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Function)-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut72 #-}-happyIn73 :: (([LocalType], [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn73 #-}-happyOut73 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (([LocalType], [Instruction]))-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut73 #-}-happyIn74 :: (([LocalType], [Instruction])) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn74 #-}-happyOut74 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (([LocalType], [Instruction]))-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut74 #-}-happyIn75 :: (ModuleField) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn75 #-}-happyOut75 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (ModuleField)-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut75 #-}-happyIn76 :: (GlobalType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn76 #-}-happyOut76 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (GlobalType)-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut76 #-}-happyIn77 :: (Maybe Ident -> ModuleField) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn77 #-}-happyOut77 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> ModuleField)-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut77 #-}-happyIn78 :: (Maybe Ident -> ModuleField) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn78 #-}-happyOut78 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> ModuleField)-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut78 #-}-happyIn79 :: ([ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn79 #-}-happyOut79 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([ModuleField])-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut79 #-}-happyIn80 :: (Maybe Ident -> [ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn80 #-}-happyOut80 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> [ModuleField])-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut80 #-}-happyIn81 :: (LBS.ByteString) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn81 #-}-happyOut81 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (LBS.ByteString)-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut81 #-}-happyIn82 :: (Maybe Ident -> [ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn82 #-}-happyOut82 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> [ModuleField])-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut82 #-}-happyIn83 :: (Maybe Ident -> [ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn83 #-}-happyOut83 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> [ModuleField])-happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut83 #-}-happyIn84 :: (Limit) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn84 #-}-happyOut84 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Limit)-happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut84 #-}-happyIn85 :: (ElemType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn85 #-}-happyOut85 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (ElemType)-happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut85 #-}-happyIn86 :: (TableType) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn86 #-}-happyOut86 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (TableType)-happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut86 #-}-happyIn87 :: ([ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn87 #-}-happyOut87 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([ModuleField])-happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut87 #-}-happyIn88 :: (Maybe Ident -> [ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn88 #-}-happyOut88 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> [ModuleField])-happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut88 #-}-happyIn89 :: (Maybe Ident -> [ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn89 #-}-happyOut89 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Maybe Ident -> [ModuleField])-happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut89 #-}-happyIn90 :: (ExportDesc) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn90 #-}-happyOut90 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (ExportDesc)-happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut90 #-}-happyIn91 :: (Export) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn91 #-}-happyOut91 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Export)-happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut91 #-}-happyIn92 :: (StartFunction) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn92 #-}-happyOut92 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (StartFunction)-happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut92 #-}-happyIn93 :: ([Instruction]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn93 #-}-happyOut93 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([Instruction])-happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut93 #-}-happyIn94 :: (ElemSegment) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn94 #-}-happyOut94 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (ElemSegment)-happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut94 #-}-happyIn95 :: (DataSegment) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn95 #-}-happyOut95 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (DataSegment)-happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut95 #-}-happyIn96 :: (ModuleField) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn96 #-}-happyOut96 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (ModuleField)-happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut96 #-}-happyIn97 :: ([ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn97 #-}-happyOut97 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([ModuleField])-happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut97 #-}-happyIn98 :: ([ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn98 #-}-happyOut98 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([ModuleField])-happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut98 #-}-happyIn99 :: ([ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn99 #-}-happyOut99 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([ModuleField])-happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut99 #-}-happyIn100 :: ([ModuleField]) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn100 #-}-happyOut100 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> ([ModuleField])-happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut100 #-}-happyIn101 :: (S.Module) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn101 #-}-happyOut101 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (S.Module)-happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut101 #-}-happyIn102 :: (Script) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn102 #-}-happyOut102 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Script)-happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut102 #-}-happyIn103 :: (Command) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn103 #-}-happyOut103 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Command)-happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut103 #-}-happyIn104 :: (Command) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn104 #-}-happyOut104 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Command)-happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut104 #-}-happyIn105 :: (ModuleDef) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn105 #-}-happyOut105 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (ModuleDef)-happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut105 #-}-happyIn106 :: (Action) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn106 #-}-happyOut106 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Action)-happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut106 #-}-happyIn107 :: (Assertion) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn107 #-}-happyOut107 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Assertion)-happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut107 #-}-happyIn108 :: (Either Action ModuleDef) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn108 #-}-happyOut108 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Either Action ModuleDef)-happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut108 #-}-happyIn109 :: (Meta) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn109 #-}-happyOut109 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Meta)-happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut109 #-}-happyIn110 :: t110 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn110 #-}-happyOut110 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t110-happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut110 #-}-happyIn111 :: t111 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn111 #-}-happyOut111 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t111-happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut111 #-}-happyIn112 :: t112 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn112 #-}-happyOut112 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t112-happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut112 #-}-happyIn113 :: t113 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn113 #-}-happyOut113 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t113-happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut113 #-}-happyIn114 :: t114 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn114 #-}-happyOut114 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t114-happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut114 #-}-happyIn115 :: t115 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn115 #-}-happyOut115 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t115-happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut115 #-}-happyIn116 :: t116 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn116 #-}-happyOut116 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t116-happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut116 #-}-happyIn117 :: t117 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn117 #-}-happyOut117 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t117-happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut117 #-}-happyIn118 :: t118 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn118 #-}-happyOut118 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t118-happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut118 #-}-happyIn119 :: t119 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn119 #-}-happyOut119 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t119-happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut119 #-}-happyIn120 :: t120 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn120 #-}-happyOut120 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t120-happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut120 #-}-happyIn121 :: t121 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn121 #-}-happyOut121 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t121-happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut121 #-}-happyIn122 :: t122 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn122 #-}-happyOut122 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t122-happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut122 #-}-happyIn123 :: t123 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn123 #-}-happyOut123 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t123-happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut123 #-}-happyIn124 :: t124 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn124 #-}-happyOut124 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t124-happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut124 #-}-happyIn125 :: t125 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn125 #-}-happyOut125 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t125-happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut125 #-}-happyIn126 :: t126 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn126 #-}-happyOut126 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t126-happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut126 #-}-happyIn127 :: t127 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn127 #-}-happyOut127 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t127-happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut127 #-}-happyIn128 :: t128 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn128 #-}-happyOut128 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t128-happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut128 #-}-happyIn129 :: t129 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn129 #-}-happyOut129 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t129-happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut129 #-}-happyIn130 :: t130 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn130 #-}-happyOut130 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t130-happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut130 #-}-happyIn131 :: t131 -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn131 #-}-happyOut131 :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> t131-happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut131 #-}-happyInTok :: (Lexeme) -> (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131)-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn t110 t111 t112 t113 t114 t115 t116 t117 t118 t119 t120 t121 t122 t123 t124 t125 t126 t127 t128 t129 t130 t131) -> (Lexeme)-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOutTok #-}---happyExpList :: HappyAddr-happyExpList = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x6f\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x36\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\xe0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x36\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x04\xc0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\xc0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\xf0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xf8\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xf0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\xf8\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xf8\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xe0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\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\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\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\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\xf8\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xe0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\xf8\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xc0\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\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\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\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\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\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\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\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xf0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x80\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--{-# NOINLINE happyExpListPerState #-}-happyExpListPerState st =- token_strs_expected- where token_strs = ["error","%dummy","%start_parseModule","%start_parseModuleFields","%start_parseScript","string","name","ident","valtype","index","int32","u32","int64","float32","float64","plaininstr","typeuse","typeuse1","typedtypeuse","typedef","functype","params_results","params_results1","results","results1","paramsresultstypeuse","paramsresulttypeuse","memarg1","memarg2","memarg4","memarg8","instruction","raw_instr","raw_block","raw_block1","raw_loop","raw_loop1","raw_if_result","raw_if_result1","raw_else","raw_call_indirect","raw_call_indirect_typeuse","raw_call_indirect_functype","raw_call_indirect_functype1","raw_call_indirect_return_functype","raw_call_indirect_return_functype1","folded_instr","folded_instr1","folded_block","folded_block1","folded_loop","folded_loop1","folded_if_result","folded_then_else","folded_else","folded_call_indirect","folded_call_indirect_typeuse","folded_call_indirect_functype","folded_call_indirect_functype1","folded_call_indirect_return_functype","folded_call_indirect_return_functype1","importdesc","import","function","export_import_typeuse_locals_body","export_import_typeuse_locals_body1","import_typeuse_locals_body1","typeuse_locals_body1","signature_locals_body","signature_locals_body1","result_locals_body","result_locals_body1","locals_body","locals_body1","global","globaltype","global_type_export_import","global_mut_export_import","memory","memory_limits_export_import","datastring","memory_limits_export_import1","memory_limits","limits","elemtype","tabletype","table","limits_elemtype_elem","import_export_table","exportdesc","export","start","offsetexpr","elemsegment","datasegment","modulefield1_single","modulefield1_multi","modulefield1","modulefield","modAsFields","mod","script","command","command1","module1","action1","assertion1","assertion_trap","meta1","list__command__","list__folded_instr__","list__index__","list__instruction__","list__modulefield__","list__str__","list__string__","list__valtype__","opt__align__","opt__ident__","opt__index__","opt__offset__","opt__u32__","rev_list1__index__","rev_list__command__","rev_list__folded_instr__","rev_list__index__","rev_list__instruction__","rev_list__modulefield__","rev_list__str__","rev_list__string__","rev_list__valtype__","'('","')'","'func'","'param'","'result'","'i32'","'i64'","'f32'","'f64'","'mut'","'anyfunc'","'type'","'unreachable'","'nop'","'br'","'br_if'","'br_table'","'return'","'call'","'call_indirect'","'drop'","'select'","'get_local'","'set_local'","'tee_local'","'get_global'","'set_global'","'i32.load'","'i64.load'","'f32.load'","'f64.load'","'i32.load8_s'","'i32.load8_u'","'i32.load16_s'","'i32.load16_u'","'i64.load8_s'","'i64.load8_u'","'i64.load16_s'","'i64.load16_u'","'i64.load32_s'","'i64.load32_u'","'i32.store'","'i64.store'","'f32.store'","'f64.store'","'i32.store8'","'i32.store16'","'i64.store8'","'i64.store16'","'i64.store32'","'current_memory'","'grow_memory'","'memory.size'","'memory.grow'","'i32.const'","'i64.const'","'f32.const'","'f64.const'","'i32.clz'","'i32.ctz'","'i32.popcnt'","'i32.add'","'i32.sub'","'i32.mul'","'i32.div_s'","'i32.div_u'","'i32.rem_s'","'i32.rem_u'","'i32.and'","'i32.or'","'i32.xor'","'i32.shl'","'i32.shr_s'","'i32.shr_u'","'i32.rotl'","'i32.rotr'","'i64.clz'","'i64.ctz'","'i64.popcnt'","'i64.add'","'i64.sub'","'i64.mul'","'i64.div_s'","'i64.div_u'","'i64.rem_s'","'i64.rem_u'","'i64.and'","'i64.or'","'i64.xor'","'i64.shl'","'i64.shr_s'","'i64.shr_u'","'i64.rotl'","'i64.rotr'","'f32.abs'","'f32.neg'","'f32.ceil'","'f32.floor'","'f32.trunc'","'f32.nearest'","'f32.sqrt'","'f32.add'","'f32.sub'","'f32.mul'","'f32.div'","'f32.min'","'f32.max'","'f32.copysign'","'f64.abs'","'f64.neg'","'f64.ceil'","'f64.floor'","'f64.trunc'","'f64.nearest'","'f64.sqrt'","'f64.add'","'f64.sub'","'f64.mul'","'f64.div'","'f64.min'","'f64.max'","'f64.copysign'","'i32.eqz'","'i32.eq'","'i32.ne'","'i32.lt_s'","'i32.lt_u'","'i32.gt_s'","'i32.gt_u'","'i32.le_s'","'i32.le_u'","'i32.ge_s'","'i32.ge_u'","'i64.eqz'","'i64.eq'","'i64.ne'","'i64.lt_s'","'i64.lt_u'","'i64.gt_s'","'i64.gt_u'","'i64.le_s'","'i64.le_u'","'i64.ge_s'","'i64.ge_u'","'f32.eq'","'f32.ne'","'f32.lt'","'f32.gt'","'f32.le'","'f32.ge'","'f64.eq'","'f64.ne'","'f64.lt'","'f64.gt'","'f64.le'","'f64.ge'","'i32.wrap/i64'","'i32.trunc_s/f32'","'i32.trunc_u/f32'","'i32.trunc_s/f64'","'i32.trunc_u/f64'","'i64.extend_s/i32'","'i64.extend_u/i32'","'i64.trunc_s/f32'","'i64.trunc_u/f32'","'i64.trunc_s/f64'","'i64.trunc_u/f64'","'f32.convert_s/i32'","'f32.convert_u/i32'","'f32.convert_s/i64'","'f32.convert_u/i64'","'f32.demote/f64'","'f64.convert_s/i32'","'f64.convert_u/i32'","'f64.convert_s/i64'","'f64.convert_u/i64'","'f64.promote/f32'","'i32.reinterpret/f32'","'i64.reinterpret/f64'","'f32.reinterpret/i32'","'f64.reinterpret/i64'","'block'","'loop'","'if'","'else'","'end'","'then'","'table'","'memory'","'global'","'import'","'export'","'local'","'elem'","'data'","'offset'","'start'","'module'","'binary'","'quote'","'register'","'invoke'","'get'","'assert_return'","'assert_return_canonical_nan'","'assert_return_arithmetic_nan'","'assert_trap'","'assert_malformed'","'assert_invalid'","'assert_unlinkable'","'assert_exhaustion'","'script'","'input'","'output'","id","int","f64","offset","align","str","EOF","%eof"]- bit_start = st * 353- bit_end = (st + 1) * 353- read_bit = readArrayBit happyExpList- bits = map read_bit [bit_start..bit_end - 1]- bits_indexed = zip bits [0..352]- token_strs_expected = concatMap f bits_indexed- f (False, _) = []- f (True, nr) = [token_strs !! nr]--happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\x1a\x00\x1a\x00\x00\x00\x60\xff\x00\x00\x69\xff\x6c\xff\x51\x00\x72\xff\x2f\x00\x00\x00\x72\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\x8b\xff\x8b\xff\x8b\xff\x8b\xff\x8b\xff\x95\xff\x95\xff\xeb\x00\xeb\x00\xeb\x00\x00\x00\x00\x00\xfe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x01\x59\x02\x18\x03\x18\x03\xf2\x00\x08\x01\x0d\x01\xa6\x04\x60\x05\x15\x06\x18\x06\x5b\x0a\x7c\x09\x7c\x09\x7c\x09\x0f\x0b\xc1\x0b\x00\x00\xc2\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x0d\xe4\x0d\x00\x00\x3d\x0f\x1e\x0f\x00\x00\xe4\x03\x02\x00\x01\x00\xad\x10\x55\x05\x85\x10\x00\x00\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00\xeb\x00\xeb\x00\xeb\x00\x00\x00\xeb\x00\x15\x12\x00\x00\x00\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xeb\x00\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\xf0\x11\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x12\xff\x13\xec\x00\x10\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x14\x01\x14\x01\x14\x9a\x15\x9c\x15\xb4\x14\xa1\x15\xad\x15\xaf\x15\x00\x00\x58\x05\x00\x00\x00\x00\x00\x00\xd4\x15\xa8\xff\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x15\x19\x00\x99\x09\x99\x09\x00\x00\x00\x00\x45\x00\xfc\x14\x0c\x15\x0c\x15\x00\x00\x04\x06\x3a\x00\x3a\x00\x3a\x00\x1f\x00\x04\x06\x04\x06\x04\x06\x0c\x15\x0c\x15\x1e\x15\x09\x06\x00\x00\xf8\x15\x00\x00\x00\x00\x0d\x16\x00\x00\x1c\x16\x00\x00\x28\x16\x29\x16\x00\x00\x00\x00\x4a\x15\x4a\x15\x4a\x15\x4a\x15\x4a\x15\x38\x16\x4e\x16\x53\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x07\x74\x15\x74\x15\x74\x15\x00\x00\x00\x00\x56\x16\xb1\x06\xb1\x06\xb1\x06\xb1\x06\x2a\x00\x00\x00\x99\x04\x94\x15\x94\x15\x65\x16\x51\x0a\x00\x00\x95\x15\x95\x15\x00\x00\x00\x00\x00\x00\x95\x15\x95\x15\x00\x00\xa3\x15\x00\x00\x00\x00\x00\x00\x3d\x08\x00\x00\x29\x03\xe3\x03\x9b\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x15\x00\x00\x00\x00\x71\x15\x00\x00\x71\x15\x00\x00\x00\x00\x00\x00\x71\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x0b\x00\x00\x00\x00\x69\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x15\x00\x00\x69\x07\xd1\x15\xd1\x15\xd7\x15\x6a\x16\x00\x00\x99\x04\xde\x16\x99\x04\xdf\x16\x06\x16\xe1\x16\xe2\x16\x99\x04\xe5\x16\xe8\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x0f\x14\x16\x00\x00\x00\x00\xee\x0f\x14\x16\x00\x00\x00\x00\x00\x00\xa2\x10\x14\x16\x14\x16\x00\x00\xf2\x08\x00\x00\x00\x00\xea\x16\x11\x16\xec\x16\x00\x00\x13\x16\xee\x16\x15\x16\x00\x00\x00\x00\x00\x00\xcd\x14\x00\x00\xf0\x16\x17\x16\xf2\x16\xf3\x16\x1f\x16\x1f\x16\x1f\x16\x1f\x16\xf5\x16\xf6\x16\xf7\x16\xf8\x16\x00\x00\xf9\x16\x21\x08\xfa\x16\xfc\x16\xfd\x16\x0d\x06\xc5\x06\x00\x00\x6f\x0c\x00\x00\xfe\x16\xff\x16\x00\x00\x00\x00\x00\x00\x00\x17\x01\x17\x02\x17\x03\x17\x04\x17\x00\x00\x00\x00\x05\x17\x00\x00\x06\x17\x00\x00\x07\x17\x23\x16\x08\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x08\x00\x00\x00\x00\x56\x11\x00\x00\x00\x00\x00\x00\x0a\x12\x00\x00\x05\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x04\x33\x16\x33\x16\x0b\x17\x00\x00\x00\x00\x0c\x17\x53\x05\x00\x00\x0d\x17\x02\x00\x00\x00\x0e\x17\x0f\x17\x01\x00\x10\x17\x00\x00\x00\x00\x36\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x04\xa1\x09\x00\x00\x00\x00\x00\x00\x99\x04\x5e\x16\x00\x00\x00\x00\x00\x00\x99\x04\x62\x16\x11\x17\x12\x17\x13\x17\x00\x00\x74\x0c\x14\x17\x7d\x07\x74\x0c\x15\x17\x35\x08\x00\x00\xed\x08\x17\x17\xed\x08\x00\x00\x00\x00\x85\x0e\x00\x00\x00\x00\x19\x17\x00\x00\xbc\x01\x00\x00\x00\x00\x00\x00\x71\x02\x00\x00\x74\x0c\x00\x00\x1a\x17\x1c\x17\x1d\x17\x4b\x16\x1e\x17\x67\x16\x50\x16\x21\x17\x6b\x16\x00\x00\x22\x17\xbe\x0b\x6e\x16\x24\x17\x99\x04\x27\x17\x28\x17\x00\x00\x47\x16\x00\x00\x00\x00\x47\x16\x00\x00\x57\x05\x29\x17\x2a\x17\xe2\x03\x2b\x17\x2c\x17\x00\x00\x2d\x17\x26\x17\x30\x17\x00\x00\x00\x00\x99\x04\x00\x00\x00\x00\x00\x00\x99\x04\x31\x17\x00\x00\x00\x00\x99\x04\x32\x17\x33\x17\x34\x17\x35\x17\x36\x17\x00\x00\x78\x0c\x29\x0d\x2b\x0d\x00\x00\x37\x17\x38\x17\x00\x00\x39\x17\x3a\x17\x3b\x17\x3c\x17\x1e\x14\x99\x04\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x17\x00\x00\x69\x16\x00\x00\x57\x0c\x00\x00\x00\x00\x3f\x17\x40\x17\x41\x17\x00\x00\xde\x0d\x42\x17\xe0\x0d\x71\x16\x00\x00\x00\x00\x71\x16\x00\x00\x00\x00\x71\x16\x00\x00\x00\x00\x00\x00\x24\x0d\x00\x00\xbe\x12\x00\x00\x00\x00\x00\x00\x43\x17\x00\x00\x44\x17\x00\x00\x45\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x16\x00\x00\x8f\x16\x00\x00\x2a\x0d\x00\x00\x00\x00\x46\x17\x00\x00\x3f\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x48\x17\x4a\x17\x99\x04\x4b\x17\x3e\x0f\x4c\x17\x00\x00\x4e\x17\x43\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x0d\x00\x00\x00\x00\x72\x13\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x17\x50\x17\x00\x00\x97\x16\x00\x00\x1e\x14\x00\x00\x00\x00\x00\x00\x51\x17\x00\x00\x53\x17\x00\x00\x00\x00\x00\x00\x7e\x16\x7e\x16\x00\x00\x00\x00\x00\x00\xf0\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x17\x56\x17\x57\x17\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x98\x0f\x09\x17\xf8\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x16\x00\x00\x21\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\xff\x0c\x00\x17\x00\x1b\x00\x1c\x00\x1d\x00\xf8\x0f\xa8\x10\x11\x00\x14\x00\x73\x02\xe2\xff\x00\x00\x82\x15\x00\x00\xea\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x58\x17\x21\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x00\x00\x16\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x10\x00\x00\x49\x00\xb9\x15\x9e\x15\x52\x17\x6f\x00\x00\x00\x00\x00\x00\x00\xf0\xff\x00\x00\x44\x16\x00\x00\x00\x00\x00\x00\x76\x02\x2a\x03\x09\x00\x00\x00\x2b\x03\x3d\x17\x00\x00\x00\x00\x0e\x06\x0f\x06\xc6\x06\xc7\x06\x7e\x07\x6d\x00\x08\x00\x88\x00\x18\x00\xee\xff\xf2\xff\xfd\xff\x46\x00\xfc\xff\x16\x00\x4c\x00\x4f\x00\x93\x00\x9d\x00\x9e\x00\x9f\x00\x6e\x15\x70\x15\x39\x00\x65\x00\x44\x00\x70\x00\x6f\x15\x00\x00\x00\x00\x00\x00\x00\x00\x55\x17\x5b\x17\x5c\x17\x5a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x0b\x00\x1b\x17\x00\x00\x00\x00\x00\x00\x0a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x17\xf4\xff\x00\x00\x20\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x17\x7e\x15\x93\x15\x00\x00\x00\x00\x3a\x16\x00\x00\x5e\x17\x5f\x17\xc1\x15\x23\x17\xbf\x15\xe3\x15\x08\x16\xa6\x15\x25\x17\x2e\x17\x2f\x17\x65\x17\x66\x17\x2c\x00\x84\x00\x00\x00\x00\x00\xff\xff\x2b\x15\x00\x00\x32\x15\x00\x00\xdc\x15\x00\x00\x00\x00\x00\x00\x00\x00\x69\x17\x6d\x17\x6e\x17\x6f\x17\x70\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x15\x00\x00\x43\x15\x47\x17\x2d\x00\x2e\x00\x31\x00\x24\x16\x2d\x16\x00\x00\x7f\x07\x36\x08\x37\x08\xee\x08\x49\x17\x00\x00\x71\x17\xac\x10\x5c\x11\x00\x00\x87\x16\x00\x00\x5e\x11\x60\x11\xb2\x15\x00\x00\x00\x00\x10\x12\x12\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x17\x00\x00\x84\x16\x82\x16\x8a\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x16\x00\x00\x00\x00\x4d\x17\x00\x00\x59\x17\x00\x00\x00\x00\x00\x00\x5d\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x16\x00\x00\x00\x00\xef\x08\x00\x00\x00\x00\x2e\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xfb\xff\x52\x0a\x14\x12\xc4\x12\x04\x00\x00\x00\x00\x00\x72\x17\x00\x00\x73\x17\x00\x00\xc6\x12\x00\x00\x00\x00\x74\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x16\x39\x16\x53\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x16\x00\x00\x90\x15\x32\x00\x3f\x16\x00\x00\x16\x16\x33\x00\x40\x16\x00\x00\x00\x00\x8e\x15\x34\x00\x35\x00\x00\x00\xfc\x00\x00\x00\x42\x16\x00\x00\xc8\x12\x00\x00\x00\x00\x00\x00\x00\x00\x78\x13\x00\x00\x00\x00\x00\x00\x19\x16\x00\x00\x00\x00\x7a\x13\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x0b\x00\x00\x62\x17\x00\x00\x97\x15\x4d\x16\x00\x00\xfb\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x16\x00\x00\x00\x00\x00\x00\x43\x16\x4c\x16\x0a\x0b\x48\x16\x00\x00\x4b\x00\x00\x00\x49\x16\x00\x00\x8b\x15\x00\x00\x1a\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x4d\x00\x84\x15\x67\x17\x00\x00\x4a\x16\x00\x00\x4a\x00\x00\x00\x00\x00\xc4\x15\x00\x00\x00\x00\x00\x00\xa4\x15\x00\x00\x00\x00\x00\x00\x05\x00\x4f\x16\x00\x00\x51\x16\x00\x00\x54\x16\x77\x17\x60\x17\x00\x00\x00\x00\x59\x16\x79\x17\x00\x00\x00\x00\x00\x00\x5a\x16\x7a\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x17\x00\x00\x88\x15\x64\x17\x00\x00\x87\x15\x00\x00\x83\x15\x00\x00\x85\x15\x5b\x16\x00\x00\x81\x15\x00\x00\x00\x00\x75\x17\x00\x00\x8c\x15\x00\x00\x5c\x16\x00\x00\x8d\x15\x00\x00\x68\x17\x00\x00\x6a\x17\x76\x17\x6b\x17\x3d\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x17\x00\x00\x00\x00\x7b\x17\x00\x00\x00\x00\x00\x00\xbd\x15\x00\x00\x00\x00\x4e\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x1f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x17\x5d\x16\x60\x16\x00\x00\x80\x17\x00\x00\x63\x16\x00\x00\x81\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x17\x7e\x17\x7f\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x16\x82\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x61\x16\xbf\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x17\x00\x00\x83\x17\x3f\x00\x00\x00\x64\x16\x40\x00\x66\x16\x00\x00\x41\x00\x6c\x16\x00\x00\x00\x00\x5f\x16\x00\x00\x09\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x17\x00\x00\x00\x00\x85\x17\x00\x00\x87\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x17\x00\x00\x8a\x17\x00\x00\x00\x00\x00\x00\x88\x17\x00\x00\x6d\x16\x00\x00\x6f\x16\x00\x00\x1d\x16\x00\x00\x00\x00\x89\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x17\x00\x00\x00\x00\x00\x00\x42\x00\x43\x00\x00\x00\x00\x00\x00\x00\x68\x13\x00\x00\x00\x00\x70\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyAdjustOffset :: Happy_GHC_Exts.Int# -> Happy_GHC_Exts.Int#-happyAdjustOffset off = off--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\x00\x00\x00\x00\x64\xfe\x00\x00\xfc\xff\x00\x00\x00\x00\x79\xfe\x00\x00\x00\x00\x94\xfe\x00\x00\xa3\xfe\xa2\xfe\x9d\xfe\x9c\xfe\x9a\xfe\x9b\xfe\xa1\xfe\xa0\xfe\x9f\xfe\x9e\xfe\x99\xfe\x98\xfe\x5c\xfe\x6e\xfe\x6e\xfe\x6e\xfe\x6e\xfe\x6e\xfe\x00\x00\x00\x00\x6c\xfe\x6c\xfe\x00\x00\x5c\xfe\x65\xfe\x00\x00\x93\xfe\x5c\xfe\x92\xfe\x91\xfe\x8f\xfe\x8e\xfe\x8d\xfe\x6e\xfe\x00\x00\x6e\xfe\x6e\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\xfe\x6e\xfe\x6e\xfe\x00\x00\x75\xfe\xf4\xff\x00\x00\xf5\xff\xfa\xff\xf2\xff\x6d\xfe\x00\x00\x00\x00\xfb\xff\x00\x00\x00\x00\x6f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\xfe\x29\xff\x5e\xfe\xe0\xfe\x00\x00\xdf\xfe\xec\xff\xeb\xff\x00\x00\x00\x00\x00\x00\xe7\xff\x00\x00\x12\xff\xe5\xff\xe4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\x6a\xfe\xc7\xff\xc6\xff\xc5\xff\xc4\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbf\xff\xbe\xff\xbd\xff\xbc\xff\xbb\xff\xba\xff\xb9\xff\xb8\xff\xb7\xff\xb6\xff\xb5\xff\xb4\xff\xb3\xff\xb2\xff\xb1\xff\xb0\xff\xaf\xff\xae\xff\xad\xff\xac\xff\xab\xff\xaa\xff\xa9\xff\xa8\xff\xa7\xff\xa6\xff\xa5\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\x95\xff\x94\xff\x93\xff\x92\xff\x91\xff\x90\xff\x8f\xff\x8e\xff\x8d\xff\x8c\xff\x8b\xff\x8a\xff\x89\xff\x88\xff\x87\xff\x86\xff\x85\xff\x84\xff\x83\xff\x82\xff\x81\xff\x80\xff\x7f\xff\x7e\xff\x7d\xff\x7c\xff\x7b\xff\x7a\xff\x79\xff\x78\xff\x77\xff\x76\xff\x75\xff\x74\xff\x73\xff\x72\xff\x71\xff\x70\xff\x6f\xff\x6e\xff\x6d\xff\x6c\xff\x6b\xff\x6a\xff\x69\xff\x68\xff\x67\xff\x66\xff\x65\xff\x64\xff\x63\xff\x62\xff\x61\xff\x60\xff\x5f\xff\x5e\xff\x5d\xff\x5c\xff\x5b\xff\x5a\xff\x59\xff\x58\xff\x57\xff\x56\xff\x55\xff\x54\xff\x53\xff\x52\xff\x51\xff\x50\xff\x4f\xff\x4e\xff\x4d\xff\x4c\xff\x4b\xff\x4a\xff\x49\xff\x48\xff\x47\xff\x46\xff\x45\xff\x6e\xfe\x6e\xfe\x6e\xfe\x00\x00\x00\x00\x68\xfe\x00\x00\x00\x00\x00\x00\xb3\xfe\x00\x00\xb5\xfe\xbe\xfe\xbd\xfe\x00\x00\x00\x00\x5e\xfe\xc6\xfe\x00\x00\xf9\xff\xf8\xff\xf7\xff\xf6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xfe\x5d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x64\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\xfe\x5c\xfe\x89\xfe\x00\x00\x5a\xfe\x58\xfe\x00\x00\x62\xfe\x00\x00\x62\xfe\x00\x00\x00\x00\x7d\xfe\x7e\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xfe\x97\xfe\x62\xfe\xa6\xfe\x5a\xfe\x00\x00\x6e\xfe\x6e\xfe\x6e\xfe\x62\xfe\x60\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x76\xfe\xbc\xfe\x00\x00\x00\x00\x5a\xfe\xb7\xfe\xb0\xfe\x00\x00\x00\x00\xb2\xfe\x00\x00\xb4\xfe\x69\xfe\xb6\xfe\x00\x00\x3e\xff\x00\x00\x00\x00\x00\x00\xc0\xff\xee\xff\xed\xff\xc1\xff\xf0\xff\xef\xff\xc2\xff\xf1\xff\xc3\xff\xf3\xff\xc8\xff\x70\xfe\x6b\xfe\xc9\xff\x70\xfe\xca\xff\x70\xfe\xcb\xff\xcc\xff\xcd\xff\x70\xfe\xce\xff\xcf\xff\xd0\xff\xd1\xff\xd2\xff\xd3\xff\xd4\xff\xd5\xff\xd6\xff\xd7\xff\xd8\xff\xd9\xff\xda\xff\xdb\xff\xdc\xff\xdd\xff\xde\xff\xdf\xff\xe0\xff\xe1\xff\xe2\xff\xe3\xff\x28\xff\x00\x00\xe6\xff\x66\xfe\xe8\xff\xe9\xff\xea\xff\x5e\xfe\xdd\xfe\xdb\xfe\xd9\xfe\xd7\xfe\xd2\xfe\xcd\xfe\x56\xfe\x56\xfe\x00\x00\x00\x00\x00\x00\x56\xfe\x00\x00\xde\xfe\x00\x00\x00\x00\x72\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xfe\x13\xff\x10\xff\x0c\xff\x08\xff\x56\xfe\x56\xfe\x00\x00\x2c\xff\x71\xfe\x2f\xff\x2e\xff\x2d\xff\x5e\xfe\x27\xff\x00\x00\x6e\xfe\x5e\xfe\x26\xff\x00\x00\x6e\xfe\x5e\xfe\x25\xff\x1a\xff\x00\x00\x6e\xfe\x6e\xfe\x3d\xff\x00\x00\x3c\xff\x60\xfe\x00\x00\x00\x00\x00\x00\xbb\xfe\x74\xfe\x00\x00\x00\x00\x5f\xfe\x2b\xff\x2a\xff\x00\x00\xc3\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x6e\xfe\x6e\xfe\x6e\xfe\x6e\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xa9\xfe\x00\x00\x77\xfe\x00\x00\x78\xfe\x00\x00\x00\x00\x00\x00\x05\xff\x00\x00\xf1\xfe\x00\x00\x00\x00\x7a\xfe\x7b\xfe\x7c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\xfe\x85\xfe\x00\x00\x87\xfe\x00\x00\x90\xfe\x00\x00\x73\xfe\x00\x00\x8a\xfe\x8c\xfe\x59\xfe\x8b\xfe\x88\xfe\x86\xfe\x83\xfe\x82\xfe\x81\xfe\x80\xfe\x7f\xfe\x06\xff\xa4\xfe\x62\xfe\xf0\xfe\xee\xfe\xea\xfe\x56\xfe\x56\xfe\x00\x00\x5e\xfe\x04\xff\x00\x00\x01\xff\x5e\xfe\x03\xff\x00\x00\xfc\xfe\x00\x00\x63\xfe\xa7\xfe\x61\xfe\xa5\xfe\xad\xfe\xac\xfe\xab\xfe\xaa\xfe\x00\x00\x00\x00\x00\x00\x43\xff\xe1\xfe\x5e\xfe\x00\x00\x00\x00\x07\xff\x00\x00\x00\x00\x5b\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x3b\xff\x38\xff\x56\xfe\x56\xfe\x15\xff\x5e\xfe\x18\xff\x5e\xfe\x00\x00\x00\x00\x1f\xff\x1d\xff\x5e\xfe\x00\x00\x00\x00\x24\xff\x22\xff\x5e\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\xfe\x00\x00\x00\x00\x00\x00\x5e\xfe\xc9\xfe\x00\x00\xcc\xfe\xdc\xfe\x43\xff\xd8\xfe\x00\x00\xd6\xfe\x5e\xfe\xce\xfe\x00\x00\xd1\xfe\x00\x00\xd4\xfe\x0e\xff\x0a\xff\x0e\xff\x6e\xfe\x00\x00\x00\x00\x6e\xfe\x00\x00\x00\x00\x19\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\xfe\x00\x00\xb8\xfe\xba\xfe\x00\x00\xc0\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xfe\x00\x00\x00\x00\x00\x00\x02\xff\xf6\xfe\x00\x00\x5e\xfe\x5e\xfe\xfb\xfe\x00\x00\x00\x00\x5e\xfe\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xfe\x00\x00\x00\x00\x00\x00\xff\xfe\x00\x00\x00\x00\xfa\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xfe\xe3\xfe\xe4\xfe\x44\xff\x41\xff\x33\xff\x56\xfe\x56\xfe\x00\x00\xe5\xfe\xc1\xfe\x00\x00\x00\x00\x00\x00\xb1\xfe\x00\x00\x00\x00\x00\x00\x6e\xfe\x16\xff\x5e\xfe\x6e\xfe\x5e\xfe\x1e\xff\x6e\xfe\x5e\xfe\x23\xff\x11\xff\x00\x00\x09\xff\x00\x00\x0d\xff\xd3\xfe\xd0\xfe\x00\x00\xd5\xfe\x00\x00\xca\xfe\x00\x00\xc8\xfe\xcb\xfe\xda\xfe\xcf\xfe\x0b\xff\x0f\xff\x00\x00\x20\xff\x00\x00\x1b\xff\x00\x00\x14\xff\x35\xff\x00\x00\x37\xff\x00\x00\x3a\xff\xaf\xfe\xb9\xfe\xbf\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\xfe\x00\x00\x00\x00\xf8\xfe\x5e\xfe\xfd\xfe\x5e\xfe\xef\xfe\x00\x00\xec\xfe\xe7\xfe\x00\x00\xe8\xfe\xeb\xfe\xe9\xfe\xed\xfe\x00\x00\x00\x00\xf5\xfe\x00\x00\xf3\xfe\x00\x00\xc4\xfe\x34\xff\x32\xff\x00\x00\x30\xff\x3f\xff\x39\xff\x36\xff\x17\xff\x6e\xfe\x6e\xfe\x21\xff\x1c\xff\x42\xff\x00\x00\x31\xff\xf7\xfe\x5e\xfe\xf9\xfe\xfe\xfe\x00\x00\x40\xff\x00\x00\xf2\xfe"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x03\x00\x01\x00\x01\x00\x16\x00\x02\x00\x02\x00\x02\x00\x16\x00\x02\x00\x0c\x00\x02\x00\x0b\x00\x04\x00\x02\x00\x06\x00\x0a\x00\x06\x00\x16\x00\x02\x00\x17\x00\x04\x00\x02\x00\x06\x00\x04\x00\x02\x00\x06\x00\x01\x00\x03\x00\x02\x00\x02\x00\x02\x00\x02\x00\x19\x00\x03\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x0c\x00\x16\x00\x03\x00\x02\x00\x02\x00\x02\x00\x19\x00\x03\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x0c\x00\xdc\x00\x03\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x0c\x00\xde\x00\x03\x00\xdd\x00\x4b\x00\x6c\x00\x03\x00\x03\x00\x6c\x00\x16\x00\xde\x00\x0c\x00\x01\x00\x06\x00\x06\x00\x0a\x00\x6c\x00\x03\x00\x60\x00\x7a\x00\x16\x00\x6b\x00\x7a\x00\x17\x00\x03\x00\x6b\x00\x68\x00\x73\x00\xd7\x00\x17\x00\x7a\x00\x73\x00\x17\x00\xbf\x00\xc0\x00\x79\x00\x6f\x00\xc3\x00\x6d\x00\x79\x00\x76\x00\x73\x00\x73\x00\xdc\x00\x6f\x00\x6f\x00\x6f\x00\x2a\x00\x6f\x00\x2c\x00\x7d\x00\x0a\x00\x7b\x00\x73\x00\x17\x00\x71\x00\x75\x00\x74\x00\x7d\x00\x7d\x00\x7d\x00\x72\x00\x7d\x00\x18\x00\x72\x00\x17\x00\x71\x00\x73\x00\x1b\x00\x73\x00\x71\x00\x71\x00\x71\x00\x71\x00\x47\x00\x47\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x46\x00\x4e\x00\x4e\x00\x71\x00\x71\x00\x71\x00\x18\x00\x46\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x3b\x00\x18\x00\x73\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x18\x00\x18\x00\x73\x00\x19\x00\x73\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\x73\x00\xc2\x00\xc3\x00\x73\x00\xc5\x00\xc6\x00\xbf\x00\xc0\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xbc\x00\xbd\x00\xbe\x00\x73\x00\xd8\x00\xd8\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\x73\x00\xc2\x00\xc3\x00\x73\x00\xc5\x00\xc6\x00\xbc\x00\xbd\x00\xbe\x00\xca\x00\xcb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\x6c\x00\xc2\x00\xc3\x00\x01\x00\xc5\x00\xc6\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\x73\x00\xc2\x00\xc3\x00\x7a\x00\xc5\x00\xc6\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\x73\x00\xc2\x00\xc3\x00\x01\x00\xc5\x00\x04\x00\x05\x00\x11\x00\x01\x00\x13\x00\x73\x00\x73\x00\x73\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x04\x00\x05\x00\xd7\x00\xd8\x00\xd8\x00\xd9\x00\xbf\x00\xc0\x00\xc1\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x02\x00\x05\x00\x04\x00\x02\x00\x06\x00\x04\x00\xd7\x00\x06\x00\xc1\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x01\x00\x0c\x00\x02\x00\x02\x00\x04\x00\x04\x00\x06\x00\x06\x00\xc1\x00\x14\x00\x15\x00\xdc\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\x01\x00\x01\x00\x04\x00\x05\x00\xd8\x00\xd9\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0c\x00\xd7\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x01\x00\xba\x00\x01\x00\x06\x00\x07\x00\x08\x00\x09\x00\x06\x00\x07\x00\x08\x00\x09\x00\x01\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x01\x00\xba\x00\x01\x00\x02\x00\x01\x00\x06\x00\x07\x00\x08\x00\x09\x00\x06\x00\x07\x00\x08\x00\x09\x00\x01\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x01\x00\x02\x00\x02\x00\x02\x00\x04\x00\x04\x00\x06\x00\x06\x00\x01\x00\xbf\x00\xc0\x00\x01\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x01\x00\x02\x00\x02\x00\x02\x00\x04\x00\x04\x00\x06\x00\x06\x00\xca\x00\xcb\x00\xc7\x00\xc8\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x01\x00\x02\x00\x02\x00\x02\x00\x04\x00\x04\x00\x06\x00\x06\x00\x01\x00\x02\x00\xd7\x00\xd8\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x01\x00\x02\x00\x02\x00\x02\x00\x04\x00\x04\x00\x06\x00\x06\x00\x01\x00\x02\x00\xd7\x00\xd8\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x01\x00\x02\x00\x02\x00\x02\x00\x04\x00\x04\x00\x06\x00\x06\x00\x04\x00\x05\x00\xd7\x00\xd8\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x01\x00\xd7\x00\x02\x00\x02\x00\x04\x00\x04\x00\x06\x00\x06\x00\xb9\x00\xba\x00\x01\x00\xc4\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x05\x00\x02\x00\x02\x00\x04\x00\x04\x00\x06\x00\x06\x00\x02\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x04\x00\x05\x00\xbb\x00\x02\x00\x01\x00\x04\x00\x02\x00\x06\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x04\x00\x05\x00\x01\x00\x02\x00\xb9\x00\xba\x00\x01\x00\x02\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x04\x00\x05\x00\x01\x00\x02\x00\x01\x00\x02\x00\xd7\x00\xd8\x00\x01\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x04\x00\x05\x00\x01\x00\x02\x00\x01\x00\x02\x00\xb9\x00\xba\x00\x01\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x01\x00\x05\x00\x01\x00\x02\x00\x04\x00\x05\x00\x01\x00\x02\x00\xc1\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x05\x00\x04\x00\x05\x00\x5e\x00\x5f\x00\x00\x00\x01\x00\xdc\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x01\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\xdd\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x01\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\xda\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x14\x00\x15\x00\xd8\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xd8\x00\xd7\x00\xbb\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x18\x00\x18\x00\x0a\x00\x19\x00\x06\x00\x0a\x00\xd8\x00\x0a\x00\x4b\x00\x0a\x00\x0e\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x6e\x00\x0a\x00\x69\x00\x02\x00\x0a\x00\x1b\x00\x03\x00\x1b\x00\x0a\x00\x1b\x00\x1b\x00\x06\x00\x1b\x00\x1c\x00\x7c\x00\x2a\x00\x77\x00\x06\x00\x2a\x00\x0b\x00\x1d\x00\x01\x00\x21\x00\x6d\x00\x02\x00\x1b\x00\x2a\x00\x0e\x00\x2a\x00\x2a\x00\x2a\x00\x2a\x00\x2e\x00\x2a\x00\x39\x00\x3a\x00\x2a\x00\x7b\x00\x06\x00\x37\x00\x01\x00\x3b\x00\x06\x00\x2d\x00\x44\x00\x43\x00\x45\x00\x43\x00\x41\x00\x06\x00\x49\x00\x40\x00\x0e\x00\x42\x00\x42\x00\x44\x00\x44\x00\x4e\x00\x51\x00\x50\x00\x57\x00\x02\x00\x55\x00\x56\x00\xdd\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x39\x00\x3a\x00\x73\x00\x73\x00\x73\x00\x62\x00\x63\x00\x64\x00\x65\x00\xdc\x00\x67\x00\x57\x00\x45\x00\x4e\x00\x4f\x00\x50\x00\x49\x00\x52\x00\x0e\x00\x4e\x00\x4f\x00\x50\x00\xd7\x00\x52\x00\x51\x00\x39\x00\x3a\x00\x02\x00\x55\x00\x56\x00\x4b\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x4a\x00\x45\x00\x0a\x00\x4d\x00\x4e\x00\x49\x00\x63\x00\x64\x00\x4e\x00\x66\x00\x50\x00\x4a\x00\x02\x00\x51\x00\x4d\x00\x4e\x00\x0a\x00\x55\x00\x56\x00\x0e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x39\x00\x3a\x00\x02\x00\x6d\x00\x0a\x00\x60\x00\x63\x00\x0a\x00\x0a\x00\x2a\x00\xdc\x00\x0a\x00\x45\x00\x68\x00\x02\x00\x02\x00\x49\x00\x7b\x00\x33\x00\x0e\x00\x35\x00\x28\x00\x37\x00\x2a\x00\x51\x00\x1f\x00\x0a\x00\x76\x00\x55\x00\x56\x00\x02\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x2a\x00\x39\x00\x3a\x00\x2a\x00\x2a\x00\x69\x00\x63\x00\x2a\x00\x0e\x00\x2f\x00\x30\x00\xd7\x00\xdb\x00\x45\x00\x0a\x00\x0a\x00\x02\x00\x49\x00\x35\x00\x77\x00\x37\x00\x02\x00\x2a\x00\x0a\x00\x02\x00\x51\x00\x39\x00\x3a\x00\x30\x00\x55\x00\x56\x00\x69\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xc2\x00\x45\x00\x02\x00\x1b\x00\x0a\x00\x49\x00\x63\x00\x02\x00\x77\x00\x2a\x00\x2a\x00\xdc\x00\xdc\x00\x51\x00\x39\x00\x3a\x00\x30\x00\x55\x00\x56\x00\x2b\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x0a\x00\x45\x00\x3c\x00\x3d\x00\x3e\x00\x49\x00\x40\x00\x26\x00\x42\x00\x28\x00\x44\x00\x2a\x00\xd7\x00\x51\x00\x0a\x00\x69\x00\x0a\x00\x55\x00\x56\x00\x0a\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x6a\x00\x24\x00\x6b\x00\x26\x00\x77\x00\x28\x00\x1b\x00\x2a\x00\x1b\x00\x1e\x00\x1a\x00\x1b\x00\x6f\x00\x20\x00\x78\x00\x22\x00\x79\x00\x6f\x00\x6b\x00\x6b\x00\x6b\x00\x6a\x00\xdc\x00\xd7\x00\x69\x00\x29\x00\x7d\x00\x6f\x00\x6b\x00\x6b\x00\x6b\x00\x7d\x00\x79\x00\x79\x00\x79\x00\x78\x00\x6f\x00\x6b\x00\x77\x00\x6f\x00\x6b\x00\x7d\x00\x79\x00\x79\x00\x79\x00\x6b\x00\x6b\x00\x6b\x00\x6b\x00\x6b\x00\x7d\x00\x79\x00\x6b\x00\x7d\x00\x79\x00\x6b\x00\x6b\x00\x6f\x00\x6b\x00\x79\x00\x79\x00\x79\x00\x79\x00\x79\x00\x6b\x00\x6b\x00\x79\x00\x6b\x00\x6b\x00\x79\x00\x79\x00\x7d\x00\x79\x00\x02\x00\x02\x00\xdc\x00\x02\x00\x02\x00\x79\x00\x79\x00\x02\x00\x79\x00\x79\x00\x02\x00\xd7\x00\x02\x00\xdc\x00\x02\x00\xdc\x00\x02\x00\xdc\x00\x02\x00\xdc\x00\x02\x00\x02\x00\xd7\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x01\x00\x01\x00\xdc\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\xd8\x00\x01\x00\xd7\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\xba\x00\x02\x00\x01\x00\x01\x00\xba\x00\x01\x00\x01\x00\xd8\x00\x02\x00\xba\x00\xd7\x00\x02\x00\x02\x00\xba\x00\x02\x00\xd7\x00\xba\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x0a\x00\x01\x00\xba\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x01\x00\xd7\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\xd7\x00\xba\x00\x02\x00\x05\x00\x02\x00\x02\x00\x02\x00\x01\x00\xb9\x00\x02\x00\x02\x00\x02\x00\x01\x00\xd7\x00\x02\x00\x01\x00\x00\x00\x02\x00\x05\x00\x70\x00\x61\x00\x53\x00\x00\x00\x00\x00\x23\x00\x0f\x00\x07\x00\x09\x00\x08\x00\x00\x00\x00\x00\x5e\x00\x48\x00\x00\x00\x4f\x00\x4c\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x0b\x00\x5d\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x32\x00\x03\x00\xff\xff\x03\x00\x03\x00\x03\x00\x03\x00\x0b\x00\x38\x00\x22\x00\x03\x00\x03\x00\x03\x00\xff\xff\x64\x00\xff\xff\x64\x00\xff\xff\x29\x00\x03\x00\xff\xff\x22\x00\x25\x00\x25\x00\xff\xff\x64\x00\x64\x00\x10\x00\x12\x00\xff\xff\x10\x00\x13\x00\x0d\x00\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\x15\x00\xff\xff\xff\xff\x3f\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x3f\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\xff\xff\x34\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\x70\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x70\x00\xff\xff\xff\xff\xff\xff\x70\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#--happyTable :: HappyAddr-happyTable = HappyA# "\x00\x00\x1a\x00\x0a\x01\x0f\x01\x8b\x01\xb2\x01\xab\x01\x7e\x02\x8a\x01\xec\x02\x1b\x00\x3e\x00\x0b\x01\x98\x01\x49\x00\x40\x00\x54\x01\x63\x01\x87\x01\x3e\x00\x89\x01\x43\x00\x3e\x00\x40\x00\x43\x00\x49\x00\x40\x00\x0a\x00\x4e\x01\x49\x00\x49\x00\x49\x00\x49\x00\x8e\x01\x1a\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x1b\x00\x86\x01\xe5\x01\x49\x00\x49\x00\x49\x00\x8c\x01\x1a\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x1b\x00\x05\x00\x1a\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x49\x00\x1b\x00\xff\xff\x1a\x00\x27\x00\x09\x02\x4f\x00\x0f\x01\x0f\x01\x3c\x00\x7c\x01\xff\xff\x1b\x00\x26\x00\x04\x01\x04\x01\x43\x01\x2d\x01\x8d\x02\x05\x00\x3d\x00\x79\x01\xa9\x01\x3d\x00\x88\x01\x8d\x02\x56\x01\x06\x00\x7a\x01\x42\x00\x85\x01\x3d\x00\x7a\x01\x84\x01\x5a\x01\x5b\x01\x57\x01\xb1\x01\x5c\x01\xd7\x01\x57\x01\x07\x00\x7a\x01\x78\x01\x05\x00\xb3\x01\xac\x01\x7f\x02\x99\x02\xed\x02\x9a\x02\xad\x01\x51\x00\xd8\x01\x7e\x01\x7b\x01\x4e\x00\x99\x01\x64\x01\xad\x01\xad\x01\xad\x01\x45\x00\xad\x01\x8f\x01\x44\x00\x77\x01\x4d\x00\x7a\x01\x52\x00\x7e\x01\x4c\x00\x4b\x00\x4a\x00\x2c\x01\x10\x01\x86\x02\x2a\x01\x29\x01\x20\x01\x1f\x01\x1e\x01\x69\x01\x68\x01\x67\x01\x8e\x02\x8c\x02\xbb\x02\x31\x01\xf3\x01\xf2\x01\x8d\x01\xba\x02\xf1\x01\x4e\x02\x49\x02\x44\x02\x43\x02\x32\x02\x31\x02\x30\x02\x53\x00\x83\x01\x7a\x01\x2f\x02\xc9\x02\xc6\x02\xe1\x02\xdf\x02\xdd\x02\x12\x03\x11\x03\x82\x01\x81\x01\x7a\x01\x80\x01\x78\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x78\x01\x21\x00\x22\x00\x78\x01\x23\x00\x2e\x00\x55\x01\x56\x01\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\x4f\x01\x50\x01\x51\x01\x78\x01\x43\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x75\x01\x21\x00\x22\x00\x78\x01\x23\x00\x2e\x00\xe6\x01\xe7\x01\xe8\x01\x30\x00\x31\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x2e\x01\x21\x00\x22\x00\x29\x01\x23\x00\x24\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x75\x01\x21\x00\x22\x00\x3d\x00\x23\x00\x2e\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x75\x01\x21\x00\x22\x00\x28\x01\x23\x00\xa4\x01\xa5\x01\x3f\x02\x27\x01\x40\x02\x75\x01\x75\x01\x7e\x01\xa6\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\xa4\x01\xa5\x01\x42\x00\x43\x00\x6f\x01\x70\x01\xa7\x01\xa8\x01\xa9\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x3e\x00\xa5\x01\x3f\x00\x3e\x00\x40\x00\x9b\x01\x42\x00\x40\x00\xa9\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\xce\x01\xb2\x02\x3e\x00\x3e\x00\x9a\x01\x97\x01\x40\x00\x40\x00\xa9\x01\xb3\x02\xb4\x02\x05\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\xcf\x01\xd0\x01\xc9\x01\x12\x01\xb6\x02\xb7\x02\x6c\x01\x6d\x01\x13\x01\x14\x01\x15\x01\x16\x01\xb8\x02\x42\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\xc5\x01\xca\x01\x90\x02\x13\x01\x14\x01\x15\x01\x16\x01\x13\x01\x14\x01\x15\x01\x16\x01\x26\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x12\x01\xc6\x01\x55\x00\x56\x00\x90\x02\x13\x01\x14\x01\x15\x01\x16\x01\x13\x01\x14\x01\x15\x01\x16\x01\x25\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x25\x02\x26\x02\x3e\x00\x3e\x00\x94\x01\x93\x01\x40\x00\x40\x00\x24\x01\x5f\x01\x60\x01\x23\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x21\x02\x22\x02\x3e\x00\x3e\x00\x92\x01\x91\x01\x40\x00\x40\x00\x30\x00\x31\x00\x30\x01\x31\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x6d\x02\x6e\x02\x3e\x00\x3e\x00\x90\x01\xeb\x01\x40\x00\x40\x00\xf6\x01\xf7\x01\x42\x00\x43\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x55\x00\x56\x00\x3e\x00\x3e\x00\xea\x01\xe9\x01\x40\x00\x40\x00\xd2\x01\xd3\x01\x42\x00\x43\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x64\x02\x65\x02\x3e\x00\x3e\x00\xe8\x01\xb5\x01\x40\x00\x40\x00\x42\x02\x43\x02\x42\x00\x43\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\xdf\x01\x42\x00\x3e\x00\x3e\x00\xb0\x01\x53\x02\x40\x00\x40\x00\xcf\x01\xd0\x01\x22\x01\x4b\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x94\x02\x3e\x00\x3e\x00\x29\x02\x9d\x02\x40\x00\x40\x00\x1e\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\xbb\x01\xbc\x01\x95\x02\x3e\x00\x1d\x01\xea\x02\x1b\x01\x40\x00\xbd\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x1c\x02\x1d\x02\x69\x02\x6a\x02\xcf\x01\xd0\x01\xf9\x02\xfa\x02\x1e\x02\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\xbb\x01\xbc\x01\xfc\x02\xfd\x02\xf9\x02\xfa\x02\x42\x00\x43\x00\x1a\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x1c\x02\x1d\x02\xd2\x01\xd3\x01\xe4\x02\xe5\x02\xcf\x01\xd0\x01\x19\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x18\x01\x52\x02\xd2\x01\xd3\x01\xb6\x02\xb7\x02\x04\x03\x05\x03\xa9\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x4d\x02\xb6\x02\xb7\x02\x0a\x00\x0b\x00\x46\x00\x48\x00\x05\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x48\x02\x46\x00\x47\x00\x46\x00\x16\x01\x46\x00\xe1\x01\x04\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x9c\x02\x46\x00\xe0\x01\x46\x00\xda\x01\x46\x00\xd9\x01\x51\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x98\x02\x46\x00\xd5\x01\x46\x00\xd4\x01\x46\x00\xaf\x01\x97\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\xbc\x01\x46\x00\xae\x01\x46\x00\x5b\x02\x46\x00\x3c\x02\x77\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x1d\x02\x46\x00\x38\x02\x46\x00\x35\x02\x1b\x03\xb4\x02\x74\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x72\x01\x42\x00\x95\x02\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x47\x01\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x48\x01\x49\x01\x4a\x01\x7f\x01\x74\x01\x43\x01\x7d\x01\x04\x01\x43\x01\x43\x00\x51\x00\xf7\x01\x51\x00\x0c\x00\x51\x00\x51\x00\x43\x01\x51\x00\x43\x01\x43\x01\x43\x01\x43\x01\x07\x02\x43\x01\x05\x02\x67\x01\x43\x01\x61\x02\x66\x01\x61\x02\x51\x00\x52\x00\x6a\x02\x04\x01\xc2\x01\xc3\x01\x08\x02\x44\x01\xf0\x01\x04\x01\x9c\x01\x0b\x01\x4f\x02\x62\x01\x45\x02\xd7\x01\x61\x01\x22\x02\x17\x02\x0c\x00\x95\x02\x9c\x01\x9c\x01\x46\x02\x96\x02\x50\x02\x0d\x00\x0e\x00\x44\x01\xd8\x01\x04\x01\xfe\x02\x52\x01\x65\x02\x04\x01\x23\x02\xd4\x02\x62\x02\x0f\x00\xd6\x02\x6b\x02\x04\x01\x10\x00\xd2\x02\x0c\x00\xa1\x01\xd0\x02\xa2\x01\xa2\x01\x05\x01\x11\x00\x8b\x02\x4b\x01\x5d\x01\x12\x00\x13\x00\x42\x01\x14\x00\x15\x00\x16\x00\x17\x00\x27\x00\x0d\x00\x0e\x00\x75\x01\x75\x01\x7e\x01\x28\x00\x29\x00\x2a\x00\x2b\x00\x05\x00\x2c\x00\x45\x01\x0f\x00\x05\x01\x06\x01\x07\x01\x10\x00\x08\x01\x0c\x00\x05\x01\x06\x01\x07\x01\x42\x00\x81\x02\x11\x00\x0d\x00\x0e\x00\x0b\x02\x12\x00\x13\x00\xd6\x01\x14\x00\x15\x00\x16\x00\x17\x00\x27\x00\x0b\x01\x0f\x00\x43\x01\x0c\x01\x0d\x01\x10\x00\x37\x01\x38\x01\x05\x01\x39\x01\xbc\x02\x84\x02\x07\x02\x11\x00\x0c\x01\x0d\x01\x43\x01\x12\x00\x13\x00\x0c\x00\x14\x00\x15\x00\x16\x00\x17\x00\x27\x00\x0d\x00\x0e\x00\x05\x02\xd7\x01\x43\x01\x3e\x01\x3c\x01\x43\x01\x43\x01\x17\x02\x05\x00\x43\x01\x0f\x00\x06\x00\x03\x02\x02\x02\x10\x00\xd8\x01\x18\x02\x0c\x00\x19\x02\xda\x02\x1a\x02\xb9\x01\x11\x00\x4a\x02\x43\x01\x07\x00\x12\x00\x13\x00\xfc\x01\x14\x00\x15\x00\x16\x00\x17\x00\x27\x00\x4b\x02\x0d\x00\x0e\x00\x37\x02\x90\x02\x03\x02\x3b\x01\x17\x02\x0c\x00\x91\x02\x92\x02\x42\x00\xbf\x01\x0f\x00\x43\x01\x43\x01\xfb\x01\x10\x00\xff\x02\xf0\x01\x1a\x02\xfa\x01\x90\x02\x51\x00\xed\x01\x11\x00\x0d\x00\x0e\x00\xf0\x02\x12\x00\x13\x00\xf8\x01\x14\x00\x15\x00\x16\x00\x17\x00\x27\x00\xd4\x01\x0f\x00\xe0\x01\x1e\x02\x43\x01\x10\x00\x3a\x01\xab\x01\xf0\x01\x9c\x01\x90\x02\x05\x00\x05\x00\x11\x00\x0d\x00\x0e\x00\x16\x03\x12\x00\x13\x00\x1f\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x43\x01\x0f\x00\x9d\x01\x9e\x01\x9f\x01\x10\x00\xa0\x01\xdb\x02\xa1\x01\xb8\x01\xa2\x01\xb9\x01\x42\x00\x11\x00\x51\x00\xef\x01\x51\x00\x12\x00\x13\x00\x51\x00\x14\x00\x15\x00\x16\x00\x17\x00\x42\x01\xed\x01\xb6\x01\xb4\x01\xb7\x01\xf0\x01\xb8\x01\xc6\x01\xb9\x01\xca\x01\xc7\x01\xdb\x01\xdc\x01\x55\x02\xcb\x01\xee\x01\xcc\x01\x57\x01\x54\x02\x52\x02\x4d\x02\x48\x02\x3e\x02\x05\x00\x42\x00\xa0\x02\xdd\x01\xad\x01\x9f\x02\x9c\x02\x98\x02\x88\x02\xad\x01\x57\x01\x57\x01\x57\x01\xee\x01\x9e\x02\x7c\x02\xf0\x01\x7d\x02\x7b\x02\xad\x01\x57\x01\x57\x01\x57\x01\x78\x02\x75\x02\xd5\x02\xd1\x02\xab\x02\xad\x01\x57\x01\xaa\x02\xad\x01\x57\x01\xa7\x02\xe0\x02\xeb\x02\xde\x02\x57\x01\x57\x01\x57\x01\x57\x01\x57\x01\xdc\x02\x01\x03\x57\x01\x00\x03\x1a\x03\x57\x01\x57\x01\xad\x01\x57\x01\x5f\x02\x5d\x02\x05\x00\x5b\x02\x5a\x02\x57\x01\x57\x01\x58\x02\x57\x01\x57\x01\x57\x02\x42\x00\x3e\x02\x05\x00\x3c\x02\x3b\x02\x3a\x02\x05\x00\x37\x02\x05\x00\x35\x02\x34\x02\x42\x00\x2f\x02\x2e\x02\x2d\x02\x2c\x02\x2b\x02\x29\x02\xdf\x01\x27\x02\x05\x00\x17\x02\x16\x02\x15\x02\x14\x02\x13\x02\x12\x02\x11\x02\x10\x02\x0f\x02\x0e\x02\x0c\x02\x43\x00\x8b\x02\x42\x00\x88\x02\x86\x02\x84\x02\x83\x02\x81\x02\x73\x02\x72\x02\x71\x02\x6f\x02\x67\x02\x77\x02\x61\x02\x8b\x02\xcc\x02\x74\x02\xce\x02\xcc\x02\x43\x00\xc9\x02\xc8\x02\x42\x00\xc6\x02\xc4\x02\xc5\x02\xc1\x02\x42\x00\xc2\x02\xbf\x02\xbe\x02\xba\x02\xb9\x02\xb2\x02\xb1\x02\xb0\x02\xaf\x02\xae\x02\x11\x03\xa9\x02\xa6\x02\xa5\x02\xa4\x02\xa3\x02\xa2\x02\xf7\x02\xf6\x02\xf5\x02\xf4\x02\xf3\x02\xf2\x02\xef\x02\x42\x00\xea\x02\xe9\x02\xe8\x02\xe6\x02\xda\x02\xd9\x02\xd8\x02\x42\x00\x10\x03\x0c\x03\x43\x02\x0b\x03\x09\x03\x07\x03\x06\x03\x18\x03\x1a\x03\x19\x03\x16\x03\x15\x03\x42\x00\x1d\x03\xef\x02\x2b\x01\x1e\x03\x72\x01\xc1\x01\x24\x00\x5d\x01\x40\x01\x3f\x01\x95\x01\x02\x01\x70\x01\x6a\x01\x6d\x01\x33\x01\x32\x01\x08\x00\x52\x01\x00\x02\x62\x01\x58\x01\x4c\x01\xff\x01\xfe\x01\xfd\x01\xfc\x01\xd0\x01\x89\x02\x1b\x01\xe2\x01\x5f\x02\x5d\x02\x58\x02\x0c\x02\xf4\x01\x7a\x02\x00\x00\x77\x02\x74\x02\xbf\x02\xac\x02\xd3\x02\xe3\x01\x79\x02\xa9\x02\xa6\x02\xef\x02\x00\x00\x3d\x01\x00\x00\x36\x01\x00\x00\x27\x02\x09\x03\x00\x00\xc2\x02\xce\x02\xca\x02\x00\x00\x35\x01\x34\x01\xe6\x02\xe2\x02\x00\x00\x0c\x03\x0d\x03\x13\x03\x00\x00\x00\x00\x00\x00\xcc\x02\x00\x00\x07\x03\x00\x00\x00\x00\x6f\x02\x67\x02\x00\x00\x00\x00\x00\x00\xcf\x02\x0e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x02\x00\x00\xf7\x02\xfa\x02\x00\x00\x00\x00\x00\x00\x00\x00\x02\x03\x00\x00\x00\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\xbd\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 (3, 425) [- (3 , happyReduce_3),- (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),- (346 , happyReduce_346),- (347 , happyReduce_347),- (348 , happyReduce_348),- (349 , happyReduce_349),- (350 , happyReduce_350),- (351 , happyReduce_351),- (352 , happyReduce_352),- (353 , happyReduce_353),- (354 , happyReduce_354),- (355 , happyReduce_355),- (356 , happyReduce_356),- (357 , happyReduce_357),- (358 , happyReduce_358),- (359 , happyReduce_359),- (360 , happyReduce_360),- (361 , happyReduce_361),- (362 , happyReduce_362),- (363 , happyReduce_363),- (364 , happyReduce_364),- (365 , happyReduce_365),- (366 , happyReduce_366),- (367 , happyReduce_367),- (368 , happyReduce_368),- (369 , happyReduce_369),- (370 , happyReduce_370),- (371 , happyReduce_371),- (372 , happyReduce_372),- (373 , happyReduce_373),- (374 , happyReduce_374),- (375 , happyReduce_375),- (376 , happyReduce_376),- (377 , happyReduce_377),- (378 , happyReduce_378),- (379 , happyReduce_379),- (380 , happyReduce_380),- (381 , happyReduce_381),- (382 , happyReduce_382),- (383 , happyReduce_383),- (384 , happyReduce_384),- (385 , happyReduce_385),- (386 , happyReduce_386),- (387 , happyReduce_387),- (388 , happyReduce_388),- (389 , happyReduce_389),- (390 , happyReduce_390),- (391 , happyReduce_391),- (392 , happyReduce_392),- (393 , happyReduce_393),- (394 , happyReduce_394),- (395 , happyReduce_395),- (396 , happyReduce_396),- (397 , happyReduce_397),- (398 , happyReduce_398),- (399 , happyReduce_399),- (400 , happyReduce_400),- (401 , happyReduce_401),- (402 , happyReduce_402),- (403 , happyReduce_403),- (404 , happyReduce_404),- (405 , happyReduce_405),- (406 , happyReduce_406),- (407 , happyReduce_407),- (408 , happyReduce_408),- (409 , happyReduce_409),- (410 , happyReduce_410),- (411 , happyReduce_411),- (412 , happyReduce_412),- (413 , happyReduce_413),- (414 , happyReduce_414),- (415 , happyReduce_415),- (416 , happyReduce_416),- (417 , happyReduce_417),- (418 , happyReduce_418),- (419 , happyReduce_419),- (420 , happyReduce_420),- (421 , happyReduce_421),- (422 , happyReduce_422),- (423 , happyReduce_423),- (424 , happyReduce_424),- (425 , happyReduce_425)- ]--happy_n_terms = 223 :: Int-happy_n_nonterms = 126 :: Int--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_3 = happyMonadReduce 1# 0# happyReduction_3-happyReduction_3 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOutTok happy_x_1 of { (Lexeme _ (TStringLit happy_var_1)) -> - (- case TLEncoding.decodeUtf8' happy_var_1 of- Right t -> Right t- Left err -> Left "invalid utf8 string")})- ) (\r -> happyReturn (happyIn6 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_4 = happySpecReduce_1 1# happyReduction_4-happyReduction_4 happy_x_1- = case happyOut6 happy_x_1 of { happy_var_1 -> - happyIn7- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_5 = happySpecReduce_1 2# happyReduction_5-happyReduction_5 happy_x_1- = case happyOutTok happy_x_1 of { (Lexeme _ (TId happy_var_1)) -> - happyIn8- (Ident (TLEncoding.decodeUtf8 happy_var_1)- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_6 = happySpecReduce_1 3# happyReduction_6-happyReduction_6 happy_x_1- = happyIn9- (I32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_7 = happySpecReduce_1 3# happyReduction_7-happyReduction_7 happy_x_1- = happyIn9- (I64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_8 = happySpecReduce_1 3# happyReduction_8-happyReduction_8 happy_x_1- = happyIn9- (F32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_9 = happySpecReduce_1 3# happyReduction_9-happyReduction_9 happy_x_1- = happyIn9- (F64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_10 = happySpecReduce_1 4# happyReduction_10-happyReduction_10 happy_x_1- = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn10- (Index happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_11 = happySpecReduce_1 4# happyReduction_11-happyReduction_11 happy_x_1- = case happyOut8 happy_x_1 of { happy_var_1 -> - happyIn10- (Named happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_12 = happyMonadReduce 1# 5# happyReduction_12-happyReduction_12 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOutTok happy_x_1 of { (Lexeme _ (TIntLit happy_var_1)) -> - (- if happy_var_1 >= -(2^31) && happy_var_1 < 2^32- then Right happy_var_1- else Left ("Int literal value is out of signed int32 boundaries: " ++ show happy_var_1))})- ) (\r -> happyReturn (happyIn11 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_13 = happyMonadReduce 1# 6# happyReduction_13-happyReduction_13 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOutTok happy_x_1 of { (Lexeme _ (TIntLit happy_var_1)) -> - (- if happy_var_1 >= 0 && happy_var_1 < 2^32- then Right (fromIntegral happy_var_1)- else Left ("Int literal value is out of unsigned int32 boundaries: " ++ show happy_var_1))})- ) (\r -> happyReturn (happyIn12 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_14 = happyMonadReduce 1# 7# happyReduction_14-happyReduction_14 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOutTok happy_x_1 of { (Lexeme _ (TIntLit happy_var_1)) -> - (- if happy_var_1 >= -(2^63) && happy_var_1 < 2^64- then Right happy_var_1- else Left ("Int literal value is out of signed int64 boundaries: " ++ show happy_var_1))})- ) (\r -> happyReturn (happyIn13 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_15 = happyMonadReduce 1# 8# happyReduction_15-happyReduction_15 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOutTok happy_x_1 of { (Lexeme _ (TIntLit happy_var_1)) -> - (- let maxInt = 340282356779733623858607532500980858880 in- if happy_var_1 <= maxInt && happy_var_1 >= -maxInt- then return $ fromIntegral happy_var_1- else Left "constant out of range")})- ) (\r -> happyReturn (happyIn14 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_16 = happyMonadReduce 1# 8# happyReduction_16-happyReduction_16 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOutTok happy_x_1 of { (Lexeme _ (TFloatLit happy_var_1)) -> - ( asFloat happy_var_1)})- ) (\r -> happyReturn (happyIn14 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_17 = happyMonadReduce 1# 9# happyReduction_17-happyReduction_17 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOutTok happy_x_1 of { (Lexeme _ (TIntLit happy_var_1)) -> - (- let maxInt = round (maxFinite :: Double) in- if happy_var_1 <= maxInt && happy_var_1 >= -maxInt- then return $ fromIntegral happy_var_1- else Left "constant out of range")})- ) (\r -> happyReturn (happyIn15 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_18 = happyMonadReduce 1# 9# happyReduction_18-happyReduction_18 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOutTok happy_x_1 of { (Lexeme _ (TFloatLit happy_var_1)) -> - ( asDouble happy_var_1)})- ) (\r -> happyReturn (happyIn15 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_19 = happySpecReduce_1 10# happyReduction_19-happyReduction_19 happy_x_1- = happyIn16- (Unreachable- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_20 = happySpecReduce_1 10# happyReduction_20-happyReduction_20 happy_x_1- = happyIn16- (Nop- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_21 = happySpecReduce_2 10# happyReduction_21-happyReduction_21 happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn16- (Br happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_22 = happySpecReduce_2 10# happyReduction_22-happyReduction_22 happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn16- (BrIf happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_23 = happySpecReduce_2 10# happyReduction_23-happyReduction_23 happy_x_2- happy_x_1- = case happyOut123 happy_x_2 of { happy_var_2 -> - happyIn16- (BrTable (reverse $ tail happy_var_2) (head happy_var_2)- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_24 = happySpecReduce_1 10# happyReduction_24-happyReduction_24 happy_x_1- = happyIn16- (Return- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_25 = happySpecReduce_2 10# happyReduction_25-happyReduction_25 happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn16- (Call happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_26 = happySpecReduce_1 10# happyReduction_26-happyReduction_26 happy_x_1- = happyIn16- (Drop- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_27 = happySpecReduce_1 10# happyReduction_27-happyReduction_27 happy_x_1- = happyIn16- (Select- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_28 = happySpecReduce_2 10# happyReduction_28-happyReduction_28 happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn16- (GetLocal happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_29 = happySpecReduce_2 10# happyReduction_29-happyReduction_29 happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn16- (SetLocal happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_30 = happySpecReduce_2 10# happyReduction_30-happyReduction_30 happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn16- (TeeLocal happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_31 = happySpecReduce_2 10# happyReduction_31-happyReduction_31 happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn16- (GetGlobal happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_32 = happySpecReduce_2 10# happyReduction_32-happyReduction_32 happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn16- (SetGlobal happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_33 = happySpecReduce_2 10# happyReduction_33-happyReduction_33 happy_x_2- happy_x_1- = case happyOut30 happy_x_2 of { happy_var_2 -> - happyIn16- (I32Load happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_34 = happySpecReduce_2 10# happyReduction_34-happyReduction_34 happy_x_2- happy_x_1- = case happyOut31 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Load happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_35 = happySpecReduce_2 10# happyReduction_35-happyReduction_35 happy_x_2- happy_x_1- = case happyOut30 happy_x_2 of { happy_var_2 -> - happyIn16- (F32Load happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_36 = happySpecReduce_2 10# happyReduction_36-happyReduction_36 happy_x_2- happy_x_1- = case happyOut31 happy_x_2 of { happy_var_2 -> - happyIn16- (F64Load happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_37 = happySpecReduce_2 10# happyReduction_37-happyReduction_37 happy_x_2- happy_x_1- = case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn16- (I32Load8S happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_38 = happySpecReduce_2 10# happyReduction_38-happyReduction_38 happy_x_2- happy_x_1- = case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn16- (I32Load8U happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_39 = happySpecReduce_2 10# happyReduction_39-happyReduction_39 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn16- (I32Load16S happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_40 = happySpecReduce_2 10# happyReduction_40-happyReduction_40 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn16- (I32Load16U happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_41 = happySpecReduce_2 10# happyReduction_41-happyReduction_41 happy_x_2- happy_x_1- = case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Load8S happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_42 = happySpecReduce_2 10# happyReduction_42-happyReduction_42 happy_x_2- happy_x_1- = case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Load8U happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_43 = happySpecReduce_2 10# happyReduction_43-happyReduction_43 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Load16S happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_44 = happySpecReduce_2 10# happyReduction_44-happyReduction_44 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Load16U happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_45 = happySpecReduce_2 10# happyReduction_45-happyReduction_45 happy_x_2- happy_x_1- = case happyOut30 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Load32S happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_46 = happySpecReduce_2 10# happyReduction_46-happyReduction_46 happy_x_2- happy_x_1- = case happyOut30 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Load32U happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_47 = happySpecReduce_2 10# happyReduction_47-happyReduction_47 happy_x_2- happy_x_1- = case happyOut30 happy_x_2 of { happy_var_2 -> - happyIn16- (I32Store happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_48 = happySpecReduce_2 10# happyReduction_48-happyReduction_48 happy_x_2- happy_x_1- = case happyOut31 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Store happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_49 = happySpecReduce_2 10# happyReduction_49-happyReduction_49 happy_x_2- happy_x_1- = case happyOut30 happy_x_2 of { happy_var_2 -> - happyIn16- (F32Store happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_50 = happySpecReduce_2 10# happyReduction_50-happyReduction_50 happy_x_2- happy_x_1- = case happyOut31 happy_x_2 of { happy_var_2 -> - happyIn16- (F64Store happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_51 = happySpecReduce_2 10# happyReduction_51-happyReduction_51 happy_x_2- happy_x_1- = case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn16- (I32Store8 happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_52 = happySpecReduce_2 10# happyReduction_52-happyReduction_52 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn16- (I32Store16 happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_53 = happySpecReduce_2 10# happyReduction_53-happyReduction_53 happy_x_2- happy_x_1- = case happyOut28 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Store8 happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_54 = happySpecReduce_2 10# happyReduction_54-happyReduction_54 happy_x_2- happy_x_1- = case happyOut29 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Store16 happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_55 = happySpecReduce_2 10# happyReduction_55-happyReduction_55 happy_x_2- happy_x_1- = case happyOut30 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Store32 happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_56 = happySpecReduce_1 10# happyReduction_56-happyReduction_56 happy_x_1- = happyIn16- (CurrentMemory- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_57 = happySpecReduce_1 10# happyReduction_57-happyReduction_57 happy_x_1- = happyIn16- (GrowMemory- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_58 = happySpecReduce_1 10# happyReduction_58-happyReduction_58 happy_x_1- = happyIn16- (CurrentMemory- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_59 = happySpecReduce_1 10# happyReduction_59-happyReduction_59 happy_x_1- = happyIn16- (GrowMemory- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_60 = happySpecReduce_2 10# happyReduction_60-happyReduction_60 happy_x_2- happy_x_1- = case happyOut11 happy_x_2 of { happy_var_2 -> - happyIn16- (I32Const happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_61 = happySpecReduce_2 10# happyReduction_61-happyReduction_61 happy_x_2- happy_x_1- = case happyOut13 happy_x_2 of { happy_var_2 -> - happyIn16- (I64Const happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_62 = happySpecReduce_2 10# happyReduction_62-happyReduction_62 happy_x_2- happy_x_1- = case happyOut14 happy_x_2 of { happy_var_2 -> - happyIn16- (F32Const happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_63 = happySpecReduce_2 10# happyReduction_63-happyReduction_63 happy_x_2- happy_x_1- = case happyOut15 happy_x_2 of { happy_var_2 -> - happyIn16- (F64Const happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_64 = happySpecReduce_1 10# happyReduction_64-happyReduction_64 happy_x_1- = happyIn16- (IUnOp BS32 IClz- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_65 = happySpecReduce_1 10# happyReduction_65-happyReduction_65 happy_x_1- = happyIn16- (IUnOp BS32 ICtz- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_66 = happySpecReduce_1 10# happyReduction_66-happyReduction_66 happy_x_1- = happyIn16- (IUnOp BS32 IPopcnt- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_67 = happySpecReduce_1 10# happyReduction_67-happyReduction_67 happy_x_1- = happyIn16- (IBinOp BS32 IAdd- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_68 = happySpecReduce_1 10# happyReduction_68-happyReduction_68 happy_x_1- = happyIn16- (IBinOp BS32 ISub- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_69 = happySpecReduce_1 10# happyReduction_69-happyReduction_69 happy_x_1- = happyIn16- (IBinOp BS32 IMul- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_70 = happySpecReduce_1 10# happyReduction_70-happyReduction_70 happy_x_1- = happyIn16- (IBinOp BS32 IDivS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_71 = happySpecReduce_1 10# happyReduction_71-happyReduction_71 happy_x_1- = happyIn16- (IBinOp BS32 IDivU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_72 = happySpecReduce_1 10# happyReduction_72-happyReduction_72 happy_x_1- = happyIn16- (IBinOp BS32 IRemS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_73 = happySpecReduce_1 10# happyReduction_73-happyReduction_73 happy_x_1- = happyIn16- (IBinOp BS32 IRemU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_74 = happySpecReduce_1 10# happyReduction_74-happyReduction_74 happy_x_1- = happyIn16- (IBinOp BS32 IAnd- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_75 = happySpecReduce_1 10# happyReduction_75-happyReduction_75 happy_x_1- = happyIn16- (IBinOp BS32 IOr- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_76 = happySpecReduce_1 10# happyReduction_76-happyReduction_76 happy_x_1- = happyIn16- (IBinOp BS32 IXor- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_77 = happySpecReduce_1 10# happyReduction_77-happyReduction_77 happy_x_1- = happyIn16- (IBinOp BS32 IShl- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_78 = happySpecReduce_1 10# happyReduction_78-happyReduction_78 happy_x_1- = happyIn16- (IBinOp BS32 IShrS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_79 = happySpecReduce_1 10# happyReduction_79-happyReduction_79 happy_x_1- = happyIn16- (IBinOp BS32 IShrU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_80 = happySpecReduce_1 10# happyReduction_80-happyReduction_80 happy_x_1- = happyIn16- (IBinOp BS32 IRotl- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_81 = happySpecReduce_1 10# happyReduction_81-happyReduction_81 happy_x_1- = happyIn16- (IBinOp BS32 IRotr- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_82 = happySpecReduce_1 10# happyReduction_82-happyReduction_82 happy_x_1- = happyIn16- (IUnOp BS64 IClz- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_83 = happySpecReduce_1 10# happyReduction_83-happyReduction_83 happy_x_1- = happyIn16- (IUnOp BS64 ICtz- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_84 = happySpecReduce_1 10# happyReduction_84-happyReduction_84 happy_x_1- = happyIn16- (IUnOp BS64 IPopcnt- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_85 = happySpecReduce_1 10# happyReduction_85-happyReduction_85 happy_x_1- = happyIn16- (IBinOp BS64 IAdd- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_86 = happySpecReduce_1 10# happyReduction_86-happyReduction_86 happy_x_1- = happyIn16- (IBinOp BS64 ISub- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_87 = happySpecReduce_1 10# happyReduction_87-happyReduction_87 happy_x_1- = happyIn16- (IBinOp BS64 IMul- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_88 = happySpecReduce_1 10# happyReduction_88-happyReduction_88 happy_x_1- = happyIn16- (IBinOp BS64 IDivS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_89 = happySpecReduce_1 10# happyReduction_89-happyReduction_89 happy_x_1- = happyIn16- (IBinOp BS64 IDivU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_90 = happySpecReduce_1 10# happyReduction_90-happyReduction_90 happy_x_1- = happyIn16- (IBinOp BS64 IRemS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_91 = happySpecReduce_1 10# happyReduction_91-happyReduction_91 happy_x_1- = happyIn16- (IBinOp BS64 IRemU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_92 = happySpecReduce_1 10# happyReduction_92-happyReduction_92 happy_x_1- = happyIn16- (IBinOp BS64 IAnd- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_93 = happySpecReduce_1 10# happyReduction_93-happyReduction_93 happy_x_1- = happyIn16- (IBinOp BS64 IOr- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_94 = happySpecReduce_1 10# happyReduction_94-happyReduction_94 happy_x_1- = happyIn16- (IBinOp BS64 IXor- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_95 = happySpecReduce_1 10# happyReduction_95-happyReduction_95 happy_x_1- = happyIn16- (IBinOp BS64 IShl- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_96 = happySpecReduce_1 10# happyReduction_96-happyReduction_96 happy_x_1- = happyIn16- (IBinOp BS64 IShrS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_97 = happySpecReduce_1 10# happyReduction_97-happyReduction_97 happy_x_1- = happyIn16- (IBinOp BS64 IShrU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_98 = happySpecReduce_1 10# happyReduction_98-happyReduction_98 happy_x_1- = happyIn16- (IBinOp BS64 IRotl- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_99 = happySpecReduce_1 10# happyReduction_99-happyReduction_99 happy_x_1- = happyIn16- (IBinOp BS64 IRotr- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_100 = happySpecReduce_1 10# happyReduction_100-happyReduction_100 happy_x_1- = happyIn16- (FUnOp BS32 FAbs- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_101 = happySpecReduce_1 10# happyReduction_101-happyReduction_101 happy_x_1- = happyIn16- (FUnOp BS32 FNeg- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_102 = happySpecReduce_1 10# happyReduction_102-happyReduction_102 happy_x_1- = happyIn16- (FUnOp BS32 FCeil- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_103 = happySpecReduce_1 10# happyReduction_103-happyReduction_103 happy_x_1- = happyIn16- (FUnOp BS32 FFloor- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_104 = happySpecReduce_1 10# happyReduction_104-happyReduction_104 happy_x_1- = happyIn16- (FUnOp BS32 FTrunc- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_105 = happySpecReduce_1 10# happyReduction_105-happyReduction_105 happy_x_1- = happyIn16- (FUnOp BS32 FNearest- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_106 = happySpecReduce_1 10# happyReduction_106-happyReduction_106 happy_x_1- = happyIn16- (FUnOp BS32 FSqrt- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_107 = happySpecReduce_1 10# happyReduction_107-happyReduction_107 happy_x_1- = happyIn16- (FBinOp BS32 FAdd- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_108 = happySpecReduce_1 10# happyReduction_108-happyReduction_108 happy_x_1- = happyIn16- (FBinOp BS32 FSub- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_109 = happySpecReduce_1 10# happyReduction_109-happyReduction_109 happy_x_1- = happyIn16- (FBinOp BS32 FMul- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_110 = happySpecReduce_1 10# happyReduction_110-happyReduction_110 happy_x_1- = happyIn16- (FBinOp BS32 FDiv- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_111 = happySpecReduce_1 10# happyReduction_111-happyReduction_111 happy_x_1- = happyIn16- (FBinOp BS32 FMin- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_112 = happySpecReduce_1 10# happyReduction_112-happyReduction_112 happy_x_1- = happyIn16- (FBinOp BS32 FMax- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_113 = happySpecReduce_1 10# happyReduction_113-happyReduction_113 happy_x_1- = happyIn16- (FBinOp BS32 FCopySign- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_114 = happySpecReduce_1 10# happyReduction_114-happyReduction_114 happy_x_1- = happyIn16- (FUnOp BS64 FAbs- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_115 = happySpecReduce_1 10# happyReduction_115-happyReduction_115 happy_x_1- = happyIn16- (FUnOp BS64 FNeg- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_116 = happySpecReduce_1 10# happyReduction_116-happyReduction_116 happy_x_1- = happyIn16- (FUnOp BS64 FCeil- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_117 = happySpecReduce_1 10# happyReduction_117-happyReduction_117 happy_x_1- = happyIn16- (FUnOp BS64 FFloor- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_118 = happySpecReduce_1 10# happyReduction_118-happyReduction_118 happy_x_1- = happyIn16- (FUnOp BS64 FTrunc- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_119 = happySpecReduce_1 10# happyReduction_119-happyReduction_119 happy_x_1- = happyIn16- (FUnOp BS64 FNearest- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_120 = happySpecReduce_1 10# happyReduction_120-happyReduction_120 happy_x_1- = happyIn16- (FUnOp BS64 FSqrt- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_121 = happySpecReduce_1 10# happyReduction_121-happyReduction_121 happy_x_1- = happyIn16- (FBinOp BS64 FAdd- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_122 = happySpecReduce_1 10# happyReduction_122-happyReduction_122 happy_x_1- = happyIn16- (FBinOp BS64 FSub- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_123 = happySpecReduce_1 10# happyReduction_123-happyReduction_123 happy_x_1- = happyIn16- (FBinOp BS64 FMul- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_124 = happySpecReduce_1 10# happyReduction_124-happyReduction_124 happy_x_1- = happyIn16- (FBinOp BS64 FDiv- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_125 = happySpecReduce_1 10# happyReduction_125-happyReduction_125 happy_x_1- = happyIn16- (FBinOp BS64 FMin- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_126 = happySpecReduce_1 10# happyReduction_126-happyReduction_126 happy_x_1- = happyIn16- (FBinOp BS64 FMax- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_127 = happySpecReduce_1 10# happyReduction_127-happyReduction_127 happy_x_1- = happyIn16- (FBinOp BS64 FCopySign- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_128 = happySpecReduce_1 10# happyReduction_128-happyReduction_128 happy_x_1- = happyIn16- (I32Eqz- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_129 = happySpecReduce_1 10# happyReduction_129-happyReduction_129 happy_x_1- = happyIn16- (IRelOp BS32 IEq- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_130 = happySpecReduce_1 10# happyReduction_130-happyReduction_130 happy_x_1- = happyIn16- (IRelOp BS32 INe- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_131 = happySpecReduce_1 10# happyReduction_131-happyReduction_131 happy_x_1- = happyIn16- (IRelOp BS32 ILtS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_132 = happySpecReduce_1 10# happyReduction_132-happyReduction_132 happy_x_1- = happyIn16- (IRelOp BS32 ILtU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_133 = happySpecReduce_1 10# happyReduction_133-happyReduction_133 happy_x_1- = happyIn16- (IRelOp BS32 IGtS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_134 = happySpecReduce_1 10# happyReduction_134-happyReduction_134 happy_x_1- = happyIn16- (IRelOp BS32 IGtU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_135 = happySpecReduce_1 10# happyReduction_135-happyReduction_135 happy_x_1- = happyIn16- (IRelOp BS32 ILeS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_136 = happySpecReduce_1 10# happyReduction_136-happyReduction_136 happy_x_1- = happyIn16- (IRelOp BS32 ILeU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_137 = happySpecReduce_1 10# happyReduction_137-happyReduction_137 happy_x_1- = happyIn16- (IRelOp BS32 IGeS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_138 = happySpecReduce_1 10# happyReduction_138-happyReduction_138 happy_x_1- = happyIn16- (IRelOp BS32 IGeU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_139 = happySpecReduce_1 10# happyReduction_139-happyReduction_139 happy_x_1- = happyIn16- (I64Eqz- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_140 = happySpecReduce_1 10# happyReduction_140-happyReduction_140 happy_x_1- = happyIn16- (IRelOp BS64 IEq- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_141 = happySpecReduce_1 10# happyReduction_141-happyReduction_141 happy_x_1- = happyIn16- (IRelOp BS64 INe- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_142 = happySpecReduce_1 10# happyReduction_142-happyReduction_142 happy_x_1- = happyIn16- (IRelOp BS64 ILtS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_143 = happySpecReduce_1 10# happyReduction_143-happyReduction_143 happy_x_1- = happyIn16- (IRelOp BS64 ILtU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_144 = happySpecReduce_1 10# happyReduction_144-happyReduction_144 happy_x_1- = happyIn16- (IRelOp BS64 IGtS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_145 = happySpecReduce_1 10# happyReduction_145-happyReduction_145 happy_x_1- = happyIn16- (IRelOp BS64 IGtU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_146 = happySpecReduce_1 10# happyReduction_146-happyReduction_146 happy_x_1- = happyIn16- (IRelOp BS64 ILeS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_147 = happySpecReduce_1 10# happyReduction_147-happyReduction_147 happy_x_1- = happyIn16- (IRelOp BS64 ILeU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_148 = happySpecReduce_1 10# happyReduction_148-happyReduction_148 happy_x_1- = happyIn16- (IRelOp BS64 IGeS- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_149 = happySpecReduce_1 10# happyReduction_149-happyReduction_149 happy_x_1- = happyIn16- (IRelOp BS64 IGeU- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_150 = happySpecReduce_1 10# happyReduction_150-happyReduction_150 happy_x_1- = happyIn16- (FRelOp BS32 FEq- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_151 = happySpecReduce_1 10# happyReduction_151-happyReduction_151 happy_x_1- = happyIn16- (FRelOp BS32 FNe- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_152 = happySpecReduce_1 10# happyReduction_152-happyReduction_152 happy_x_1- = happyIn16- (FRelOp BS32 FLt- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_153 = happySpecReduce_1 10# happyReduction_153-happyReduction_153 happy_x_1- = happyIn16- (FRelOp BS32 FGt- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_154 = happySpecReduce_1 10# happyReduction_154-happyReduction_154 happy_x_1- = happyIn16- (FRelOp BS32 FLe- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_155 = happySpecReduce_1 10# happyReduction_155-happyReduction_155 happy_x_1- = happyIn16- (FRelOp BS32 FGe- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_156 = happySpecReduce_1 10# happyReduction_156-happyReduction_156 happy_x_1- = happyIn16- (FRelOp BS64 FEq- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_157 = happySpecReduce_1 10# happyReduction_157-happyReduction_157 happy_x_1- = happyIn16- (FRelOp BS64 FNe- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_158 = happySpecReduce_1 10# happyReduction_158-happyReduction_158 happy_x_1- = happyIn16- (FRelOp BS64 FLt- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_159 = happySpecReduce_1 10# happyReduction_159-happyReduction_159 happy_x_1- = happyIn16- (FRelOp BS64 FGt- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_160 = happySpecReduce_1 10# happyReduction_160-happyReduction_160 happy_x_1- = happyIn16- (FRelOp BS64 FLe- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_161 = happySpecReduce_1 10# happyReduction_161-happyReduction_161 happy_x_1- = happyIn16- (FRelOp BS64 FGe- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_162 = happySpecReduce_1 10# happyReduction_162-happyReduction_162 happy_x_1- = happyIn16- (I32WrapI64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_163 = happySpecReduce_1 10# happyReduction_163-happyReduction_163 happy_x_1- = happyIn16- (ITruncFS BS32 BS32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_164 = happySpecReduce_1 10# happyReduction_164-happyReduction_164 happy_x_1- = happyIn16- (ITruncFU BS32 BS32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_165 = happySpecReduce_1 10# happyReduction_165-happyReduction_165 happy_x_1- = happyIn16- (ITruncFS BS32 BS64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_166 = happySpecReduce_1 10# happyReduction_166-happyReduction_166 happy_x_1- = happyIn16- (ITruncFU BS32 BS64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_167 = happySpecReduce_1 10# happyReduction_167-happyReduction_167 happy_x_1- = happyIn16- (I64ExtendSI32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_168 = happySpecReduce_1 10# happyReduction_168-happyReduction_168 happy_x_1- = happyIn16- (I64ExtendUI32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_169 = happySpecReduce_1 10# happyReduction_169-happyReduction_169 happy_x_1- = happyIn16- (ITruncFS BS64 BS32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_170 = happySpecReduce_1 10# happyReduction_170-happyReduction_170 happy_x_1- = happyIn16- (ITruncFU BS64 BS32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_171 = happySpecReduce_1 10# happyReduction_171-happyReduction_171 happy_x_1- = happyIn16- (ITruncFS BS64 BS64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_172 = happySpecReduce_1 10# happyReduction_172-happyReduction_172 happy_x_1- = happyIn16- (ITruncFU BS64 BS64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_173 = happySpecReduce_1 10# happyReduction_173-happyReduction_173 happy_x_1- = happyIn16- (FConvertIS BS32 BS32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_174 = happySpecReduce_1 10# happyReduction_174-happyReduction_174 happy_x_1- = happyIn16- (FConvertIU BS32 BS32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_175 = happySpecReduce_1 10# happyReduction_175-happyReduction_175 happy_x_1- = happyIn16- (FConvertIS BS32 BS64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_176 = happySpecReduce_1 10# happyReduction_176-happyReduction_176 happy_x_1- = happyIn16- (FConvertIU BS32 BS64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_177 = happySpecReduce_1 10# happyReduction_177-happyReduction_177 happy_x_1- = happyIn16- (F32DemoteF64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_178 = happySpecReduce_1 10# happyReduction_178-happyReduction_178 happy_x_1- = happyIn16- (FConvertIS BS64 BS32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_179 = happySpecReduce_1 10# happyReduction_179-happyReduction_179 happy_x_1- = happyIn16- (FConvertIU BS64 BS32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_180 = happySpecReduce_1 10# happyReduction_180-happyReduction_180 happy_x_1- = happyIn16- (FConvertIS BS64 BS64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_181 = happySpecReduce_1 10# happyReduction_181-happyReduction_181 happy_x_1- = happyIn16- (FConvertIU BS64 BS64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_182 = happySpecReduce_1 10# happyReduction_182-happyReduction_182 happy_x_1- = happyIn16- (F64PromoteF32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_183 = happySpecReduce_1 10# happyReduction_183-happyReduction_183 happy_x_1- = happyIn16- (IReinterpretF BS32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_184 = happySpecReduce_1 10# happyReduction_184-happyReduction_184 happy_x_1- = happyIn16- (IReinterpretF BS64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_185 = happySpecReduce_1 10# happyReduction_185-happyReduction_185 happy_x_1- = happyIn16- (FReinterpretI BS32- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_186 = happySpecReduce_1 10# happyReduction_186-happyReduction_186 happy_x_1- = happyIn16- (FReinterpretI BS64- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_187 = happySpecReduce_2 11# happyReduction_187-happyReduction_187 happy_x_2- happy_x_1- = case happyOut18 happy_x_2 of { happy_var_2 -> - happyIn17- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_188 = happySpecReduce_0 11# happyReduction_188-happyReduction_188 = happyIn17- (AnonimousTypeUse $ FuncType [] []- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_189 = happyReduce 4# 12# happyReduction_189-happyReduction_189 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut10 happy_x_2 of { happy_var_2 -> - case happyOut19 happy_x_4 of { happy_var_4 -> - happyIn18- (IndexedTypeUse happy_var_2 happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_190 = happySpecReduce_1 12# happyReduction_190-happyReduction_190 happy_x_1- = case happyOut26 happy_x_1 of { happy_var_1 -> - happyIn18- (AnonimousTypeUse happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_191 = happySpecReduce_2 13# happyReduction_191-happyReduction_191 happy_x_2- happy_x_1- = case happyOut26 happy_x_2 of { happy_var_2 -> - happyIn19- (Just happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_192 = happySpecReduce_0 13# happyReduction_192-happyReduction_192 = happyIn19- (Nothing- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_193 = happyReduce 4# 14# happyReduction_193-happyReduction_193 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - happyIn20- (TypeDef happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_194 = happySpecReduce_3 15# happyReduction_194-happyReduction_194 happy_x_3- happy_x_2- happy_x_1- = case happyOut22 happy_x_3 of { happy_var_3 -> - happyIn21- (happy_var_3- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_195 = happySpecReduce_1 16# happyReduction_195-happyReduction_195 happy_x_1- = happyIn22- (emptyFuncType- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_196 = happySpecReduce_2 16# happyReduction_196-happyReduction_196 happy_x_2- happy_x_1- = case happyOut23 happy_x_2 of { happy_var_2 -> - happyIn22- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_197 = happyReduce 4# 17# happyReduction_197-happyReduction_197 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut117 happy_x_2 of { happy_var_2 -> - case happyOut22 happy_x_4 of { happy_var_4 -> - happyIn23- (mergeFuncType (FuncType (map (ParamType Nothing) happy_var_2) []) happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_198 = happyReduce 5# 17# happyReduction_198-happyReduction_198 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut8 happy_x_2 of { happy_var_2 -> - case happyOut9 happy_x_3 of { happy_var_3 -> - case happyOut22 happy_x_5 of { happy_var_5 -> - happyIn23- (mergeFuncType (FuncType [ParamType (Just happy_var_2) happy_var_3] []) happy_var_5- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_199 = happySpecReduce_1 17# happyReduction_199-happyReduction_199 happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn23- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_200 = happySpecReduce_1 18# happyReduction_200-happyReduction_200 happy_x_1- = happyIn24- (emptyFuncType- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_201 = happySpecReduce_2 18# happyReduction_201-happyReduction_201 happy_x_2- happy_x_1- = case happyOut25 happy_x_2 of { happy_var_2 -> - happyIn24- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_202 = happyReduce 4# 19# happyReduction_202-happyReduction_202 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut117 happy_x_2 of { happy_var_2 -> - case happyOut24 happy_x_4 of { happy_var_4 -> - happyIn25- (mergeFuncType (FuncType [] happy_var_2) happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_203 = happySpecReduce_3 20# happyReduction_203-happyReduction_203 happy_x_3- happy_x_2- happy_x_1- = case happyOut26 happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_3 of { happy_var_3 -> - happyIn26- (mergeFuncType happy_var_1 happy_var_3- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_204 = happySpecReduce_1 20# happyReduction_204-happyReduction_204 happy_x_1- = case happyOut27 happy_x_1 of { happy_var_1 -> - happyIn26- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_205 = happySpecReduce_3 21# happyReduction_205-happyReduction_205 happy_x_3- happy_x_2- happy_x_1- = case happyOut117 happy_x_2 of { happy_var_2 -> - happyIn27- (FuncType (map (ParamType Nothing) happy_var_2) []- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_206 = happyReduce 4# 21# happyReduction_206-happyReduction_206 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut8 happy_x_2 of { happy_var_2 -> - case happyOut9 happy_x_3 of { happy_var_3 -> - happyIn27- (FuncType [ParamType (Just happy_var_2) happy_var_3] []- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_207 = happySpecReduce_3 21# happyReduction_207-happyReduction_207 happy_x_3- happy_x_2- happy_x_1- = case happyOut117 happy_x_2 of { happy_var_2 -> - happyIn27- (FuncType [] happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_208 = happyMonadReduce 2# 22# happyReduction_208-happyReduction_208 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOut121 happy_x_1 of { happy_var_1 -> - case happyOut118 happy_x_2 of { happy_var_2 -> - ( parseMemArg 1 happy_var_1 happy_var_2)}})- ) (\r -> happyReturn (happyIn28 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_209 = happyMonadReduce 2# 23# happyReduction_209-happyReduction_209 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOut121 happy_x_1 of { happy_var_1 -> - case happyOut118 happy_x_2 of { happy_var_2 -> - ( parseMemArg 2 happy_var_1 happy_var_2)}})- ) (\r -> happyReturn (happyIn29 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_210 = happyMonadReduce 2# 24# happyReduction_210-happyReduction_210 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOut121 happy_x_1 of { happy_var_1 -> - case happyOut118 happy_x_2 of { happy_var_2 -> - ( parseMemArg 4 happy_var_1 happy_var_2)}})- ) (\r -> happyReturn (happyIn30 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_211 = happyMonadReduce 2# 25# happyReduction_211-happyReduction_211 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOut121 happy_x_1 of { happy_var_1 -> - case happyOut118 happy_x_2 of { happy_var_2 -> - ( parseMemArg 8 happy_var_1 happy_var_2)}})- ) (\r -> happyReturn (happyIn31 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_212 = happySpecReduce_1 26# happyReduction_212-happyReduction_212 happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - happyIn32- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_213 = happySpecReduce_1 26# happyReduction_213-happyReduction_213 happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 -> - happyIn32- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_214 = happySpecReduce_1 27# happyReduction_214-happyReduction_214 happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - happyIn33- ([PlainInstr happy_var_1]- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_215 = happySpecReduce_2 27# happyReduction_215-happyReduction_215 happy_x_2- happy_x_1- = case happyOut41 happy_x_2 of { happy_var_2 -> - happyIn33- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_216 = happyMonadReduce 3# 27# happyReduction_216-happyReduction_216 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut34 happy_x_3 of { happy_var_3 -> - ( (: []) `fmap` happy_var_3 happy_var_2)}})- ) (\r -> happyReturn (happyIn33 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_217 = happyMonadReduce 3# 27# happyReduction_217-happyReduction_217 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - ( (: []) `fmap` happy_var_3 happy_var_2)}})- ) (\r -> happyReturn (happyIn33 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_218 = happyMonadReduce 3# 27# happyReduction_218-happyReduction_218 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut38 happy_x_3 of { happy_var_3 -> - ( happy_var_3 happy_var_2)}})- ) (\r -> happyReturn (happyIn33 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_219 = happySpecReduce_2 28# happyReduction_219-happyReduction_219 happy_x_2- happy_x_1- = case happyOut119 happy_x_2 of { happy_var_2 -> - happyIn34- (\ident ->- if ident == happy_var_2 || isNothing happy_var_2- then Right $ BlockInstr ident [] []- else Left "Block labels have to match"- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_220 = happyReduce 4# 28# happyReduction_220-happyReduction_220 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - case happyOut119 happy_x_4 of { happy_var_4 -> - happyIn34- (\ident ->- if ident == happy_var_4 || isNothing happy_var_4- then Right $ BlockInstr ident [] (happy_var_1 ++ concat happy_var_2)- else Left "Block labels have to match"- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_221 = happySpecReduce_2 28# happyReduction_221-happyReduction_221 happy_x_2- happy_x_1- = case happyOut35 happy_x_2 of { happy_var_2 -> - happyIn34- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_222 = happyReduce 6# 29# happyReduction_222-happyReduction_222 (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 happyOut9 happy_x_2 of { happy_var_2 -> - case happyOut113 happy_x_4 of { happy_var_4 -> - case happyOut119 happy_x_6 of { happy_var_6 -> - happyIn35- (\ident ->- if ident == happy_var_6 || isNothing happy_var_6- then Right $ BlockInstr ident [happy_var_2] (concat happy_var_4)- else Left "Block labels have to match"- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_223 = happyReduce 4# 29# happyReduction_223-happyReduction_223 (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 happyOut113 happy_x_2 of { happy_var_2 -> - case happyOut119 happy_x_4 of { happy_var_4 -> - happyIn35- (\ident ->- if ident == happy_var_4 || isNothing happy_var_4- then Right $ BlockInstr ident [] (happy_var_1 ++ concat happy_var_2)- else Left "Block labels have to match"- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_224 = happySpecReduce_2 30# happyReduction_224-happyReduction_224 happy_x_2- happy_x_1- = case happyOut119 happy_x_2 of { happy_var_2 -> - happyIn36- (\ident ->- if ident == happy_var_2 || isNothing happy_var_2- then Right $ LoopInstr ident [] []- else Left "Loop labels have to match"- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_225 = happyReduce 4# 30# happyReduction_225-happyReduction_225 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - case happyOut119 happy_x_4 of { happy_var_4 -> - happyIn36- (\ident ->- if ident == happy_var_4 || isNothing happy_var_4- then Right $ LoopInstr ident [] (happy_var_1 ++ concat happy_var_2)- else Left "Loop labels have to match"- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_226 = happySpecReduce_2 30# happyReduction_226-happyReduction_226 happy_x_2- happy_x_1- = case happyOut37 happy_x_2 of { happy_var_2 -> - happyIn36- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_227 = happyReduce 6# 31# happyReduction_227-happyReduction_227 (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 happyOut9 happy_x_2 of { happy_var_2 -> - case happyOut113 happy_x_4 of { happy_var_4 -> - case happyOut119 happy_x_6 of { happy_var_6 -> - happyIn37- (\ident ->- if ident == happy_var_6 || isNothing happy_var_6- then Right $ LoopInstr ident [happy_var_2] (concat happy_var_4)- else Left "Loop labels have to match"- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_228 = happyReduce 4# 31# happyReduction_228-happyReduction_228 (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 happyOut113 happy_x_2 of { happy_var_2 -> - case happyOut119 happy_x_4 of { happy_var_4 -> - happyIn37- (\ident ->- if ident == happy_var_4 || isNothing happy_var_4- then Right $ LoopInstr ident [] (happy_var_1 ++ concat happy_var_2)- else Left "Loop labels have to match"- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_229 = happySpecReduce_1 32# happyReduction_229-happyReduction_229 happy_x_1- = case happyOut40 happy_x_1 of { happy_var_1 -> - happyIn38- (\ident ->- if ident == (snd happy_var_1) || isNothing (snd happy_var_1)- then Right [IfInstr ident [] [] $ fst happy_var_1]- else Left "If labels have to match"- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_230 = happySpecReduce_3 32# happyReduction_230-happyReduction_230 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - case happyOut40 happy_x_3 of { happy_var_3 -> - happyIn38- (\ident ->- if ident == (snd happy_var_3) || isNothing (snd happy_var_3)- then Right [IfInstr ident [] (happy_var_1 ++ concat happy_var_2) $ fst happy_var_3]- else Left "If labels have to match"- )}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_231 = happySpecReduce_2 32# happyReduction_231-happyReduction_231 happy_x_2- happy_x_1- = case happyOut39 happy_x_2 of { happy_var_2 -> - happyIn38- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_232 = happyReduce 5# 33# happyReduction_232-happyReduction_232 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut9 happy_x_2 of { happy_var_2 -> - case happyOut113 happy_x_4 of { happy_var_4 -> - case happyOut40 happy_x_5 of { happy_var_5 -> - happyIn39- (\ident ->- if ident == (snd happy_var_5) || isNothing (snd happy_var_5)- then Right [IfInstr ident [happy_var_2] (concat happy_var_4) $ fst happy_var_5]- else Left "If labels have to match"- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_233 = happySpecReduce_3 33# happyReduction_233-happyReduction_233 happy_x_3- happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - case happyOut40 happy_x_3 of { happy_var_3 -> - happyIn39- (\ident ->- if ident == (snd happy_var_3) || isNothing (snd happy_var_3)- then Right [IfInstr ident [] (happy_var_1 ++ concat happy_var_2) $ fst happy_var_3]- else Left "If labels have to match"- )}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_234 = happySpecReduce_2 34# happyReduction_234-happyReduction_234 happy_x_2- happy_x_1- = case happyOut119 happy_x_2 of { happy_var_2 -> - happyIn40- (([], happy_var_2)- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_235 = happyMonadReduce 5# 34# 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) tk- = happyThen ((case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut113 happy_x_3 of { happy_var_3 -> - case happyOut119 happy_x_5 of { happy_var_5 -> - (- if matchIdents happy_var_2 happy_var_5- then Right (concat happy_var_3, if isNothing happy_var_2 then happy_var_5 else happy_var_2)- else Left "If labels have to match")}}})- ) (\r -> happyReturn (happyIn40 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_236 = happySpecReduce_2 35# happyReduction_236-happyReduction_236 happy_x_2- happy_x_1- = case happyOut42 happy_x_2 of { happy_var_2 -> - happyIn41- ((PlainInstr $ CallIndirect $ fst happy_var_2) : snd happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_237 = happySpecReduce_0 35# happyReduction_237-happyReduction_237 = happyIn41- ([PlainInstr $ CallIndirect $ AnonimousTypeUse $ FuncType [] []]- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_238 = happyReduce 4# 36# happyReduction_238-happyReduction_238 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut10 happy_x_2 of { happy_var_2 -> - case happyOut43 happy_x_4 of { happy_var_4 -> - happyIn42- ((IndexedTypeUse happy_var_2 $ fst happy_var_4, snd happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_239 = happySpecReduce_1 36# happyReduction_239-happyReduction_239 happy_x_1- = case happyOut44 happy_x_1 of { happy_var_1 -> - happyIn42- ((AnonimousTypeUse $ fromMaybe (FuncType [] []) $ fst happy_var_1, snd happy_var_1)- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_240 = happySpecReduce_2 37# happyReduction_240-happyReduction_240 happy_x_2- happy_x_1- = case happyOut44 happy_x_2 of { happy_var_2 -> - happyIn43- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_241 = happySpecReduce_0 37# happyReduction_241-happyReduction_241 = happyIn43- ((Nothing, [])- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_242 = happyReduce 4# 38# happyReduction_242-happyReduction_242 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut117 happy_x_2 of { happy_var_2 -> - case happyOut43 happy_x_4 of { happy_var_4 -> - happyIn44- (let ft = fromMaybe emptyFuncType $ fst happy_var_4 in- (Just $ ft { params = map (ParamType Nothing) happy_var_2 ++ params ft }, snd happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_243 = happySpecReduce_1 38# happyReduction_243-happyReduction_243 happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - happyIn44- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_244 = happySpecReduce_2 39# happyReduction_244-happyReduction_244 happy_x_2- happy_x_1- = case happyOut46 happy_x_2 of { happy_var_2 -> - happyIn45- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_245 = happySpecReduce_0 39# happyReduction_245-happyReduction_245 = happyIn45- ((Nothing, [])- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_246 = happyReduce 4# 40# happyReduction_246-happyReduction_246 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut117 happy_x_2 of { happy_var_2 -> - case happyOut45 happy_x_4 of { happy_var_4 -> - happyIn46- (let ft = fromMaybe emptyFuncType $ fst happy_var_4 in- (Just $ ft { results = happy_var_2 ++ results ft }, snd happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_247 = happySpecReduce_1 40# happyReduction_247-happyReduction_247 happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - happyIn46- ((Nothing, happy_var_1)- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_248 = happySpecReduce_2 41# happyReduction_248-happyReduction_248 happy_x_2- happy_x_1- = case happyOut48 happy_x_2 of { happy_var_2 -> - happyIn47- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_249 = happySpecReduce_3 42# happyReduction_249-happyReduction_249 happy_x_3- happy_x_2- happy_x_1- = case happyOut16 happy_x_1 of { happy_var_1 -> - case happyOut111 happy_x_2 of { happy_var_2 -> - happyIn48- (concat happy_var_2 ++ [PlainInstr happy_var_1]- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_250 = happySpecReduce_2 42# happyReduction_250-happyReduction_250 happy_x_2- happy_x_1- = case happyOut56 happy_x_2 of { happy_var_2 -> - happyIn48- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_251 = happySpecReduce_3 42# happyReduction_251-happyReduction_251 happy_x_3- happy_x_2- happy_x_1- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut49 happy_x_3 of { happy_var_3 -> - happyIn48- ([happy_var_3 happy_var_2]- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_252 = happySpecReduce_3 42# happyReduction_252-happyReduction_252 happy_x_3- happy_x_2- happy_x_1- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut51 happy_x_3 of { happy_var_3 -> - happyIn48- ([happy_var_3 happy_var_2]- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_253 = happyReduce 4# 42# happyReduction_253-happyReduction_253 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut53 happy_x_4 of { happy_var_4 -> - happyIn48- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_254 = happySpecReduce_1 43# happyReduction_254-happyReduction_254 happy_x_1- = happyIn49- (\ident -> BlockInstr ident [] []- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_255 = happySpecReduce_2 43# happyReduction_255-happyReduction_255 happy_x_2- happy_x_1- = case happyOut50 happy_x_2 of { happy_var_2 -> - happyIn49- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_256 = happySpecReduce_3 43# happyReduction_256-happyReduction_256 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn49- (\ident -> BlockInstr ident [] (happy_var_1 ++ concat happy_var_2)- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_257 = happyReduce 5# 44# happyReduction_257-happyReduction_257 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut9 happy_x_2 of { happy_var_2 -> - case happyOut113 happy_x_4 of { happy_var_4 -> - happyIn50- (\ident -> BlockInstr ident [happy_var_2] (concat happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_258 = happySpecReduce_3 44# happyReduction_258-happyReduction_258 happy_x_3- happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn50- (\ident -> BlockInstr ident [] (happy_var_1 ++ concat happy_var_2)- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_259 = happySpecReduce_1 45# happyReduction_259-happyReduction_259 happy_x_1- = happyIn51- (\ident -> LoopInstr ident [] []- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_260 = happySpecReduce_2 45# happyReduction_260-happyReduction_260 happy_x_2- happy_x_1- = case happyOut52 happy_x_2 of { happy_var_2 -> - happyIn51- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_261 = happySpecReduce_3 45# happyReduction_261-happyReduction_261 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn51- (\ident -> LoopInstr ident [] (happy_var_1 ++ concat happy_var_2)- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_262 = happyReduce 5# 46# happyReduction_262-happyReduction_262 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut9 happy_x_2 of { happy_var_2 -> - case happyOut113 happy_x_4 of { happy_var_4 -> - happyIn52- (\ident -> LoopInstr ident [happy_var_2] (concat happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_263 = happySpecReduce_3 46# happyReduction_263-happyReduction_263 happy_x_3- happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn52- (\ident -> LoopInstr ident [] (happy_var_1 ++ concat happy_var_2)- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_264 = happyReduce 5# 47# happyReduction_264-happyReduction_264 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut9 happy_x_2 of { happy_var_2 -> - case happyOut54 happy_x_5 of { happy_var_5 -> - happyIn53- (\ident ->- let (pred, (trueBranch, falseBranch)) = happy_var_5 in- pred ++ [IfInstr ident [happy_var_2] trueBranch falseBranch]- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_265 = happySpecReduce_1 47# happyReduction_265-happyReduction_265 happy_x_1- = case happyOut54 happy_x_1 of { happy_var_1 -> - happyIn53- (\ident ->- let (pred, (trueBranch, falseBranch)) = happy_var_1 in- pred ++ [IfInstr ident [] trueBranch falseBranch]- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_266 = happyReduce 4# 48# happyReduction_266-happyReduction_266 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut113 happy_x_2 of { happy_var_2 -> - case happyOut55 happy_x_4 of { happy_var_4 -> - happyIn54- (([], (concat happy_var_2, happy_var_4))- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_267 = happySpecReduce_3 48# happyReduction_267-happyReduction_267 happy_x_3- happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut54 happy_x_3 of { happy_var_3 -> - happyIn54- (let (pred, branches) = happy_var_3 in- (happy_var_1 ++ pred, branches)- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_268 = happySpecReduce_1 49# happyReduction_268-happyReduction_268 happy_x_1- = happyIn55- ([]- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_269 = happyReduce 5# 49# happyReduction_269-happyReduction_269 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut113 happy_x_3 of { happy_var_3 -> - happyIn55- (concat happy_var_3- ) `HappyStk` happyRest}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_270 = happySpecReduce_1 50# happyReduction_270-happyReduction_270 happy_x_1- = happyIn56- ([PlainInstr $ CallIndirect $ AnonimousTypeUse $ FuncType [] []]- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_271 = happySpecReduce_2 50# happyReduction_271-happyReduction_271 happy_x_2- happy_x_1- = case happyOut57 happy_x_2 of { happy_var_2 -> - happyIn56- (snd happy_var_2 ++ [PlainInstr $ CallIndirect $ fst happy_var_2]- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_272 = happyReduce 4# 51# happyReduction_272-happyReduction_272 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut10 happy_x_2 of { happy_var_2 -> - case happyOut58 happy_x_4 of { happy_var_4 -> - happyIn57- ((IndexedTypeUse happy_var_2 $ fst happy_var_4, snd happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_273 = happySpecReduce_1 51# happyReduction_273-happyReduction_273 happy_x_1- = case happyOut59 happy_x_1 of { happy_var_1 -> - happyIn57- ((AnonimousTypeUse $ fromMaybe (FuncType [] []) $ fst happy_var_1, snd happy_var_1)- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_274 = happySpecReduce_2 52# happyReduction_274-happyReduction_274 happy_x_2- happy_x_1- = case happyOut59 happy_x_2 of { happy_var_2 -> - happyIn58- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_275 = happySpecReduce_1 52# happyReduction_275-happyReduction_275 happy_x_1- = happyIn58- ((Nothing, [])- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_276 = happyReduce 4# 53# happyReduction_276-happyReduction_276 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut117 happy_x_2 of { happy_var_2 -> - case happyOut58 happy_x_4 of { happy_var_4 -> - happyIn59- (let ft = fromMaybe emptyFuncType $ fst happy_var_4 in- (Just $ ft { params = map (ParamType Nothing) happy_var_2 ++ params ft }, snd happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_277 = happySpecReduce_1 53# happyReduction_277-happyReduction_277 happy_x_1- = case happyOut61 happy_x_1 of { happy_var_1 -> - happyIn59- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_278 = happySpecReduce_2 54# happyReduction_278-happyReduction_278 happy_x_2- happy_x_1- = case happyOut61 happy_x_2 of { happy_var_2 -> - happyIn60- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_279 = happySpecReduce_1 54# happyReduction_279-happyReduction_279 happy_x_1- = happyIn60- ((Nothing, [])- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_280 = happyReduce 4# 55# happyReduction_280-happyReduction_280 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut117 happy_x_2 of { happy_var_2 -> - case happyOut60 happy_x_4 of { happy_var_4 -> - happyIn61- (let ft = fromMaybe emptyFuncType $ fst happy_var_4 in- (Just $ ft { results = happy_var_2 ++ results ft }, snd happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_281 = happySpecReduce_3 55# happyReduction_281-happyReduction_281 happy_x_3- happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut111 happy_x_2 of { happy_var_2 -> - happyIn61- ((Nothing, happy_var_1 ++ concat happy_var_2)- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_282 = happyReduce 4# 56# happyReduction_282-happyReduction_282 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut17 happy_x_3 of { happy_var_3 -> - happyIn62- (ImportFunc happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_283 = happyReduce 4# 56# happyReduction_283-happyReduction_283 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut86 happy_x_3 of { happy_var_3 -> - happyIn62- (ImportTable happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_284 = happyReduce 4# 56# happyReduction_284-happyReduction_284 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut84 happy_x_3 of { happy_var_3 -> - happyIn62- (ImportMemory happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_285 = happyReduce 4# 56# happyReduction_285-happyReduction_285 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut76 happy_x_3 of { happy_var_3 -> - happyIn62- (ImportGlobal happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_286 = happyReduce 6# 57# 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 happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_3 of { happy_var_3 -> - case happyOut62 happy_x_5 of { happy_var_5 -> - happyIn63- (Import [] happy_var_2 happy_var_3 happy_var_5- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_287 = happySpecReduce_3 58# happyReduction_287-happyReduction_287 happy_x_3- happy_x_2- happy_x_1- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut65 happy_x_3 of { happy_var_3 -> - happyIn64- (happy_var_3 happy_var_2- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_288 = happySpecReduce_1 59# happyReduction_288-happyReduction_288 happy_x_1- = happyIn65- (\i -> MFFunc emptyFunction { ident = i }- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_289 = happySpecReduce_3 59# happyReduction_289-happyReduction_289 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn65- (\i -> MFFunc emptyFunction { ident = i, body = happy_var_1 ++ concat happy_var_2 }- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_290 = happySpecReduce_2 59# happyReduction_290-happyReduction_290 happy_x_2- happy_x_1- = case happyOut66 happy_x_2 of { happy_var_2 -> - happyIn65- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_291 = happyReduce 4# 60# happyReduction_291-happyReduction_291 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut65 happy_x_4 of { happy_var_4 -> - happyIn66- (\ident ->- case happy_var_4 ident of- MFImport imp -> MFImport imp { reExportAs = happy_var_2 : reExportAs imp }- MFFunc func -> MFFunc func { exportFuncAs = happy_var_2 : exportFuncAs func }- _ -> error "unexpected field"- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_292 = happySpecReduce_1 60# happyReduction_292-happyReduction_292 happy_x_1- = case happyOut67 happy_x_1 of { happy_var_1 -> - happyIn66- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_293 = happyReduce 6# 61# happyReduction_293-happyReduction_293 (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 happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_3 of { happy_var_3 -> - case happyOut17 happy_x_5 of { happy_var_5 -> - happyIn67- (\ident -> MFImport $ Import [] happy_var_2 happy_var_3 $ ImportFunc ident happy_var_5- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_294 = happySpecReduce_1 61# happyReduction_294-happyReduction_294 happy_x_1- = case happyOut68 happy_x_1 of { happy_var_1 -> - happyIn67- (MFFunc . happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_295 = happyReduce 4# 62# happyReduction_295-happyReduction_295 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut10 happy_x_2 of { happy_var_2 -> - case happyOut69 happy_x_4 of { happy_var_4 -> - happyIn68- (\i ->- let (AnonimousTypeUse signature) = funcType happy_var_4 in- let typeSign = if signature == emptyFuncType then Nothing else Just signature in- happy_var_4 { funcType = IndexedTypeUse happy_var_2 typeSign, ident = i }- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_296 = happySpecReduce_1 62# happyReduction_296-happyReduction_296 happy_x_1- = case happyOut70 happy_x_1 of { happy_var_1 -> - happyIn68- (\i -> happy_var_1 { ident = i }- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_297 = happySpecReduce_1 63# happyReduction_297-happyReduction_297 happy_x_1- = happyIn69- (emptyFunction- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_298 = happySpecReduce_2 63# happyReduction_298-happyReduction_298 happy_x_2- happy_x_1- = case happyOut70 happy_x_2 of { happy_var_2 -> - happyIn69- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_299 = happyReduce 4# 64# happyReduction_299-happyReduction_299 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut117 happy_x_2 of { happy_var_2 -> - case happyOut69 happy_x_4 of { happy_var_4 -> - happyIn70- (prependFuncParams (map (ParamType Nothing) happy_var_2) happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_300 = happyReduce 5# 64# happyReduction_300-happyReduction_300 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut8 happy_x_2 of { happy_var_2 -> - case happyOut9 happy_x_3 of { happy_var_3 -> - case happyOut69 happy_x_5 of { happy_var_5 -> - happyIn70- (prependFuncParams [ParamType (Just happy_var_2) happy_var_3] happy_var_5- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_301 = happySpecReduce_1 64# happyReduction_301-happyReduction_301 happy_x_1- = case happyOut72 happy_x_1 of { happy_var_1 -> - happyIn70- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_302 = happySpecReduce_1 65# happyReduction_302-happyReduction_302 happy_x_1- = happyIn71- (emptyFunction- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_303 = happySpecReduce_2 65# happyReduction_303-happyReduction_303 happy_x_2- happy_x_1- = case happyOut72 happy_x_2 of { happy_var_2 -> - happyIn71- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_304 = happySpecReduce_3 65# happyReduction_304-happyReduction_304 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn71- (emptyFunction { body = happy_var_1 ++ concat happy_var_2 }- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_305 = happyReduce 4# 66# happyReduction_305-happyReduction_305 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut117 happy_x_2 of { happy_var_2 -> - case happyOut71 happy_x_4 of { happy_var_4 -> - happyIn72- (prependFuncResults happy_var_2 happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_306 = happySpecReduce_1 66# happyReduction_306-happyReduction_306 happy_x_1- = case happyOut74 happy_x_1 of { happy_var_1 -> - happyIn72- (emptyFunction { locals = fst happy_var_1, body = snd happy_var_1 }- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_307 = happySpecReduce_1 67# happyReduction_307-happyReduction_307 happy_x_1- = happyIn73- (([], [])- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_308 = happySpecReduce_3 67# happyReduction_308-happyReduction_308 happy_x_3- happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn73- (([], happy_var_1 ++ concat happy_var_2)- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_309 = happySpecReduce_2 67# happyReduction_309-happyReduction_309 happy_x_2- happy_x_1- = case happyOut74 happy_x_2 of { happy_var_2 -> - happyIn73- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_310 = happyReduce 4# 68# happyReduction_310-happyReduction_310 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut117 happy_x_2 of { happy_var_2 -> - case happyOut73 happy_x_4 of { happy_var_4 -> - happyIn74- ((map (LocalType Nothing) happy_var_2 ++ fst happy_var_4, snd happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_311 = happyReduce 5# 68# happyReduction_311-happyReduction_311 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut8 happy_x_2 of { happy_var_2 -> - case happyOut9 happy_x_3 of { happy_var_3 -> - case happyOut73 happy_x_5 of { happy_var_5 -> - happyIn74- ((LocalType (Just happy_var_2) happy_var_3 : fst happy_var_5, snd happy_var_5)- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_312 = happySpecReduce_3 68# happyReduction_312-happyReduction_312 happy_x_3- happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn74- (([], happy_var_1 ++ concat happy_var_2)- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_313 = happySpecReduce_3 69# happyReduction_313-happyReduction_313 happy_x_3- happy_x_2- happy_x_1- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut77 happy_x_3 of { happy_var_3 -> - happyIn75- (happy_var_3 happy_var_2- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_314 = happySpecReduce_1 70# happyReduction_314-happyReduction_314 happy_x_1- = case happyOut9 happy_x_1 of { happy_var_1 -> - happyIn76- (Const happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_315 = happyReduce 4# 70# happyReduction_315-happyReduction_315 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut9 happy_x_3 of { happy_var_3 -> - happyIn76- (Mut happy_var_3- ) `HappyStk` happyRest}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_316 = happySpecReduce_3 71# happyReduction_316-happyReduction_316 happy_x_3- happy_x_2- happy_x_1- = case happyOut9 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn77- (\ident -> MFGlobal $ Global [] ident (Const happy_var_1) $ concat happy_var_2- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_317 = happySpecReduce_2 71# happyReduction_317-happyReduction_317 happy_x_2- happy_x_1- = case happyOut78 happy_x_2 of { happy_var_2 -> - happyIn77- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_318 = happyReduce 5# 72# happyReduction_318-happyReduction_318 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut9 happy_x_2 of { happy_var_2 -> - case happyOut113 happy_x_4 of { happy_var_4 -> - happyIn78- (\ident -> MFGlobal $ Global [] ident (Mut happy_var_2) $ concat happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_319 = happyReduce 4# 72# happyReduction_319-happyReduction_319 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut77 happy_x_4 of { happy_var_4 -> - happyIn78- (\ident ->- case happy_var_4 ident of- MFImport imp -> MFImport imp { reExportAs = happy_var_2 : reExportAs imp }- MFGlobal global -> MFGlobal global { exportGlobalAs = happy_var_2 : exportGlobalAs global }- _ -> error "unexpected field"- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_320 = happyReduce 6# 72# happyReduction_320-happyReduction_320 (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 happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_3 of { happy_var_3 -> - case happyOut76 happy_x_5 of { happy_var_5 -> - happyIn78- (\ident -> MFImport $ Import [] happy_var_2 happy_var_3 $ ImportGlobal ident happy_var_5- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_321 = happySpecReduce_3 73# happyReduction_321-happyReduction_321 happy_x_3- happy_x_2- happy_x_1- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut80 happy_x_3 of { happy_var_3 -> - happyIn79- (happy_var_3 happy_var_2- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_322 = happySpecReduce_1 74# happyReduction_322-happyReduction_322 happy_x_1- = case happyOut83 happy_x_1 of { happy_var_1 -> - happyIn80- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_323 = happySpecReduce_2 74# happyReduction_323-happyReduction_323 happy_x_2- happy_x_1- = case happyOut82 happy_x_2 of { happy_var_2 -> - happyIn80- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_324 = happySpecReduce_1 75# happyReduction_324-happyReduction_324 happy_x_1- = case happyOut115 happy_x_1 of { happy_var_1 -> - happyIn81- (LBS.concat happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_325 = happyReduce 4# 76# happyReduction_325-happyReduction_325 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut80 happy_x_4 of { happy_var_4 -> - happyIn82- (\ident ->- case happy_var_4 ident of- [MFImport imp] -> [MFImport imp { reExportAs = happy_var_2 : reExportAs imp }]- (MFMem (Memory exps i l)):rest -> (MFMem (Memory (happy_var_2:exps) i l)):rest- _ -> error "unexpected field"- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_326 = happyReduce 6# 76# happyReduction_326-happyReduction_326 (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 happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_3 of { happy_var_3 -> - case happyOut84 happy_x_5 of { happy_var_5 -> - happyIn82- (\ident -> [MFImport $ Import [] happy_var_2 happy_var_3 $ ImportMemory ident happy_var_5]- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_327 = happyReduce 4# 76# happyReduction_327-happyReduction_327 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut81 happy_x_2 of { happy_var_2 -> - happyIn82- (\ident ->- let m = fromIntegral $ LBS.length happy_var_2 in- [- MFMem $ Memory [] ident $ Limit m $ Just m,- MFData $ DataSegment (fromMaybe (Index 0) $ Named `fmap` ident) [PlainInstr $ I32Const 0] happy_var_2- ]- ) `HappyStk` happyRest}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_328 = happySpecReduce_2 77# happyReduction_328-happyReduction_328 happy_x_2- happy_x_1- = case happyOut84 happy_x_1 of { happy_var_1 -> - happyIn83- (\ident -> [MFMem $ Memory [] ident happy_var_1]- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_329 = happySpecReduce_2 78# happyReduction_329-happyReduction_329 happy_x_2- happy_x_1- = case happyOut12 happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_2 of { happy_var_2 -> - happyIn84- (Limit (fromIntegral happy_var_1) (fromIntegral `fmap` happy_var_2)- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_330 = happySpecReduce_1 79# happyReduction_330-happyReduction_330 happy_x_1- = happyIn85- (AnyFunc- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_331 = happySpecReduce_2 80# happyReduction_331-happyReduction_331 happy_x_2- happy_x_1- = case happyOut84 happy_x_1 of { happy_var_1 -> - case happyOut85 happy_x_2 of { happy_var_2 -> - happyIn86- (TableType happy_var_1 happy_var_2- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_332 = happySpecReduce_3 81# happyReduction_332-happyReduction_332 happy_x_3- happy_x_2- happy_x_1- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut88 happy_x_3 of { happy_var_3 -> - happyIn87- (happy_var_3 happy_var_2- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_333 = happySpecReduce_2 82# happyReduction_333-happyReduction_333 happy_x_2- happy_x_1- = case happyOut86 happy_x_1 of { happy_var_1 -> - happyIn88- (\ident -> [MFTable $ Table [] ident happy_var_1]- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_334 = happyReduce 6# 82# happyReduction_334-happyReduction_334 (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 happyOut85 happy_x_1 of { happy_var_1 -> - case happyOut112 happy_x_4 of { happy_var_4 -> - happyIn88- (\ident ->- let funcsLen = fromIntegral $ length happy_var_4 in [- MFTable $ Table [] ident $ TableType (Limit funcsLen (Just funcsLen)) happy_var_1,- MFElem $ ElemSegment (fromMaybe (Index 0) $ Named `fmap` ident) [PlainInstr $ I32Const 0] happy_var_4- ]- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_335 = happySpecReduce_2 82# happyReduction_335-happyReduction_335 happy_x_2- happy_x_1- = case happyOut89 happy_x_2 of { happy_var_2 -> - happyIn88- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_336 = happyReduce 6# 83# happyReduction_336-happyReduction_336 (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 happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut7 happy_x_3 of { happy_var_3 -> - case happyOut86 happy_x_5 of { happy_var_5 -> - happyIn89- (\ident -> [MFImport $ Import [] happy_var_2 happy_var_3 $ ImportTable ident happy_var_5]- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_337 = happyReduce 4# 83# happyReduction_337-happyReduction_337 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut88 happy_x_4 of { happy_var_4 -> - happyIn89- (\ident ->- case happy_var_4 ident of- [MFImport imp] -> [MFImport imp { reExportAs = happy_var_2 : reExportAs imp }]- (MFTable (Table exps i t)):rest -> (MFTable (Table (happy_var_2:exps) i t)):rest- _ -> error "unexpected field"- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_338 = happySpecReduce_3 84# happyReduction_338-happyReduction_338 happy_x_3- happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn90- (ExportFunc happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_339 = happySpecReduce_3 84# happyReduction_339-happyReduction_339 happy_x_3- happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn90- (ExportTable happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_340 = happySpecReduce_3 84# happyReduction_340-happyReduction_340 happy_x_3- happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn90- (ExportMemory happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_341 = happySpecReduce_3 84# happyReduction_341-happyReduction_341 happy_x_3- happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn90- (ExportGlobal happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_342 = happyReduce 5# 85# happyReduction_342-happyReduction_342 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut7 happy_x_2 of { happy_var_2 -> - case happyOut90 happy_x_4 of { happy_var_4 -> - happyIn91- (Export happy_var_2 happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_343 = happySpecReduce_3 86# happyReduction_343-happyReduction_343 happy_x_3- happy_x_2- happy_x_1- = case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn92- (StartFunction happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_344 = happySpecReduce_3 87# happyReduction_344-happyReduction_344 happy_x_3- happy_x_2- happy_x_1- = case happyOut111 happy_x_2 of { happy_var_2 -> - happyIn93- (concat happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_345 = happySpecReduce_1 87# happyReduction_345-happyReduction_345 happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - happyIn93- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_346 = happyReduce 6# 88# happyReduction_346-happyReduction_346 (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 happyOut120 happy_x_2 of { happy_var_2 -> - case happyOut93 happy_x_4 of { happy_var_4 -> - case happyOut112 happy_x_5 of { happy_var_5 -> - happyIn94- (ElemSegment (fromMaybe (Index 0) happy_var_2) happy_var_4 happy_var_5- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_347 = happyReduce 6# 89# happyReduction_347-happyReduction_347 (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 happyOut120 happy_x_2 of { happy_var_2 -> - case happyOut93 happy_x_4 of { happy_var_4 -> - case happyOut81 happy_x_5 of { happy_var_5 -> - happyIn95- (DataSegment (fromMaybe (Index 0) happy_var_2) happy_var_4 happy_var_5- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_348 = happySpecReduce_1 90# happyReduction_348-happyReduction_348 happy_x_1- = case happyOut20 happy_x_1 of { happy_var_1 -> - happyIn96- (MFType happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_349 = happySpecReduce_1 90# happyReduction_349-happyReduction_349 happy_x_1- = case happyOut63 happy_x_1 of { happy_var_1 -> - happyIn96- (MFImport happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_350 = happySpecReduce_1 90# happyReduction_350-happyReduction_350 happy_x_1- = case happyOut91 happy_x_1 of { happy_var_1 -> - happyIn96- (MFExport happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_351 = happySpecReduce_1 90# happyReduction_351-happyReduction_351 happy_x_1- = case happyOut92 happy_x_1 of { happy_var_1 -> - happyIn96- (MFStart happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_352 = happySpecReduce_1 90# happyReduction_352-happyReduction_352 happy_x_1- = case happyOut94 happy_x_1 of { happy_var_1 -> - happyIn96- (MFElem happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_353 = happySpecReduce_1 90# happyReduction_353-happyReduction_353 happy_x_1- = case happyOut95 happy_x_1 of { happy_var_1 -> - happyIn96- (MFData happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_354 = happySpecReduce_1 90# happyReduction_354-happyReduction_354 happy_x_1- = case happyOut64 happy_x_1 of { happy_var_1 -> - happyIn96- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_355 = happySpecReduce_1 90# happyReduction_355-happyReduction_355 happy_x_1- = case happyOut75 happy_x_1 of { happy_var_1 -> - happyIn96- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_356 = happySpecReduce_1 91# happyReduction_356-happyReduction_356 happy_x_1- = case happyOut87 happy_x_1 of { happy_var_1 -> - happyIn97- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_357 = happySpecReduce_1 91# happyReduction_357-happyReduction_357 happy_x_1- = case happyOut79 happy_x_1 of { happy_var_1 -> - happyIn97- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_358 = happySpecReduce_1 92# happyReduction_358-happyReduction_358 happy_x_1- = case happyOut96 happy_x_1 of { happy_var_1 -> - happyIn98- ([happy_var_1]- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_359 = happySpecReduce_1 92# happyReduction_359-happyReduction_359 happy_x_1- = case happyOut97 happy_x_1 of { happy_var_1 -> - happyIn98- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_360 = happySpecReduce_2 93# happyReduction_360-happyReduction_360 happy_x_2- happy_x_1- = case happyOut98 happy_x_2 of { happy_var_2 -> - happyIn99- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_361 = happyReduce 5# 94# happyReduction_361-happyReduction_361 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut114 happy_x_3 of { happy_var_3 -> - happyIn100- (concat happy_var_3- ) `HappyStk` happyRest}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_362 = happyReduce 4# 94# happyReduction_362-happyReduction_362 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut98 happy_x_2 of { happy_var_2 -> - case happyOut114 happy_x_3 of { happy_var_3 -> - happyIn100- (happy_var_2 ++ concat happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_363 = happyMonadReduce 1# 95# happyReduction_363-happyReduction_363 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOut100 happy_x_1 of { happy_var_1 -> - ( desugarize happy_var_1)})- ) (\r -> happyReturn (happyIn101 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_364 = happySpecReduce_2 96# happyReduction_364-happyReduction_364 happy_x_2- happy_x_1- = case happyOut110 happy_x_1 of { happy_var_1 -> - happyIn102- (happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_365 = happySpecReduce_2 97# happyReduction_365-happyReduction_365 happy_x_2- happy_x_1- = case happyOut104 happy_x_2 of { happy_var_2 -> - happyIn103- (happy_var_2- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_366 = happySpecReduce_1 98# happyReduction_366-happyReduction_366 happy_x_1- = case happyOut105 happy_x_1 of { happy_var_1 -> - happyIn104- (ModuleDef happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_367 = happyReduce 4# 98# happyReduction_367-happyReduction_367 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut6 happy_x_2 of { happy_var_2 -> - case happyOut119 happy_x_3 of { happy_var_3 -> - happyIn104- (Register happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_368 = happySpecReduce_1 98# happyReduction_368-happyReduction_368 happy_x_1- = case happyOut106 happy_x_1 of { happy_var_1 -> - happyIn104- (Action happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_369 = happySpecReduce_1 98# happyReduction_369-happyReduction_369 happy_x_1- = case happyOut107 happy_x_1 of { happy_var_1 -> - happyIn104- (Assertion happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_370 = happySpecReduce_1 98# happyReduction_370-happyReduction_370 happy_x_1- = case happyOut109 happy_x_1 of { happy_var_1 -> - happyIn104- (Meta happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_371 = happyReduce 5# 99# happyReduction_371-happyReduction_371 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut81 happy_x_4 of { happy_var_4 -> - happyIn105- (BinaryModDef happy_var_2 happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_372 = happyReduce 5# 99# happyReduction_372-happyReduction_372 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut116 happy_x_4 of { happy_var_4 -> - happyIn105- (TextModDef happy_var_2 (TL.concat happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_373 = happyMonadReduce 4# 99# happyReduction_373-happyReduction_373 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut114 happy_x_3 of { happy_var_3 -> - ( RawModDef happy_var_2 `fmap` (desugarize $ concat happy_var_3))}})- ) (\r -> happyReturn (happyIn105 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_374 = happyMonadReduce 2# 99# happyReduction_374-happyReduction_374 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen ((case happyOut98 happy_x_1 of { happy_var_1 -> - case happyOut114 happy_x_2 of { happy_var_2 -> - ( RawModDef Nothing `fmap` (desugarize $ happy_var_1 ++ concat happy_var_2))}})- ) (\r -> happyReturn (happyIn105 r))--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_375 = happyReduce 5# 100# happyReduction_375-happyReduction_375 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut6 happy_x_3 of { happy_var_3 -> - case happyOut111 happy_x_4 of { happy_var_4 -> - happyIn106- (Invoke happy_var_2 happy_var_3 (map (map constInstructionToValue) happy_var_4)- ) `HappyStk` happyRest}}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_376 = happyReduce 4# 100# happyReduction_376-happyReduction_376 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut6 happy_x_3 of { happy_var_3 -> - happyIn106- (Get happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_377 = happyReduce 5# 101# happyReduction_377-happyReduction_377 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut106 happy_x_3 of { happy_var_3 -> - case happyOut111 happy_x_4 of { happy_var_4 -> - happyIn107- (AssertReturn happy_var_3 (map (map constInstructionToValue) happy_var_4)- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_378 = happyReduce 4# 101# happyReduction_378-happyReduction_378 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut106 happy_x_3 of { happy_var_3 -> - happyIn107- (AssertReturnCanonicalNaN happy_var_3- ) `HappyStk` happyRest}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_379 = happyReduce 4# 101# happyReduction_379-happyReduction_379 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut106 happy_x_3 of { happy_var_3 -> - happyIn107- (AssertReturnArithmeticNaN happy_var_3- ) `HappyStk` happyRest}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_380 = happyReduce 5# 101# happyReduction_380-happyReduction_380 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut108 happy_x_3 of { happy_var_3 -> - case happyOut6 happy_x_4 of { happy_var_4 -> - happyIn107- (AssertTrap happy_var_3 happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_381 = happyReduce 5# 101# happyReduction_381-happyReduction_381 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut105 happy_x_3 of { happy_var_3 -> - case happyOut6 happy_x_4 of { happy_var_4 -> - happyIn107- (AssertMalformed happy_var_3 happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_382 = happyReduce 5# 101# happyReduction_382-happyReduction_382 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut105 happy_x_3 of { happy_var_3 -> - case happyOut6 happy_x_4 of { happy_var_4 -> - happyIn107- (AssertInvalid happy_var_3 happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_383 = happyReduce 5# 101# happyReduction_383-happyReduction_383 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut105 happy_x_3 of { happy_var_3 -> - case happyOut6 happy_x_4 of { happy_var_4 -> - happyIn107- (AssertUnlinkable happy_var_3 happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_384 = happyReduce 5# 101# happyReduction_384-happyReduction_384 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut106 happy_x_3 of { happy_var_3 -> - case happyOut6 happy_x_4 of { happy_var_4 -> - happyIn107- (AssertExhaustion happy_var_3 happy_var_4- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_385 = happySpecReduce_1 102# happyReduction_385-happyReduction_385 happy_x_1- = case happyOut106 happy_x_1 of { happy_var_1 -> - happyIn108- (Left happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_386 = happySpecReduce_1 102# happyReduction_386-happyReduction_386 happy_x_1- = case happyOut105 happy_x_1 of { happy_var_1 -> - happyIn108- (Right happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_387 = happyReduce 4# 103# happyReduction_387-happyReduction_387 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut102 happy_x_3 of { happy_var_3 -> - happyIn109- (Script happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_388 = happyReduce 4# 103# happyReduction_388-happyReduction_388 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut6 happy_x_3 of { happy_var_3 -> - happyIn109- (Input happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_389 = happyReduce 4# 103# happyReduction_389-happyReduction_389 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut119 happy_x_2 of { happy_var_2 -> - case happyOut6 happy_x_3 of { happy_var_3 -> - happyIn109- (Output happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_390 = happySpecReduce_1 104# happyReduction_390-happyReduction_390 happy_x_1- = case happyOut124 happy_x_1 of { happy_var_1 -> - happyIn110- (reverse happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_391 = happySpecReduce_1 105# happyReduction_391-happyReduction_391 happy_x_1- = case happyOut125 happy_x_1 of { happy_var_1 -> - happyIn111- (reverse happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_392 = happySpecReduce_1 106# happyReduction_392-happyReduction_392 happy_x_1- = case happyOut126 happy_x_1 of { happy_var_1 -> - happyIn112- (reverse happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_393 = happySpecReduce_1 107# happyReduction_393-happyReduction_393 happy_x_1- = case happyOut127 happy_x_1 of { happy_var_1 -> - happyIn113- (reverse happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_394 = happySpecReduce_1 108# happyReduction_394-happyReduction_394 happy_x_1- = case happyOut128 happy_x_1 of { happy_var_1 -> - happyIn114- (reverse happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_395 = happySpecReduce_1 109# happyReduction_395-happyReduction_395 happy_x_1- = case happyOut129 happy_x_1 of { happy_var_1 -> - happyIn115- (reverse happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_396 = happySpecReduce_1 110# happyReduction_396-happyReduction_396 happy_x_1- = case happyOut130 happy_x_1 of { happy_var_1 -> - happyIn116- (reverse happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_397 = happySpecReduce_1 111# happyReduction_397-happyReduction_397 happy_x_1- = case happyOut131 happy_x_1 of { happy_var_1 -> - happyIn117- (reverse happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_398 = happySpecReduce_1 112# happyReduction_398-happyReduction_398 happy_x_1- = case happyOutTok happy_x_1 of { (Lexeme _ (TKeyword (asAlign -> Just happy_var_1))) -> - happyIn118- (Just happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_399 = happySpecReduce_0 112# happyReduction_399-happyReduction_399 = happyIn118- (Nothing- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_400 = happySpecReduce_1 113# happyReduction_400-happyReduction_400 happy_x_1- = case happyOut8 happy_x_1 of { happy_var_1 -> - happyIn119- (Just happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_401 = happySpecReduce_0 113# happyReduction_401-happyReduction_401 = happyIn119- (Nothing- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_402 = happySpecReduce_1 114# happyReduction_402-happyReduction_402 happy_x_1- = case happyOut10 happy_x_1 of { happy_var_1 -> - happyIn120- (Just happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_403 = happySpecReduce_0 114# happyReduction_403-happyReduction_403 = happyIn120- (Nothing- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_404 = happySpecReduce_1 115# happyReduction_404-happyReduction_404 happy_x_1- = case happyOutTok happy_x_1 of { (Lexeme _ (TKeyword (asOffset -> Just happy_var_1))) -> - happyIn121- (Just happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_405 = happySpecReduce_0 115# happyReduction_405-happyReduction_405 = happyIn121- (Nothing- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_406 = happySpecReduce_1 116# happyReduction_406-happyReduction_406 happy_x_1- = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn122- (Just happy_var_1- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_407 = happySpecReduce_0 116# happyReduction_407-happyReduction_407 = happyIn122- (Nothing- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_408 = happySpecReduce_2 117# happyReduction_408-happyReduction_408 happy_x_2- happy_x_1- = case happyOut123 happy_x_1 of { happy_var_1 -> - case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn123- (happy_var_2 : happy_var_1- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_409 = happySpecReduce_1 117# happyReduction_409-happyReduction_409 happy_x_1- = case happyOut10 happy_x_1 of { happy_var_1 -> - happyIn123- ([happy_var_1]- )}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_410 = happySpecReduce_2 118# happyReduction_410-happyReduction_410 happy_x_2- happy_x_1- = case happyOut124 happy_x_1 of { happy_var_1 -> - case happyOut103 happy_x_2 of { happy_var_2 -> - happyIn124- (happy_var_2 : happy_var_1- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_411 = happySpecReduce_0 118# happyReduction_411-happyReduction_411 = happyIn124- ([]- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_412 = happySpecReduce_2 119# happyReduction_412-happyReduction_412 happy_x_2- happy_x_1- = case happyOut125 happy_x_1 of { happy_var_1 -> - case happyOut47 happy_x_2 of { happy_var_2 -> - happyIn125- (happy_var_2 : happy_var_1- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_413 = happySpecReduce_0 119# happyReduction_413-happyReduction_413 = happyIn125- ([]- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_414 = happySpecReduce_2 120# happyReduction_414-happyReduction_414 happy_x_2- happy_x_1- = case happyOut126 happy_x_1 of { happy_var_1 -> - case happyOut10 happy_x_2 of { happy_var_2 -> - happyIn126- (happy_var_2 : happy_var_1- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_415 = happySpecReduce_0 120# happyReduction_415-happyReduction_415 = happyIn126- ([]- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_416 = happySpecReduce_2 121# happyReduction_416-happyReduction_416 happy_x_2- happy_x_1- = case happyOut127 happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn127- (happy_var_2 : happy_var_1- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_417 = happySpecReduce_0 121# happyReduction_417-happyReduction_417 = happyIn127- ([]- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_418 = happySpecReduce_2 122# happyReduction_418-happyReduction_418 happy_x_2- happy_x_1- = case happyOut128 happy_x_1 of { happy_var_1 -> - case happyOut99 happy_x_2 of { happy_var_2 -> - happyIn128- (happy_var_2 : happy_var_1- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_419 = happySpecReduce_0 122# happyReduction_419-happyReduction_419 = happyIn128- ([]- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_420 = happySpecReduce_2 123# happyReduction_420-happyReduction_420 happy_x_2- happy_x_1- = case happyOut129 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Lexeme _ (TStringLit happy_var_2)) -> - happyIn129- (happy_var_2 : happy_var_1- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_421 = happySpecReduce_0 123# happyReduction_421-happyReduction_421 = happyIn129- ([]- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_422 = happySpecReduce_2 124# happyReduction_422-happyReduction_422 happy_x_2- happy_x_1- = case happyOut130 happy_x_1 of { happy_var_1 -> - case happyOut6 happy_x_2 of { happy_var_2 -> - happyIn130- (happy_var_2 : happy_var_1- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_423 = happySpecReduce_0 124# happyReduction_423-happyReduction_423 = happyIn130- ([]- )--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_424 = happySpecReduce_2 125# happyReduction_424-happyReduction_424 happy_x_2- happy_x_1- = case happyOut131 happy_x_1 of { happy_var_1 -> - case happyOut9 happy_x_2 of { happy_var_2 -> - happyIn131- (happy_var_2 : happy_var_1- )}}--#if __GLASGOW_HASKELL__ >= 710-#endif-happyReduce_425 = happySpecReduce_0 125# happyReduction_425-happyReduction_425 = happyIn131- ([]- )--happyNewToken action sts stk [] =- happyDoAction 222# notHappyAtAll action sts stk []--happyNewToken action sts stk (tk:tks) =- let cont i = happyDoAction i tk action sts stk tks in- case tk of {- Lexeme _ TOpenBracket -> cont 1#;- Lexeme _ TCloseBracket -> cont 2#;- Lexeme _ (TKeyword "func") -> cont 3#;- Lexeme _ (TKeyword "param") -> cont 4#;- Lexeme _ (TKeyword "result") -> cont 5#;- Lexeme _ (TKeyword "i32") -> cont 6#;- Lexeme _ (TKeyword "i64") -> cont 7#;- Lexeme _ (TKeyword "f32") -> cont 8#;- Lexeme _ (TKeyword "f64") -> cont 9#;- Lexeme _ (TKeyword "mut") -> cont 10#;- Lexeme _ (TKeyword "anyfunc") -> cont 11#;- Lexeme _ (TKeyword "type") -> cont 12#;- Lexeme _ (TKeyword "unreachable") -> cont 13#;- Lexeme _ (TKeyword "nop") -> cont 14#;- Lexeme _ (TKeyword "br") -> cont 15#;- Lexeme _ (TKeyword "br_if") -> cont 16#;- Lexeme _ (TKeyword "br_table") -> cont 17#;- Lexeme _ (TKeyword "return") -> cont 18#;- Lexeme _ (TKeyword "call") -> cont 19#;- Lexeme _ (TKeyword "call_indirect") -> cont 20#;- Lexeme _ (TKeyword "drop") -> cont 21#;- Lexeme _ (TKeyword "select") -> cont 22#;- Lexeme _ (TKeyword "get_local") -> cont 23#;- Lexeme _ (TKeyword "set_local") -> cont 24#;- Lexeme _ (TKeyword "tee_local") -> cont 25#;- Lexeme _ (TKeyword "get_global") -> cont 26#;- Lexeme _ (TKeyword "set_global") -> cont 27#;- Lexeme _ (TKeyword "i32.load") -> cont 28#;- Lexeme _ (TKeyword "i64.load") -> cont 29#;- Lexeme _ (TKeyword "f32.load") -> cont 30#;- Lexeme _ (TKeyword "f64.load") -> cont 31#;- Lexeme _ (TKeyword "i32.load8_s") -> cont 32#;- Lexeme _ (TKeyword "i32.load8_u") -> cont 33#;- Lexeme _ (TKeyword "i32.load16_s") -> cont 34#;- Lexeme _ (TKeyword "i32.load16_u") -> cont 35#;- Lexeme _ (TKeyword "i64.load8_s") -> cont 36#;- Lexeme _ (TKeyword "i64.load8_u") -> cont 37#;- Lexeme _ (TKeyword "i64.load16_s") -> cont 38#;- Lexeme _ (TKeyword "i64.load16_u") -> cont 39#;- Lexeme _ (TKeyword "i64.load32_s") -> cont 40#;- Lexeme _ (TKeyword "i64.load32_u") -> cont 41#;- Lexeme _ (TKeyword "i32.store") -> cont 42#;- Lexeme _ (TKeyword "i64.store") -> cont 43#;- Lexeme _ (TKeyword "f32.store") -> cont 44#;- Lexeme _ (TKeyword "f64.store") -> cont 45#;- Lexeme _ (TKeyword "i32.store8") -> cont 46#;- Lexeme _ (TKeyword "i32.store16") -> cont 47#;- Lexeme _ (TKeyword "i64.store8") -> cont 48#;- Lexeme _ (TKeyword "i64.store16") -> cont 49#;- Lexeme _ (TKeyword "i64.store32") -> cont 50#;- Lexeme _ (TKeyword "current_memory") -> cont 51#;- Lexeme _ (TKeyword "grow_memory") -> cont 52#;- Lexeme _ (TKeyword "memory.size") -> cont 53#;- Lexeme _ (TKeyword "memory.grow") -> cont 54#;- Lexeme _ (TKeyword "i32.const") -> cont 55#;- Lexeme _ (TKeyword "i64.const") -> cont 56#;- Lexeme _ (TKeyword "f32.const") -> cont 57#;- Lexeme _ (TKeyword "f64.const") -> cont 58#;- Lexeme _ (TKeyword "i32.clz") -> cont 59#;- Lexeme _ (TKeyword "i32.ctz") -> cont 60#;- Lexeme _ (TKeyword "i32.popcnt") -> cont 61#;- Lexeme _ (TKeyword "i32.add") -> cont 62#;- Lexeme _ (TKeyword "i32.sub") -> cont 63#;- Lexeme _ (TKeyword "i32.mul") -> cont 64#;- Lexeme _ (TKeyword "i32.div_s") -> cont 65#;- Lexeme _ (TKeyword "i32.div_u") -> cont 66#;- Lexeme _ (TKeyword "i32.rem_s") -> cont 67#;- Lexeme _ (TKeyword "i32.rem_u") -> cont 68#;- Lexeme _ (TKeyword "i32.and") -> cont 69#;- Lexeme _ (TKeyword "i32.or") -> cont 70#;- Lexeme _ (TKeyword "i32.xor") -> cont 71#;- Lexeme _ (TKeyword "i32.shl") -> cont 72#;- Lexeme _ (TKeyword "i32.shr_s") -> cont 73#;- Lexeme _ (TKeyword "i32.shr_u") -> cont 74#;- Lexeme _ (TKeyword "i32.rotl") -> cont 75#;- Lexeme _ (TKeyword "i32.rotr") -> cont 76#;- Lexeme _ (TKeyword "i64.clz") -> cont 77#;- Lexeme _ (TKeyword "i64.ctz") -> cont 78#;- Lexeme _ (TKeyword "i64.popcnt") -> cont 79#;- Lexeme _ (TKeyword "i64.add") -> cont 80#;- Lexeme _ (TKeyword "i64.sub") -> cont 81#;- Lexeme _ (TKeyword "i64.mul") -> cont 82#;- Lexeme _ (TKeyword "i64.div_s") -> cont 83#;- Lexeme _ (TKeyword "i64.div_u") -> cont 84#;- Lexeme _ (TKeyword "i64.rem_s") -> cont 85#;- Lexeme _ (TKeyword "i64.rem_u") -> cont 86#;- Lexeme _ (TKeyword "i64.and") -> cont 87#;- Lexeme _ (TKeyword "i64.or") -> cont 88#;- Lexeme _ (TKeyword "i64.xor") -> cont 89#;- Lexeme _ (TKeyword "i64.shl") -> cont 90#;- Lexeme _ (TKeyword "i64.shr_s") -> cont 91#;- Lexeme _ (TKeyword "i64.shr_u") -> cont 92#;- Lexeme _ (TKeyword "i64.rotl") -> cont 93#;- Lexeme _ (TKeyword "i64.rotr") -> cont 94#;- Lexeme _ (TKeyword "f32.abs") -> cont 95#;- Lexeme _ (TKeyword "f32.neg") -> cont 96#;- Lexeme _ (TKeyword "f32.ceil") -> cont 97#;- Lexeme _ (TKeyword "f32.floor") -> cont 98#;- Lexeme _ (TKeyword "f32.trunc") -> cont 99#;- Lexeme _ (TKeyword "f32.nearest") -> cont 100#;- Lexeme _ (TKeyword "f32.sqrt") -> cont 101#;- Lexeme _ (TKeyword "f32.add") -> cont 102#;- Lexeme _ (TKeyword "f32.sub") -> cont 103#;- Lexeme _ (TKeyword "f32.mul") -> cont 104#;- Lexeme _ (TKeyword "f32.div") -> cont 105#;- Lexeme _ (TKeyword "f32.min") -> cont 106#;- Lexeme _ (TKeyword "f32.max") -> cont 107#;- Lexeme _ (TKeyword "f32.copysign") -> cont 108#;- Lexeme _ (TKeyword "f64.abs") -> cont 109#;- Lexeme _ (TKeyword "f64.neg") -> cont 110#;- Lexeme _ (TKeyword "f64.ceil") -> cont 111#;- Lexeme _ (TKeyword "f64.floor") -> cont 112#;- Lexeme _ (TKeyword "f64.trunc") -> cont 113#;- Lexeme _ (TKeyword "f64.nearest") -> cont 114#;- Lexeme _ (TKeyword "f64.sqrt") -> cont 115#;- Lexeme _ (TKeyword "f64.add") -> cont 116#;- Lexeme _ (TKeyword "f64.sub") -> cont 117#;- Lexeme _ (TKeyword "f64.mul") -> cont 118#;- Lexeme _ (TKeyword "f64.div") -> cont 119#;- Lexeme _ (TKeyword "f64.min") -> cont 120#;- Lexeme _ (TKeyword "f64.max") -> cont 121#;- Lexeme _ (TKeyword "f64.copysign") -> cont 122#;- Lexeme _ (TKeyword "i32.eqz") -> cont 123#;- Lexeme _ (TKeyword "i32.eq") -> cont 124#;- Lexeme _ (TKeyword "i32.ne") -> cont 125#;- Lexeme _ (TKeyword "i32.lt_s") -> cont 126#;- Lexeme _ (TKeyword "i32.lt_u") -> cont 127#;- Lexeme _ (TKeyword "i32.gt_s") -> cont 128#;- Lexeme _ (TKeyword "i32.gt_u") -> cont 129#;- Lexeme _ (TKeyword "i32.le_s") -> cont 130#;- Lexeme _ (TKeyword "i32.le_u") -> cont 131#;- Lexeme _ (TKeyword "i32.ge_s") -> cont 132#;- Lexeme _ (TKeyword "i32.ge_u") -> cont 133#;- Lexeme _ (TKeyword "i64.eqz") -> cont 134#;- Lexeme _ (TKeyword "i64.eq") -> cont 135#;- Lexeme _ (TKeyword "i64.ne") -> cont 136#;- Lexeme _ (TKeyword "i64.lt_s") -> cont 137#;- Lexeme _ (TKeyword "i64.lt_u") -> cont 138#;- Lexeme _ (TKeyword "i64.gt_s") -> cont 139#;- Lexeme _ (TKeyword "i64.gt_u") -> cont 140#;- Lexeme _ (TKeyword "i64.le_s") -> cont 141#;- Lexeme _ (TKeyword "i64.le_u") -> cont 142#;- Lexeme _ (TKeyword "i64.ge_s") -> cont 143#;- Lexeme _ (TKeyword "i64.ge_u") -> cont 144#;- Lexeme _ (TKeyword "f32.eq") -> cont 145#;- Lexeme _ (TKeyword "f32.ne") -> cont 146#;- Lexeme _ (TKeyword "f32.lt") -> cont 147#;- Lexeme _ (TKeyword "f32.gt") -> cont 148#;- Lexeme _ (TKeyword "f32.le") -> cont 149#;- Lexeme _ (TKeyword "f32.ge") -> cont 150#;- Lexeme _ (TKeyword "f64.eq") -> cont 151#;- Lexeme _ (TKeyword "f64.ne") -> cont 152#;- Lexeme _ (TKeyword "f64.lt") -> cont 153#;- Lexeme _ (TKeyword "f64.gt") -> cont 154#;- Lexeme _ (TKeyword "f64.le") -> cont 155#;- Lexeme _ (TKeyword "f64.ge") -> cont 156#;- Lexeme _ (TKeyword "i32.wrap/i64") -> cont 157#;- Lexeme _ (TKeyword "i32.trunc_s/f32") -> cont 158#;- Lexeme _ (TKeyword "i32.trunc_u/f32") -> cont 159#;- Lexeme _ (TKeyword "i32.trunc_s/f64") -> cont 160#;- Lexeme _ (TKeyword "i32.trunc_u/f64") -> cont 161#;- Lexeme _ (TKeyword "i64.extend_s/i32") -> cont 162#;- Lexeme _ (TKeyword "i64.extend_u/i32") -> cont 163#;- Lexeme _ (TKeyword "i64.trunc_s/f32") -> cont 164#;- Lexeme _ (TKeyword "i64.trunc_u/f32") -> cont 165#;- Lexeme _ (TKeyword "i64.trunc_s/f64") -> cont 166#;- Lexeme _ (TKeyword "i64.trunc_u/f64") -> cont 167#;- Lexeme _ (TKeyword "f32.convert_s/i32") -> cont 168#;- Lexeme _ (TKeyword "f32.convert_u/i32") -> cont 169#;- Lexeme _ (TKeyword "f32.convert_s/i64") -> cont 170#;- Lexeme _ (TKeyword "f32.convert_u/i64") -> cont 171#;- Lexeme _ (TKeyword "f32.demote/f64") -> cont 172#;- Lexeme _ (TKeyword "f64.convert_s/i32") -> cont 173#;- Lexeme _ (TKeyword "f64.convert_u/i32") -> cont 174#;- Lexeme _ (TKeyword "f64.convert_s/i64") -> cont 175#;- Lexeme _ (TKeyword "f64.convert_u/i64") -> cont 176#;- Lexeme _ (TKeyword "f64.promote/f32") -> cont 177#;- Lexeme _ (TKeyword "i32.reinterpret/f32") -> cont 178#;- Lexeme _ (TKeyword "i64.reinterpret/f64") -> cont 179#;- Lexeme _ (TKeyword "f32.reinterpret/i32") -> cont 180#;- Lexeme _ (TKeyword "f64.reinterpret/i64") -> cont 181#;- Lexeme _ (TKeyword "block") -> cont 182#;- Lexeme _ (TKeyword "loop") -> cont 183#;- Lexeme _ (TKeyword "if") -> cont 184#;- Lexeme _ (TKeyword "else") -> cont 185#;- Lexeme _ (TKeyword "end") -> cont 186#;- Lexeme _ (TKeyword "then") -> cont 187#;- Lexeme _ (TKeyword "table") -> cont 188#;- Lexeme _ (TKeyword "memory") -> cont 189#;- Lexeme _ (TKeyword "global") -> cont 190#;- Lexeme _ (TKeyword "import") -> cont 191#;- Lexeme _ (TKeyword "export") -> cont 192#;- Lexeme _ (TKeyword "local") -> cont 193#;- Lexeme _ (TKeyword "elem") -> cont 194#;- Lexeme _ (TKeyword "data") -> cont 195#;- Lexeme _ (TKeyword "offset") -> cont 196#;- Lexeme _ (TKeyword "start") -> cont 197#;- Lexeme _ (TKeyword "module") -> cont 198#;- Lexeme _ (TKeyword "binary") -> cont 199#;- Lexeme _ (TKeyword "quote") -> cont 200#;- Lexeme _ (TKeyword "register") -> cont 201#;- Lexeme _ (TKeyword "invoke") -> cont 202#;- Lexeme _ (TKeyword "get") -> cont 203#;- Lexeme _ (TKeyword "assert_return") -> cont 204#;- Lexeme _ (TKeyword "assert_return_canonical_nan") -> cont 205#;- Lexeme _ (TKeyword "assert_return_arithmetic_nan") -> cont 206#;- Lexeme _ (TKeyword "assert_trap") -> cont 207#;- Lexeme _ (TKeyword "assert_malformed") -> cont 208#;- Lexeme _ (TKeyword "assert_invalid") -> cont 209#;- Lexeme _ (TKeyword "assert_unlinkable") -> cont 210#;- Lexeme _ (TKeyword "assert_exhaustion") -> cont 211#;- Lexeme _ (TKeyword "script") -> cont 212#;- Lexeme _ (TKeyword "input") -> cont 213#;- Lexeme _ (TKeyword "output") -> cont 214#;- Lexeme _ (TId happy_dollar_dollar) -> cont 215#;- Lexeme _ (TIntLit happy_dollar_dollar) -> cont 216#;- Lexeme _ (TFloatLit happy_dollar_dollar) -> cont 217#;- Lexeme _ (TKeyword (asOffset -> Just happy_dollar_dollar)) -> cont 218#;- Lexeme _ (TKeyword (asAlign -> Just happy_dollar_dollar)) -> cont 219#;- Lexeme _ (TStringLit happy_dollar_dollar) -> cont 220#;- Lexeme _ EOF -> cont 221#;- _ -> happyError' ((tk:tks), [])- }--happyError_ explist 222# tk tks = happyError' (tks, explist)-happyError_ explist _ tk tks = happyError' ((tk:tks), explist)--happyThen :: () => Either String a -> (a -> Either String b) -> Either String b-happyThen = (>>=)-happyReturn :: () => a -> Either String a-happyReturn = (return)-happyThen1 m k tks = (>>=) m (\a -> k a tks)-happyReturn1 :: () => a -> b -> Either String a-happyReturn1 = \a tks -> (return) a-happyError' :: () => ([(Lexeme)], [String]) -> Either String a-happyError' = (\(tokens, _) -> happyError tokens)-parseModule tks = happySomeParser where- happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut101 x))--parseModuleFields tks = happySomeParser where- happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut100 x))--parseScript tks = happySomeParser where- happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (happyOut102 x))--happySeq = happyDontSeq----- partial function by intention-prependFuncParams :: [ParamType] -> Function -> Function-prependFuncParams prep f@(Function { funcType = AnonimousTypeUse ft }) =- f { funcType = AnonimousTypeUse $ ft { params = prep ++ params ft } }--prependFuncResults :: [ValueType] -> Function -> Function-prependFuncResults prep f@(Function { funcType = AnonimousTypeUse ft }) =- f { funcType = AnonimousTypeUse $ ft { results = prep ++ results ft } }--mergeFuncType :: FuncType -> FuncType -> FuncType-mergeFuncType (FuncType lps lrs) (FuncType rps rrs) = FuncType (lps ++ rps) (lrs ++ rrs)--matchIdents :: Maybe Ident -> Maybe Ident -> Bool-matchIdents Nothing _ = True-matchIdents _ Nothing = True-matchIdents a b = a == b--asOffset :: LBS.ByteString -> Maybe Natural-asOffset str = do- num <- TL.stripPrefix "offset=" $ TLEncoding.decodeUtf8 str- fromIntegral . fst <$> eitherToMaybe (TLRead.decimal num)--asAlign :: LBS.ByteString -> Maybe Natural-asAlign str = do- num <- TL.stripPrefix "align=" $ TLEncoding.decodeUtf8 str- fromIntegral . fst <$> eitherToMaybe (TLRead.decimal num)--parseMemArg :: Natural -> Maybe Natural -> Maybe Natural -> Either String MemArg-parseMemArg defAlign optOffset optAlign = do- let offset = fromMaybe 0 optOffset- let parsedAlign = fromIntegral $ fromMaybe defAlign optAlign- if parsedAlign == 0 then Left "alignment" else return ()- let align = fromIntegral $ round $ logBase 2 parsedAlign- if 2 ^ align /= parsedAlign then Left "alignment" else return ()- if offset >= 2 ^ 32 || align >= 2 ^ 32- then Left "u32 is out of boundaries"- else return $ MemArg offset align--eitherToMaybe :: Either left right -> Maybe right-eitherToMaybe = either (const Nothing) Just--integerToWord32 :: Integer -> Word32-integerToWord32 i- | i >= 0 && i <= 2 ^ 32 = fromIntegral i- | i < 0 && i >= -(2 ^ 31) = 0xFFFFFFFF - (fromIntegral (abs i)) + 1- | otherwise = error "I32 is out of bounds."--integerToWord64 :: Integer -> Word64-integerToWord64 i- | i >= 0 && i <= 2 ^ 64 = fromIntegral i- | i < 0 && i >= -(2 ^ 63) = 0xFFFFFFFFFFFFFFFF - (fromIntegral (abs i)) + 1- | otherwise = error "I64 is out of bounds."--data FuncType = FuncType { params :: [ParamType], results :: [ValueType] } deriving (Show, Eq, Generic, NFData)--emptyFuncType :: FuncType-emptyFuncType = FuncType [] []--data ParamType = ParamType {- ident :: Maybe Ident,- paramType :: ValueType- } deriving (Show, Eq, Generic, NFData)--newtype Ident = Ident TL.Text deriving (Show, Eq, Generic, NFData)--data Index = Named Ident | Index Natural deriving (Show, Eq, Generic, NFData)--type LabelIndex = Index-type FuncIndex = Index-type TypeIndex = Index-type LocalIndex = Index-type GlobalIndex = Index-type TableIndex = Index-type MemoryIndex = Index--data PlainInstr =- -- Control instructions- Unreachable- | Nop- | Br LabelIndex- | BrIf LabelIndex- | BrTable [LabelIndex] LabelIndex- | Return- | Call FuncIndex- | CallIndirect TypeUse- -- Parametric instructions- | Drop- | Select- -- Variable instructions- | GetLocal LocalIndex- | SetLocal LocalIndex- | TeeLocal LocalIndex- | GetGlobal GlobalIndex- | SetGlobal GlobalIndex- -- Memory instructions- | I32Load MemArg- | I64Load MemArg- | F32Load MemArg- | F64Load MemArg- | I32Load8S MemArg- | I32Load8U MemArg- | I32Load16S MemArg- | I32Load16U MemArg- | I64Load8S MemArg- | I64Load8U MemArg- | I64Load16S MemArg- | I64Load16U MemArg- | I64Load32S MemArg- | I64Load32U MemArg- | I32Store MemArg- | I64Store MemArg- | F32Store MemArg- | F64Store MemArg- | I32Store8 MemArg- | I32Store16 MemArg- | I64Store8 MemArg- | I64Store16 MemArg- | I64Store32 MemArg- | CurrentMemory- | GrowMemory- -- Numeric instructions- | I32Const Integer- | I64Const Integer- | F32Const Float- | F64Const Double- | IUnOp BitSize IUnOp- | IBinOp BitSize IBinOp- | I32Eqz- | I64Eqz- | IRelOp BitSize IRelOp- | FUnOp BitSize FUnOp- | FBinOp BitSize FBinOp- | FRelOp BitSize FRelOp- | I32WrapI64- | ITruncFU {- Int Size -} BitSize {- Float Size -} BitSize- | ITruncFS {- Int Size -} BitSize {- Float Size -} BitSize- | I64ExtendSI32- | I64ExtendUI32- | FConvertIU {- Float Size -} BitSize {- Int Size -} BitSize- | FConvertIS {- Float Size -} BitSize {- Int Size -} BitSize- | F32DemoteF64- | F64PromoteF32- | IReinterpretF BitSize- | FReinterpretI BitSize- deriving (Show, Eq, Generic, NFData)--data TypeDef = TypeDef (Maybe Ident) FuncType deriving (Show, Eq, Generic, NFData)--data TypeUse =- IndexedTypeUse TypeIndex (Maybe FuncType)- | AnonimousTypeUse FuncType- deriving (Show, Eq, Generic, NFData)--data Instruction =- PlainInstr PlainInstr- | BlockInstr {- label :: Maybe Ident,- resultType :: [ValueType],- body :: [Instruction]- }- | LoopInstr {- label :: Maybe Ident,- resultType :: [ValueType],- body :: [Instruction]- }- | IfInstr {- label :: Maybe Ident,- resultType :: [ValueType],- trueBranch :: [Instruction],- falseBranch :: [Instruction]- }- deriving (Show, Eq, Generic, NFData)--data Import = Import {- reExportAs :: [TL.Text],- sourceModule :: TL.Text,- name :: TL.Text,- desc :: ImportDesc- } deriving (Show, Eq, Generic, NFData)--data ImportDesc =- ImportFunc (Maybe Ident) TypeUse- | ImportTable (Maybe Ident) TableType- | ImportMemory (Maybe Ident) Limit- | ImportGlobal (Maybe Ident) GlobalType- deriving (Show, Eq, Generic, NFData)--data LocalType = LocalType {- ident :: Maybe Ident,- localType :: ValueType- } deriving (Show, Eq, Generic, NFData)--data Function = Function {- exportFuncAs :: [TL.Text],- ident :: Maybe Ident,- funcType :: TypeUse,- locals :: [LocalType],- body :: [Instruction]- }- deriving (Show, Eq, Generic, NFData)--emptyFunction :: Function-emptyFunction =- Function {- exportFuncAs = [],- ident = Nothing,- funcType = AnonimousTypeUse emptyFuncType,- locals = [],- body = []- }--data Global = Global {- exportGlobalAs :: [TL.Text],- ident :: Maybe Ident,- globalType :: GlobalType,- initializer :: [Instruction]- }- deriving (Show, Eq, Generic, NFData)--data Memory = Memory [TL.Text] (Maybe Ident) Limit deriving (Show, Eq, Generic, NFData)--data Table = Table [TL.Text] (Maybe Ident) TableType deriving (Show, Eq, Generic, NFData)--data ExportDesc =- ExportFunc FuncIndex- | ExportTable TableIndex- | ExportMemory MemoryIndex- | ExportGlobal GlobalIndex- deriving (Show, Eq, Generic, NFData)--data Export = Export {- name :: TL.Text,- desc :: ExportDesc- }- deriving (Show, Eq, Generic, NFData)--data StartFunction = StartFunction FuncIndex deriving (Show, Eq, Generic, NFData)--data ElemSegment = ElemSegment {- tableIndex :: TableIndex,- offset :: [Instruction],- funcIndexes :: [FuncIndex]- }- deriving (Show, Eq, Generic, NFData)--data DataSegment = DataSegment {- memIndex :: MemoryIndex,- offset :: [Instruction],- datastring :: LBS.ByteString- }- deriving (Show, Eq, Generic, NFData)--data ModuleField =- MFType TypeDef- | MFImport Import- | MFFunc Function- | MFTable Table- | MFMem Memory- | MFGlobal Global- | MFExport Export- | MFStart StartFunction- | MFElem ElemSegment- | MFData DataSegment- deriving(Show, Eq, Generic, NFData)--happyError (Lexeme _ EOF : []) = Left $ "Error occuried during parsing phase at the end of file"-happyError (Lexeme Nothing tok : tokens) = Left $ "Error occuried during parsing phase at the end of file"-happyError (Lexeme (Just (AlexPn abs line col)) tok : tokens) = Left $- "Error occuried during parsing phase. " ++- "Line " ++ show line ++ ", " ++- "Column " ++ show col ++ ", " ++- "Token " ++ show tok ++ ". " ++- "Token lookahed: " ++ show (take 3 tokens)--data Module = Module {- types :: [TypeDef],- functions :: [Function],- tables :: [Table],- mems :: [Memory],- globals :: [Global],- elems :: [ElemSegment],- datas :: [DataSegment],- start :: Maybe StartFunction,- imports :: [Import],- exports :: [Export]-} deriving (Show, Eq)--type Script = [Command]--data ModuleDef- = RawModDef (Maybe Ident) S.Module- | TextModDef (Maybe Ident) TL.Text- | BinaryModDef (Maybe Ident) LBS.ByteString- deriving (Show, Eq)--data Command- = ModuleDef ModuleDef- | Register TL.Text (Maybe Ident)- | Action Action- | Assertion Assertion- | Meta Meta- deriving (Show, Eq)--data Action- = Invoke (Maybe Ident) TL.Text [S.Expression]- | Get (Maybe Ident) TL.Text- deriving (Show, Eq)--type FailureString = TL.Text--data Assertion- = AssertReturn Action [S.Expression]- | AssertReturnCanonicalNaN Action- | AssertReturnArithmeticNaN Action- | AssertTrap (Either Action ModuleDef) FailureString- | AssertMalformed ModuleDef FailureString- | AssertInvalid ModuleDef FailureString- | AssertUnlinkable ModuleDef FailureString- | AssertExhaustion Action FailureString- deriving (Show, Eq)--data Meta- = Script (Maybe Ident) Script- | Input (Maybe Ident) TL.Text- | Output (Maybe Ident) TL.Text- deriving (Show, Eq)--type Labels = [Maybe Ident]--data FunCtx = FunCtx {- ctxMod :: Module,- ctxLabels :: Labels,- ctxLocals :: [LocalType],- ctxParams :: [ParamType]-} deriving (Eq, Show)--constInstructionToValue :: Instruction -> S.Instruction Natural-constInstructionToValue (PlainInstr (I32Const v)) = S.I32Const $ integerToWord32 v-constInstructionToValue (PlainInstr (F32Const v)) = S.F32Const v-constInstructionToValue (PlainInstr (I64Const v)) = S.I64Const $ integerToWord64 v-constInstructionToValue (PlainInstr (F64Const v)) = S.F64Const v-constInstructionToValue _ = error "Only const instructions supported as arguments for actions"--desugarize :: [ModuleField] -> Either String S.Module-desugarize fields = do- checkImportsOrder fields- let mod = Module {- types = reverse $ foldl' extractTypeDef (reverse $ explicitTypeDefs fields) fields,- functions = extract extractFunction fields,- tables = extract extractTable fields,- imports = extract extractImport fields,- mems = extract extractMemory fields,- globals = extract extractGlobal fields,- elems = extract extractElemSegment fields,- datas = extract extractDataSegment fields,- start = extractStart fields,- exports = []- }- funs <- mapM (synFunctionToStruct mod) $ functions mod- elements <- mapM (synElemToStruct mod) $ elems mod- segments <- mapM (synDataToStruct mod) $ datas mod- globs <- mapM (synGlobalToStruct mod) $ globals mod- return S.Module {- S.types = map synTypeDefToStruct $ types mod,- S.functions = funs,- S.tables = map synTableToStruct $ tables mod,- S.imports = map (synImportToStruct $ types mod) $ imports mod,- S.elems = elements,- S.datas = segments,- S.mems = map synMemoryToStruct $ mems mod,- S.globals = globs,- S.start = fmap (synStartToStruct mod) $ start mod,- S.exports = synExportsToStruct mod $ extractExports mod fields- }- where- -- utils- extract :: ([a] -> ModuleField -> [a]) -> [ModuleField] -> [a]- extract extractor = reverse . foldl' extractor []-- findWithIndex :: (a -> Bool) -> [a] -> Maybe (a, Int)- findWithIndex pred l = find (pred . fst) $ zip l [0..]-- -- types- synTypeDefToStruct :: TypeDef -> S.FuncType- synTypeDefToStruct (TypeDef _ FuncType { params, results }) =- S.FuncType (map paramType params) results-- explicitTypeDefs :: [ModuleField] -> [TypeDef]- explicitTypeDefs = map (\(MFType def) -> def) . filter isTypeDef- where- isTypeDef (MFType _) = True- isTypeDef _ = False- - checkImportsOrder :: [ModuleField] -> Either String ()- checkImportsOrder fields = foldM checkDef False fields >> return ()- where- checkDef nonImportOccured (MFImport _) =- if nonImportOccured- then Left "Import sections have to be before any definition"- else Right False- checkDef _ (MFFunc _) = return True- checkDef _ (MFGlobal _) = return True- checkDef _ (MFMem _) = return True- checkDef _ (MFTable _) = return True- checkDef nonImportOccured _ = return nonImportOccured-- extractTypeDef :: [TypeDef] -> ModuleField -> [TypeDef]- extractTypeDef defs (MFType _) = defs -- should be extracted before implicit defs- extractTypeDef defs (MFImport Import { desc = ImportFunc _ typeUse }) =- matchTypeUse defs typeUse- extractTypeDef defs (MFFunc Function { funcType, body }) =- extractTypeDefFromInstructions (matchTypeUse defs funcType) body- extractTypeDef defs (MFGlobal Global { initializer }) =- extractTypeDefFromInstructions defs initializer- extractTypeDef defs (MFElem ElemSegment { offset }) =- extractTypeDefFromInstructions defs offset- extractTypeDef defs (MFData DataSegment { offset }) =- extractTypeDefFromInstructions defs offset- extractTypeDef defs _ = defs-- extractTypeDefFromInstructions :: [TypeDef] -> [Instruction] -> [TypeDef]- extractTypeDefFromInstructions = foldl' extractTypeDefFromInstruction-- extractTypeDefFromInstruction :: [TypeDef] -> Instruction -> [TypeDef]- extractTypeDefFromInstruction defs (PlainInstr (CallIndirect typeUse)) =- matchTypeUse defs typeUse- extractTypeDefFromInstruction defs (BlockInstr { body }) =- extractTypeDefFromInstructions defs body- extractTypeDefFromInstruction defs (LoopInstr { body }) =- extractTypeDefFromInstructions defs body- extractTypeDefFromInstruction defs (IfInstr { trueBranch, falseBranch }) =- extractTypeDefFromInstructions defs $ trueBranch ++ falseBranch- extractTypeDefFromInstruction defs _ = defs-- funcTypesEq :: FuncType -> FuncType -> Bool- funcTypesEq l r =- let paramTypes = map paramType . params in- paramTypes l == paramTypes r && results l == results r-- matchTypeFunc :: FuncType -> TypeDef -> Bool- matchTypeFunc funcType (TypeDef _ ft) = funcTypesEq ft funcType-- matchTypeUse :: [TypeDef] -> TypeUse -> [TypeDef]- matchTypeUse defs (AnonimousTypeUse funcType) =- if any (matchTypeFunc funcType) defs- then defs- else (TypeDef Nothing funcType) : defs- matchTypeUse defs _ = defs-- getTypeIndex :: [TypeDef] -> TypeUse -> Maybe Natural- getTypeIndex defs (AnonimousTypeUse funcType) =- fromIntegral <$> findIndex (matchTypeFunc funcType) defs- getTypeIndex defs (IndexedTypeUse (Named ident) (Just funcType)) = do- (def, idx) <- findWithIndex (\(TypeDef i _) -> i == Just ident) defs- guard $ matchTypeFunc funcType def- return $ fromIntegral idx- getTypeIndex defs (IndexedTypeUse (Named ident) Nothing) =- fromIntegral <$> findIndex (\(TypeDef i _) -> i == Just ident) defs- getTypeIndex defs (IndexedTypeUse (Index n) (Just funcType)) = do- guard $ matchTypeFunc funcType $ defs !! fromIntegral n- return n- getTypeIndex defs (IndexedTypeUse (Index n) Nothing) = return n- - -- imports- synImportToStruct :: [TypeDef] -> Import -> S.Import- synImportToStruct defs (Import _ mod name (ImportFunc _ typeUse)) =- case getTypeIndex defs typeUse of- Just idx -> S.Import mod name $ S.ImportFunc idx- Nothing -> error $ "cannot find type index for function import: " ++ show typeUse- synImportToStruct _ (Import _ mod name (ImportTable _ tableType)) =- S.Import mod name $ S.ImportTable tableType- synImportToStruct _ (Import _ mod name (ImportMemory _ limit)) =- S.Import mod name $ S.ImportMemory limit- synImportToStruct _ (Import _ mod name (ImportGlobal _ globalType)) =- S.Import mod name $ S.ImportGlobal globalType-- extractImport :: [Import] -> ModuleField -> [Import]- extractImport imports (MFImport imp) = imp : imports- extractImport imports _ = imports-- unwrapLabel ctx labelIdx =- case getLabelIdx ctx labelIdx of- Just i -> Right i- Nothing -> Left "unknown label"-- -- functions- synInstrToStruct :: FunCtx -> Instruction -> Either String (S.Instruction Natural)- synInstrToStruct _ (PlainInstr Unreachable) = return S.Unreachable- synInstrToStruct _ (PlainInstr Nop) = return S.Nop- synInstrToStruct ctx (PlainInstr (Br labelIdx)) =- S.Br <$> unwrapLabel ctx labelIdx- synInstrToStruct ctx (PlainInstr (BrIf labelIdx)) =- S.BrIf <$> unwrapLabel ctx labelIdx- synInstrToStruct ctx (PlainInstr (BrTable lbls lbl)) = do- labels <- mapM (unwrapLabel ctx) lbls- S.BrTable labels <$> unwrapLabel ctx lbl- synInstrToStruct _ (PlainInstr Return) = return S.Return- synInstrToStruct FunCtx { ctxMod } (PlainInstr (Call funIdx)) =- case getFuncIndex ctxMod funIdx of- Just idx -> return $ S.Call idx- Nothing -> Left "unknown function"- synInstrToStruct FunCtx { ctxMod = Module { types } } (PlainInstr (CallIndirect typeUse)) =- case getTypeIndex types typeUse of- Just idx -> return $ S.CallIndirect idx- Nothing -> Left "unknown type"- synInstrToStruct _ (PlainInstr Drop) = return $ S.Drop- synInstrToStruct _ (PlainInstr Select) = return $ S.Select- synInstrToStruct ctx (PlainInstr (GetLocal localIdx)) =- case getLocalIndex ctx localIdx of- Just idx -> return $ S.GetLocal idx- Nothing -> Left "unknown local"- synInstrToStruct ctx (PlainInstr (SetLocal localIdx)) =- case getLocalIndex ctx localIdx of- Just idx -> return $ S.SetLocal idx- Nothing -> Left "unknown local"- synInstrToStruct ctx (PlainInstr (TeeLocal localIdx)) =- case getLocalIndex ctx localIdx of- Just idx -> return $ S.TeeLocal idx- Nothing -> Left "unknown local"- synInstrToStruct FunCtx { ctxMod } (PlainInstr (GetGlobal globalIdx)) =- case getGlobalIndex ctxMod globalIdx of- Just idx -> return $ S.GetGlobal idx- Nothing -> Left "unknown global"- synInstrToStruct FunCtx { ctxMod } (PlainInstr (SetGlobal globalIdx)) =- case getGlobalIndex ctxMod globalIdx of- Just idx -> return $ S.SetGlobal idx- Nothing -> Left "unknown global"- synInstrToStruct _ (PlainInstr (I32Load memArg)) = return $ S.I32Load memArg- synInstrToStruct _ (PlainInstr (I64Load memArg)) = return $ S.I64Load memArg- synInstrToStruct _ (PlainInstr (F32Load memArg)) = return $ S.F32Load memArg- synInstrToStruct _ (PlainInstr (F64Load memArg)) = return $ S.F64Load memArg- synInstrToStruct _ (PlainInstr (I32Load8S memArg)) = return $ S.I32Load8S memArg- synInstrToStruct _ (PlainInstr (I32Load8U memArg)) = return $ S.I32Load8U memArg- synInstrToStruct _ (PlainInstr (I32Load16S memArg)) = return $ S.I32Load16S memArg- synInstrToStruct _ (PlainInstr (I32Load16U memArg)) = return $ S.I32Load16U memArg- synInstrToStruct _ (PlainInstr (I64Load8S memArg)) = return $ S.I64Load8S memArg- synInstrToStruct _ (PlainInstr (I64Load8U memArg)) = return $ S.I64Load8U memArg- synInstrToStruct _ (PlainInstr (I64Load16S memArg)) = return $ S.I64Load16S memArg- synInstrToStruct _ (PlainInstr (I64Load16U memArg)) = return $ S.I64Load16U memArg- synInstrToStruct _ (PlainInstr (I64Load32S memArg)) = return $ S.I64Load32S memArg- synInstrToStruct _ (PlainInstr (I64Load32U memArg)) = return $ S.I64Load32U memArg- synInstrToStruct _ (PlainInstr (I32Store memArg)) = return $ S.I32Store memArg- synInstrToStruct _ (PlainInstr (I64Store memArg)) = return $ S.I64Store memArg- synInstrToStruct _ (PlainInstr (F32Store memArg)) = return $ S.F32Store memArg- synInstrToStruct _ (PlainInstr (F64Store memArg)) = return $ S.F64Store memArg- synInstrToStruct _ (PlainInstr (I32Store8 memArg)) = return $ S.I32Store8 memArg- synInstrToStruct _ (PlainInstr (I32Store16 memArg)) = return $ S.I32Store16 memArg- synInstrToStruct _ (PlainInstr (I64Store8 memArg)) = return $ S.I64Store8 memArg- synInstrToStruct _ (PlainInstr (I64Store16 memArg)) = return $ S.I64Store16 memArg- synInstrToStruct _ (PlainInstr (I64Store32 memArg)) = return $ S.I64Store32 memArg- synInstrToStruct _ (PlainInstr CurrentMemory) = return $ S.CurrentMemory- synInstrToStruct _ (PlainInstr GrowMemory) = return $ S.GrowMemory- synInstrToStruct _ (PlainInstr (I32Const val)) = return $ S.I32Const $ integerToWord32 val- synInstrToStruct _ (PlainInstr (I64Const val)) = return $ S.I64Const $ integerToWord64 val- synInstrToStruct _ (PlainInstr (F32Const val)) = return $ S.F32Const val- synInstrToStruct _ (PlainInstr (F64Const val)) = return $ S.F64Const val- synInstrToStruct _ (PlainInstr (IUnOp sz op)) = return $ S.IUnOp sz op- synInstrToStruct _ (PlainInstr (IBinOp sz op)) = return $ S.IBinOp sz op- synInstrToStruct _ (PlainInstr I32Eqz) = return $ S.I32Eqz- synInstrToStruct _ (PlainInstr I64Eqz) = return $ S.I64Eqz- synInstrToStruct _ (PlainInstr (IRelOp sz op)) = return $ S.IRelOp sz op- synInstrToStruct _ (PlainInstr (FUnOp sz op)) = return $ S.FUnOp sz op- synInstrToStruct _ (PlainInstr (FBinOp sz op)) = return $ S.FBinOp sz op- synInstrToStruct _ (PlainInstr (FRelOp sz op)) = return $ S.FRelOp sz op- synInstrToStruct _ (PlainInstr I32WrapI64) = return $ S.I32WrapI64- synInstrToStruct _ (PlainInstr (ITruncFU sz sz')) = return $ S.ITruncFU sz sz'- synInstrToStruct _ (PlainInstr (ITruncFS sz sz')) = return $ S.ITruncFS sz sz'- synInstrToStruct _ (PlainInstr I64ExtendSI32) = return $ S.I64ExtendSI32- synInstrToStruct _ (PlainInstr I64ExtendUI32) = return $ S.I64ExtendUI32- synInstrToStruct _ (PlainInstr (FConvertIU sz sz')) = return $ S.FConvertIU sz sz'- synInstrToStruct _ (PlainInstr (FConvertIS sz sz')) = return $ S.FConvertIS sz sz'- synInstrToStruct _ (PlainInstr F32DemoteF64) = return $ S.F32DemoteF64- synInstrToStruct _ (PlainInstr F64PromoteF32) = return $ S.F64PromoteF32- synInstrToStruct _ (PlainInstr (IReinterpretF sz)) = return $ S.IReinterpretF sz- synInstrToStruct _ (PlainInstr (FReinterpretI sz)) = return $ S.FReinterpretI sz- synInstrToStruct ctx BlockInstr {label, resultType, body} =- let ctx' = ctx { ctxLabels = label : ctxLabels ctx } in- S.Block resultType <$> mapM (synInstrToStruct ctx') body- synInstrToStruct ctx LoopInstr {label, resultType, body} =- let ctx' = ctx { ctxLabels = label : ctxLabels ctx } in- S.Loop resultType <$> mapM (synInstrToStruct ctx') body- synInstrToStruct ctx IfInstr {label, resultType, trueBranch, falseBranch} = do- let ctx' = ctx { ctxLabels = label : ctxLabels ctx }- trueBranch' <- mapM (synInstrToStruct ctx') trueBranch- falseBranch' <- mapM (synInstrToStruct ctx') falseBranch- return $ S.If resultType trueBranch' falseBranch'- - synFunctionToStruct :: Module -> Function -> Either String S.Function- synFunctionToStruct mod Function { funcType, locals, body } = do- typeIdx <- (- case getTypeIndex (types mod) funcType of- Just idx -> Right idx- Nothing -> Left "Type was not found or type signature doesn't match with type"- )- -- we have to use local func params declaration,- -- coz it can contain own names for them- let- params = case funcType of- IndexedTypeUse _ (Just FuncType { params }) -> params- AnonimousTypeUse FuncType { params } -> params- _ ->- if fromIntegral typeIdx < length (types mod)- then let TypeDef _ FuncType { params } = types mod !! fromIntegral typeIdx in params- else []- let ctx = FunCtx mod [] locals params- instructions <- mapM (synInstrToStruct ctx) body- return S.Function {- S.funcType = typeIdx,- S.localTypes = map localType locals,- S.body = instructions- }-- extractFunction :: [Function] -> ModuleField -> [Function]- extractFunction funcs (MFFunc fun) = fun : funcs- extractFunction funcs _ = funcs-- getLabelIdx :: FunCtx -> LabelIndex -> Maybe Natural- getLabelIdx FunCtx { ctxLabels } (Named id) =- fromIntegral <$> findIndex (\ident -> ident == Just id) ctxLabels- getLabelIdx FunCtx { ctxLabels } (Index idx) =- Just idx- - getLocalIndex :: FunCtx -> LabelIndex -> Maybe Natural- getLocalIndex FunCtx {ctxParams, ctxLocals} (Named id) =- case findIndex (\(ParamType ident _) -> ident == Just id) ctxParams of- Just idx -> return $ fromIntegral idx- Nothing ->- let isIdent (LocalType ident _) = ident == Just id in- fromIntegral . (+ length ctxParams) <$> findIndex isIdent ctxLocals- getLocalIndex FunCtx {ctxParams, ctxLocals} (Index idx) = Just idx- - isFuncImport :: Import -> Bool- isFuncImport Import { desc = ImportFunc _ _ } = True- isFuncImport _ = False-- getFuncIndex :: Module -> FuncIndex -> Maybe Natural- getFuncIndex Module { imports, functions } (Named id) =- let funImports = filter isFuncImport imports in- case findIndex (\(Import { desc = ImportFunc ident _ }) -> ident == Just id) funImports of- Just idx -> return $ fromIntegral idx- Nothing ->- let isIdent (Function { ident }) = ident == Just id in- fromIntegral . (+ length funImports) <$> findIndex isIdent functions- getFuncIndex Module { imports, functions } (Index idx) = Just idx-- -- tables- synTableToStruct :: Table -> S.Table- synTableToStruct (Table _ _ tableType) = S.Table tableType-- extractTable :: [Table] -> ModuleField -> [Table]- extractTable tables (MFTable table) = table : tables- extractTable tables _ = tables-- isTableImport :: Import -> Bool- isTableImport Import { desc = ImportTable _ _ } = True- isTableImport _ = False-- getTableIndex :: Module -> TableIndex -> Maybe Natural- getTableIndex Module { imports, tables } (Named id) =- let tableImports = filter isTableImport imports in- case findIndex (\(Import { desc = ImportTable ident _ }) -> ident == Just id) tableImports of- Just idx -> return $ fromIntegral idx- Nothing ->- let isIdent (Table _ (Just id) _) = True in- fromIntegral . (+ length tableImports) <$> findIndex isIdent tables- getTableIndex Module { imports, tables } (Index idx) = Just idx-- -- memory- synMemoryToStruct :: Memory -> S.Memory- synMemoryToStruct (Memory _ _ limits) = S.Memory limits-- extractMemory :: [Memory] -> ModuleField -> [Memory]- extractMemory mems (MFMem mem) = mem : mems- extractMemory mems _ = mems-- isMemImport :: Import -> Bool- isMemImport Import { desc = ImportMemory _ _ } = True- isMemImport _ = False-- getMemIndex :: Module -> MemoryIndex -> Maybe Natural- getMemIndex Module { imports, mems } (Named id) =- let memImports = filter isMemImport imports in- case findIndex (\(Import { desc = ImportMemory ident _ }) -> ident == Just id) memImports of- Just idx -> return $ fromIntegral idx- Nothing ->- let isIdent (Memory _ (Just id) _) = True in- fromIntegral . (+ length memImports) <$> findIndex isIdent mems- getMemIndex Module { imports, mems } (Index idx) = Just idx-- -- global- synGlobalToStruct :: Module -> Global -> Either String S.Global- synGlobalToStruct mod Global { globalType, initializer } =- let ctx = FunCtx mod [] [] [] in- S.Global globalType <$> mapM (synInstrToStruct ctx) initializer-- extractGlobal :: [Global] -> ModuleField -> [Global]- extractGlobal globals (MFGlobal global) = global : globals- extractGlobal globals _ = globals-- isGlobalImport :: Import -> Bool- isGlobalImport Import { desc = ImportGlobal _ _ } = True- isGlobalImport _ = False-- getGlobalIndex :: Module -> GlobalIndex -> Maybe Natural- getGlobalIndex Module { imports, globals } (Named id) =- let globalImports = filter isGlobalImport imports in- case findIndex (\(Import { desc = ImportGlobal ident _ }) -> ident == Just id) globalImports of- Just idx -> return $ fromIntegral idx- Nothing ->- let isIdent (Global { ident }) = ident == Just id in- fromIntegral . (+ length globalImports) <$> findIndex isIdent globals- getGlobalIndex Module { imports, globals } (Index idx) = Just idx-- -- elem segment- synElemToStruct :: Module -> ElemSegment -> Either String S.ElemSegment- synElemToStruct mod ElemSegment { tableIndex, offset, funcIndexes } =- let ctx = FunCtx mod [] [] [] in- let offsetInstrs = mapM (synInstrToStruct ctx) offset in- let idx = fromJust $ getTableIndex mod tableIndex in- let indexes = map (fromJust . getFuncIndex mod) funcIndexes in- S.ElemSegment idx <$> offsetInstrs <*> return indexes-- extractElemSegment :: [ElemSegment] -> ModuleField -> [ElemSegment]- extractElemSegment elems (MFElem elem) = elem : elems- extractElemSegment elems _ = elems-- -- data segment- synDataToStruct :: Module -> DataSegment -> Either String S.DataSegment- synDataToStruct mod DataSegment { memIndex, offset, datastring } =- let ctx = FunCtx mod [] [] [] in- let offsetInstrs = mapM (synInstrToStruct ctx) offset in- let idx = fromJust $ getMemIndex mod memIndex in- S.DataSegment idx <$> offsetInstrs <*> return datastring-- extractDataSegment :: [DataSegment] -> ModuleField -> [DataSegment]- extractDataSegment datas (MFData dataSegment) = dataSegment : datas- extractDataSegment datas _ = datas-- -- start- synStartToStruct :: Module -> StartFunction -> S.StartFunction- synStartToStruct mod (StartFunction funIdx) =- S.StartFunction $ fromJust $ getFuncIndex mod funIdx- - extractStart :: [ModuleField] -> Maybe StartFunction- extractStart = foldl' extractStart' Nothing-- extractStart' :: Maybe StartFunction -> ModuleField -> Maybe StartFunction- extractStart' _ (MFStart start) = Just start- extractStart' start _ = start-- -- exports- extractExports :: Module -> [ModuleField] -> [ModuleField]- extractExports mod mf =- let initial = (funcImportLength, globImportLength, memImportLength, tableImportLength, []) in- let (_, _, _, _, result) = foldl' extractExport initial mf in- reverse result- where- funcImportLength = fromIntegral $ length $ filter isFuncImport $ imports mod- globImportLength = fromIntegral $ length $ filter isGlobalImport $ imports mod- memImportLength = fromIntegral $ length $ filter isMemImport $ imports mod- tableImportLength = fromIntegral $ length $ filter isTableImport $ imports mod-- extractExport (fidx, gidx, midx, tidx, mf) (MFFunc fun@Function{ exportFuncAs }) =- let exports = map (\name -> MFExport $ Export name $ ExportFunc $ Index fidx) exportFuncAs in- (fidx + 1, gidx, midx, tidx, [MFFunc fun] ++ exports ++ mf)- extractExport (fidx, gidx, midx, tidx, mf) (MFGlobal glob@Global{ exportGlobalAs }) =- let exports = map (\name -> MFExport $ Export name $ ExportGlobal $ Index gidx) exportGlobalAs in- (fidx, gidx + 1, midx, tidx, [MFGlobal glob] ++ exports ++ mf)- extractExport (fidx, gidx, midx, tidx, mf) (MFMem (Memory exps i l)) =- let exports = map (\name -> MFExport $ Export name $ ExportMemory $ Index midx) exps in- (fidx, gidx, midx + 1, tidx, [MFMem (Memory exps i l)] ++ exports ++ mf)- extractExport (fidx, gidx, midx, tidx, mf) (MFTable (Table exps i t)) =- let exports = map (\name -> MFExport $ Export name $ ExportTable $ Index tidx) exps in- (fidx, gidx, midx, tidx + 1, [MFTable (Table exps i t)] ++ exports ++ mf)- extractExport (fidx, gidx, midx, tidx, mf) f = (fidx, gidx, midx, tidx, f:mf)- - synExportsToStruct :: Module -> [ModuleField] -> [S.Export]- synExportsToStruct mod (MFExport Export { name, desc = ExportFunc idx } : rest) =- let exp = S.Export name $ S.ExportFunc $ fromJust $ getFuncIndex mod idx in- exp : synExportsToStruct mod rest- synExportsToStruct mod (MFExport Export { name, desc = ExportTable idx } : rest) =- let exp = S.Export name $ S.ExportTable $ fromJust $ getTableIndex mod idx in- exp : synExportsToStruct mod rest- synExportsToStruct mod (MFExport Export { name, desc = ExportMemory idx } : rest) =- let exp = S.Export name $ S.ExportMemory $ fromJust $ getMemIndex mod idx in- exp : synExportsToStruct mod rest- synExportsToStruct mod (MFExport Export { name, desc = ExportGlobal idx } : rest) =- let exp = S.Export name $ S.ExportGlobal $ fromJust $ getGlobalIndex mod idx in- exp : synExportsToStruct mod rest- synExportsToStruct mod (_ : rest) = synExportsToStruct mod rest- synExportsToStruct _ [] = []-{-# LINE 1 "templates/GenericTemplate.hs" #-}-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp ---------------- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-#if __GLASGOW_HASKELL__ > 706-#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Bool)-#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool)-#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Bool)-#else-#define LT(n,m) (n Happy_GHC_Exts.<# m)-#define GTE(n,m) (n Happy_GHC_Exts.>=# m)-#define EQ(n,m) (n Happy_GHC_Exts.==# m)-#endif---data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList---------------------infixr 9 `HappyStk`-data HappyStk a = HappyStk a (HappyStk a)---------------------------------------------------------------------------------- starting the parse--happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll---------------------------------------------------------------------------------- Accepting the parse---- If the current token is 0#, it means we've just accepted a partial--- parse (a %partial parser). We must ignore the saved token on the top of--- the stack in this case.-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =- happyReturn1 ans-happyAccept j tk st sts (HappyStk ans _) = - (happyTcHack j (happyTcHack st)) (happyReturn1 ans)---------------------------------------------------------------------------------- Arrays only: do the next action----happyDoAction i tk st- = {- nothing -}- -- case action of- 0# -> {- nothing -}- happyFail (happyExpListPerState ((Happy_GHC_Exts.I# (st)) :: Int)) i tk st- -1# -> {- nothing -}- happyAccept i tk st- n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}- - (happyReduceArr Happy_Data_Array.! rule) i tk st- where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))- n -> {- nothing -}- -- happyShift new_state i tk st- where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))- where off = happyAdjustOffset (indexShortOffAddr happyActOffsets st)- off_i = (off Happy_GHC_Exts.+# i)- check = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))- then EQ(indexShortOffAddr happyCheck off_i, i)- else False- action- | check = indexShortOffAddr happyTable off_i- | otherwise = indexShortOffAddr happyDefActions st-----indexShortOffAddr (HappyA# arr) off =- Happy_GHC_Exts.narrow16Int# i- where- i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)- high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))- low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))- off' = off Happy_GHC_Exts.*# 2#-----{-# INLINE happyLt #-}-happyLt x y = LT(x,y)---readArrayBit arr bit =- Bits.testBit (Happy_GHC_Exts.I# (indexShortOffAddr arr ((unbox_int bit) `Happy_GHC_Exts.iShiftRA#` 4#))) (bit `mod` 16)- where unbox_int (Happy_GHC_Exts.I# x) = x-------data HappyAddr = HappyA# Happy_GHC_Exts.Addr#----------------------------------------------------------------------------------- HappyState data type (not arrays)------------------------------------------------------------------------------------ Shifting a token--happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =- let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in--- trace "shifting the error token" $- happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)--happyShift new_state i tk st sts stk =- happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)---- happyReduce is specialised for the common cases.--happySpecReduce_0 i fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happySpecReduce_0 nt fn j tk st@((action)) sts stk- = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)--happySpecReduce_1 i fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')- = let r = fn v1 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_2 i fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')- = let r = fn v1 v2 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_3 i fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')- = let r = fn v1 v2 v3 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happyReduce k i fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happyReduce k nt fn j tk st sts stk- = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of- sts1@((HappyCons (st1@(action)) (_))) ->- let r = fn stk in -- it doesn't hurt to always seq here...- happyDoSeq r (happyGoto nt j tk st1 sts1 r)--happyMonadReduce k nt fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happyMonadReduce k nt fn j tk st sts stk =- case happyDrop k (HappyCons (st) (sts)) of- sts1@((HappyCons (st1@(action)) (_))) ->- let drop_stk = happyDropStk k stk in- happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))--happyMonad2Reduce k nt fn 0# tk st sts stk- = happyFail [] 0# tk st sts stk-happyMonad2Reduce k nt fn j tk st sts stk =- case happyDrop k (HappyCons (st) (sts)) of- sts1@((HappyCons (st1@(action)) (_))) ->- let drop_stk = happyDropStk k stk-- off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st1)- off_i = (off Happy_GHC_Exts.+# nt)- new_state = indexShortOffAddr happyTable off_i----- in- happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))--happyDrop 0# l = l-happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t--happyDropStk 0# l = l-happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs---------------------------------------------------------------------------------- Moving to a new state after a reduction---happyGoto nt j tk st = - {- nothing -}- happyDoAction j tk new_state- where off = happyAdjustOffset (indexShortOffAddr happyGotoOffsets st)- off_i = (off Happy_GHC_Exts.+# nt)- new_state = indexShortOffAddr happyTable off_i------------------------------------------------------------------------------------- Error recovery (0# is the error token)---- parse error if we are in recovery and we fail again-happyFail explist 0# tk old_st _ stk@(x `HappyStk` _) =- let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in--- trace "failing" $ - happyError_ explist i tk--{- We don't need state discarding for our restricted implementation of- "error". In fact, it can cause some bogus parses, so I've disabled it- for now --SDM---- discard a state-happyFail 0# tk old_st (HappyCons ((action)) (sts)) - (saved_tok `HappyStk` _ `HappyStk` stk) =--- trace ("discarding state, depth " ++ show (length stk)) $- happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))--}---- Enter error recovery: generate an error token,--- save the old token and carry on.-happyFail explist i tk (action) sts stk =--- trace "entering error recovery" $- happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)---- Internal happy errors:--notHappyAtAll :: a-notHappyAtAll = error "Internal Happy error\n"---------------------------------------------------------------------------------- Hack to get the typechecker to accept our action functions---happyTcHack :: Happy_GHC_Exts.Int# -> a -> a-happyTcHack x y = y-{-# INLINE happyTcHack #-}----------------------------------------------------------------------------------- Seq-ing. If the --strict flag is given, then Happy emits --- happySeq = happyDoSeq--- otherwise it emits--- happySeq = happyDontSeq--happyDoSeq, happyDontSeq :: a -> b -> b-happyDoSeq a b = a `seq` b-happyDontSeq a b = b---------------------------------------------------------------------------------- Don't inline any functions from the template. GHC has a nasty habit--- of deciding to inline happyGoto everywhere, which increases the size of--- the generated parser quite a bit.---{-# NOINLINE happyDoAction #-}-{-# NOINLINE happyTable #-}-{-# NOINLINE happyCheck #-}-{-# NOINLINE happyActOffsets #-}-{-# NOINLINE happyGotoOffsets #-}-{-# NOINLINE happyDefActions #-}--{-# NOINLINE happyShift #-}-{-# NOINLINE happySpecReduce_0 #-}-{-# NOINLINE happySpecReduce_1 #-}-{-# NOINLINE happySpecReduce_2 #-}-{-# NOINLINE happySpecReduce_3 #-}-{-# NOINLINE happyReduce #-}-{-# NOINLINE happyMonadReduce #-}-{-# NOINLINE happyGoto #-}-{-# NOINLINE happyFail #-}---- end of Happy Template.-
− exec/Main.hs
@@ -1,148 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-module Main where--import qualified Data.ByteString.Lazy as LBS-import qualified Data.ByteString.Base64.Lazy as Base64-import Data.Maybe (fromMaybe)--import qualified Language.Wasm as Wasm--import Options.Applicative-import Data.Semigroup ((<>))--{--wasm compile INPUT -o output -f js -f binary-wasm exec --script INPUT-wasm validate INPUT -f binary -f text-wasm link --}--data CompileOutFormat = OutJS | OutBinary | OutHTML deriving (Eq)-data ExecMod = Plain | Script deriving (Show, Eq)-data Input = InpText | InpBinary deriving (Eq)--instance Read CompileOutFormat where- readsPrec _ "js" = [(OutJS, "")]- readsPrec _ "binary" = [(OutBinary, "")]- readsPrec _ "html" = [(OutHTML, "")]- readsPrec _ _ = error "Unknown compilation output foramt"--instance Show CompileOutFormat where- show OutJS = "js"- show OutBinary = "binary"- show OutHTML = "html"--instance Read Input where- readsPrec _ "text" = [(InpText, "")]- readsPrec _ "binary" = [(InpBinary, "")]- readsPrec _ _ = error "Unknown validation input foramt"--instance Show Input where- show InpText = "text"- show InpBinary = "binary"--data WasmCommand- = Compile {- input :: String,- output :: String,- outFormat :: CompileOutFormat- }- | Exec {- input :: String,- mode :: ExecMod,- inpFormat :: Input- }- | Validate {- input :: String,- inpFormat :: Input- }- deriving (Show, Eq)--compileArgs = Compile- <$> argument str (metavar "FILE")- <*> strOption (- long "out"- <> short 'o'- <> metavar "FILE"- <> help "Distination for compilation"- )- <*> option auto (- long "format"- <> short 'f'- <> help "Output file format"- <> showDefault- <> value OutBinary- )--execArgs = Exec- <$> argument str (metavar "FILE")- <*> flag Plain Script (long "script" <> help "Execute file in script mode")- <*> option auto (- long "format"- <> short 'f'- <> help "Input file format"- <> showDefault- <> value InpText- )--validateArgs = Validate- <$> argument str (metavar "FILE")- <*> option auto (- long "format"- <> short 'f'- <> help "Input file format"- <> showDefault- <> value InpText- )--config :: Parser WasmCommand-config = subparser (- command "compile" (info compileArgs (progDesc "Compile WebAssembly file from text representation"))- <> command "exec" (info execArgs (progDesc "Compile WebAssembly file if needed and execute"))- <> command "validate" (info validateArgs (progDesc "Validate WebAssembly file"))- )--toBinary :: LBS.ByteString -> Either String LBS.ByteString-toBinary = fmap Wasm.encodeLazy . Wasm.parse--compileAs :: (LBS.ByteString -> LBS.ByteString) -> String -> String -> IO ()-compileAs transform input output = do- content <- LBS.readFile input- case toBinary content of- Right binary ->- LBS.writeFile output $ transform binary- Left reason ->- putStrLn $ "Cannot complie module: " ++ reason--binary :: LBS.ByteString -> LBS.ByteString-binary = id--js :: LBS.ByteString -> LBS.ByteString-js binary =- let asBase64 = Base64.encode binary in- LBS.concat [- "const bytes = Uint8Array.from(atob('" <> asBase64 <> "'), c => c.charCodeAt(0));\n",- "WebAssembly.instantiate(bytes, {}).then(res => console.log(res.instance))\n"- ]--html :: LBS.ByteString -> LBS.ByteString-html binary =- LBS.concat [- "<script>\n",- js binary,- "</script>\n"- ]--exec :: WasmCommand -> IO ()-exec (Compile inp out OutBinary) = compileAs binary inp out-exec (Compile inp out OutJS) = compileAs js inp out-exec (Compile inp out OutHTML) = compileAs html inp out-exec command = putStrLn $ "command is not implemented yet: " ++ show command--main :: IO ()-main = execParser opts >>= exec- where- opts = info (config <**> helper)- (fullDesc- <> progDesc "WebAssembly Toolkit"- <> header "This tool can compile text representation to binary format, validate module in text or binary representation and so on.")
src/Language/Wasm.hs view
@@ -10,7 +10,14 @@ decode, decodeLazy, Script,- runScript+ Command(..),+ ModuleDef(..),+ Action(..),+ Assertion(..),+ Ident(..),+ Meta(..),+ runScript,+ Valid.getModule ) where import qualified Data.ByteString as BS@@ -27,7 +34,7 @@ parse :: LBS.ByteString -> Either String Module parse content = Lexer.scanner content >>= Parser.parseModule --- | Parse WebAssembly extended scipt grammar+-- | Parse WebAssembly extended script grammar parseScript :: LBS.ByteString -> Either String Script parseScript content = Lexer.scanner content >>= Parser.parseScript
src/Language/Wasm/Binary.hs view
@@ -130,7 +130,10 @@ where parseSection op | op == 0 = skipCustomSection >> getSection sectionType parser def- | op == fromEnum sectionType = getWord8 >> (getULEB128 32 :: Get Natural) >> parser+ | op == fromEnum sectionType = do+ getWord8+ len <- getULEB128 32+ isolate len parser | op > fromEnum DataSection = fail "invalid section id" | op > fromEnum sectionType = return def | otherwise =@@ -154,7 +157,7 @@ putResultType :: ResultType -> Put putResultType [] = putWord8 0x40 putResultType [valType] = put valType-putResultType _ = fail "Current WebAssembly spec does not support returning more then one value"+putResultType _ = error "Current WebAssembly spec does not support returning more then one value" getResultType :: Get ResultType getResultType = do@@ -167,6 +170,29 @@ 0x7C -> return [F64] _ -> fail "unexpected byte in result type position" +putBlockType :: BlockType -> Put+putBlockType (Inline Nothing) = putWord8 0x40+putBlockType (Inline (Just valType)) = put valType+putBlockType (TypeIndex idx) = putSLEB128 idx++getInlineBlockType :: Get (Maybe (Maybe ValueType))+getInlineBlockType = do+ op <- getWord8+ case op of+ 0x40 -> return $ Just Nothing+ 0x7F -> return $ Just (Just I32)+ 0x7E -> return $ Just (Just I64)+ 0x7D -> return $ Just (Just F32)+ 0x7C -> return $ Just (Just F64)+ _ -> return Nothing++getBlockType :: Get BlockType+getBlockType = do+ inlineType <- lookAheadM getInlineBlockType+ case inlineType of+ Just inline -> return $ Inline inline+ Nothing -> TypeIndex <$> getSLEB128 33+ data SectionType = CustomSection | TypeSection@@ -217,8 +243,8 @@ return $ FuncType { params, results } instance Serialize ElemType where- put AnyFunc = putWord8 0x70- get = byteGuard 0x70 >> return AnyFunc+ put FuncRef = putWord8 0x70+ get = byteGuard 0x70 >> return FuncRef instance Serialize Limit where put (Limit min Nothing) = putWord8 0x00 >> putULEB128 min@@ -304,21 +330,21 @@ instance Serialize (Instruction Natural) where put Unreachable = putWord8 0x00 put Nop = putWord8 0x01- put (Block result body) = do+ put (Block blockType body) = do putWord8 0x02- putResultType result+ putBlockType blockType putExpression body- put (Loop result body) = do+ put (Loop blockType body) = do putWord8 0x03- putResultType result+ putBlockType blockType putExpression body- put If {resultType, true, false = []} = do+ put If {blockType, true, false = []} = do putWord8 0x04- putResultType resultType+ putBlockType blockType putExpression true- put If {resultType, true, false} = do+ put If {blockType, true, false} = do putWord8 0x04- putResultType resultType+ putBlockType blockType mapM_ put true putWord8 0x05 -- ELSE putExpression false@@ -492,18 +518,34 @@ put (FReinterpretI BS32) = putWord8 0xBE put (FReinterpretI BS64) = putWord8 0xBF + put (IUnOp BS32 IExtend8S) = putWord8 0xC0+ put (IUnOp BS32 IExtend16S) = putWord8 0xC1+ put (IUnOp BS32 IExtend32S) = error "Opcode for i32.extend32_s doesn't exist"+ put (IUnOp BS64 IExtend8S) = putWord8 0xC2+ put (IUnOp BS64 IExtend16S) = putWord8 0xC3+ put (IUnOp BS64 IExtend32S) = putWord8 0xC4++ put (ITruncSatFS BS32 BS32) = putWord8 0xFC >> putULEB128 (0x00 :: Word32)+ put (ITruncSatFU BS32 BS32) = putWord8 0xFC >> putULEB128 (0x01 :: Word32)+ put (ITruncSatFS BS32 BS64) = putWord8 0xFC >> putULEB128 (0x02 :: Word32)+ put (ITruncSatFU BS32 BS64) = putWord8 0xFC >> putULEB128 (0x03 :: Word32)+ put (ITruncSatFS BS64 BS32) = putWord8 0xFC >> putULEB128 (0x04 :: Word32)+ put (ITruncSatFU BS64 BS32) = putWord8 0xFC >> putULEB128 (0x05 :: Word32)+ put (ITruncSatFS BS64 BS64) = putWord8 0xFC >> putULEB128 (0x06 :: Word32)+ put (ITruncSatFU BS64 BS64) = putWord8 0xFC >> putULEB128 (0x07 :: Word32)+ get = do op <- getWord8 case op of 0x00 -> return Unreachable 0x01 -> return Nop- 0x02 -> Block <$> getResultType <*> getExpression- 0x03 -> Loop <$> getResultType <*> getExpression+ 0x02 -> Block <$> getBlockType <*> getExpression+ 0x03 -> Loop <$> getBlockType <*> getExpression 0x04 -> do- resultType <- getResultType+ blockType <- getBlockType (true, hasElse) <- getTrueBranch false <- if hasElse then getExpression else return []- return $ If resultType true false+ return $ If blockType true false 0x0C -> Br <$> getULEB128 32 0x0D -> BrIf <$> getULEB128 32 0x0E -> BrTable <$> (map unIndex <$> getVec) <*> getULEB128 32@@ -676,6 +718,23 @@ 0xBD -> return $ IReinterpretF BS64 0xBE -> return $ FReinterpretI BS32 0xBF -> return $ FReinterpretI BS64+ 0xC0 -> return $ IUnOp BS32 IExtend8S+ 0xC1 -> return $ IUnOp BS32 IExtend16S+ 0xC2 -> return $ IUnOp BS64 IExtend8S+ 0xC3 -> return $ IUnOp BS64 IExtend16S+ 0xC4 -> return $ IUnOp BS64 IExtend32S+ 0xFC -> do -- misc+ ext <- getULEB128 32+ case (ext :: Word32) of+ 0x00 -> return $ ITruncSatFS BS32 BS32+ 0x01 -> return $ ITruncSatFU BS32 BS32+ 0x02 -> return $ ITruncSatFS BS32 BS64+ 0x03 -> return $ ITruncSatFU BS32 BS64+ 0x04 -> return $ ITruncSatFS BS64 BS32+ 0x05 -> return $ ITruncSatFU BS64 BS32+ 0x06 -> return $ ITruncSatFS BS64 BS64+ 0x07 -> return $ ITruncSatFU BS64 BS64+ _ -> fail "Unknown byte value after misc instruction byte" _ -> fail "Unknown byte value in place of instruction opcode" putExpression :: Expression -> Put@@ -757,7 +816,10 @@ putByteString bs get = do _size <- getULEB128 32 :: Get Natural- locals <- concat . map (\(LocalTypeRange n val) -> replicate (fromIntegral n) val) <$> getVec+ localRanges <- getVec+ let localLen = sum $ map (\(LocalTypeRange n _) -> n) localRanges+ if localLen < 2^32 then return () else fail "too many locals"+ let locals = concat $ map (\(LocalTypeRange n val) -> replicate (fromIntegral n) val) localRanges body <- getExpression return $ Function 0 locals body
src/Language/Wasm/Builder.hs view
@@ -41,7 +41,7 @@ memorySize, growMemory, nop, Language.Wasm.Builder.drop, select, call, callIndirect, finish, br, brIf, brTable,- if', loop, block, when, for, while,+ {-if', loop, block, when, for, while,-} trap, unreachable, appendExpr, after, Producer, OutType, produce, Consumer, (.=)@@ -681,7 +681,7 @@ appendExpr [Return] newtype Label i = Label Natural deriving (Show, Eq)-+{- when :: (Producer pred, OutType pred ~ Proxy I32) => pred -> GenFun ()@@ -704,34 +704,34 @@ body loopLabel <- label if' () pred (br loopLabel) (return ())- if' () pred (loop () loopBody) (return ())+ if' () pred (loop () loopBody) (return ())-} label :: GenFun (Label t) label = Label <$> ask -if' :: (Producer pred, OutType pred ~ Proxy I32, Returnable res)- => res- -> pred- -> GenFun res- -> GenFun res- -> GenFun res-if' res pred true false = do- produce pred- deep <- (+1) <$> ask- appendExpr [If (asResultValue res) (genExpr deep $ true) (genExpr deep $ false)]- return returnableValue+-- if' :: (Producer pred, OutType pred ~ Proxy I32, Returnable res)+-- => res+-- -> pred+-- -> GenFun res+-- -> GenFun res+-- -> GenFun res+-- if' res pred true false = do+-- produce pred+-- deep <- (+1) <$> ask+-- appendExpr [If (asResultValue res) (genExpr deep $ true) (genExpr deep $ false)]+-- return returnableValue -loop :: (Returnable res) => res -> GenFun res -> GenFun res-loop res body = do- deep <- (+1) <$> ask- appendExpr [Loop (asResultValue res) (genExpr deep $ body)]- return returnableValue+-- loop :: (Returnable res) => res -> GenFun res -> GenFun res+-- loop res body = do+-- deep <- (+1) <$> ask+-- appendExpr [Loop (asResultValue res) (genExpr deep $ body)]+-- return returnableValue -block :: (Returnable res) => res -> GenFun res -> GenFun res-block res body = do- deep <- (+1) <$> ask- appendExpr [Block (asResultValue res) (genExpr deep $ body)]- return returnableValue+-- block :: (Returnable res) => res -> GenFun res -> GenFun res+-- block res body = do+-- deep <- (+1) <$> ask+-- appendExpr [Block (asResultValue res) (genExpr deep $ body)]+-- return returnableValue trap :: Proxy t -> GenFun (Proxy t) trap t = do@@ -858,7 +858,7 @@ importTable :: TL.Text -> TL.Text -> Natural -> Maybe Natural -> GenMod Tbl importTable mod name min max = do modify $ \(st@GenModState { target = m }) -> st {- target = m { imports = imports m ++ [Import mod name $ ImportTable $ TableType (Limit min max) AnyFunc] }+ target = m { imports = imports m ++ [Import mod name $ ImportTable $ TableType (Limit min max) FuncRef] } } return $ Tbl 0 @@ -968,7 +968,7 @@ table :: Natural -> Maybe Natural -> GenMod Tbl table min max = do modify $ \(st@GenModState { target = m }) -> st {- target = m { tables = tables m ++ [Table $ TableType (Limit min max) AnyFunc] }+ target = m { tables = tables m ++ [Table $ TableType (Limit min max) FuncRef] } } return $ Tbl 0 @@ -988,39 +988,39 @@ | i >= 0 = fromIntegral i | otherwise = 0xFFFFFFFFFFFFFFFF - (fromIntegral (abs i)) + 1 -rts :: Module-rts = genMod $ do- gc <- importFunction "rts" "gc" () [I32]- memory 10 Nothing+-- rts :: Module+-- rts = genMod $ do+-- gc <- importFunction "rts" "gc" () [I32]+-- memory 10 Nothing - stackStart <- global Const i32 0- stackEnd <- global Const i32 0- stackBase <- global Mut i32 0- stackTop <- global Mut i32 0+-- stackStart <- global Const i32 0+-- stackEnd <- global Const i32 0+-- stackBase <- global Mut i32 0+-- stackTop <- global Mut i32 0 - retReg <- global Mut i32 0- tmpReg <- global Mut i32 0+-- retReg <- global Mut i32 0+-- tmpReg <- global Mut i32 0 - heapStart <- global Mut i32 0- heapNext <- global Mut i32 0- heapEnd <- global Mut i32 0+-- heapStart <- global Mut i32 0+-- heapNext <- global Mut i32 0+-- heapEnd <- global Mut i32 0 - aligned <- fun i32 $ do- size <- param i32- (size `add` i32c 3) `and` i32c 0xFFFFFFFC- alloc <- funRec i32 $ \self -> do- size <- param i32- alignedSize <- local i32- addr <- local i32- alignedSize .= call aligned [arg size]- if' i32 ((heapNext `add` alignedSize) `lt_u` heapEnd)- (do- addr .= heapNext- heapNext .= heapNext `add` alignedSize- ret addr- )- (do- call gc []- call self [arg size]- )- return ()+-- aligned <- fun i32 $ do+-- size <- param i32+-- (size `add` i32c 3) `and` i32c 0xFFFFFFFC+-- alloc <- funRec i32 $ \self -> do+-- size <- param i32+-- alignedSize <- local i32+-- addr <- local i32+-- alignedSize .= call aligned [arg size]+-- if' i32 ((heapNext `add` alignedSize) `lt_u` heapEnd)+-- (do+-- addr .= heapNext+-- heapNext .= heapNext `add` alignedSize+-- ret addr+-- )+-- (do+-- call gc []+-- call self [arg size]+-- )+-- return ()
src/Language/Wasm/Interpreter.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeApplications #-} module Language.Wasm.Interpreter ( Value(..),@@ -18,7 +19,8 @@ emptyStore, emptyImports, makeHostModule,- makeMutGlobal+ makeMutGlobal,+ makeConstGlobal ) where import qualified Data.Map as Map@@ -27,15 +29,15 @@ import Data.Maybe (fromMaybe, isNothing) import Data.Vector (Vector, (!), (!?), (//))-import Data.Vector.Storable.Mutable (IOVector) import qualified Data.Vector as Vector-import qualified Data.Vector.Storable.Mutable as IOVector+import qualified Data.Primitive.ByteArray as ByteArray+import qualified Data.Primitive.Types as Primitive+import qualified Control.Monad.Primitive as Primitive import Data.IORef (IORef, newIORef, readIORef, writeIORef) import Data.Word (Word8, Word16, Word32, Word64) import Data.Int (Int32, Int64) import Numeric.Natural (Natural) import qualified Control.Monad as Monad-import Data.Monoid ((<>)) import Data.Bits ( Bits, (.|.),@@ -51,6 +53,7 @@ ) import Numeric.IEEE (IEEE, copySign, minNum, maxNum, identicalIEEE) import Control.Monad.Except (ExceptT, runExceptT, throwError)+import qualified Control.Monad.State as State import Control.Monad.IO.Class (liftIO) import Language.Wasm.Structure as Struct@@ -164,9 +167,11 @@ elements :: Vector (Maybe Address) } +type MemoryStore = ByteArray.MutableByteArray (Primitive.PrimState IO)+ data MemoryInstance = MemoryInstance { lim :: Limit,- memory :: IORef (IOVector Word8)+ memory :: IORef MemoryStore } data GlobalInstance = GIConst ValueType Value | GIMut ValueType (IORef Value)@@ -174,6 +179,9 @@ makeMutGlobal :: Value -> IO GlobalInstance makeMutGlobal val = GIMut (getValueType val) <$> newIORef val +makeConstGlobal :: Value -> GlobalInstance+makeConstGlobal val = GIConst (getValueType val) val+ getValueType :: Value -> ValueType getValueType (VI32 _) = I32 getValueType (VI64 _) = I64@@ -233,17 +241,11 @@ where (|>) = flip ($) - isHostFunction :: (TL.Text, HostItem) -> Bool- isHostFunction (_, (HostFunction _ _)) = True- isHostFunction _ = False- makeHostFunctions :: (Store, ModuleInstance) -> (Store, ModuleInstance) makeHostFunctions (st, inst) = let funcLen = Vector.length $ funcInstances st in- let hostFunctions = filter isHostFunction items in- let instances = map (\(_, (HostFunction t c)) -> HostInstance t c) hostFunctions in- let types = map (\(_, (HostFunction t _)) -> t) hostFunctions in- let exps = Vector.fromList $ zipWith (\(name, _) i -> ExportInstance name (ExternFunction i)) hostFunctions [funcLen..] in+ let (names, types, instances) = unzip3 [(name, t, HostInstance t c) | (name, (HostFunction t c)) <- items] in+ let exps = Vector.fromList $ zipWith (\name i -> ExportInstance name (ExternFunction i)) names [funcLen..] in let inst' = inst { funcTypes = Vector.fromList types, funcaddrs = Vector.fromList [funcLen..funcLen + length instances - 1],@@ -252,17 +254,12 @@ in let st' = st { funcInstances = funcInstances st <> Vector.fromList instances } in (st', inst')-- isHostGlobal :: (TL.Text, HostItem) -> Bool- isHostGlobal (_, (HostGlobal _)) = True- isHostGlobal _ = False makeHostGlobals :: (Store, ModuleInstance) -> (Store, ModuleInstance) makeHostGlobals (st, inst) = let globLen = Vector.length $ globalInstances st in- let hostGlobals = filter isHostGlobal items in- let instances = map (\(_, (HostGlobal g)) -> g) hostGlobals in- let exps = Vector.fromList $ zipWith (\(name, _) i -> ExportInstance name (ExternGlobal i)) hostGlobals [globLen..] in+ let (names, instances) = unzip [(name, g) | (name, (HostGlobal g)) <- items] in+ let exps = Vector.fromList $ zipWith (\name i -> ExportInstance name (ExternGlobal i)) names [globLen..] in let inst' = inst { globaladdrs = Vector.fromList [globLen..globLen + length instances - 1], exports = Language.Wasm.Interpreter.exports inst <> exps@@ -270,34 +267,26 @@ in let st' = st { globalInstances = globalInstances st <> Vector.fromList instances } in (st', inst')-- isHostMem :: (TL.Text, HostItem) -> Bool- isHostMem (_, (HostMemory _)) = True- isHostMem _ = False makeHostMems :: (Store, ModuleInstance) -> IO (Store, ModuleInstance) makeHostMems (st, inst) = do let memLen = Vector.length $ memInstances st- let hostMems = filter isHostMem items- instances <- allocMems $ map (\(_, (HostMemory lim)) -> Memory lim) hostMems- let exps = Vector.fromList $ zipWith (\(name, _) i -> ExportInstance name (ExternMemory i)) hostMems [memLen..]+ let (names, limits) = unzip [(name, Memory lim) | (name, (HostMemory lim)) <- items]+ instances <- allocMems limits+ let exps = Vector.fromList $ zipWith (\name i -> ExportInstance name (ExternMemory i)) names [memLen..] let inst' = inst { memaddrs = Vector.fromList [memLen..memLen + length instances - 1], exports = Language.Wasm.Interpreter.exports inst <> exps } let st' = st { memInstances = memInstances st <> instances } return (st', inst')-- isHostTable :: (TL.Text, HostItem) -> Bool- isHostTable (_, (HostTable _)) = True- isHostTable _ = False makeHostTables :: (Store, ModuleInstance) -> IO (Store, ModuleInstance) makeHostTables (st, inst) = do let tableLen = Vector.length $ tableInstances st- let hostTables = filter isHostTable items- let instances = allocTables $ map (\(_, (HostTable lim)) -> Table (TableType lim AnyFunc)) hostTables- let exps = Vector.fromList $ zipWith (\(name, _) i -> ExportInstance name (ExternTable i)) hostTables [tableLen..]+ let (names, tables) = unzip [(name, Table (TableType lim FuncRef)) | (name, (HostTable lim)) <- items]+ let instances = allocTables tables+ let exps = Vector.fromList $ zipWith (\name i -> ExportInstance name (ExternTable i)) names [tableLen..] let inst' = inst { tableaddrs = Vector.fromList [tableLen..tableLen + length instances - 1], exports = Language.Wasm.Interpreter.exports inst <> exps@@ -380,13 +369,11 @@ ExternGlobal globalAddr -> return globalAddr _ -> err let globalInst = gs ! globalAddr- let vt = case globalType of- Const vt -> vt- Mut vt -> vt- let vt' = case globalInst of- GIConst vt _ -> vt- GIMut vt _ -> vt- if vt == vt' then return idx else err+ let typesMatch = case (globalType, globalInst) of+ (Const vt, GIConst vt' _) -> vt == vt'+ (Mut vt, GIMut vt' _) -> vt == vt'+ _ -> False+ if typesMatch then return idx else err checkImportType imp@(Import _ _ (ImportMemory limit)) = do idx <- getImpIdx imp memAddr <- case idx of@@ -473,32 +460,36 @@ where allocMem :: Memory -> IO MemoryInstance allocMem (Memory lim@(Limit from to)) = do- mem <- IOVector.replicate (fromIntegral from * pageSize) 0+ let size = fromIntegral from * pageSize+ mem <- ByteArray.newByteArray size+ ByteArray.setByteArray @Word64 mem 0 (size `div` 8) 0 memory <- newIORef mem return MemoryInstance { lim, memory } -type Initialize = ExceptT String IO+type Initialize = ExceptT String (State.StateT Store IO) -initialize :: ModuleInstance -> Module -> Store -> Initialize Store-initialize inst Module {elems, datas, start} store = do- checkedMems <- mapM (checkData store) datas- checkedTables <- mapM (checkElem store) elems+initialize :: ModuleInstance -> Module -> Initialize ()+initialize inst Module {elems, datas, start} = do+ checkedMems <- mapM checkData datas+ checkedTables <- mapM checkElem elems mapM_ initData checkedMems- st <- Monad.foldM initElem store checkedTables+ mapM_ initElem checkedTables+ st <- State.get case start of Just (StartFunction idx) -> do- let funInst = funcInstances store ! (funcaddrs inst ! fromIntegral idx)+ let funInst = funcInstances st ! (funcaddrs inst ! fromIntegral idx) mainRes <- liftIO $ eval defaultBudget st funInst [] case mainRes of- Just [] -> return st+ Just [] -> return () _ -> throwError "Start function terminated with trap"- Nothing -> return st+ Nothing -> return () where- checkElem :: Store -> ElemSegment -> Initialize (Address, Int, [Address])- checkElem st ElemSegment {tableIndex, offset, funcIndexes} = do+ checkElem :: ElemSegment -> Initialize (Address, Int, [Address])+ checkElem ElemSegment {tableIndex, offset, funcIndexes} = do+ st <- State.get VI32 val <- liftIO $ evalConstExpr inst st offset let from = fromIntegral val let funcs = map ((funcaddrs inst !) . fromIntegral) funcIndexes@@ -509,43 +500,45 @@ Monad.when (last > len) $ throwError "elements segment does not fit" return (idx, from, funcs) - initElem :: Store -> (Address, Int, [Address]) -> Initialize Store- initElem st (idx, from, funcs) = do- let TableInstance lim elems = tableInstances st ! idx- let table = TableInstance lim (elems // zip [from..] (map Just funcs))- return st { tableInstances = tableInstances st Vector.// [(idx, table)] }+ initElem :: (Address, Int, [Address]) -> Initialize ()+ initElem (idx, from, funcs) = State.modify $ \st ->+ let TableInstance lim elems = tableInstances st ! idx in+ let table = TableInstance lim (elems // zip [from..] (map Just funcs)) in+ st { tableInstances = tableInstances st Vector.// [(idx, table)] } - checkData :: Store -> DataSegment -> Initialize (Int, IOVector Word8, LBS.ByteString)- checkData st DataSegment {memIndex, offset, chunk} = do+ checkData :: DataSegment -> Initialize (Int, MemoryStore, LBS.ByteString)+ checkData DataSegment {memIndex, offset, chunk} = do+ st <- State.get VI32 val <- liftIO $ evalConstExpr inst st offset let from = fromIntegral val let idx = memaddrs inst ! fromIntegral memIndex let last = from + (fromIntegral $ LBS.length chunk) let MemoryInstance _ memory = memInstances st ! idx mem <- liftIO $ readIORef memory- let len = IOVector.length mem+ len <- ByteArray.getSizeofMutableByteArray mem Monad.when (last > len) $ throwError "data segment does not fit" return (from, mem, chunk) - initData :: (Int, IOVector Word8, LBS.ByteString) -> Initialize ()+ initData :: (Int, MemoryStore, LBS.ByteString) -> Initialize () initData (from, mem, chunk) =- mapM_ (\(i,b) -> IOVector.write mem i b) $ zip [from..] $ LBS.unpack chunk+ mapM_ (\(i,b) -> ByteArray.writeByteArray mem i b) $ zip [from..] $ LBS.unpack chunk -instantiate :: Store -> Imports -> Valid.ValidModule -> IO (Either String (ModuleInstance, Store))-instantiate st imps mod = runExceptT $ do+instantiate :: Store -> Imports -> Valid.ValidModule -> IO (Either String ModuleInstance, Store)+instantiate st imps mod = flip State.runStateT st $ runExceptT $ do let m = Valid.getModule mod inst <- calcInstance st imps m let functions = funcInstances st <> (allocFunctions inst $ Struct.functions m) globals <- liftIO $ (globalInstances st <>) <$> (allocAndInitGlobals inst st $ Struct.globals m) let tables = tableInstances st <> (allocTables $ Struct.tables m) mems <- liftIO $ (memInstances st <>) <$> (allocMems $ Struct.mems m)- st' <- initialize inst m $ st {+ State.put $ st { funcInstances = functions, tableInstances = tables, memInstances = mems, globalInstances = globals }- return $ (inst, st')+ initialize inst m+ return inst type Stack = [Value] @@ -602,63 +595,84 @@ Done ctx' -> go ctx' rest command -> return command - makeLoadInstr :: (Bits i, Integral i) => EvalCtx -> Natural -> Int -> ([Value] -> i -> EvalResult) -> IO EvalResult+ makeLoadInstr :: (Primitive.Prim i, Bits i, Integral i) => EvalCtx -> Natural -> Int -> ([Value] -> i -> EvalResult) -> IO EvalResult makeLoadInstr ctx@EvalCtx{ stack = (VI32 v:rest) } offset byteWidth cont = do let MemoryInstance { memory = memoryRef } = memInstances store ! (memaddrs moduleInstance ! 0) memory <- readIORef memoryRef let addr = fromIntegral v + fromIntegral offset let readByte idx = do- byte <- IOVector.read memory $ addr + idx+ byte <- ByteArray.readByteArray @Word8 memory $ addr + idx return $ fromIntegral byte `shiftL` (idx * 8)- if addr + byteWidth > IOVector.length memory+ len <- ByteArray.getSizeofMutableByteArray memory+ let isAligned = addr `rem` byteWidth == 0+ if addr + byteWidth > len then return Trap- else cont rest . sum <$> mapM readByte [0..byteWidth-1]+ else (+ if isAligned+ then cont rest <$> ByteArray.readByteArray memory (addr `quot` byteWidth)+ else cont rest . sum <$> mapM readByte [0..byteWidth-1]+ ) makeLoadInstr _ _ _ _ = error "Incorrect value on top of stack for memory instruction" - makeStoreInstr :: (Bits i, Integral i) => EvalCtx -> Natural -> Int -> i -> IO EvalResult+ makeStoreInstr :: (Primitive.Prim i, Bits i, Integral i) => EvalCtx -> Natural -> Int -> i -> IO EvalResult makeStoreInstr ctx@EvalCtx{ stack = (VI32 va:rest) } offset byteWidth v = do let MemoryInstance { memory = memoryRef } = memInstances store ! (memaddrs moduleInstance ! 0) memory <- readIORef memoryRef let addr = fromIntegral $ va + fromIntegral offset let writeByte idx = do let byte = fromIntegral $ v `shiftR` (idx * 8) .&. 0xFF- IOVector.write memory (addr + idx) byte- if addr + byteWidth > IOVector.length memory+ ByteArray.writeByteArray @Word8 memory (addr + idx) byte+ len <- ByteArray.getSizeofMutableByteArray memory+ let isAligned = addr `rem` byteWidth == 0+ let write = if isAligned+ then ByteArray.writeByteArray memory (addr `quot` byteWidth) v+ else mapM_ writeByte [0..byteWidth-1] :: IO ()+ if addr + byteWidth > len then return Trap- else do- mapM_ writeByte [0..byteWidth-1]- return $ Done ctx { stack = rest }+ else write >> (return $ Done ctx { stack = rest }) makeStoreInstr _ _ _ _ = error "Incorrect value on top of stack for memory instruction" step :: EvalCtx -> Instruction Natural -> IO EvalResult step _ Unreachable = return Trap step ctx Nop = return $ Done ctx- step ctx (Block resType expr) = do+ step ctx (Block blockType expr) = do+ let FuncType paramType resType = case blockType of+ Inline Nothing -> FuncType [] []+ Inline (Just valType) -> FuncType [] [valType]+ TypeIndex typeIdx -> funcTypes moduleInstance ! fromIntegral typeIdx res <- go ctx { labels = Label resType : labels ctx } expr case res of- Break 0 r EvalCtx{ locals = ls } -> return $ Done ctx { locals = ls, stack = r ++ stack ctx }+ Break 0 r EvalCtx{ locals = ls } -> return $ Done ctx { locals = ls, stack = r ++ (drop (length paramType) $ stack ctx) } Break n r ctx' -> return $ Break (n - 1) r ctx' Done ctx'@EvalCtx{ labels = (_:rest) } -> return $ Done ctx' { labels = rest } command -> return command- step ctx loop@(Loop resType expr) = do+ step ctx loop@(Loop blockType expr) = do+ let resType = case blockType of+ Inline Nothing -> []+ Inline (Just valType) -> [valType]+ TypeIndex typeIdx -> results $ funcTypes moduleInstance ! fromIntegral typeIdx res <- go ctx { labels = Label resType : labels ctx } expr case res of- Break 0 r EvalCtx{ locals = ls } -> step ctx { locals = ls, stack = r ++ stack ctx } loop+ Break 0 r EvalCtx{ locals = ls, stack = st } -> step ctx { locals = ls, stack = st } loop Break n r ctx' -> return $ Break (n - 1) r ctx' Done ctx'@EvalCtx{ labels = (_:rest) } -> return $ Done ctx' { labels = rest } command -> return command- step ctx@EvalCtx{ stack = (VI32 v): rest } (If resType true false) = do+ step ctx@EvalCtx{ stack = (VI32 v): rest } (If blockType true false) = do+ let FuncType paramType resType = case blockType of+ Inline Nothing -> FuncType [] []+ Inline (Just valType) -> FuncType [] [valType]+ TypeIndex typeIdx -> funcTypes moduleInstance ! fromIntegral typeIdx let expr = if v /= 0 then true else false res <- go ctx { labels = Label resType : labels ctx, stack = rest } expr case res of- Break 0 r EvalCtx{ locals = ls } -> return $ Done ctx { locals = ls, stack = r ++ rest }+ Break 0 r EvalCtx{ locals = ls } -> return $ Done ctx { locals = ls, stack = r ++ (drop (length paramType) rest) } Break n r ctx' -> return $ Break (n - 1) r ctx' Done ctx'@EvalCtx{ labels = (_:rest) } -> return $ Done ctx' { labels = rest } command -> return command step ctx@EvalCtx{ stack, labels } (Br label) = do let idx = fromIntegral label let Label resType = labels !! idx- case sequence $ zipWith checkValType resType $ take (length resType) stack of+ case sequence $ zipWith checkValType (reverse resType) $ take (length resType) stack of Just result -> return $ Break idx result ctx Nothing -> return Trap step ctx@EvalCtx{ stack = (VI32 v): rest } (BrIf label) =@@ -671,7 +685,7 @@ step ctx { stack = rest } (Br lbl) step EvalCtx{ stack } Return = let resType = results funcType in- case sequence $ zipWith checkValType resType $ take (length resType) stack of+ case sequence $ zipWith checkValType (reverse resType) $ take (length resType) stack of Just result -> return $ ReturnFn $ reverse result Nothing -> return Trap step ctx (Call fun) = do@@ -738,31 +752,31 @@ step ctx (F64Load MemArg { offset }) = makeLoadInstr ctx offset 8 $ (\rest val -> Done ctx { stack = VF64 (wordToDouble val) : rest }) step ctx (I32Load8U MemArg { offset }) =- makeLoadInstr ctx offset 1 $ (\rest val -> Done ctx { stack = VI32 val : rest })+ makeLoadInstr @Word8 ctx offset 1 $ (\rest val -> Done ctx { stack = VI32 (fromIntegral val) : rest }) step ctx (I32Load8S MemArg { offset }) = makeLoadInstr ctx offset 1 $ (\rest byte -> let val = asWord32 $ if (byte :: Word8) >= 128 then -1 * fromIntegral (0xFF - byte + 1) else fromIntegral byte in Done ctx { stack = VI32 val : rest }) step ctx (I32Load16U MemArg { offset }) = do- makeLoadInstr ctx offset 2 $ (\rest val -> Done ctx { stack = VI32 val : rest })+ makeLoadInstr @Word16 ctx offset 2 $ (\rest val -> Done ctx { stack = VI32 (fromIntegral val) : rest }) step ctx (I32Load16S MemArg { offset }) = makeLoadInstr ctx offset 2 $ (\rest val -> let signed = asWord32 $ if (val :: Word16) >= 2 ^ 15 then -1 * fromIntegral (0xFFFF - val + 1) else fromIntegral val in Done ctx { stack = VI32 signed : rest }) step ctx (I64Load8U MemArg { offset }) =- makeLoadInstr ctx offset 1 $ (\rest val -> Done ctx { stack = VI64 val : rest })+ makeLoadInstr @Word8 ctx offset 1 $ (\rest val -> Done ctx { stack = VI64 (fromIntegral val) : rest }) step ctx (I64Load8S MemArg { offset }) = makeLoadInstr ctx offset 1 $ (\rest byte -> let val = asWord64 $ if (byte :: Word8) >= 128 then -1 * fromIntegral (0xFF - byte + 1) else fromIntegral byte in Done ctx { stack = VI64 val : rest }) step ctx (I64Load16U MemArg { offset }) =- makeLoadInstr ctx offset 2 $ (\rest val -> Done ctx { stack = VI64 val : rest })+ makeLoadInstr @Word16 ctx offset 2 $ (\rest val -> Done ctx { stack = VI64 (fromIntegral val) : rest }) step ctx (I64Load16S MemArg { offset }) = makeLoadInstr ctx offset 2 $ (\rest val -> let signed = asWord64 $ if (val :: Word16) >= 2 ^ 15 then -1 * fromIntegral (0xFFFF - val + 1) else fromIntegral val in Done ctx { stack = VI64 signed : rest }) step ctx (I64Load32U MemArg { offset }) =- makeLoadInstr ctx offset 4 $ (\rest val -> Done ctx { stack = VI64 val : rest })+ makeLoadInstr @Word32 ctx offset 4 $ (\rest val -> Done ctx { stack = VI64 (fromIntegral val) : rest }) step ctx (I64Load32S MemArg { offset }) = makeLoadInstr ctx offset 4 $ (\rest val -> let signed = asWord64 $ fromIntegral $ asInt32 val in@@ -776,31 +790,35 @@ step ctx@EvalCtx{ stack = (VF64 f:rest) } (F64Store MemArg { offset }) = makeStoreInstr ctx { stack = rest } offset 8 $ doubleToWord f step ctx@EvalCtx{ stack = (VI32 v:rest) } (I32Store8 MemArg { offset }) =- makeStoreInstr ctx { stack = rest } offset 1 v+ makeStoreInstr @Word8 ctx { stack = rest } offset 1 $ fromIntegral v step ctx@EvalCtx{ stack = (VI32 v:rest) } (I32Store16 MemArg { offset }) =- makeStoreInstr ctx { stack = rest } offset 2 v+ makeStoreInstr @Word16 ctx { stack = rest } offset 2 $ fromIntegral v step ctx@EvalCtx{ stack = (VI64 v:rest) } (I64Store8 MemArg { offset }) =- makeStoreInstr ctx { stack = rest } offset 1 v+ makeStoreInstr @Word8 ctx { stack = rest } offset 1 $ fromIntegral v step ctx@EvalCtx{ stack = (VI64 v:rest) } (I64Store16 MemArg { offset }) =- makeStoreInstr ctx { stack = rest } offset 2 v+ makeStoreInstr @Word16 ctx { stack = rest } offset 2 $ fromIntegral v step ctx@EvalCtx{ stack = (VI64 v:rest) } (I64Store32 MemArg { offset }) =- makeStoreInstr ctx { stack = rest } offset 4 v+ makeStoreInstr @Word32 ctx { stack = rest } offset 4 $ fromIntegral v step ctx@EvalCtx{ stack = st } CurrentMemory = do let MemoryInstance { memory = memoryRef } = memInstances store ! (memaddrs moduleInstance ! 0) memory <- readIORef memoryRef- let size = fromIntegral $ IOVector.length memory `div` pageSize- return $ Done ctx { stack = VI32 size : st }+ size <- ((`quot` pageSize) . fromIntegral) <$> ByteArray.getSizeofMutableByteArray memory+ return $ Done ctx { stack = VI32 (fromIntegral size) : st } step ctx@EvalCtx{ stack = (VI32 n:rest) } GrowMemory = do let MemoryInstance { lim = limit@(Limit _ maxLen), memory = memoryRef } = memInstances store ! (memaddrs moduleInstance ! 0) memory <- readIORef memoryRef- let size = fromIntegral $ IOVector.length memory `quot` pageSize+ size <- (`quot` pageSize) <$> ByteArray.getSizeofMutableByteArray memory let growTo = size + fromIntegral n+ let w64PageSize = fromIntegral $ pageSize `div` 8 result <- ( if fromMaybe True ((growTo <=) . fromIntegral <$> maxLen) && growTo <= 0xFFFF- then do- mem' <- IOVector.grow memory $ fromIntegral n * pageSize- writeIORef memoryRef mem'- return size+ then (+ if n == 0 then return size else do+ mem' <- ByteArray.resizeMutableByteArray memory $ growTo * pageSize+ ByteArray.setByteArray @Word64 mem' (size * w64PageSize) (fromIntegral n * w64PageSize) 0+ writeIORef memoryRef mem'+ return size+ ) else return $ -1 ) return $ Done ctx { stack = VI32 (asWord32 $ fromIntegral result) : rest }@@ -874,6 +892,16 @@ return $ Done ctx { stack = VI32 (fromIntegral $ countTrailingZeros v) : rest } step ctx@EvalCtx{ stack = (VI32 v:rest) } (IUnOp BS32 IPopcnt) = return $ Done ctx { stack = VI32 (fromIntegral $ popCount v) : rest }+ step ctx@EvalCtx{ stack = (VI32 v:rest) } (IUnOp BS32 IExtend8S) =+ let byte = v .&. 0xFF in+ let r = if byte >= 0x80 then asWord32 (fromIntegral byte - 0x100) else byte in+ return $ Done ctx { stack = VI32 r : rest }+ step ctx@EvalCtx{ stack = (VI32 v:rest) } (IUnOp BS32 IExtend16S) =+ let half = v .&. 0xFFFF in+ let r = if half >= 0x8000 then asWord32 (fromIntegral half - 0x10000) else half in+ return $ Done ctx { stack = VI32 r : rest }+ step ctx@EvalCtx{ stack = (VI32 v:rest) } (IUnOp BS32 IExtend32S) =+ return $ Done ctx { stack = VI32 v : rest } step ctx@EvalCtx{ stack = (VI64 v2:VI64 v1:rest) } (IBinOp BS64 IAdd) = return $ Done ctx { stack = VI64 (v1 + v2) : rest } step ctx@EvalCtx{ stack = (VI64 v2:VI64 v1:rest) } (IBinOp BS64 ISub) =@@ -903,11 +931,11 @@ step ctx@EvalCtx{ stack = (VI64 v2:VI64 v1:rest) } (IBinOp BS64 IXor) = return $ Done ctx { stack = VI64 (v1 `xor` v2) : rest } step ctx@EvalCtx{ stack = (VI64 v2:VI64 v1:rest) } (IBinOp BS64 IShl) =- return $ Done ctx { stack = VI64 (v1 `shiftL` (fromIntegral v2 `rem` 64)) : rest }+ return $ Done ctx { stack = VI64 (v1 `shiftL` (fromIntegral (v2 `rem` 64))) : rest } step ctx@EvalCtx{ stack = (VI64 v2:VI64 v1:rest) } (IBinOp BS64 IShrU) =- return $ Done ctx { stack = VI64 (v1 `shiftR` (fromIntegral v2 `rem` 64)) : rest }+ return $ Done ctx { stack = VI64 (v1 `shiftR` (fromIntegral (v2 `rem` 64))) : rest } step ctx@EvalCtx{ stack = (VI64 v2:VI64 v1:rest) } (IBinOp BS64 IShrS) =- return $ Done ctx { stack = VI64 (asWord64 $ asInt64 v1 `shiftR` (fromIntegral v2 `rem` 64)) : rest }+ return $ Done ctx { stack = VI64 (asWord64 $ asInt64 v1 `shiftR` (fromIntegral (v2 `rem` 64))) : rest } step ctx@EvalCtx{ stack = (VI64 v2:VI64 v1:rest) } (IBinOp BS64 IRotl) = return $ Done ctx { stack = VI64 (v1 `rotateL` fromIntegral v2) : rest } step ctx@EvalCtx{ stack = (VI64 v2:VI64 v1:rest) } (IBinOp BS64 IRotr) =@@ -940,6 +968,18 @@ return $ Done ctx { stack = VI64 (fromIntegral $ countTrailingZeros v) : rest } step ctx@EvalCtx{ stack = (VI64 v:rest) } (IUnOp BS64 IPopcnt) = return $ Done ctx { stack = VI64 (fromIntegral $ popCount v) : rest }+ step ctx@EvalCtx{ stack = (VI64 v:rest) } (IUnOp BS64 IExtend8S) =+ let byte = v .&. 0xFF in+ let r = if byte >= 0x80 then asWord64 (fromIntegral byte - 0x100) else byte in+ return $ Done ctx { stack = VI64 r : rest }+ step ctx@EvalCtx{ stack = (VI64 v:rest) } (IUnOp BS64 IExtend16S) =+ let quart = v .&. 0xFFFF in+ let r = if quart >= 0x8000 then asWord64 (fromIntegral quart - 0x10000) else quart in+ return $ Done ctx { stack = VI64 r : rest }+ step ctx@EvalCtx{ stack = (VI64 v:rest) } (IUnOp BS64 IExtend32S) =+ let half = v .&. 0xFFFFFFFF in+ let r = if half >= 0x80000000 then asWord64 (fromIntegral half - 0x100000000) else half in+ return $ Done ctx { stack = VI64 r : rest } step ctx@EvalCtx{ stack = (VF32 v:rest) } (FUnOp BS32 FAbs) = return $ Done ctx { stack = VF32 (abs v) : rest } step ctx@EvalCtx{ stack = (VF32 v:rest) } (FUnOp BS32 FNeg) =@@ -1039,21 +1079,81 @@ then return Trap else return $ Done ctx { stack = VI64 (truncate v) : rest } step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncFS BS32 BS32) =- if isNaN v || isInfinite v || v >= 2^31 || v < -2^31+ if isNaN v || isInfinite v || v >= 2^31 || v < -2^31 - 1 then return Trap else return $ Done ctx { stack = VI32 (asWord32 $ truncate v) : rest } step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncFS BS32 BS64) =- if isNaN v || isInfinite v || v >= 2^31 || v < -2^31+ if isNaN v || isInfinite v || v >= 2^31 || v <= -2^31 - 1 then return Trap else return $ Done ctx { stack = VI32 (asWord32 $ truncate v) : rest } step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncFS BS64 BS32) =- if isNaN v || isInfinite v || v >= 2^63 || v < -2^63+ if isNaN v || isInfinite v || v >= 2^63 || v < -2^63 - 1 then return Trap else return $ Done ctx { stack = VI64 (asWord64 $ truncate v) : rest } step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncFS BS64 BS64) =- if isNaN v || isInfinite v || v >= 2^63 || v < -2^63+ if isNaN v || isInfinite v || v >= 2^63 || v < -2^63 - 1 then return Trap else return $ Done ctx { stack = VI64 (asWord64 $ truncate v) : rest }++ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFS BS32 BS32) | isNaN v =+ return $ Done ctx { stack = VI32 0 : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFS BS32 BS64) | isNaN v =+ return $ Done ctx { stack = VI32 0 : rest }+ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFS BS64 BS32) | isNaN v =+ return $ Done ctx { stack = VI64 0 : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFS BS64 BS64) | isNaN v =+ return $ Done ctx { stack = VI64 0 : rest }+ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFU BS32 BS32) | v <= -1 || isNaN v =+ return $ Done ctx { stack = VI32 0 : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFU BS32 BS64) | v <= -1 || isNaN v =+ return $ Done ctx { stack = VI32 0 : rest }+ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFU BS64 BS32) | v <= -1 || isNaN v =+ return $ Done ctx { stack = VI64 0 : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFU BS64 BS64) | v <= -1 || isNaN v =+ return $ Done ctx { stack = VI64 0 : rest }++ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFS BS32 BS32) | v >= 2^31 =+ return $ Done ctx { stack = VI32 0x7fffffff : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFS BS32 BS64) | v >= 2^31 =+ return $ Done ctx { stack = VI32 0x7fffffff : rest }+ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFS BS64 BS32) | v >= 2^63 =+ return $ Done ctx { stack = VI64 0x7fffffffffffffff : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFS BS64 BS64) | v >= 2^63 =+ return $ Done ctx { stack = VI64 0x7fffffffffffffff : rest }+ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFU BS32 BS32) | v >= 2^32 =+ return $ Done ctx { stack = VI32 0xffffffff : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFU BS32 BS64) | v >= 2^32 =+ return $ Done ctx { stack = VI32 0xffffffff : rest }+ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFU BS64 BS32) | v >= 2^64 =+ return $ Done ctx { stack = VI64 0xffffffffffffffff : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFU BS64 BS64) | v >= 2^64 =+ return $ Done ctx { stack = VI64 0xffffffffffffffff : rest }+ + step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFS BS32 BS32) | v <= -2^31 - 1 =+ return $ Done ctx { stack = VI32 0x80000000 : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFS BS32 BS64) | v <= -2^31 - 1 =+ return $ Done ctx { stack = VI32 0x80000000 : rest }+ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFS BS64 BS32) | v <= -2^63 - 1 =+ return $ Done ctx { stack = VI64 0x8000000000000000 : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFS BS64 BS64) | v <= -2^63 - 1 =+ return $ Done ctx { stack = VI64 0x8000000000000000 : rest }++ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFU BS32 BS32) =+ return $ Done ctx { stack = VI32 (truncate v) : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFU BS32 BS64) =+ return $ Done ctx { stack = VI32 (truncate v) : rest }+ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFU BS64 BS32) =+ return $ Done ctx { stack = VI64 (truncate v) : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFU BS64 BS64) =+ return $ Done ctx { stack = VI64 (truncate v) : rest }+ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFS BS32 BS32) =+ return $ Done ctx { stack = VI32 (asWord32 $ truncate v) : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFS BS32 BS64) =+ return $ Done ctx { stack = VI32 (asWord32 $ truncate v) : rest }+ step ctx@EvalCtx{ stack = (VF32 v:rest) } (ITruncSatFS BS64 BS32) =+ return $ Done ctx { stack = VI64 (asWord64 $ truncate v) : rest }+ step ctx@EvalCtx{ stack = (VF64 v:rest) } (ITruncSatFS BS64 BS64) =+ return $ Done ctx { stack = VI64 (asWord64 $ truncate v) : rest } step ctx@EvalCtx{ stack = (VI32 v:rest) } I64ExtendUI32 = return $ Done ctx { stack = VI64 (fromIntegral v) : rest } step ctx@EvalCtx{ stack = (VI32 v:rest) } I64ExtendSI32 =
src/Language/Wasm/Lexer.x view
@@ -7,19 +7,21 @@ AlexPosn(..), scanner, asFloat,- asDouble+ asDouble,+ doubleFromInteger ) where import qualified Data.ByteString.Lazy as LBS import qualified Data.Char as Char import qualified Data.ByteString.Lazy.UTF8 as LBSUtf8-import Control.Applicative ((<$>)) import Control.Monad (when)-import Numeric.IEEE (infinity, nan)-import Language.Wasm.FloatUtils (makeNaN, doubleToFloat)-import Data.Word (Word8)+import Numeric.IEEE (infinity, nan, nanWithPayload)+import Language.Wasm.FloatUtils (makeNaN, doubleToFloat, wordToFloat, wordToDouble)+import Data.Word (Word8, Word64) import Data.List (isPrefixOf) import Text.Read (readEither)+import Data.Bits+import Numeric (showHex) } @@ -63,6 +65,8 @@ <0> "nan" { constToken $ TFloatLit $ BinRep (abs nan) } <0> "+nan" { constToken $ TFloatLit $ BinRep (abs nan) } <0> "-nan" { constToken $ TFloatLit $ BinRep nan }+<0> "nan:canonical" { constToken $ TFloatLit $ NanRep Canonical }+<0> "nan:arithmetic" { constToken $ TFloatLit $ NanRep Arithmetic } <0> $sign? @nanhex { parseNanSigned } <0> "inf" { constToken $ TFloatLit $ BinRep inf } <0> "+inf" { constToken $ TFloatLit $ BinRep inf }@@ -130,9 +134,13 @@ parseNanSigned :: AlexAction Lexeme parseNanSigned = token $ \(pos, _, s, _) len -> - let (sign, slen) = parseSign s in+ let (sign, slen) = case LBSUtf8.decode s of+ Just ('-', _) -> (False, 1)+ Just ('+', _) -> (True, 1)+ otherwise -> (True, 0)+ in let num = readHexFromPrefix (len - 6 - slen) $ LBSUtf8.drop (6 + slen) s in- Lexeme (Just pos) $ TFloatLit $ BinRep $ sign $ makeNaN $ fromIntegral num+ Lexeme (Just pos) $ TFloatLit $ NanRep $ NanHex sign $ fromIntegral num parseDecimalSignedInt :: AlexAction Lexeme parseDecimalSignedInt = token $ \(pos, _, s, _) len ->@@ -184,45 +192,86 @@ parseHexFloat = token $ \(pos, _, s, _) len -> Lexeme (Just pos) $ TFloatLit $ HexRep $ filter (/= '_') $ takeChars len s -readHexFloat :: Int -> String -> String -> Either String Double-readHexFloat expLimit restrictedPrefix str =+readHexFloat :: (Integral w, Bits w) => (w -> f) -> Int -> Int -> Int -> String -> Either String f+readHexFloat toFloat sz expLimit manitisaSize str = do let (sign, '0':'x':rest) = case str of- ('+':rest) -> (abs, rest)- ('-':rest) -> (negate, rest)- rest -> (abs, rest)- in- let (val, exp) = splitBy (\c -> c == 'P' || c == 'p') rest in- let (int, frac) = splitBy (== '.') val in- let intLen = length int in- let expInt = expAsInt exp in- if int == "1" && ((restrictedPrefix `isPrefixOf` frac && expInt == expLimit - 1) || expInt >= expLimit)- then Left $ "constant out of range"- else- let intVal = sum $ zipWith (\i c -> readHexFromChar c * (16 ^ (intLen - i))) [1..] int in- Right $ sign $ (intVal + readHexFrac frac) * readHexExp exp+ ('+':rest) -> (0, rest)+ ('-':rest) -> (1 `shiftL` (sz - 1), rest)+ rest -> (0, rest)+ let (val, expStr) = splitBy (\c -> c == 'P' || c == 'p') rest+ let (intRaw, fracRaw) = splitBy (== '.') val+ let int = dropWhile (== '0') intRaw+ let fracWithZeros = int ++ (reverse $ dropWhile (== '0') $ reverse fracRaw)+ let frac = dropWhile (== '0') fracWithZeros+ let exp = expAsInt expStr + length int * 4 - (length $ takeWhile (== '0') fracWithZeros) * 4+ if length frac == 0+ then return $ toFloat sign+ else do+ let fracBits = reverse $ dropWhile (== False) $ reverse $ toBits frac+ let exp' = exp - (length $ takeWhile (== False) fracBits) - 1+ let bits = dropWhile (== False) fracBits+ let budget = min (manitisaSize + 1) $ (expLimit + manitisaSize) + exp'+ let (bits', a, exp'') = if length bits <= budget+ then (bits, 0, exp')+ else do+ let rounded = take budget bits+ let rest = drop budget bits+ if head rest == True && (length rest > 1 || (length rounded > 0 && last rounded == True))+ then do+ if length rounded > 0 && all (== True) rounded+ then ([True], 0, exp' + 1)+ else (rounded, 1, exp')+ else (rounded, 0, exp')+ if exp'' > expLimit || exp'' < (negate $ expLimit + manitisaSize) then Left "constant out of range" else return ()+ if exp'' >= (negate $ expLimit - 1)+ then return $ toFloat $ sign .|. ((fromIntegral $ exp'' + expLimit) `shiftL` manitisaSize) .|. ((fromBits (tail bits') + a) `shiftL` (manitisaSize + 1 - length bits'))+ else do+ let shift = expLimit + manitisaSize - length bits' - abs exp''+ if shift < 0+ then return $ toFloat sign+ else return $ toFloat $ sign .|. ((fromBits bits' + a) `shiftL` shift)++type BitString = [Bool]++toBits :: String -> BitString+toBits = concat . map (asBits . readHexFromChar) where- readHexExp :: String -> Double- readHexExp [] = 1- readHexExp ('+' : rest) = readHexExp rest- readHexExp ('-' : rest) = 1 / readHexExp rest- readHexExp expStr = 2 ^ read expStr+ asBits :: Word8 -> BitString+ asBits w = [+ if w .&. 8 == 0 then False else True,+ if w .&. 4 == 0 then False else True,+ if w .&. 2 == 0 then False else True,+ if w .&. 1 == 0 then False else True+ ] - readHexFrac :: String -> Double- readHexFrac [] = 0- readHexFrac val =- let len = length val in- sum $ zipWith (\i c -> readHexFromChar c / (16 ^ i)) [1..] val+fromBits :: (Integral i) => BitString -> i+fromBits = foldr (\b acc -> acc * 2 + if b then 1 else 0) 0 . reverse . dropWhile (== False) asFloat :: FloatRep -> Either String Float asFloat (BinRep d) = Right $ doubleToFloat d-asFloat (HexRep s) = doubleToFloat <$> readHexFloat 128 "ffffff" s+asFloat (HexRep s) = readHexFloat wordToFloat 32 127 23 s asFloat (DecRep s) = readDecFloat s+asFloat (NanRep Canonical) = Right nan+asFloat (NanRep Arithmetic) = Right nan+asFloat (NanRep (NanHex isPos payload)) =+ if payload >= 1 && payload < 2 ^ 23+ then return $ doubleToFloat $ (if isPos then id else negate) $ makeNaN payload+ else Left "constant out of range" asDouble :: FloatRep -> Either String Double asDouble (BinRep d) = Right d-asDouble (HexRep s) = readHexFloat 1024 "fffffffffffff8" s+asDouble (HexRep s) = readHexFloat wordToDouble 64 1023 52 s asDouble (DecRep s) = readDecDouble s+asDouble (NanRep Canonical) = Right nan+asDouble (NanRep Arithmetic) = Right nan+asDouble (NanRep (NanHex isPos payload)) =+ if payload >= 1 && payload < 2 ^ 52+ then return $ (if isPos then id else negate) $ makeNaN payload+ else Left "constant out of range" +doubleFromInteger :: Integer -> Either String Double+doubleFromInteger int = asDouble . HexRep . ((if int < 0 then "-0x" else "0x") ++) . flip showHex "" $ abs int+ startBlockComment :: AlexAction Lexeme startBlockComment _inp _len = do depth <- getLexerCommentDepth@@ -299,6 +348,13 @@ = BinRep Double | DecRep String | HexRep String+ | NanRep NaN+ deriving (Show, Eq)++data NaN+ = Canonical+ | Arithmetic+ | NanHex Bool Word64 deriving (Show, Eq) data Token = TKeyword LBS.ByteString
src/Language/Wasm/Parser.y view
@@ -66,9 +66,10 @@ import qualified Data.ByteString.Lazy as LBS import qualified Data.ByteString.Lazy.Char8 as LBSChar8-import Data.Maybe (fromMaybe, fromJust, isNothing)-import Data.List (foldl', findIndex, find)+import Data.Maybe (fromMaybe, fromJust, isNothing, catMaybes)+import Data.List (foldl', findIndex, find, nub) import Control.Monad (guard, foldM)+import Control.Monad.Except (throwError) import Numeric.Natural (Natural) import Data.Word (Word32, Word64)@@ -93,7 +94,8 @@ Lexeme(..), AlexPosn(..), asFloat,- asDouble+ asDouble,+ doubleFromInteger ) }@@ -116,7 +118,7 @@ 'f32' { Lexeme _ (TKeyword "f32") } 'f64' { Lexeme _ (TKeyword "f64") } 'mut' { Lexeme _ (TKeyword "mut") }-'anyfunc' { Lexeme _ (TKeyword "anyfunc") }+'funcref' { Lexeme _ (TKeyword "funcref") } 'type' { Lexeme _ (TKeyword "type") } 'unreachable' { Lexeme _ (TKeyword "unreachable") } 'nop' { Lexeme _ (TKeyword "nop") }@@ -128,11 +130,11 @@ 'call_indirect' { Lexeme _ (TKeyword "call_indirect") } 'drop' { Lexeme _ (TKeyword "drop") } 'select' { Lexeme _ (TKeyword "select") }-'get_local' { Lexeme _ (TKeyword "get_local") }-'set_local' { Lexeme _ (TKeyword "set_local") }-'tee_local' { Lexeme _ (TKeyword "tee_local") }-'get_global' { Lexeme _ (TKeyword "get_global") }-'set_global' { Lexeme _ (TKeyword "set_global") }+'get_local' { Lexeme _ (TKeyword "local.get") }+'set_local' { Lexeme _ (TKeyword "local.set") }+'tee_local' { Lexeme _ (TKeyword "local.tee") }+'get_global' { Lexeme _ (TKeyword "global.get") }+'set_global' { Lexeme _ (TKeyword "global.set") } 'i32.load' { Lexeme _ (TKeyword "i32.load") } 'i64.load' { Lexeme _ (TKeyword "i64.load") } 'f32.load' { Lexeme _ (TKeyword "f32.load") }@@ -156,8 +158,6 @@ 'i64.store8' { Lexeme _ (TKeyword "i64.store8") } 'i64.store16' { Lexeme _ (TKeyword "i64.store16") } 'i64.store32' { Lexeme _ (TKeyword "i64.store32") }-'current_memory' { Lexeme _ (TKeyword "current_memory") }-'grow_memory' { Lexeme _ (TKeyword "grow_memory") } 'memory.size' { Lexeme _ (TKeyword "memory.size") } 'memory.grow' { Lexeme _ (TKeyword "memory.grow") } 'i32.const' { Lexeme _ (TKeyword "i32.const") }@@ -167,6 +167,8 @@ 'i32.clz' { Lexeme _ (TKeyword "i32.clz") } 'i32.ctz' { Lexeme _ (TKeyword "i32.ctz") } 'i32.popcnt' { Lexeme _ (TKeyword "i32.popcnt") }+'i32.extend8_s' { Lexeme _ (TKeyword "i32.extend8_s") }+'i32.extend16_s' { Lexeme _ (TKeyword "i32.extend16_s") } 'i32.add' { Lexeme _ (TKeyword "i32.add") } 'i32.sub' { Lexeme _ (TKeyword "i32.sub") } 'i32.mul' { Lexeme _ (TKeyword "i32.mul") }@@ -185,6 +187,9 @@ 'i64.clz' { Lexeme _ (TKeyword "i64.clz") } 'i64.ctz' { Lexeme _ (TKeyword "i64.ctz") } 'i64.popcnt' { Lexeme _ (TKeyword "i64.popcnt") }+'i64.extend8_s' { Lexeme _ (TKeyword "i64.extend8_s") }+'i64.extend16_s' { Lexeme _ (TKeyword "i64.extend16_s") }+'i64.extend32_s' { Lexeme _ (TKeyword "i64.extend32_s") } 'i64.add' { Lexeme _ (TKeyword "i64.add") } 'i64.sub' { Lexeme _ (TKeyword "i64.sub") } 'i64.mul' { Lexeme _ (TKeyword "i64.mul") }@@ -262,31 +267,39 @@ 'f64.gt' { Lexeme _ (TKeyword "f64.gt") } 'f64.le' { Lexeme _ (TKeyword "f64.le") } 'f64.ge' { Lexeme _ (TKeyword "f64.ge") }-'i32.wrap/i64' { Lexeme _ (TKeyword "i32.wrap/i64") }-'i32.trunc_s/f32' { Lexeme _ (TKeyword "i32.trunc_s/f32") }-'i32.trunc_u/f32' { Lexeme _ (TKeyword "i32.trunc_u/f32") }-'i32.trunc_s/f64' { Lexeme _ (TKeyword "i32.trunc_s/f64") }-'i32.trunc_u/f64' { Lexeme _ (TKeyword "i32.trunc_u/f64") }-'i64.extend_s/i32' { Lexeme _ (TKeyword "i64.extend_s/i32") }-'i64.extend_u/i32' { Lexeme _ (TKeyword "i64.extend_u/i32") }-'i64.trunc_s/f32' { Lexeme _ (TKeyword "i64.trunc_s/f32") }-'i64.trunc_u/f32' { Lexeme _ (TKeyword "i64.trunc_u/f32") }-'i64.trunc_s/f64' { Lexeme _ (TKeyword "i64.trunc_s/f64") }-'i64.trunc_u/f64' { Lexeme _ (TKeyword "i64.trunc_u/f64") }-'f32.convert_s/i32' { Lexeme _ (TKeyword "f32.convert_s/i32") }-'f32.convert_u/i32' { Lexeme _ (TKeyword "f32.convert_u/i32") }-'f32.convert_s/i64' { Lexeme _ (TKeyword "f32.convert_s/i64") }-'f32.convert_u/i64' { Lexeme _ (TKeyword "f32.convert_u/i64") }-'f32.demote/f64' { Lexeme _ (TKeyword "f32.demote/f64") }-'f64.convert_s/i32' { Lexeme _ (TKeyword "f64.convert_s/i32") }-'f64.convert_u/i32' { Lexeme _ (TKeyword "f64.convert_u/i32") }-'f64.convert_s/i64' { Lexeme _ (TKeyword "f64.convert_s/i64") }-'f64.convert_u/i64' { Lexeme _ (TKeyword "f64.convert_u/i64") }-'f64.promote/f32' { Lexeme _ (TKeyword "f64.promote/f32") }-'i32.reinterpret/f32' { Lexeme _ (TKeyword "i32.reinterpret/f32") }-'i64.reinterpret/f64' { Lexeme _ (TKeyword "i64.reinterpret/f64") }-'f32.reinterpret/i32' { Lexeme _ (TKeyword "f32.reinterpret/i32") }-'f64.reinterpret/i64' { Lexeme _ (TKeyword "f64.reinterpret/i64") }+'i32.wrap_i64' { Lexeme _ (TKeyword "i32.wrap_i64") }+'i32.trunc_f32_s' { Lexeme _ (TKeyword "i32.trunc_f32_s") }+'i32.trunc_f32_u' { Lexeme _ (TKeyword "i32.trunc_f32_u") }+'i32.trunc_f64_s' { Lexeme _ (TKeyword "i32.trunc_f64_s") }+'i32.trunc_f64_u' { Lexeme _ (TKeyword "i32.trunc_f64_u") }+'i32.trunc_sat_f32_s' { Lexeme _ (TKeyword "i32.trunc_sat_f32_s") }+'i32.trunc_sat_f32_u' { Lexeme _ (TKeyword "i32.trunc_sat_f32_u") }+'i32.trunc_sat_f64_s' { Lexeme _ (TKeyword "i32.trunc_sat_f64_s") }+'i32.trunc_sat_f64_u' { Lexeme _ (TKeyword "i32.trunc_sat_f64_u") }+'i64.extend_i32_s' { Lexeme _ (TKeyword "i64.extend_i32_s") }+'i64.extend_i32_u' { Lexeme _ (TKeyword "i64.extend_i32_u") }+'i64.trunc_f32_s' { Lexeme _ (TKeyword "i64.trunc_f32_s") }+'i64.trunc_f32_u' { Lexeme _ (TKeyword "i64.trunc_f32_u") }+'i64.trunc_f64_s' { Lexeme _ (TKeyword "i64.trunc_f64_s") }+'i64.trunc_f64_u' { Lexeme _ (TKeyword "i64.trunc_f64_u") }+'i64.trunc_sat_f32_s' { Lexeme _ (TKeyword "i64.trunc_sat_f32_s") }+'i64.trunc_sat_f32_u' { Lexeme _ (TKeyword "i64.trunc_sat_f32_u") }+'i64.trunc_sat_f64_s' { Lexeme _ (TKeyword "i64.trunc_sat_f64_s") }+'i64.trunc_sat_f64_u' { Lexeme _ (TKeyword "i64.trunc_sat_f64_u") }+'f32.convert_i32_s' { Lexeme _ (TKeyword "f32.convert_i32_s") }+'f32.convert_i32_u' { Lexeme _ (TKeyword "f32.convert_i32_u") }+'f32.convert_i64_s' { Lexeme _ (TKeyword "f32.convert_i64_s") }+'f32.convert_i64_u' { Lexeme _ (TKeyword "f32.convert_i64_u") }+'f32.demote_f64' { Lexeme _ (TKeyword "f32.demote_f64") }+'f64.convert_i32_s' { Lexeme _ (TKeyword "f64.convert_i32_s") }+'f64.convert_i32_u' { Lexeme _ (TKeyword "f64.convert_i32_u") }+'f64.convert_i64_s' { Lexeme _ (TKeyword "f64.convert_i64_s") }+'f64.convert_i64_u' { Lexeme _ (TKeyword "f64.convert_i64_u") }+'f64.promote_f32' { Lexeme _ (TKeyword "f64.promote_f32") }+'i32.reinterpret_f32' { Lexeme _ (TKeyword "i32.reinterpret_f32") }+'i64.reinterpret_f64' { Lexeme _ (TKeyword "i64.reinterpret_f64") }+'f32.reinterpret_i32' { Lexeme _ (TKeyword "f32.reinterpret_i32") }+'f64.reinterpret_i64' { Lexeme _ (TKeyword "f64.reinterpret_i64") } 'block' { Lexeme _ (TKeyword "block") } 'loop' { Lexeme _ (TKeyword "loop") } 'if' { Lexeme _ (TKeyword "if") }@@ -310,14 +323,14 @@ 'register' { Lexeme _ (TKeyword "register") } 'invoke' { Lexeme _ (TKeyword "invoke") } 'get' { Lexeme _ (TKeyword "get") }-'assert_return' { Lexeme _ (TKeyword "assert_return") }-'assert_return_canonical_nan' { Lexeme _ (TKeyword "assert_return_canonical_nan") }-'assert_return_arithmetic_nan' { Lexeme _ (TKeyword "assert_return_arithmetic_nan") }-'assert_trap' { Lexeme _ (TKeyword "assert_trap") }-'assert_malformed' { Lexeme _ (TKeyword "assert_malformed") }-'assert_invalid' { Lexeme _ (TKeyword "assert_invalid") }-'assert_unlinkable' { Lexeme _ (TKeyword "assert_unlinkable") }-'assert_exhaustion' { Lexeme _ (TKeyword "assert_exhaustion") }+'assert_return' { Lexeme $$ (TKeyword "assert_return") }+'assert_return_canonical_nan' { Lexeme $$ (TKeyword "assert_return_canonical_nan") }+'assert_return_arithmetic_nan' { Lexeme $$ (TKeyword "assert_return_arithmetic_nan") }+'assert_trap' { Lexeme $$ (TKeyword "assert_trap") }+'assert_malformed' { Lexeme $$ (TKeyword "assert_malformed") }+'assert_invalid' { Lexeme $$ (TKeyword "assert_invalid") }+'assert_unlinkable' { Lexeme $$ (TKeyword "assert_unlinkable") }+'assert_exhaustion' { Lexeme $$ (TKeyword "assert_exhaustion") } 'script' { Lexeme _ (TKeyword "script") } 'input' { Lexeme _ (TKeyword "input") } 'output' { Lexeme _ (TKeyword "output") }@@ -389,7 +402,7 @@ : int {% let maxInt = round (maxFinite :: Double) in if $1 <= maxInt && $1 >= -maxInt- then return $ fromIntegral $1+ then doubleFromInteger $1 else Left "constant out of range" } | f64 {% asDouble $1 }@@ -435,8 +448,6 @@ | 'i64.store8' memarg1 { I64Store8 $2 } | 'i64.store16' memarg2 { I64Store16 $2 } | 'i64.store32' memarg4 { I64Store32 $2 }- | 'current_memory' { CurrentMemory }- | 'grow_memory' { GrowMemory } | 'memory.size' { CurrentMemory } | 'memory.grow' { GrowMemory } -- numeric instructions@@ -447,6 +458,8 @@ | 'i32.clz' { IUnOp BS32 IClz } | 'i32.ctz' { IUnOp BS32 ICtz } | 'i32.popcnt' { IUnOp BS32 IPopcnt }+ | 'i32.extend8_s' { IUnOp BS32 IExtend8S }+ | 'i32.extend16_s' { IUnOp BS32 IExtend16S } | 'i32.add' { IBinOp BS32 IAdd } | 'i32.sub' { IBinOp BS32 ISub } | 'i32.mul' { IBinOp BS32 IMul }@@ -465,6 +478,9 @@ | 'i64.clz' { IUnOp BS64 IClz } | 'i64.ctz' { IUnOp BS64 ICtz } | 'i64.popcnt' { IUnOp BS64 IPopcnt }+ | 'i64.extend8_s' { IUnOp BS64 IExtend8S }+ | 'i64.extend16_s' { IUnOp BS64 IExtend16S }+ | 'i64.extend32_s' { IUnOp BS64 IExtend32S } | 'i64.add' { IBinOp BS64 IAdd } | 'i64.sub' { IBinOp BS64 ISub } | 'i64.mul' { IBinOp BS64 IMul }@@ -542,74 +558,92 @@ | 'f64.gt' { FRelOp BS64 FGt } | 'f64.le' { FRelOp BS64 FLe } | 'f64.ge' { FRelOp BS64 FGe }- | 'i32.wrap/i64' { I32WrapI64 }- | 'i32.trunc_s/f32' { ITruncFS BS32 BS32 }- | 'i32.trunc_u/f32' { ITruncFU BS32 BS32 }- | 'i32.trunc_s/f64' { ITruncFS BS32 BS64 }- | 'i32.trunc_u/f64' { ITruncFU BS32 BS64 }- | 'i64.extend_s/i32' { I64ExtendSI32 }- | 'i64.extend_u/i32' { I64ExtendUI32 }- | 'i64.trunc_s/f32' { ITruncFS BS64 BS32 }- | 'i64.trunc_u/f32' { ITruncFU BS64 BS32 }- | 'i64.trunc_s/f64' { ITruncFS BS64 BS64 }- | 'i64.trunc_u/f64' { ITruncFU BS64 BS64 }- | 'f32.convert_s/i32' { FConvertIS BS32 BS32 }- | 'f32.convert_u/i32' { FConvertIU BS32 BS32 }- | 'f32.convert_s/i64' { FConvertIS BS32 BS64 }- | 'f32.convert_u/i64' { FConvertIU BS32 BS64 }- | 'f32.demote/f64' { F32DemoteF64 }- | 'f64.convert_s/i32' { FConvertIS BS64 BS32 }- | 'f64.convert_u/i32' { FConvertIU BS64 BS32 }- | 'f64.convert_s/i64' { FConvertIS BS64 BS64 }- | 'f64.convert_u/i64' { FConvertIU BS64 BS64 }- | 'f64.promote/f32' { F64PromoteF32 }- | 'i32.reinterpret/f32' { IReinterpretF BS32 }- | 'i64.reinterpret/f64' { IReinterpretF BS64 }- | 'f32.reinterpret/i32' { FReinterpretI BS32 }- | 'f64.reinterpret/i64' { FReinterpretI BS64 }--typeuse :: { TypeUse }- : '(' typeuse1 { $2 }- | {- empty -} { AnonimousTypeUse $ FuncType [] [] }--typeuse1 :: { TypeUse }- : 'type' index ')' typedtypeuse { IndexedTypeUse $2 $4 }- | paramsresultstypeuse { AnonimousTypeUse $1 }+ | 'i32.wrap_i64' { I32WrapI64 }+ | 'i32.trunc_f32_s' { ITruncFS BS32 BS32 }+ | 'i32.trunc_f32_u' { ITruncFU BS32 BS32 }+ | 'i32.trunc_f64_s' { ITruncFS BS32 BS64 }+ | 'i32.trunc_f64_u' { ITruncFU BS32 BS64 }+ | 'i32.trunc_sat_f32_s' { ITruncSatFS BS32 BS32 }+ | 'i32.trunc_sat_f32_u' { ITruncSatFU BS32 BS32 }+ | 'i32.trunc_sat_f64_s' { ITruncSatFS BS32 BS64 }+ | 'i32.trunc_sat_f64_u' { ITruncSatFU BS32 BS64 }+ | 'i64.extend_i32_s' { I64ExtendSI32 }+ | 'i64.extend_i32_u' { I64ExtendUI32 }+ | 'i64.trunc_f32_s' { ITruncFS BS64 BS32 }+ | 'i64.trunc_f32_u' { ITruncFU BS64 BS32 }+ | 'i64.trunc_f64_s' { ITruncFS BS64 BS64 }+ | 'i64.trunc_f64_u' { ITruncFU BS64 BS64 }+ | 'i64.trunc_sat_f32_s' { ITruncSatFS BS64 BS32 }+ | 'i64.trunc_sat_f32_u' { ITruncSatFU BS64 BS32 }+ | 'i64.trunc_sat_f64_s' { ITruncSatFS BS64 BS64 }+ | 'i64.trunc_sat_f64_u' { ITruncSatFU BS64 BS64 }+ | 'f32.convert_i32_s' { FConvertIS BS32 BS32 }+ | 'f32.convert_i32_u' { FConvertIU BS32 BS32 }+ | 'f32.convert_i64_s' { FConvertIS BS32 BS64 }+ | 'f32.convert_i64_u' { FConvertIU BS32 BS64 }+ | 'f32.demote_f64' { F32DemoteF64 }+ | 'f64.convert_i32_s' { FConvertIS BS64 BS32 }+ | 'f64.convert_i32_u' { FConvertIU BS64 BS32 }+ | 'f64.convert_i64_s' { FConvertIS BS64 BS64 }+ | 'f64.convert_i64_u' { FConvertIU BS64 BS64 }+ | 'f64.promote_f32' { F64PromoteF32 }+ | 'i32.reinterpret_f32' { IReinterpretF BS32 }+ | 'i64.reinterpret_f64' { IReinterpretF BS64 }+ | 'f32.reinterpret_i32' { FReinterpretI BS32 }+ | 'f64.reinterpret_i64' { FReinterpretI BS64 } -typedtypeuse :: { Maybe FuncType }- : '(' paramsresultstypeuse { Just $2 }- | {- empty -} { Nothing }+typeuse(next)+ : '(' typeuse1(folded_instr_list(next), instruction_list(next)) {+ let (tu, rest) = $2 in+ let (next, instr) = either id id rest in+ (tu, instr, next)+ }+ | instruction_list(next) { let (next, instr) = $1 in (emptyTypeUse, instr, next) } -typedef :: { TypeDef }- : 'type' opt(ident) functype ')' { TypeDef $2 $3 }+typeuse1(close, next)+ : 'type' index ')' typesign(close, next) {+ case $4 of+ (FuncType [] [], rest) -> (IndexedTypeUse $2 Nothing, rest)+ (ft, rest) -> (IndexedTypeUse $2 (Just ft), rest)+ }+ | typesign1(close, next) {+ let (fnType, rest) = $1 in+ (AnonimousTypeUse fnType, rest)+ } -functype :: { FuncType }- : '(' 'func' params_results { $3 }+typesign(close, next)+ : '(' typesign1(close, next) { $2 }+ | next { (emptyFuncType, Left $1) } -params_results :: { FuncType }- : ')' { emptyFuncType }- | '(' params_results1 { $2 }+typesign1(close, next)+ : 'param' list(valtype) ')' typesign(close, next) {+ let (ft, rest) = $4 in+ (mergeFuncType (FuncType (map (ParamType Nothing) $2) []) ft, rest)+ }+ | 'param' ident valtype ')' typesign(close, next) {+ let (ft, rest) = $5 in+ (mergeFuncType (FuncType [ParamType (Just $2) $3] []) ft, rest)+ }+ | typesign_result1(close, next) { $1 } -params_results1 :: { FuncType }- : 'param' list(valtype) ')' params_results { mergeFuncType (FuncType (map (ParamType Nothing) $2) []) $4 }- | 'param' ident valtype ')' params_results { mergeFuncType (FuncType [ParamType (Just $2) $3] []) $5 }- | results1 { $1 }+typesign_result(close, next)+ : '(' typesign_result1(close, next) { $2 }+ | next { (emptyFuncType, Left $1) } -results :: { FuncType }- : ')' { emptyFuncType }- | '(' results1 { $2 }+typesign_result1(close, next)+ : 'result' list(valtype) ')' typesign_result(close, next) {+ let (ft, rest) = $4 in+ (mergeFuncType (FuncType [] $2) ft, rest)+ }+ | close { (emptyFuncType, Right $1) } -results1 :: { FuncType }- : 'result' list(valtype) ')' results { mergeFuncType (FuncType [] $2) $4 }+never : EOF { () } -paramsresultstypeuse :: { FuncType }- : paramsresultstypeuse '(' paramsresulttypeuse { mergeFuncType $1 $3 }- | paramsresulttypeuse { $1 }+typedef :: { TypeDef }+ : 'type' opt(ident) functype ')' { TypeDef $2 $3 } -paramsresulttypeuse :: { FuncType }- : 'param' list(valtype) ')' { FuncType (map (ParamType Nothing) $2) [] }- | 'param' ident valtype ')' { FuncType [ParamType (Just $2) $3] [] }- | 'result' list(valtype) ')' { FuncType [] $2 }+functype :: { FuncType }+ : '(' 'func' typesign(')', ')') { let (ft, _) = $3 in ft } memarg1 :: { MemArg } : opt(offset) opt(align) {% parseMemArg 1 $1 $2 }@@ -623,188 +657,68 @@ memarg8 :: { MemArg } : opt(offset) opt(align) {% parseMemArg 8 $1 $2 } -instruction :: { [Instruction] }- : raw_instr { $1 }- | folded_instr { $1 }--raw_instr :: { [Instruction] }- : plaininstr { [PlainInstr $1] }- | 'call_indirect' raw_call_indirect { $2 }- | 'block' opt(ident) raw_block {% (: []) `fmap` $3 $2 }- | 'loop' opt(ident) raw_loop {% (: []) `fmap` $3 $2 }- | 'if' opt(ident) raw_if_result {% $3 $2 }--raw_block :: { Maybe Ident -> Either String Instruction }- : 'end' opt(ident) {- \ident ->- if ident == $2 || isNothing $2- then Right $ BlockInstr ident [] []- else Left "Block labels have to match"- }- | raw_instr list(instruction) 'end' opt(ident) {- \ident ->- if ident == $4 || isNothing $4- then Right $ BlockInstr ident [] ($1 ++ concat $2)- else Left "Block labels have to match"- }- | '(' raw_block1 { $2 }--raw_block1 :: { Maybe Ident -> Either String Instruction }- : 'result' valtype ')' list(instruction) 'end' opt(ident) {- \ident ->- if ident == $6 || isNothing $6- then Right $ BlockInstr ident [$2] (concat $4)- else Left "Block labels have to match"- }- | folded_instr1 list(instruction) 'end' opt(ident) {- \ident ->- if ident == $4 || isNothing $4- then Right $ BlockInstr ident [] ($1 ++ concat $2)- else Left "Block labels have to match"- }--raw_loop :: { Maybe Ident -> Either String Instruction }- : 'end' opt(ident) {- \ident ->- if ident == $2 || isNothing $2- then Right $ LoopInstr ident [] []- else Left "Loop labels have to match"+instruction_list(terminator)+ : terminator { ($1, []) }+ | plaininstr mixed_instruction_list(terminator) { ([PlainInstr $1] ++) `fmap` $2 }+ | 'call_indirect' typeuse(terminator) {%+ let (tu, instr, end) = $2 in+ onlyAnonimParams tu >> (return (end, [PlainInstr $ CallIndirect tu] ++ instr)) }- | raw_instr list(instruction) 'end' opt(ident) {- \ident ->- if ident == $4 || isNothing $4- then Right $ LoopInstr ident [] ($1 ++ concat $2)- else Left "Loop labels have to match"+ | 'block' opt(ident) typeuse('end') opt(ident) mixed_instruction_list(terminator) {% do+ let (tu, instr, _) = $3 + matchIdents $2 $4+ onlyAnonimParams tu+ return $ ([BlockInstr $2 tu instr] ++) `fmap` $5 }- | '(' raw_loop1 { $2 }--raw_loop1 :: { Maybe Ident -> Either String Instruction }- : 'result' valtype ')' list(instruction) 'end' opt(ident) {- \ident ->- if ident == $6 || isNothing $6- then Right $ LoopInstr ident [$2] (concat $4)- else Left "Loop labels have to match"+ | 'loop' opt(ident) typeuse('end') opt(ident) mixed_instruction_list(terminator) {% do+ let (tu, instr, _) = $3+ matchIdents $2 $4+ onlyAnonimParams tu+ return $ ([LoopInstr $2 tu instr] ++) `fmap` $5 }- | folded_instr1 list(instruction) 'end' opt(ident) {- \ident ->- if ident == $4 || isNothing $4- then Right $ LoopInstr ident [] ($1 ++ concat $2)- else Left "Loop labels have to match"+ | 'if' opt(ident) typeuse(if_else) mixed_instruction_list(terminator) {% do+ let (tu, trueBranch, (falseBranch, identAfter)) = $3+ matchIdents $2 identAfter+ onlyAnonimParams tu+ return $ ([IfInstr $2 tu trueBranch falseBranch] ++) `fmap` $4 } -raw_if_result :: { Maybe Ident -> Either String [Instruction] }- : raw_else {- \ident ->- if ident == (snd $1) || isNothing (snd $1)- then Right [IfInstr ident [] [] $ fst $1]- else Left "If labels have to match"- }- | raw_instr list(instruction) raw_else {- \ident ->- if ident == (snd $3) || isNothing (snd $3)- then Right [IfInstr ident [] ($1 ++ concat $2) $ fst $3]- else Left "If labels have to match"- }- | '(' raw_if_result1 { $2 }--raw_if_result1 :: { Maybe Ident -> Either String [Instruction] }- : 'result' valtype ')' list(instruction) raw_else {- \ident ->- if ident == (snd $5) || isNothing (snd $5)- then Right [IfInstr ident [$2] (concat $4) $ fst $5]- else Left "If labels have to match"- }- | folded_instr1 list(instruction) raw_else {- \ident ->- if ident == (snd $3) || isNothing (snd $3)- then Right [IfInstr ident [] ($1 ++ concat $2) $ fst $3]- else Left "If labels have to match"- }+mixed_instruction_list(terminator)+ : '(' folded_instr1 mixed_instruction_list(terminator) { ($2 ++) `fmap` $3 }+ | instruction_list(terminator) { $1 } -raw_else :: { ([Instruction], Maybe Ident) }+if_else :: { ([Instruction], Maybe Ident) } : 'end' opt(ident) { ([], $2) }- | 'else' opt(ident) list(instruction) 'end' opt(ident) {%- if matchIdents $2 $5- then Right (concat $3, if isNothing $2 then $5 else $2)- else Left "If labels have to match"- }--raw_call_indirect :: { [Instruction] }- : '(' raw_call_indirect_typeuse { (PlainInstr $ CallIndirect $ fst $2) : snd $2 }- | {- empty -} { [PlainInstr $ CallIndirect $ AnonimousTypeUse $ FuncType [] []] }--raw_call_indirect_typeuse :: { (TypeUse, [Instruction]) }- : 'type' index ')' raw_call_indirect_functype {- (IndexedTypeUse $2 $ fst $4, snd $4)- }- | raw_call_indirect_functype1 {- (AnonimousTypeUse $ fromMaybe (FuncType [] []) $ fst $1, snd $1)+ | 'else' opt(ident) mixed_instruction_list('end') opt(ident) {%+ matchIdents $2 $4 >> return (snd $3, if isNothing $2 then $4 else $2) } -raw_call_indirect_functype :: { (Maybe FuncType, [Instruction]) }- : '(' raw_call_indirect_functype1 { $2 }- | {- empty -} { (Nothing, []) }--raw_call_indirect_functype1 :: { (Maybe FuncType, [Instruction]) }- : 'param' list(valtype) ')' raw_call_indirect_functype {- let ft = fromMaybe emptyFuncType $ fst $4 in- (Just $ ft { params = map (ParamType Nothing) $2 ++ params ft }, snd $4)- }- | raw_call_indirect_return_functype1 { $1 }--raw_call_indirect_return_functype :: { (Maybe FuncType, [Instruction]) }- : '(' raw_call_indirect_return_functype1 { $2 }- | {- empty -} { (Nothing, []) }--raw_call_indirect_return_functype1 :: { (Maybe FuncType, [Instruction]) }- : 'result' list(valtype) ')' raw_call_indirect_return_functype {- let ft = fromMaybe emptyFuncType $ fst $4 in- (Just $ ft { results = $2 ++ results ft }, snd $4)- }- | folded_instr1 { (Nothing, $1) }+folded_instr_list(terminator) : folded_instr1 mixed_instruction_list(terminator) { ($1 ++) `fmap` $2 } folded_instr :: { [Instruction] } : '(' folded_instr1 { $2 } folded_instr1 :: { [Instruction] }- : plaininstr list(folded_instr) ')' { concat $2 ++ [PlainInstr $1] }- | 'call_indirect' folded_call_indirect { $2 }- | 'block' opt(ident) folded_block { [$3 $2] }- | 'loop' opt(ident) folded_loop { [$3 $2] }- | 'if' opt(ident) '(' folded_if_result { $4 $2 }--folded_block :: { Maybe Ident -> Instruction }- : ')' { \ident -> BlockInstr ident [] [] }- | '(' folded_block1 { $2 }- | raw_instr list(instruction) ')' { \ident -> BlockInstr ident [] ($1 ++ concat $2) }--folded_block1 :: { Maybe Ident -> Instruction }- : 'result' valtype ')' list(instruction) ')' { \ident -> BlockInstr ident [$2] (concat $4) }- | folded_instr1 list(instruction) ')' { \ident -> BlockInstr ident [] ($1 ++ concat $2) }--folded_loop :: { Maybe Ident -> Instruction }- : ')' { \ident -> LoopInstr ident [] [] }- | '(' folded_loop1 { $2 }- | raw_instr list(instruction) ')' { \ident -> LoopInstr ident [] ($1 ++ concat $2) }--folded_loop1 :: { Maybe Ident -> Instruction }- : 'result' valtype ')' list(instruction) ')' { \ident -> LoopInstr ident [$2] (concat $4) }- | folded_instr1 list(instruction) ')' { \ident -> LoopInstr ident [] ($1 ++ concat $2) }--folded_if_result :: { Maybe Ident -> [Instruction] }- : 'result' valtype ')' '(' folded_then_else {- \ident ->- let (pred, (trueBranch, falseBranch)) = $5 in- pred ++ [IfInstr ident [$2] trueBranch falseBranch]+ : plaininstr mixed_instruction_list(')') { snd $2 ++ [PlainInstr $1] }+ | 'call_indirect' typeuse(')') {%+ let (tu, instr, _) = $2 in+ onlyAnonimParams tu >> (return $ instr ++ [PlainInstr $ CallIndirect tu]) }- | folded_then_else {- \ident ->- let (pred, (trueBranch, falseBranch)) = $1 in- pred ++ [IfInstr ident [] trueBranch falseBranch]+ | 'block' opt(ident) typeuse(')') {%+ let (typeUse, instr, _) = $3 in+ onlyAnonimParams typeUse >> (return [BlockInstr $2 typeUse instr]) }+ | 'loop' opt(ident) typeuse(')') {%+ let (typeUse, instr, _) = $3 in+ onlyAnonimParams typeUse >> (return [LoopInstr $2 typeUse instr])+ }+ | 'if' opt(ident) '(' typeuse1(folded_then_else, never) {%+ let (typeUse, Right (pred, (trueBranch, falseBranch))) = $4 in+ onlyAnonimParams typeUse >> (return $ pred ++ [IfInstr $2 typeUse trueBranch falseBranch])+ } folded_then_else :: { ([Instruction], ([Instruction], [Instruction])) }- : 'then' list(instruction) ')' folded_else { ([], (concat $2, $4)) }+ : 'then' mixed_instruction_list(')') folded_else { ([], (snd $2, $3)) } | folded_instr1 '(' folded_then_else { let (pred, branches) = $3 in ($1 ++ pred, branches)@@ -812,44 +726,12 @@ folded_else :: { [Instruction] } : ')' { [] }- | '(' 'else' list(instruction) ')' ')' { concat $3 }--folded_call_indirect :: { [Instruction] }- : ')' { [PlainInstr $ CallIndirect $ AnonimousTypeUse $ FuncType [] []] }- | '(' folded_call_indirect_typeuse { snd $2 ++ [PlainInstr $ CallIndirect $ fst $2] }--folded_call_indirect_typeuse :: { (TypeUse, [Instruction]) }- : 'type' index ')' folded_call_indirect_functype {- (IndexedTypeUse $2 $ fst $4, snd $4)- }- | folded_call_indirect_functype1 {- (AnonimousTypeUse $ fromMaybe (FuncType [] []) $ fst $1, snd $1)- }--folded_call_indirect_functype :: { (Maybe FuncType, [Instruction]) }- : '(' folded_call_indirect_functype1 { $2 }- | ')' { (Nothing, []) }--folded_call_indirect_functype1 :: { (Maybe FuncType, [Instruction]) }- : 'param' list(valtype) ')' folded_call_indirect_functype {- let ft = fromMaybe emptyFuncType $ fst $4 in- (Just $ ft { params = map (ParamType Nothing) $2 ++ params ft }, snd $4)- }- | folded_call_indirect_return_functype1 { $1 }--folded_call_indirect_return_functype :: { (Maybe FuncType, [Instruction]) }- : '(' folded_call_indirect_return_functype1 { $2 }- | ')' { (Nothing, []) }--folded_call_indirect_return_functype1 :: { (Maybe FuncType, [Instruction]) }- : 'result' list(valtype) ')' folded_call_indirect_return_functype {- let ft = fromMaybe emptyFuncType $ fst $4 in- (Just $ ft { results = $2 ++ results ft }, snd $4)- }- | folded_instr1 list(folded_instr) ')' { (Nothing, $1 ++ concat $2) }+ | '(' 'else' mixed_instruction_list(')') ')' { snd $3 } importdesc :: { ImportDesc }- : 'func' opt(ident) typeuse ')' { ImportFunc $2 $3 }+ : 'func' opt(ident) typeuse(')') {+ let (ft, _, _) = $3 in ImportFunc $2 ft+ } | 'table' opt(ident) tabletype ')' { ImportTable $2 $3 } | 'memory' opt(ident) limits ')' { ImportMemory $2 $3 } | 'global' opt(ident) globaltype ')' { ImportGlobal $2 $3 }@@ -859,12 +741,15 @@ -- FUNCTION -- function :: { ModuleField }- : 'func' opt(ident) export_import_typeuse_locals_body { $3 $2 }+ : 'func' opt(ident) export_import_typeuse_locals_body {%+ case $3 $2 of+ mf@(MFFunc fn) -> checkLocalIdentUniqueness fn >> return mf+ mf -> return mf+ } export_import_typeuse_locals_body :: { Maybe Ident -> ModuleField }- : ')' { \i -> MFFunc emptyFunction { ident = i } }- | raw_instr list(instruction) ')' {- \i -> MFFunc emptyFunction { ident = i, body = $1 ++ concat $2 }+ : instruction_list(')') {+ \i -> MFFunc emptyFunction { ident = i, body = snd $1 } } | '(' export_import_typeuse_locals_body1 { $2 } @@ -879,55 +764,24 @@ | import_typeuse_locals_body1 { $1 } import_typeuse_locals_body1 :: { Maybe Ident -> ModuleField }- : 'import' name name ')' typeuse ')' {- \ident -> MFImport $ Import [] $2 $3 $ ImportFunc ident $5- }- | typeuse_locals_body1 { MFFunc . $1 }--typeuse_locals_body1 :: { Maybe Ident -> Function }- : 'type' index ')' signature_locals_body {- \i ->- let (AnonimousTypeUse signature) = funcType $4 in- let typeSign = if signature == emptyFuncType then Nothing else Just signature in- $4 { funcType = IndexedTypeUse $2 typeSign, ident = i }- }- | signature_locals_body1 { \i -> $1 { ident = i } }--signature_locals_body :: { Function }- : ')' { emptyFunction }- | '(' signature_locals_body1 { $2 }--signature_locals_body1 :: { Function }- : 'param' list(valtype) ')' signature_locals_body {- prependFuncParams (map (ParamType Nothing) $2) $4- }- | 'param' ident valtype ')' signature_locals_body {- prependFuncParams [ParamType (Just $2) $3] $5- }- | result_locals_body1 { $1 }--result_locals_body :: { Function }- : ')' { emptyFunction }- | '(' result_locals_body1 { $2 }- | raw_instr list(instruction) ')' { emptyFunction { body = $1 ++ concat $2 } }--result_locals_body1 :: { Function }- : 'result' list(valtype) ')' result_locals_body {- prependFuncResults $2 $4+ : 'import' name name ')' typeuse(')') {+ let (ft, _, _) = $5 in+ \ident -> MFImport $ Import [] $2 $3 $ ImportFunc ident ft }- | locals_body1 {- emptyFunction { locals = fst $1, body = snd $1 }+ | typeuse1(func_mid1, instruction_list(')')) {+ let (funcType, rest) = $1 in+ let (locals, body) = either (\a -> ([], snd a)) id rest in+ \ident -> MFFunc $ emptyFunction { locals, body, ident, funcType } } -locals_body :: { ([LocalType], [Instruction]) }- : ')' { ([], []) }- | raw_instr list(instruction) ')' { ([], $1 ++ concat $2)}- | '(' locals_body1 { $2 }+func_mid :: { ([LocalType], [Instruction]) }+ : instruction_list(')') { ([], snd $1) }+ | '(' func_mid1 { $2 } -locals_body1 :: { ([LocalType], [Instruction]) }- : 'local' list(valtype) ')' locals_body { (map (LocalType Nothing) $2 ++ fst $4, snd $4) }- | 'local' ident valtype ')' locals_body { (LocalType (Just $2) $3 : fst $5, snd $5) }- | folded_instr1 list(instruction) ')' { ([], $1 ++ concat $2) }+func_mid1 :: { ([LocalType], [Instruction]) }+ : 'local' list(valtype) ')' func_mid { (map (LocalType Nothing) $2 ++ fst $4, snd $4) }+ | 'local' ident valtype ')' func_mid { (LocalType (Just $2) $3 : fst $5, snd $5) }+ | folded_instr_list(')') { ([], snd $1) } -- FUNCTION END -- @@ -941,11 +795,11 @@ | '(' 'mut' valtype ')' { Mut $3 } global_type_export_import :: { Maybe Ident -> ModuleField }- : valtype list(instruction) ')' { \ident -> MFGlobal $ Global [] ident (Const $1) $ concat $2 }+ : valtype mixed_instruction_list(')') { \ident -> MFGlobal $ Global [] ident (Const $1) $ snd $2 } | '(' global_mut_export_import { $2 } global_mut_export_import :: { Maybe Ident -> ModuleField }- : 'mut' valtype ')' list(instruction) ')' { \ident -> MFGlobal $ Global [] ident (Mut $2) $ concat $4 }+ : 'mut' valtype ')' mixed_instruction_list(')') { \ident -> MFGlobal $ Global [] ident (Mut $2) $ snd $4 } | 'export' name ')' global_type_export_import { \ident -> case $4 ident of@@ -1001,7 +855,7 @@ : u32 opt(u32) { Limit (fromIntegral $1) (fromIntegral `fmap` $2) } elemtype :: { ElemType }- : 'anyfunc' { AnyFunc }+ : 'funcref' { FuncRef } tabletype :: { TableType } : limits elemtype { TableType $1 $2 }@@ -1050,7 +904,7 @@ -- but collection of testcases omits 'offset' in this position -- I am going to support both options for now, but maybe it has to be updated in future. offsetexpr :: { [Instruction] }- : 'offset' list(folded_instr) ')' { concat $2 }+ : 'offset' mixed_instruction_list(')') { snd $2 } | folded_instr1 { $1 } elemsegment :: { ElemSegment }@@ -1089,7 +943,10 @@ -- Wasm Script Extended Grammar script :: { Script }- : list(command) EOF { $1 }+ : '(' command1 list(command) EOF { $2 : $3 }+ | '(' modulefield1 list(modulefield) EOF {%+ (\m -> [ModuleDef $ RawModDef Nothing m]) `fmap` (desugarize $ $2 ++ concat $3)+ } command :: { Command } : '(' command1 { $2 }@@ -1098,28 +955,27 @@ : module1 { ModuleDef $1 } | 'register' string opt(ident) ')' { Register $2 $3 } | action1 { Action $1 }- | assertion1 { Assertion $1 }+ | assertion1 { let (Just (AlexPn _ line _), a) = $1 in Assertion line a } | meta1 { Meta $1 } module1 :: { ModuleDef } : 'module' opt(ident) 'binary' datastring ')' { BinaryModDef $2 $4 } | 'module' opt(ident) 'quote' list(string) ')' { TextModDef $2 (TL.concat $4) } | 'module' opt(ident) list(modulefield) ')' {% RawModDef $2 `fmap` (desugarize $ concat $3) }- | modulefield1 list(modulefield) {% RawModDef Nothing `fmap` (desugarize $ $1 ++ concat $2) } action1 :: { Action } : 'invoke' opt(ident) string list(folded_instr) ')' { Invoke $2 $3 (map (map constInstructionToValue) $4) } | 'get' opt(ident) string ')' { Get $2 $3 } -assertion1 :: { Assertion }- : 'assert_return' '(' action1 list(folded_instr) ')' { AssertReturn $3 (map (map constInstructionToValue) $4) }- | 'assert_return_canonical_nan' '(' action1 ')' { AssertReturnCanonicalNaN $3 }- | 'assert_return_arithmetic_nan' '(' action1 ')' { AssertReturnArithmeticNaN $3 }- | 'assert_trap' '(' assertion_trap string ')' { AssertTrap $3 $4 }- | 'assert_malformed' '(' module1 string ')' { AssertMalformed $3 $4 }- | 'assert_invalid' '(' module1 string ')' { AssertInvalid $3 $4 }- | 'assert_unlinkable' '(' module1 string ')' { AssertUnlinkable $3 $4 }- | 'assert_exhaustion' '(' action1 string ')' { AssertExhaustion $3 $4 }+assertion1 :: { (Maybe AlexPosn, Assertion) }+ : 'assert_return' '(' action1 list(folded_instr) ')' { ($1, AssertReturn $3 (map (map constInstructionToValue) $4)) }+ | 'assert_return_canonical_nan' '(' action1 ')' { ($1, AssertReturnCanonicalNaN $3) }+ | 'assert_return_arithmetic_nan' '(' action1 ')' { ($1, AssertReturnArithmeticNaN $3) }+ | 'assert_trap' '(' assertion_trap string ')' { ($1, AssertTrap $3 $4) }+ | 'assert_malformed' '(' module1 string ')' { ($1, AssertMalformed $3 $4) }+ | 'assert_invalid' '(' module1 string ')' { ($1, AssertInvalid $3 $4) }+ | 'assert_unlinkable' '(' module1 string ')' { ($1, AssertUnlinkable $3 $4) }+ | 'assert_exhaustion' '(' action1 string ')' { ($1, AssertExhaustion $3 $4) } assertion_trap :: { Either Action ModuleDef } : action1 { Left $1 }@@ -1161,11 +1017,37 @@ mergeFuncType :: FuncType -> FuncType -> FuncType mergeFuncType (FuncType lps lrs) (FuncType rps rrs) = FuncType (lps ++ rps) (lrs ++ rrs) -matchIdents :: Maybe Ident -> Maybe Ident -> Bool-matchIdents Nothing _ = True-matchIdents _ Nothing = True-matchIdents a b = a == b+matchIdents :: Maybe Ident -> Maybe Ident -> Either String ()+matchIdents Nothing Nothing = return ()+matchIdents (Just a) (Just b) = if a == b then return () else throwError "mismatching label"+matchIdents Nothing (Just _) = throwError "mismatching label"+matchIdents (Just _) Nothing = return () +onlyAnonimParams :: TypeUse -> Either String ()+onlyAnonimParams (IndexedTypeUse _ (Just ft)) = onlyAnonimFT ft+onlyAnonimParams (AnonimousTypeUse ft) = onlyAnonimFT ft+onlyAnonimParams _ = return ()++onlyAnonimFT :: FuncType -> Either String ()+onlyAnonimFT (FuncType params _) = mapM_ isAnonim params+ where+ isAnonim ParamType{ ident = Just _ } =+ throwError "only anonimous params allowed in block signatures"+ isAnonim _ = return ()++checkLocalIdentUniqueness :: Function -> Either String Function+checkLocalIdentUniqueness fn@Function { funcType, locals } =+ let ps = case funcType of+ (AnonimousTypeUse ft) -> params ft+ IndexedTypeUse _ ft -> params $ fromMaybe emptyFuncType ft+ in+ let allIdents = (catMaybes $ map (\(LocalType { ident }) -> ident) locals)+ ++ (catMaybes $ map (\(ParamType { ident }) -> ident) ps)+ in+ if nub allIdents == allIdents+ then return fn+ else throwError "duplicate local"+ asOffset :: LBS.ByteString -> Maybe Natural asOffset str = do num <- TL.stripPrefix "offset=" $ TLEncoding.decodeUtf8 str@@ -1285,6 +1167,8 @@ | I32WrapI64 | ITruncFU {- Int Size -} BitSize {- Float Size -} BitSize | ITruncFS {- Int Size -} BitSize {- Float Size -} BitSize+ | ITruncSatFU {- Int Size -} BitSize {- Float Size -} BitSize+ | ITruncSatFS {- Int Size -} BitSize {- Float Size -} BitSize | I64ExtendSI32 | I64ExtendUI32 | FConvertIU {- Float Size -} BitSize {- Int Size -} BitSize@@ -1302,21 +1186,23 @@ | AnonimousTypeUse FuncType deriving (Show, Eq, Generic, NFData) +emptyTypeUse = AnonimousTypeUse emptyFuncType+ data Instruction = PlainInstr PlainInstr | BlockInstr { label :: Maybe Ident,- resultType :: [ValueType],+ blockType :: TypeUse, body :: [Instruction] } | LoopInstr { label :: Maybe Ident,- resultType :: [ValueType],+ blockType :: TypeUse, body :: [Instruction] } | IfInstr { label :: Maybe Ident,- resultType :: [ValueType],+ blockType :: TypeUse, trueBranch :: [Instruction], falseBranch :: [Instruction] }@@ -1448,7 +1334,7 @@ = ModuleDef ModuleDef | Register TL.Text (Maybe Ident) | Action Action- | Assertion Assertion+ | Assertion Int Assertion | Meta Meta deriving (Show, Eq) @@ -1495,6 +1381,7 @@ desugarize :: [ModuleField] -> Either String S.Module desugarize fields = do checkImportsOrder fields+ checkStartCount fields let mod = Module { types = reverse $ foldl' extractTypeDef (reverse $ explicitTypeDefs fields) fields, functions = extract extractFunction fields,@@ -1511,6 +1398,10 @@ elements <- mapM (synElemToStruct mod) $ elems mod segments <- mapM (synDataToStruct mod) $ datas mod globs <- mapM (synGlobalToStruct mod) $ globals mod+ checkFuncIdentsUniqueness mod+ checkTableIdentsUniqueness mod+ checkMemoryIdentsUniqueness mod+ checkGlobalIdentsUniqueness mod return S.Module { S.types = map synTypeDefToStruct $ types mod, S.functions = funs,@@ -1554,6 +1445,15 @@ checkDef _ (MFMem _) = return True checkDef _ (MFTable _) = return True checkDef nonImportOccured _ = return nonImportOccured+ + checkStartCount :: [ModuleField] -> Either String ()+ checkStartCount fields = foldM checkDef False fields >> return ()+ where+ checkDef startOccured (MFStart _) =+ if startOccured+ then Left "Multiple start sections"+ else Right True+ checkDef startOccured _ = return startOccured extractTypeDef :: [TypeDef] -> ModuleField -> [TypeDef] extractTypeDef defs (MFType _) = defs -- should be extracted before implicit defs@@ -1575,12 +1475,12 @@ extractTypeDefFromInstruction :: [TypeDef] -> Instruction -> [TypeDef] extractTypeDefFromInstruction defs (PlainInstr (CallIndirect typeUse)) = matchTypeUse defs typeUse- extractTypeDefFromInstruction defs (BlockInstr { body }) =- extractTypeDefFromInstructions defs body- extractTypeDefFromInstruction defs (LoopInstr { body }) =- extractTypeDefFromInstructions defs body- extractTypeDefFromInstruction defs (IfInstr { trueBranch, falseBranch }) =- extractTypeDefFromInstructions defs $ trueBranch ++ falseBranch+ extractTypeDefFromInstruction defs (BlockInstr { body, blockType }) =+ extractTypeDefFromInstructions (matchTypeUse defs blockType) body+ extractTypeDefFromInstruction defs (LoopInstr { body, blockType }) =+ extractTypeDefFromInstructions (matchTypeUse defs blockType) body+ extractTypeDefFromInstruction defs (IfInstr { blockType, trueBranch, falseBranch }) =+ extractTypeDefFromInstructions (matchTypeUse defs blockType) $ trueBranch ++ falseBranch extractTypeDefFromInstruction defs _ = defs funcTypesEq :: FuncType -> FuncType -> Bool@@ -1598,6 +1498,11 @@ else (TypeDef Nothing funcType) : defs matchTypeUse defs _ = defs + nth :: Natural -> [a] -> Maybe a+ nth 0 (x : xs) = Just x+ nth n (_ : xs) = nth (n - 1) xs+ nth _ _ = Nothing+ getTypeIndex :: [TypeDef] -> TypeUse -> Maybe Natural getTypeIndex defs (AnonimousTypeUse funcType) = fromIntegral <$> findIndex (matchTypeFunc funcType) defs@@ -1608,7 +1513,8 @@ getTypeIndex defs (IndexedTypeUse (Named ident) Nothing) = fromIntegral <$> findIndex (\(TypeDef i _) -> i == Just ident) defs getTypeIndex defs (IndexedTypeUse (Index n) (Just funcType)) = do- guard $ matchTypeFunc funcType $ defs !! fromIntegral n+ def <- nth n defs+ guard $ matchTypeFunc funcType def return n getTypeIndex defs (IndexedTypeUse (Index n) Nothing) = return n @@ -1716,6 +1622,8 @@ synInstrToStruct _ (PlainInstr I32WrapI64) = return $ S.I32WrapI64 synInstrToStruct _ (PlainInstr (ITruncFU sz sz')) = return $ S.ITruncFU sz sz' synInstrToStruct _ (PlainInstr (ITruncFS sz sz')) = return $ S.ITruncFS sz sz'+ synInstrToStruct _ (PlainInstr (ITruncSatFU sz sz')) = return $ S.ITruncSatFU sz sz'+ synInstrToStruct _ (PlainInstr (ITruncSatFS sz sz')) = return $ S.ITruncSatFS sz sz' synInstrToStruct _ (PlainInstr I64ExtendSI32) = return $ S.I64ExtendSI32 synInstrToStruct _ (PlainInstr I64ExtendUI32) = return $ S.I64ExtendUI32 synInstrToStruct _ (PlainInstr (FConvertIU sz sz')) = return $ S.FConvertIU sz sz'@@ -1724,17 +1632,35 @@ synInstrToStruct _ (PlainInstr F64PromoteF32) = return $ S.F64PromoteF32 synInstrToStruct _ (PlainInstr (IReinterpretF sz)) = return $ S.IReinterpretF sz synInstrToStruct _ (PlainInstr (FReinterpretI sz)) = return $ S.FReinterpretI sz- synInstrToStruct ctx BlockInstr {label, resultType, body} =- let ctx' = ctx { ctxLabels = label : ctxLabels ctx } in- S.Block resultType <$> mapM (synInstrToStruct ctx') body- synInstrToStruct ctx LoopInstr {label, resultType, body} =- let ctx' = ctx { ctxLabels = label : ctxLabels ctx } in- S.Loop resultType <$> mapM (synInstrToStruct ctx') body- synInstrToStruct ctx IfInstr {label, resultType, trueBranch, falseBranch} = do+ synInstrToStruct ctx@FunCtx { ctxMod = Module { types } } BlockInstr {label, blockType, body} = do let ctx' = ctx { ctxLabels = label : ctxLabels ctx }+ bt <- case blockType of+ AnonimousTypeUse (FuncType [] []) -> return $ S.Inline Nothing+ AnonimousTypeUse (FuncType [] [vt]) -> return $ S.Inline (Just vt)+ typed -> case getTypeIndex types typed of+ Just idx -> return $ S.TypeIndex idx+ Nothing -> Left "unknown type"+ S.Block bt <$> mapM (synInstrToStruct ctx') body+ synInstrToStruct ctx@FunCtx { ctxMod = Module { types } } LoopInstr {label, blockType, body} = do+ let ctx' = ctx { ctxLabels = label : ctxLabels ctx }+ bt <- case blockType of+ AnonimousTypeUse (FuncType [] []) -> return $ S.Inline Nothing+ AnonimousTypeUse (FuncType [] [vt]) -> return $ S.Inline (Just vt)+ typed -> case getTypeIndex types typed of+ Just idx -> return $ S.TypeIndex idx+ Nothing -> Left "unknown type"+ S.Loop bt <$> mapM (synInstrToStruct ctx') body+ synInstrToStruct ctx@FunCtx { ctxMod = Module { types } } IfInstr {label, blockType, trueBranch, falseBranch} = do+ let ctx' = ctx { ctxLabels = label : ctxLabels ctx }+ bt <- case blockType of+ AnonimousTypeUse (FuncType [] []) -> return $ S.Inline Nothing+ AnonimousTypeUse (FuncType [] [vt]) -> return $ S.Inline (Just vt)+ typed -> case getTypeIndex types typed of+ Just idx -> return $ S.TypeIndex idx+ Nothing -> Left "unknown type" trueBranch' <- mapM (synInstrToStruct ctx') trueBranch falseBranch' <- mapM (synInstrToStruct ctx') falseBranch- return $ S.If resultType trueBranch' falseBranch'+ return $ S.If bt trueBranch' falseBranch' synFunctionToStruct :: Module -> Function -> Either String S.Function synFunctionToStruct mod Function { funcType, locals, body } = do@@ -1784,20 +1710,59 @@ isFuncImport Import { desc = ImportFunc _ _ } = True isFuncImport _ = False + checkFuncIdentsUniqueness :: Module -> Either String ()+ checkFuncIdentsUniqueness m@Module { imports, functions } = do+ mapM_ checkImportUniqueness $ filter isFuncImport imports+ mapM_ checkFuncUniqueness functions+ where+ checkImportUniqueness Import { desc = ImportFunc (Just id) _ } =+ if length (getFuncIndexes m id) > 1+ then throwError "duplicate func"+ else return ()+ checkImportUniqueness _ = return ()++ checkFuncUniqueness Function { ident = Just id } =+ if length (getFuncIndexes m id) > 1+ then throwError "duplicate func"+ else return ()+ checkFuncUniqueness _ = return ()++ getFuncIndexes :: Module -> Ident -> [Natural]+ getFuncIndexes Module { imports, functions } id =+ let funcImports = zip [0..] $ filter isFuncImport imports in+ let importIndexes = map fst $ filter (\(_, Import { desc = ImportFunc ident _ }) -> ident == Just id) funcImports in+ let isIdent (_, Function { ident }) = ident == Just id in+ let funcIndexes = map fst $ filter isIdent $ zip [length funcImports..] functions in+ map fromIntegral $ importIndexes ++ funcIndexes+ getFuncIndex :: Module -> FuncIndex -> Maybe Natural- getFuncIndex Module { imports, functions } (Named id) =- let funImports = filter isFuncImport imports in- case findIndex (\(Import { desc = ImportFunc ident _ }) -> ident == Just id) funImports of- Just idx -> return $ fromIntegral idx- Nothing ->- let isIdent (Function { ident }) = ident == Just id in- fromIntegral . (+ length funImports) <$> findIndex isIdent functions- getFuncIndex Module { imports, functions } (Index idx) = Just idx+ getFuncIndex mod (Named id) =+ case getFuncIndexes mod id of+ [idx] -> return idx+ _ -> Nothing+ getFuncIndex _ (Index idx) = Just idx -- tables synTableToStruct :: Table -> S.Table synTableToStruct (Table _ _ tableType) = S.Table tableType + checkTableIdentsUniqueness :: Module -> Either String ()+ checkTableIdentsUniqueness m@Module { imports, tables } = do+ mapM_ checkImportUniqueness $ filter isTableImport imports+ mapM_ checkTableUniqueness tables+ where+ checkImportUniqueness Import { desc = ImportTable (Just id) _ } =+ if length (getTableIndexes m id) > 1+ then throwError "duplicate table"+ else return ()+ checkImportUniqueness _ = return ()++ checkTableUniqueness (Table _ (Just id) _) =+ if length (getTableIndexes m id) > 1+ then throwError "duplicate table"+ else return ()+ checkTableUniqueness _ = return ()+ extractTable :: [Table] -> ModuleField -> [Table] extractTable tables (MFTable table) = table : tables extractTable tables _ = tables@@ -1806,20 +1771,42 @@ isTableImport Import { desc = ImportTable _ _ } = True isTableImport _ = False + getTableIndexes :: Module -> Ident -> [Natural]+ getTableIndexes Module { imports, tables } id =+ let tableImports = zip [0..] $ filter isTableImport imports in+ let importIndexes = map fst $ filter (\(_, Import { desc = ImportTable ident _ }) -> ident == Just id) tableImports in+ let isIdent (_, (Table _ ident _)) = ident == Just id in+ let tableIndexes = map fst $ filter isIdent $ zip [length tableImports..] tables in+ map fromIntegral $ importIndexes ++ tableIndexes+ getTableIndex :: Module -> TableIndex -> Maybe Natural- getTableIndex Module { imports, tables } (Named id) =- let tableImports = filter isTableImport imports in- case findIndex (\(Import { desc = ImportTable ident _ }) -> ident == Just id) tableImports of- Just idx -> return $ fromIntegral idx- Nothing ->- let isIdent (Table _ (Just id) _) = True in- fromIntegral . (+ length tableImports) <$> findIndex isIdent tables- getTableIndex Module { imports, tables } (Index idx) = Just idx+ getTableIndex mod (Named id) =+ case getTableIndexes mod id of+ [idx] -> return idx+ _ -> Nothing+ getTableIndex _ (Index idx) = Just idx -- memory synMemoryToStruct :: Memory -> S.Memory synMemoryToStruct (Memory _ _ limits) = S.Memory limits + checkMemoryIdentsUniqueness :: Module -> Either String ()+ checkMemoryIdentsUniqueness m@Module { imports, mems } = do+ mapM_ checkImportUniqueness $ filter isMemImport imports+ mapM_ checkMemUniqueness mems+ where+ checkImportUniqueness Import { desc = ImportMemory (Just id) _ } =+ if length (getMemIndexes m id) > 1+ then Left "duplicate memory"+ else return ()+ checkImportUniqueness _ = return ()++ checkMemUniqueness (Memory _ (Just id) _) =+ if length (getMemIndexes m id) > 1+ then Left "duplicate memory"+ else return ()+ checkMemUniqueness _ = return ()+ extractMemory :: [Memory] -> ModuleField -> [Memory] extractMemory mems (MFMem mem) = mem : mems extractMemory mems _ = mems@@ -1828,15 +1815,20 @@ isMemImport Import { desc = ImportMemory _ _ } = True isMemImport _ = False + getMemIndexes :: Module -> Ident -> [Natural]+ getMemIndexes Module { imports, mems } id =+ let memImports = zip [0..] $ filter isMemImport imports in+ let importIndexes = map fst $ filter (\(_, Import { desc = ImportMemory ident _ }) -> ident == Just id) memImports in+ let isIdent (_, (Memory _ ident _)) = ident == Just id in+ let memIndexes = map fst $ filter isIdent $ zip [length memImports..] mems in+ map fromIntegral $ importIndexes ++ memIndexes+ getMemIndex :: Module -> MemoryIndex -> Maybe Natural- getMemIndex Module { imports, mems } (Named id) =- let memImports = filter isMemImport imports in- case findIndex (\(Import { desc = ImportMemory ident _ }) -> ident == Just id) memImports of- Just idx -> return $ fromIntegral idx- Nothing ->- let isIdent (Memory _ (Just id) _) = True in- fromIntegral . (+ length memImports) <$> findIndex isIdent mems- getMemIndex Module { imports, mems } (Index idx) = Just idx+ getMemIndex mod (Named id) =+ case getMemIndexes mod id of+ [idx] -> return idx+ _ -> Nothing+ getMemIndex _ (Index idx) = Just idx -- global synGlobalToStruct :: Module -> Global -> Either String S.Global@@ -1844,6 +1836,23 @@ let ctx = FunCtx mod [] [] [] in S.Global globalType <$> mapM (synInstrToStruct ctx) initializer + checkGlobalIdentsUniqueness :: Module -> Either String ()+ checkGlobalIdentsUniqueness m@Module { imports, globals } = do+ mapM_ checkImportUniqueness $ filter isGlobalImport imports+ mapM_ checkGlobalUniqueness globals+ where+ checkImportUniqueness Import { desc = ImportGlobal (Just id) _ } =+ if length (getGlobalIndexes m id) > 1+ then Left "duplicate global"+ else return ()+ checkImportUniqueness _ = return ()++ checkGlobalUniqueness (Global _ (Just id) _ _) =+ if length (getGlobalIndexes m id) > 1+ then Left "duplicate global"+ else return ()+ checkGlobalUniqueness _ = return ()+ extractGlobal :: [Global] -> ModuleField -> [Global] extractGlobal globals (MFGlobal global) = global : globals extractGlobal globals _ = globals@@ -1852,14 +1861,19 @@ isGlobalImport Import { desc = ImportGlobal _ _ } = True isGlobalImport _ = False + getGlobalIndexes :: Module -> Ident -> [Natural]+ getGlobalIndexes Module { imports, globals } id =+ let globalImports = zip [0..] $ filter isGlobalImport imports in+ let importIndexes = map fst $ filter (\(_, Import { desc = ImportGlobal ident _ }) -> ident == Just id) globalImports in+ let isIdent (_, Global { ident }) = ident == Just id in+ let globalIndexes = map fst $ filter isIdent $ zip [length globalImports..] globals in+ map fromIntegral $ importIndexes ++ globalIndexes+ getGlobalIndex :: Module -> GlobalIndex -> Maybe Natural- getGlobalIndex Module { imports, globals } (Named id) =- let globalImports = filter isGlobalImport imports in- case findIndex (\(Import { desc = ImportGlobal ident _ }) -> ident == Just id) globalImports of- Just idx -> return $ fromIntegral idx- Nothing ->- let isIdent (Global { ident }) = ident == Just id in- fromIntegral . (+ length globalImports) <$> findIndex isIdent globals+ getGlobalIndex mod@Module { imports, globals } (Named id) =+ case getGlobalIndexes mod id of+ [idx] -> return idx+ _ -> Nothing getGlobalIndex Module { imports, globals } (Index idx) = Just idx -- elem segment
src/Language/Wasm/Script.hs view
@@ -8,6 +8,8 @@ import qualified Data.Vector as Vector import qualified Data.Text.Lazy as TL import qualified Data.Text.Lazy.Encoding as TLEncoding+import qualified Control.Monad.State as State+import Control.Monad.IO.Class (liftIO) import Numeric.IEEE (identicalIEEE) import qualified Control.DeepSeq as DeepSeq import Data.Maybe (fromJust, isNothing)@@ -45,9 +47,11 @@ moduleRegistery = Map.empty } +type AssertM = State.StateT (ScriptState, String) IO+ runScript :: OnAssertFail -> Script -> IO () runScript onAssertFail script = do- (globI32, globF32, globF64) <- hostGlobals+ (globI32, globI64, globF32, globF64) <- hostGlobals (st, inst) <- Interpreter.makeHostModule Interpreter.emptyStore [ ("print", hostPrint []), ("print_i32", hostPrint [Struct.I32]),@@ -56,6 +60,7 @@ ("print_f32", hostPrint [Struct.F32]), ("print_f64", hostPrint [Struct.F64]), ("global_i32", globI32),+ ("global_i64", globI64), ("global_f32", globF32), ("global_f64", globF64), ("memory", Interpreter.HostMemory $ Struct.Limit 1 (Just 2)),@@ -65,10 +70,16 @@ where hostPrint paramTypes = Interpreter.HostFunction (Struct.FuncType paramTypes []) (\args -> return []) hostGlobals = do- globI32 <- Interpreter.makeMutGlobal $ Interpreter.VI32 666- globF32 <- Interpreter.makeMutGlobal $ Interpreter.VF32 666- globF64 <- Interpreter.makeMutGlobal $ Interpreter.VF64 666- return (Interpreter.HostGlobal globI32, Interpreter.HostGlobal globF32, Interpreter.HostGlobal globF64)+ let globI32 = Interpreter.makeConstGlobal $ Interpreter.VI32 666+ let globI64 = Interpreter.makeConstGlobal $ Interpreter.VI64 666+ let globF32 = Interpreter.makeConstGlobal $ Interpreter.VF32 666+ let globF64 = Interpreter.makeConstGlobal $ Interpreter.VF64 666+ return (+ Interpreter.HostGlobal globI32,+ Interpreter.HostGlobal globI64,+ Interpreter.HostGlobal globF32,+ Interpreter.HostGlobal globF64+ ) go [] _ = return () go (c:cs) st = runCommand st c >>= go cs@@ -96,11 +107,11 @@ addModule ident m st = case Validate.validate m of Right m -> do- res <- Interpreter.instantiate (store st) (buildImports st) m+ (res, store') <- Interpreter.instantiate (store st) (buildImports st) m case res of- Right (modInst, store') -> return $ addToStore ident modInst $ st { lastModule = Just modInst, store = store' }- Left reason -> error $ "Module instantiation failed dut to invalid module with reason: " ++ show reason- Left reason -> error $ "Module instantiation failed dut to invalid module with reason: " ++ show reason+ Right modInst -> return $ addToStore ident modInst $ st { lastModule = Just modInst, store = store' }+ Left reason -> error $ "Module instantiation failed due to invalid module with reason: " ++ show reason+ Left reason -> error $ "Module instantiation failed due to invalid module with reason: " ++ show reason getModule :: ScriptState -> Maybe Ident -> Maybe Interpreter.ModuleInstance getModule st (Just (Ident i)) = Map.lookup i (modules st)@@ -126,23 +137,23 @@ isValueEqual :: Interpreter.Value -> Interpreter.Value -> Bool isValueEqual (Interpreter.VI32 v1) (Interpreter.VI32 v2) = v1 == v2 isValueEqual (Interpreter.VI64 v1) (Interpreter.VI64 v2) = v1 == v2- isValueEqual (Interpreter.VF32 v1) (Interpreter.VF32 v2) = identicalIEEE v1 v2- isValueEqual (Interpreter.VF64 v1) (Interpreter.VF64 v2) = identicalIEEE v1 v2+ isValueEqual (Interpreter.VF32 v1) (Interpreter.VF32 v2) = (isNaN v1 && isNaN v2) || identicalIEEE v1 v2+ isValueEqual (Interpreter.VF64 v1) (Interpreter.VF64 v2) = (isNaN v1 && isNaN v2) || identicalIEEE v1 v2 isValueEqual _ _ = False - isNaNReturned :: ScriptState -> Action -> Assertion -> IO ()- isNaNReturned st action assert = do- result <- runAction st action+ isNaNReturned :: Action -> Assertion -> AssertM ()+ isNaNReturned action assert = do+ result <- runActionInAssert action case result of Just [Interpreter.VF32 v] -> if isNaN v then return ()- else onAssertFail ("Expected NaN, but action returned " ++ show v) assert+ else printFailedAssert ("Expected NaN, but action returned " ++ show v) assert Just [Interpreter.VF64 v] -> if isNaN v then return ()- else onAssertFail ("Expected NaN, but action returned " ++ show v) assert- _ -> onAssertFail ("Expected NaN, but action returned " ++ show result) assert+ else printFailedAssert ("Expected NaN, but action returned " ++ show v) assert+ _ -> printFailedAssert ("Expected NaN, but action returned " ++ show result) assert buildModule :: ModuleDef -> (Maybe Ident, Struct.Module) buildModule (RawModDef ident m) = (ident, m)@@ -161,11 +172,11 @@ getFailureString Validate.ResultTypeDoesntMatch = ["type mismatch"] getFailureString Validate.MoreThanOneMemory = ["multiple memories"] getFailureString Validate.MoreThanOneTable = ["multiple tables"]- getFailureString Validate.LocalIndexOutOfRange = ["unknown local"]- getFailureString Validate.MemoryIndexOutOfRange = ["unknown memory", "unknown memory 0"]- getFailureString Validate.TableIndexOutOfRange = ["unknown table", "unknown table 0"]+ getFailureString (Validate.LocalIndexOutOfRange idx) = ["unknown local", "unknown local " <> TL.pack (show idx)]+ getFailureString (Validate.MemoryIndexOutOfRange idx) = ["unknown memory", "unknown memory " <> TL.pack (show idx)]+ getFailureString (Validate.TableIndexOutOfRange idx) = ["unknown table", "unknown table " <> TL.pack (show idx)] getFailureString Validate.FunctionIndexOutOfRange = ["unknown function", "unknown function 0"]- getFailureString Validate.GlobalIndexOutOfRange = ["unknown global"]+ getFailureString (Validate.GlobalIndexOutOfRange idx) = ["unknown global", "unknown global " <> TL.pack (show idx)] getFailureString Validate.LabelIndexOutOfRange = ["unknown label"] getFailureString Validate.TypeIndexOutOfRange = ["unknown type"] getFailureString Validate.MinMoreThanMaxInMemoryLimit = ["size minimum must not be greater than maximum"]@@ -175,72 +186,85 @@ getFailureString Validate.InvalidConstantExpr = ["constant expression required"] getFailureString Validate.InvalidResultArity = ["invalid result arity"] getFailureString Validate.GlobalIsImmutable = ["global is immutable"]- getFailureString Validate.ImportedGlobalIsNotConst = ["mutable globals cannot be imported"]- getFailureString Validate.ExportedGlobalIsNotConst = ["mutable globals cannot be exported"] getFailureString Validate.InvalidStartFunctionType = ["start function"]+ getFailureString Validate.InvalidTableType = ["size minimum must not be greater than maximum"] getFailureString r = [TL.concat ["not implemented ", (TL.pack $ show r)]] - runAssert :: ScriptState -> Assertion -> IO ()- runAssert st assert@(AssertReturn action expected) = do- result <- runAction st action+ printFailedAssert :: String -> Assertion -> AssertM ()+ printFailedAssert msg assert = do+ (_, pos) <- State.get+ liftIO $ onAssertFail (pos ++ ": " ++ msg) assert++ runActionInAssert :: Action -> AssertM (Maybe [Interpreter.Value])+ runActionInAssert action = do+ (st, _) <- State.get+ liftIO $ runAction st action++ runAssert :: Assertion -> AssertM ()+ runAssert assert@(AssertReturn action expected) = do+ (st, _) <- State.get+ result <- runActionInAssert action case result of Just result -> do if length result == length expected && (all id $ zipWith isValueEqual result (map asArg expected)) then return ()- else onAssertFail ("Expected " ++ show (map asArg expected) ++ ", but action returned " ++ show result) assert- Nothing -> onAssertFail ("Expected " ++ show (map asArg expected) ++ ", but action returned Trap") assert- runAssert st assert@(AssertReturnCanonicalNaN action) = isNaNReturned st action assert- runAssert st assert@(AssertReturnArithmeticNaN action) = isNaNReturned st action assert- runAssert st assert@(AssertInvalid moduleDef failureString) =+ else printFailedAssert ("Expected " ++ show (map asArg expected) ++ ", but action returned " ++ show result) assert+ Nothing -> printFailedAssert ("Expected " ++ show (map asArg expected) ++ ", but action returned Trap") assert+ runAssert assert@(AssertReturnCanonicalNaN action) = isNaNReturned action assert+ runAssert assert@(AssertReturnArithmeticNaN action) = isNaNReturned action assert+ runAssert assert@(AssertInvalid moduleDef failureString) = let (_, m) = buildModule moduleDef in case Validate.validate m of- Right _ -> onAssertFail "Invalid module pass validation" assert+ Right _ -> printFailedAssert "An invalid module passed validation step" assert Left reason -> if failureString `elem` getFailureString reason then return () else- let msg = "Module invalid for other reason. Expected "+ let msg = "Module is invalid for other reason. Expected " ++ show failureString ++ ", but actual is " ++ show (getFailureString reason)- in onAssertFail msg assert- runAssert st assert@(AssertMalformed (TextModDef _ textRep) failureString) =+ in printFailedAssert msg assert+ runAssert assert@(AssertMalformed (TextModDef _ textRep) failureString) = case DeepSeq.force $ Lexer.scanner (TLEncoding.encodeUtf8 textRep) >>= Parser.parseModule of- Right _ -> onAssertFail ("Module parsing should fail with failure string " ++ show failureString) assert+ Right _ -> printFailedAssert ("Module parsing should fail with failure string " ++ show failureString) assert Left _ -> return ()- runAssert st assert@(AssertMalformed (BinaryModDef ident binaryRep) failureString) =+ runAssert assert@(AssertMalformed (BinaryModDef ident binaryRep) failureString) = case Binary.decodeModuleLazy binaryRep of- Right _ -> onAssertFail ("Module decoding should fail with failure string " ++ show failureString) assert+ Right _ -> printFailedAssert ("Module decoding should fail with failure string " ++ show failureString) assert Left _ -> return ()- runAssert st assert@(AssertMalformed (RawModDef _ _) failureString) = return ()- runAssert st assert@(AssertUnlinkable moduleDef failureString) =+ runAssert assert@(AssertMalformed (RawModDef _ _) failureString) = return ()+ runAssert assert@(AssertUnlinkable moduleDef failureString) = let (_, m) = buildModule moduleDef in case Validate.validate m of Right m -> do- res <- Interpreter.instantiate (store st) (buildImports st) m+ st <- fst <$> State.get+ (res, _) <- liftIO $ Interpreter.instantiate (store st) (buildImports st) m case res of Left err -> return ()- Right _ -> onAssertFail ("Module linking should fail with failure string " ++ show failureString) assert- Left reason -> error $ "Module linking failed dut to invalid module with reason: " ++ show reason- runAssert st assert@(AssertTrap (Left action) failureString) = do- result <- runAction st action+ Right _ -> printFailedAssert ("Module linking should fail with failure string " ++ show failureString) assert+ Left reason -> error $ "Module linking failed due to invalid module with reason: " ++ show reason+ runAssert assert@(AssertTrap (Left action) failureString) = do+ result <- runActionInAssert action if isNothing result then return ()- else onAssertFail ("Expected trap, but action returned " ++ show (fromJust result)) assert- runAssert st assert@(AssertTrap (Right moduleDef) failureString) =+ else printFailedAssert ("Expected trap, but action returned " ++ show (fromJust result)) assert+ runAssert assert@(AssertTrap (Right moduleDef) failureString) = let (_, m) = buildModule moduleDef in case Validate.validate m of Right m -> do- res <- Interpreter.instantiate (store st) (buildImports st) m+ st <- fst <$> State.get+ (res, store') <- liftIO $ Interpreter.instantiate (store st) (buildImports st) m case res of- Left "Start function terminated with trap" -> return ()- _ -> onAssertFail ("Module linking should fail with trap during execution of a start function") assert- Left reason -> error $ "Module linking failed dut to invalid module with reason: " ++ show reason- runAssert st assert@(AssertExhaustion action failureString) = do- result <- runAction st action+ Left "Start function terminated with trap" ->+ State.modify $ \(st, pos) -> (st { store = store' }, pos)+ _ -> printFailedAssert ("Module linking should fail with trap during execution of a start function") assert+ Left reason -> error $ "Module linking failed due to invalid module with reason: " ++ show reason+ runAssert assert@(AssertExhaustion action failureString) = do+ result <- runActionInAssert action if isNothing result then return ()- else onAssertFail ("Expected exhaustion, but action returned " ++ show (fromJust result)) assert+ else printFailedAssert ("Expected exhaustion, but action returned " ++ show (fromJust result)) assert runCommand :: ScriptState -> Command -> IO ScriptState runCommand st (ModuleDef moduleDef) =@@ -248,5 +272,6 @@ addModule ident m st runCommand st (Register name i) = return $ addToRegistery name i st runCommand st (Action action) = runAction st action >> return st- runCommand st (Assertion assertion) = runAssert st assertion >> return st+ runCommand st (Assertion pos assertion) = do+ fst <$> flip State.execStateT (st, ("Line " ++ show pos)) (runAssert assertion) runCommand st _ = return st
src/Language/Wasm/Structure.hs view
@@ -30,11 +30,18 @@ GlobalType(..), FuncType(..), ValueType(..),+ BlockType(..),+ ParamsType, ResultType,+ LocalsType, Expression, LabelIndex,+ FuncIndex,+ TypeIndex, LocalIndex, GlobalIndex,+ MemoryIndex,+ TableIndex, emptyModule, isFuncImport, isTableImport,@@ -51,7 +58,14 @@ data BitSize = BS32 | BS64 deriving (Show, Eq, Generic, NFData) -data IUnOp = IClz | ICtz | IPopcnt deriving (Show, Eq, Generic, NFData)+data IUnOp =+ IClz+ | ICtz+ | IPopcnt+ | IExtend8S+ | IExtend16S+ | IExtend32S+ deriving (Show, Eq, Generic, NFData) data IBinOp = IAdd@@ -102,13 +116,18 @@ data FuncType = FuncType { params :: ParamsType, results :: ResultType } deriving (Show, Eq, Generic, NFData) +data BlockType =+ Inline (Maybe ValueType)+ | TypeIndex TypeIndex+ deriving (Show, Eq, Generic, NFData)+ data Instruction index = -- Control instructions Unreachable | Nop- | Block { resultType :: ResultType, body :: Expression }- | Loop { resultType :: ResultType, body :: Expression }- | If { resultType :: ResultType, true :: Expression, false :: Expression }+ | Block { blockType :: BlockType, body :: Expression }+ | Loop { blockType :: BlockType, body :: Expression }+ | If { blockType :: BlockType, true :: Expression, false :: Expression } | Br index | BrIf index | BrTable [index] index@@ -166,6 +185,8 @@ | I32WrapI64 | ITruncFU {- Int Size -} BitSize {- Float Size -} BitSize | ITruncFS {- Int Size -} BitSize {- Float Size -} BitSize+ | ITruncSatFU {- Int Size -} BitSize {- Float Size -} BitSize+ | ITruncSatFS {- Int Size -} BitSize {- Float Size -} BitSize | I64ExtendSI32 | I64ExtendUI32 | FConvertIU {- Float Size -} BitSize {- Int Size -} BitSize@@ -186,7 +207,7 @@ data Limit = Limit Natural (Maybe Natural) deriving (Show, Eq, Generic, NFData) -data ElemType = AnyFunc deriving (Show, Eq, Generic, NFData)+data ElemType = FuncRef deriving (Show, Eq, Generic, NFData) data TableType = TableType Limit ElemType deriving (Show, Eq, Generic, NFData)
src/Language/Wasm/Validate.hs view
@@ -16,8 +16,8 @@ import Data.List (foldl') import qualified Data.Text.Lazy as TL import Data.Maybe (fromMaybe, maybeToList, catMaybes)-import Data.Monoid ((<>)) import Numeric.Natural (Natural)+import Prelude hiding ((<>)) import Control.Monad (foldM) import Control.Monad.Reader (ReaderT, runReaderT, withReaderT, ask)@@ -34,10 +34,10 @@ | MoreThanOneMemory | MoreThanOneTable | FunctionIndexOutOfRange- | TableIndexOutOfRange- | MemoryIndexOutOfRange- | LocalIndexOutOfRange- | GlobalIndexOutOfRange+ | TableIndexOutOfRange Natural+ | MemoryIndexOutOfRange Natural+ | LocalIndexOutOfRange Natural+ | GlobalIndexOutOfRange Natural | LabelIndexOutOfRange | TypeIndexOutOfRange | ResultTypeDoesntMatch@@ -45,13 +45,15 @@ | InvalidResultArity | InvalidConstantExpr | InvalidStartFunctionType- | ImportedGlobalIsNotConst- | ExportedGlobalIsNotConst | GlobalIsImmutable deriving (Show, Eq) type ValidationResult = Either ValidationError () +-- semigroup definition for Either a b is in conflict with my ad-hoc instance+-- to keep an old code Prelude version is hidden and redefined locally+(<>) = mappend+ instance Monoid ValidationResult where mempty = Right () mappend (Right ()) vr = vr@@ -96,7 +98,7 @@ (==>) a b = Arrow (toEnd a) (toEnd b) asArrow :: FuncType -> Arrow-asArrow (FuncType params results) = Arrow (map Val params) (map Val results)+asArrow (FuncType params results) = Arrow (map Val params) (map Val $ reverse results) isArrowMatch :: Arrow -> Arrow -> Bool isArrowMatch (f `Arrow` t) ( f' `Arrow` t') = isEndMatch f f' && isEndMatch t t'@@ -128,8 +130,8 @@ mems :: [Limit], globals :: [GlobalType], locals :: [ValueType],- labels :: [Maybe ValueType],- returns :: Maybe ValueType,+ labels :: [[ValueType]],+ returns :: [ValueType], importedGlobals :: Natural } deriving (Show, Eq) @@ -162,7 +164,7 @@ shouldBeMut (Mut _) = return () shouldBeMut (Const v) = throwError GlobalIsImmutable -getLabel :: LabelIndex -> Checker (Maybe ValueType)+getLabel :: LabelIndex -> Checker [ValueType] getLabel lbl = do Ctx { labels } <- ask case labels !? lbl of@@ -170,7 +172,7 @@ Just v -> return v withLabel :: [ValueType] -> Checker a -> Checker a-withLabel result = withReaderT (\ctx -> ctx { labels = safeHead result : labels ctx })+withLabel result = withReaderT (\ctx -> ctx { labels = result : labels ctx }) isMemArgValid :: Int -> MemArg -> Checker () isMemArgValid sizeInBytes MemArg { align } = if 2 ^ align <= sizeInBytes then return () else throwError AlignmentOverflow@@ -179,52 +181,74 @@ checkMemoryInstr size memarg = do isMemArgValid size memarg Ctx { mems } <- ask - if length mems < 1 then throwError MemoryIndexOutOfRange else return ()+ if length mems < 1 then throwError (MemoryIndexOutOfRange 0) else return () +getBlockType :: BlockType -> Checker Arrow+getBlockType (Inline Nothing) = return $ empty ==> empty+getBlockType (Inline (Just valType)) = return $ empty ==> valType+getBlockType (TypeIndex typeIdx) = do+ Ctx { types } <- ask+ maybeToEither TypeIndexOutOfRange $ asArrow <$> types !? typeIdx++getResultType :: BlockType -> Checker [ValueType]+getResultType (Inline Nothing) = return []+getResultType (Inline (Just valType)) = return [valType]+getResultType (TypeIndex typeIdx) = do+ Ctx { types } <- ask+ maybeToEither TypeIndexOutOfRange $ results <$> types !? typeIdx+ getInstrType :: Instruction Natural -> Checker Arrow getInstrType Unreachable = return $ Any ==> Any getInstrType Nop = return $ empty ==> empty-getInstrType Block { resultType, body } = do- let blockType = empty ==> resultType- t <- withLabel resultType $ getExpressionType body- if isArrowMatch t blockType- then return $ empty ==> resultType- else throwError $ TypeMismatch t blockType-getInstrType Loop { resultType, body } = do- let blockType = empty ==> resultType- t <- withLabel [] $ getExpressionType body- if isArrowMatch t blockType- then return $ empty ==> resultType- else throwError $ TypeMismatch t blockType-getInstrType If { resultType, true, false } = do- let blockType = empty ==> resultType- l <- withLabel resultType $ getExpressionType true- r <- withLabel resultType $ getExpressionType false- if isArrowMatch l blockType- then (if isArrowMatch r blockType then (return $ I32 ==> resultType) else (throwError $ TypeMismatch r blockType))- else throwError $ TypeMismatch l blockType+getInstrType Block { blockType, body } = do+ bt@(Arrow from _) <- getBlockType blockType+ resultType <- getResultType blockType+ t <- withLabel resultType $ getExpressionTypeWithInput from body+ if isArrowMatch t bt+ then return bt+ else throwError $ TypeMismatch t bt+getInstrType Loop { blockType, body } = do+ bt@(Arrow from _) <- getBlockType blockType+ resultType <- getResultType blockType+ t <- withLabel (map (\(Val v) -> v) from) $ getExpressionTypeWithInput from body+ if isArrowMatch t bt+ then return bt+ else throwError $ TypeMismatch t bt+getInstrType If { blockType, true, false } = do+ bt@(Arrow from _) <- getBlockType blockType+ resultType <- getResultType blockType+ l <- withLabel resultType $ getExpressionTypeWithInput from true+ r <- withLabel resultType $ getExpressionTypeWithInput from false+ if isArrowMatch l bt+ then (+ if isArrowMatch r bt+ then let Arrow from to = bt in+ (return $ (from ++ [Val I32]) ==> to)+ else (throwError $ TypeMismatch r bt)+ )+ else throwError $ TypeMismatch l bt getInstrType (Br lbl) = do- r <- map Val . maybeToList <$> getLabel lbl+ r <- map Val <$> getLabel lbl return $ (Any : r) ==> Any getInstrType (BrIf lbl) = do- r <- map Val . maybeToList <$> getLabel lbl+ r <- map Val <$> getLabel lbl return $ (r ++ [Val I32]) ==> r getInstrType (BrTable lbls lbl) = do r <- getLabel lbl rs <- mapM getLabel lbls if all (== r) rs- then return $ ([Any] ++ (map Val $ maybeToList r) ++ [Val I32]) ==> Any+ then return $ ([Any] ++ (map Val r) ++ [Val I32]) ==> Any else throwError ResultTypeDoesntMatch getInstrType Return = do Ctx { returns } <- ask- return $ (Any : (map Val $ maybeToList returns)) ==> Any+ return $ (Any : (map Val returns)) ==> Any getInstrType (Call fun) = do Ctx { funcs } <- ask maybeToEither FunctionIndexOutOfRange $ asArrow <$> funcs !? fun getInstrType (CallIndirect sign) = do Ctx { types, tables } <- ask if length tables < 1- then throwError TableIndexOutOfRange+ then throwError (TableIndexOutOfRange 0) else do Arrow from to <- maybeToEither TypeIndexOutOfRange $ asArrow <$> types !? sign return $ (from ++ [Val I32]) ==> to@@ -236,23 +260,23 @@ return $ [var, var, Val I32] ==> var getInstrType (GetLocal local) = do Ctx { locals } <- ask- t <- maybeToEither LocalIndexOutOfRange $ locals !? local+ t <- maybeToEither (LocalIndexOutOfRange local) $ locals !? local return $ empty ==> Val t getInstrType (SetLocal local) = do Ctx { locals } <- ask- t <- maybeToEither LocalIndexOutOfRange $ locals !? local+ t <- maybeToEither (LocalIndexOutOfRange local) $ locals !? local return $ Val t ==> empty getInstrType (TeeLocal local) = do Ctx { locals } <- ask- t <- maybeToEither LocalIndexOutOfRange $ locals !? local+ t <- maybeToEither (LocalIndexOutOfRange local) $ locals !? local return $ Val t ==> Val t getInstrType (GetGlobal global) = do Ctx { globals } <- ask- t <- maybeToEither GlobalIndexOutOfRange $ asType <$> globals !? global+ t <- maybeToEither (GlobalIndexOutOfRange global) $ asType <$> globals !? global return $ empty ==> t getInstrType (SetGlobal global) = do Ctx { globals } <- ask- t <- maybeToEither GlobalIndexOutOfRange $ asType <$> globals !? global+ t <- maybeToEither (GlobalIndexOutOfRange global) $ asType <$> globals !? global shouldBeMut $ globals !! fromIntegral global return $ t ==> empty getInstrType (I32Load memarg) = do@@ -295,7 +319,7 @@ checkMemoryInstr 4 memarg return $ I32 ==> I64 getInstrType (I64Load32U memarg) = do- checkMemoryInstr 8 memarg+ checkMemoryInstr 4 memarg return $ I32 ==> I64 getInstrType (I32Store memarg) = do checkMemoryInstr 4 memarg@@ -326,10 +350,10 @@ return $ [I32, I64] ==> empty getInstrType CurrentMemory = do Ctx { mems } <- ask - if length mems < 1 then throwError MemoryIndexOutOfRange else return $ empty ==> I32+ if length mems < 1 then throwError (MemoryIndexOutOfRange 0) else return $ empty ==> I32 getInstrType GrowMemory = do Ctx { mems } <- ask - if length mems < 1 then throwError MemoryIndexOutOfRange else return $ I32 ==> I32+ if length mems < 1 then throwError (MemoryIndexOutOfRange 0) else return $ I32 ==> I32 getInstrType (I32Const _) = return $ empty ==> I32 getInstrType (I64Const _) = return $ empty ==> I64 getInstrType (F32Const _) = return $ empty ==> F32@@ -357,6 +381,14 @@ getInstrType (ITruncFS BS32 BS64) = return $ F64 ==> I32 getInstrType (ITruncFS BS64 BS32) = return $ F32 ==> I64 getInstrType (ITruncFS BS64 BS64) = return $ F64 ==> I64+getInstrType (ITruncSatFU BS32 BS32) = return $ F32 ==> I32+getInstrType (ITruncSatFU BS32 BS64) = return $ F64 ==> I32+getInstrType (ITruncSatFU BS64 BS32) = return $ F32 ==> I64+getInstrType (ITruncSatFU BS64 BS64) = return $ F64 ==> I64+getInstrType (ITruncSatFS BS32 BS32) = return $ F32 ==> I32+getInstrType (ITruncSatFS BS32 BS64) = return $ F64 ==> I32+getInstrType (ITruncSatFS BS64 BS32) = return $ F32 ==> I64+getInstrType (ITruncSatFS BS64 BS64) = return $ F64 ==> I64 getInstrType I64ExtendSI32 = return $ I32 ==> I64 getInstrType I64ExtendUI32 = return $ I32 ==> I64 getInstrType (FConvertIU BS32 BS32) = return $ I32 ==> F32@@ -379,8 +411,8 @@ replace _ _ [] = [] replace x y (v:r) = (if x == v then y else v) : replace x y r -getExpressionType :: Expression -> Checker Arrow-getExpressionType = fmap ([] `Arrow`) . foldM go []+getExpressionTypeWithInput :: [VType] -> Expression -> Checker Arrow+getExpressionTypeWithInput inp = fmap (inp `Arrow`) . foldM go inp where go :: [VType] -> Instruction Natural -> Checker [VType] go stack instr = do@@ -397,10 +429,16 @@ matchStack (Val v:stack) (Var:args) res = let subst = replace Var (Val v) in matchStack stack (subst args) (subst res)+ matchStack (Var:stack) (Val v:args) res =+ let subst = replace Var (Val v) in+ matchStack stack (subst args) (subst res) matchStack stack [] res = return $ res ++ stack matchStack [] args res = throwError $ TypeMismatch ((reverse args) `Arrow` res) ([] `Arrow` []) matchStack _ _ _ = error "inconsistent checker state" +getExpressionType :: Expression -> Checker Arrow+getExpressionType = getExpressionTypeWithInput []+ isConstExpression :: Expression -> Checker () isConstExpression [] = return () isConstExpression ((I32Const _):rest) = isConstExpression rest@@ -410,7 +448,7 @@ isConstExpression ((GetGlobal idx):rest) = do Ctx {globals, importedGlobals} <- ask if importedGlobals <= idx- then throwError GlobalIndexOutOfRange+ then throwError (GlobalIndexOutOfRange idx) else return () case globals !! fromIntegral idx of Const _ -> isConstExpression rest@@ -425,7 +463,7 @@ getFuncType (Import _ _ (ImportFunc typeIdx)) = Just $ types !! (fromIntegral typeIdx) getFuncType _ = Nothing -ctxFromModule :: [ValueType] -> [Maybe ValueType] -> Maybe ValueType -> Module -> Ctx+ctxFromModule :: [ValueType] -> [[ValueType]] -> [ValueType] -> Module -> Ctx ctxFromModule locals labels returns m@Module {types, tables, mems, globals, imports} = let tableImports = catMaybes $ map getTableType imports in let memsImports = catMaybes $ map getMemType imports in@@ -454,17 +492,13 @@ isFunctionValid :: Function -> Validator isFunctionValid Function {funcType, localTypes = locals, body} mod@Module {types} = if fromIntegral funcType < length types- then- let FuncType params results = types !! fromIntegral funcType in- if length results > 1- then Left InvalidResultArity- else do- let r = safeHead results- let ctx = ctxFromModule (params ++ locals) [r] r mod- arr <- runChecker ctx $ getExpressionType body- if isArrowMatch arr (empty ==> results)- then return ()- else Left $ TypeMismatch arr (empty ==> results)+ then do+ let FuncType params results = types !! fromIntegral funcType+ let ctx = ctxFromModule (params ++ locals) [results] results mod+ arr <- runChecker ctx $ getExpressionType body+ if isArrowMatch arr (empty ==> (reverse results))+ then return ()+ else Left $ TypeMismatch arr (empty ==> (reverse results)) else Left TypeIndexOutOfRange functionsShouldBeValid :: Validator@@ -503,7 +537,7 @@ globalsShouldBeValid :: Validator globalsShouldBeValid m@Module { imports, globals } =- let ctx = ctxFromModule [] [] Nothing m in+ let ctx = ctxFromModule [] [] [] m in foldMap (isGlobalValid ctx) globals where getGlobalType :: GlobalType -> ValueType@@ -519,7 +553,7 @@ elemsShouldBeValid :: Validator elemsShouldBeValid m@Module { elems, functions, tables, imports } =- let ctx = ctxFromModule [] [] Nothing m in+ let ctx = ctxFromModule [] [] [] m in foldMap (isElemValid ctx) elems where isElemValid :: Ctx -> ElemSegment -> ValidationResult@@ -535,7 +569,7 @@ let isTableIndexValid = if tableIdx < (fromIntegral $ length tableImports + length tables) then return ()- else Left TableIndexOutOfRange+ else Left (TableIndexOutOfRange tableIdx) in let funImports = filter isFuncImport imports in let funsLength = fromIntegral $ length functions + length funImports in@@ -544,7 +578,7 @@ datasShouldBeValid :: Validator datasShouldBeValid m@Module { datas, mems, imports } =- let ctx = ctxFromModule [] [] Nothing m in+ let ctx = ctxFromModule [] [] [] m in foldMap (isDataValid ctx) datas where isDataValid :: Ctx -> DataSegment -> ValidationResult@@ -559,7 +593,7 @@ let memImports = filter isMemImport imports in if memIdx < (fromIntegral $ length memImports + length mems) then check- else Left MemoryIndexOutOfRange+ else Left (MemoryIndexOutOfRange memIdx) startShouldBeValid :: Validator startShouldBeValid Module { start = Nothing } = return ()@@ -583,21 +617,13 @@ isExportValid (Export _ (ExportFunc funIdx)) = if fromIntegral funIdx < length funcImports + length functions then return () else Left FunctionIndexOutOfRange isExportValid (Export _ (ExportTable tableIdx)) =- if fromIntegral tableIdx < length tableImports + length tables then return () else Left TableIndexOutOfRange+ if fromIntegral tableIdx < length tableImports + length tables then return () else Left (TableIndexOutOfRange tableIdx) isExportValid (Export _ (ExportMemory memIdx)) =- if fromIntegral memIdx < length memImports + length mems then return () else Left MemoryIndexOutOfRange+ if fromIntegral memIdx < length memImports + length mems then return () else Left (MemoryIndexOutOfRange memIdx) isExportValid (Export _ (ExportGlobal globalIdx)) = if fromIntegral globalIdx < length globalImports + length globals- then (- if fromIntegral globalIdx >= length globalImports- then (- case globals !! (fromIntegral globalIdx - length globalImports) of- (Global (Mut _) _) -> Left ExportedGlobalIsNotConst- _ -> return ()- )- else return ()- )- else Left GlobalIndexOutOfRange+ then return ()+ else Left (GlobalIndexOutOfRange globalIdx) areExportNamesUnique :: ValidationResult areExportNamesUnique =@@ -622,14 +648,7 @@ else Left TypeIndexOutOfRange isImportValid (Import _ _ (ImportTable _)) = return () -- checked in tables section isImportValid (Import _ _ (ImportMemory _)) = return () -- checked in mems section- isImportValid (Import _ _ (ImportGlobal (Const _))) = return ()- isImportValid (Import _ _ (ImportGlobal (Mut _))) = Left ImportedGlobalIsNotConst--typesShouldBeValid :: Validator-typesShouldBeValid Module { types } = foldMap isTypeValid types- where- isTypeValid :: FuncType -> ValidationResult- isTypeValid FuncType { results } = if length results <= 1 then return () else Left InvalidResultArity+ isImportValid (Import _ _ (ImportGlobal _)) = return () newtype ValidModule = ValidModule { getModule :: Module } deriving (Show, Eq) @@ -638,7 +657,6 @@ where validators :: [Validator] validators = [- typesShouldBeValid, functionsShouldBeValid, tablesShouldBeValid, memoryShouldBeValid,
tests/Test.hs view
@@ -12,12 +12,18 @@ import qualified Language.Wasm as Wasm import qualified Language.Wasm.Script as Script+import qualified Data.List as List main :: IO () main = do- files <- Directory.listDirectory "tests/samples"+ files <- filter (List.isSuffixOf ".wast") <$> Directory.listDirectory "tests/spec"+ -- let files = ["const.wast"] scriptTestCases <- (`mapM` files) $ \file -> do- Right script <- Wasm.parseScript <$> LBS.readFile ("tests/samples/" ++ file)+ test <- LBS.readFile ("tests/spec/" ++ file) return $ testCase file $ do- Script.runScript (\msg assert -> assertFailure ("Failed assert: " ++ msg ++ ". Assert " ++ show assert)) script+ case Wasm.parseScript test of+ Right script -> + Script.runScript (\msg assert -> assertFailure ("Failed assert: " ++ msg ++ ". Assert " ++ show assert)) script+ Left error ->+ assertFailure $ "Failed to parse with error: " ++ show error defaultMain $ testGroup "Wasm Core Test Suit" scriptTestCases
wasm.cabal view
@@ -1,98 +1,87 @@+cabal-version: 2.2 name: wasm-version: 1.0.0+version: 1.1.0+synopsis: WebAssembly Language Toolkit and Interpreter+description:+ Library for parsing and interpreting WebAssembly, including:+ * WebAssembly Text Representation Parser+ * WebAssembly Binary Represetnation encoder and decoder+ * Spec-compatible Module validator (checked with Spec Core Test Suite)+ * Spec-compatible Interpreter (checked with Spec Core Test Suite)+ * Extended scripting grammar parser and executor+ * WebAssembly Module building eDSL author: Ilya Rezvov-maintainer: Ilya Rezvov <rezvov.ilya@gmail.com>+maintainer: rezvov.ilya@gmail.com license: MIT license-file: LICENSE-category: Compilers/Interpreters-homepage: https://github.com/SPY/haskell-wasm/-bug-reports: https://github.com/SPY/haskell-wasm/issues-synopsis: WebAssembly Language Toolkit and Interpreter-description: This package contains fully spec-compatible tooling for WebAssembly.- Features include:- .- * WebAssembly Text Representation Parser- .- * WebAssembly Binary Representation encoder and decoder- .- * Spec-compatible Module validator (checked with Spec Core Test Suite)- .- * Spec-compatible Interpreter (checked with Spec Core Test Suite)- .- * Extended scipting grammar parser and executor- .- * WebAssembly Module building eDSL build-type: Simple-cabal-version: >= 1.10-+category: Language+homepage: https:github.com/SPY/haskell-wasm+bug-reports: https:github.com/SPY/haskell-wasm/issues+tested-with: GHC==8.6.5, GHC==8.8.4, GHC==8.10.4 extra-source-files:- src/Language/Wasm/Lexer.x+ README.md src/Language/Wasm/Parser.y+ src/Language/Wasm/Lexer.x +source-repository head+ type: git+ location: https://github.com/SPY/haskell-wasm+ library- hs-source-dirs:- src- ghc-options: -Wwarn -fwarn-incomplete-patterns -fwarn-unused-imports- build-depends:- array >=0.5 && <0.6- , base >=4.6 && <5.0- , bytestring >=0.10- , containers >=0.5 && <0.6- , mtl >=2.2 && <3.0- , text >=1.1- , transformers >=0.4 && <0.6- , utf8-string >=1.0- , cereal >= 0.5- , vector >= 0.12- , ieee754 >= 0.8- , deepseq >= 1.4- build-tools:- alex >=3.1.3- , happy >=1.9.4 exposed-modules:+ Language.Wasm.Script Language.Wasm.Lexer- Language.Wasm.Parser Language.Wasm.Structure- Language.Wasm.Binary- Language.Wasm.Validate- Language.Wasm.Interpreter- Language.Wasm.Script- Language.Wasm.FloatUtils- Language.Wasm.Builder Language.Wasm other-modules:+ Language.Wasm.Binary+ Language.Wasm.Builder+ Language.Wasm.FloatUtils+ Language.Wasm.Interpreter+ Language.Wasm.Parser+ Language.Wasm.Validate Paths_wasm- default-language: Haskell2010--executable wasm- main-is: Main.hs- hs-source-dirs: exec+ autogen-modules:+ Paths_wasm+ hs-source-dirs: src+ ghc-options: -Wwarn+ -Wcompat+ -Wpartial-fields+ -Wincomplete-uni-patterns+ -fwarn-incomplete-patterns+ -fwarn-unused-imports+ build-tool-depends:+ alex:alex >=3.1.3 && < 3.3+ , happy:happy >=1.9.4 && < 1.21 build-depends:- base >=4.6 && <5.0- , wasm- , optparse-applicative >= 0.14- , bytestring >=0.10 && <0.11- , base64-bytestring >= 1.0+ array >=0.5 && < 0.6+ , base >=4.6 && < 5+ , bytestring >=0.10 && < 0.12+ , cereal >=0.5 && < 0.6+ , containers >=0.5 && < 0.7+ , deepseq >=1.4 && < 1.5+ , ieee754 >=0.8 && < 0.9+ , mtl >=2.2.1 && < 2.3+ , primitive >=0.7 && < 0.8+ , text >=1.1 && < 1.3+ , transformers >=0.4 && < 0.6+ , utf8-string >=1.0 && < 1.1+ , vector >=0.12 && < 0.13 default-language: Haskell2010 test-suite test type: exitcode-stdio-1.0 main-is: Test.hs- hs-source-dirs:- tests+ hs-source-dirs: tests build-depends:- base >=4.6 && <5.0- , bytestring >=0.10 && <0.11- , filepath >=1.3 && <1.5- , directory >= 1.3- , mtl ==2.2.1+ base+ , bytestring+ , directory >=1.3+ , filepath >=1.3+ , mtl , tasty >=0.7- , tasty-hunit >=0.4.1 && <0.10- , text >=1.1 && <1.3+ , tasty-hunit >=0.4.1+ , text , wasm- build-tools:- alex >=3.1.3- , happy >=1.9.4- other-modules:- Paths_wasm default-language: Haskell2010