ghcjs-hplay (empty) → 0.2
raw patch · 7 files changed
+4225/−0 lines, 7 filesdep +basedep +containersdep +ghcjs-basesetup-changed
Dependencies added: base, containers, ghcjs-base, ghcjs-perch, mtl, transformers, transient, transient-universe
Files
- LICENSE +27/−0
- Setup.lhs +6/−0
- ghcjs-hplay.cabal +41/−0
- src/GHCJS/HPlay/Cell.hs +238/−0
- src/GHCJS/HPlay/View.hs +1396/−0
- src/Main.hs +361/−0
- src/Main.html +2156/−0
+ LICENSE view
@@ -0,0 +1,27 @@+Copyright (c) Alberto Gómez Corona 2008++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions+are met:+1. Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.+2. Redistributions in binary form must reproduce the above copyright+ notice, this list of conditions and the following disclaimer in the+ documentation and/or other materials provided with the distribution.+3. Neither the name of the author nor the names of his contributors+ may be used to endorse or promote products derived from this software+ without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF+SUCH DAMAGE.
+ Setup.lhs view
@@ -0,0 +1,6 @@+#!/usr/bin/runhaskell +> module Main where+> import Distribution.Simple+> main :: IO ()+> main = defaultMain+
+ ghcjs-hplay.cabal view
@@ -0,0 +1,41 @@+name: ghcjs-hplay +version: 0.2 +cabal-version: >=1.10 +build-type: Simple +license: BSD3 +license-file: LICENSE +maintainer: agocorona@gmail.com +stability: experimental +homepage: https://github.com/agocorona/hplayground +bug-reports: https://github.com/agocorona/hplayground/issues +synopsis: monadic, reactive Formlets running in the Web browser +description: client-side haskell framework that compiles to javascript with the ghcjs compiler. See homepage +category: Web +author: Alberto Gomez Corona +data-dir: "" +extra-source-files: src/Main.hs src/Main.html + +source-repository head + type: git + location: http://github.com/agocorona/ghcjs-hplay + +library + + if impl(ghcjs >=0.1) + build-depends: base >4.0 && <5, ghcjs-base -any, transformers -any, + containers -any, transient, transient-universe, mtl -any, ghcjs-perch -any, + ghcjs-base -any + + + else + build-depends: base >4.0 && <5, transformers -any, containers -any, + transient, transient-universe, mtl -any, ghcjs-perch -any + + + exposed-modules: GHCJS.HPlay.View GHCJS.HPlay.Cell + exposed: True + buildable: True + default-language: Haskell2010 + hs-source-dirs: src . + +
+ src/GHCJS/HPlay/Cell.hs view
@@ -0,0 +1,238 @@+----------------------------------------------------------------------------- +-- +-- Module : Cell +-- Copyright : +-- License : BSD3 +-- +-- Maintainer : agocorona@gmail.com +-- Stability : experimental +-- Portability : +-- +-- | +-- +----------------------------------------------------------------------------- +{-# LANGUAGE TypeSynonymInstances, FlexibleInstances, OverloadedStrings, CPP #-} +module GHCJS.HPlay.Cell where +import Transient.Base +import GHCJS.HPlay.View +import Data.Typeable +import Unsafe.Coerce +import qualified Data.Map as M hiding ((!)) +import System.IO.Unsafe +import Data.IORef +import Control.Monad.IO.Class +import Control.Monad +import Data.Maybe +import Control.Exception +import Data.List + +import GHCJS.Perch + +#ifdef ghcjs_HOST_OS +import Data.JSString +#endif + +data Cell a = Cell { mk :: Maybe a -> Widget a + , setter :: a -> IO () + , getter :: IO (Maybe a)} + +--instance Functor Cell where +-- fmap f cell = cell{setter= \c x -> c .= f x, getter = \cell -> get cell >>= return . f} + + + +-- a box cell with polimorphic value, identified by a string +boxCell :: (Show a, Read a, Typeable a) => ElemID -> Cell a +boxCell id = Cell{ mk= \mv -> getParam id mv + , setter= \x -> do + me <- elemById id + case me of + Just e -> setProp e "value" (toJSString $ show1 x) + Nothing -> return () + + , getter= do + me <- elemById id + case me of + Nothing -> return Nothing + Just e -> getit} + where + getit= withElem id $ \e -> getProp e "value" >>= return . read1 + read1 s= if typeOf(typeIO getit) /= typestring + then case readsPrec 0 $ fromJSString s of + [(v,_)] -> Just v + _ -> Nothing + else Just $ unsafeCoerce s + typeIO :: IO(Maybe a) -> a + typestring= typeOf (undefined :: String) + typeIO = undefined + show1 x= if typeOf x== typestring + then unsafeCoerce x + else show x + + + + + +-- | Cell assignment +(.=) :: MonadIO m => Cell a -> a -> m () +(.=) cell x = liftIO $ (setter cell ) x + +get cell = Transient $ liftIO (getter cell) + + +---- | a cell value assigned to other cell +--(..=) :: Cell a -> Cell a -> Widget () +--(..=) cell cell'= get cell' >>= (cell .= ) + +infixr 0 .= -- , ..= + +-- experimental: to permit cell arithmetic + +--instance Num a => Num (Cell a) where +-- c + c'= Cell undefined undefined $ +-- do r1 <- getter c +-- r2 <- getter c' +-- return $ liftA2 (+) r1 r2 +-- +-- c * c'= Cell undefined undefined $ +-- do r1 <- getter c +-- r2 <- getter c' +-- return $ liftA2 (+) r1 r2 +-- +-- abs c= c{getter= getter c >>= return . fmap abs} +-- +-- signum c= c{getter= getter c >>= return . fmap signum} +-- +-- fromInteger i= Cell undefined undefined . return $ Just $ fromInteger i + + +-- * Spradsheet type cells +-- Implement a solver that allows circular dependencies . See +-- > http://tryplayg.herokuapp.com/try/spreadsheet.hs/edit + +-- The recursive Cell calculation DSL BELOW ------ + + +-- | get a cell for the spreadsheet expression +gcell :: Num a => String -> M.Map String a -> a +gcell n= \vars -> case M.lookup n vars of + Just exp -> inc n exp + Nothing -> error $ "cell error in: "++n + where + inc n exp= unsafePerformIO $ do + tries <- readIORef rtries + if tries <= maxtries + then do + writeIORef rtries (tries+1) + return exp + + else error n + + +-- a parameter is a function of all of the rest parameters +type Expr a = M.Map JSString a -> a + +rtries= unsafePerformIO $ newIORef $ (0::Int) +maxtries= 3* (M.size $ unsafePerformIO $ readIORef rexprs) + +rexprs :: IORef (M.Map JSString (Expr Float)) +rexprs= unsafePerformIO $ newIORef M.empty + +rmodified :: IORef (M.Map JSString (Expr Float)) +rmodified= unsafePerformIO $ newIORef M.empty + + + +mkscell name val expr= mk (scell name expr) val + +scell id expr= Cell{ mk= \mv-> do + liftIO $ do + exprs <- readIORef rexprs + writeIORef rexprs $ M.insert id expr exprs + + r <- getParam id mv `fire` OnKeyUp + liftIO $ do + mod <- readIORef rmodified + writeIORef rmodified $ M.insert id (const r) mod + return r + `continuePerch` id + + + + , setter= \x -> withElem id $ \e -> setProp e "value" (toJSString $ show1 x) + + , getter= getit} + where + + getit= withElem id $ \e -> getProp e "value" >>= return . read1 + read1 s= if typeOf(typeIO getit) /= typeOf (undefined :: String) + then case readsPrec 0 $ fromJSString s of + [(v,_)] -> Just v + _ -> Nothing + else unsafeCoerce s + typeIO :: IO(Maybe a) -> a + typeIO = undefined + show1 x= if typeOf x== typeOf (undefined :: String) + then unsafeCoerce x + else show x + + + +calc :: Widget () +calc= do + nvs <- liftIO $ readIORef rmodified + when (not $ M.null nvs) $ do + values <-liftIO $ handle doit calc1 + mapM_ (\(n,v) -> boxCell n .= v) values + liftIO $ writeIORef rmodified M.empty + where + -- http://blog.sigfpe.com/2006/11/from-l-theorem-to-spreadsheet.html + -- loeb :: Functor f => f (t -> a) -> f a + loeb :: M.Map JSString (Expr a) -> M.Map JSString a + loeb x = fmap (\a -> a (loeb x)) x + + calc1 :: IO [(JSString,Float)] + calc1= do + writeIORef rtries 0 + cells <- liftIO $ readIORef rexprs + nvs <- liftIO $ readIORef rmodified + let mvalues = M.union nvs cells + evalues = loeb mvalues + + toStrict $ M.toList evalues + + toStrict xs = print xs >> return xs + + circular n= "loop detected in cell: "++ show n ++ " please fix the error" + + doit :: SomeException -> IO [(JSString,Float)] + doit e= do + nvs <- readIORef rmodified + exprs <- readIORef rexprs + case M.keys exprs \\ M.keys nvs of + [] -> do + let Just (ErrorCall n)= fromException e + let err= circular n + alert $ toJSString err + error err + (name:_) -> do + mv <- getter $ boxCell name + case mv of + Nothing -> return [] + Just v -> do + writeIORef rmodified $ M.insert name (const v) nvs + calc1 + + +instance (Num a,Eq a,Fractional a) =>Fractional (x -> a)where + f / g = \x -> f x / g x + fromRational = error "fromRational not implemented" + + +instance (Num a,Eq a) => Num (x -> a) where + fromInteger = const . fromInteger + f + g = \x -> f x + g x + f * g = \x -> f x * g x + negate = (negate .) + abs = (abs .) + signum = (signum .)
+ src/GHCJS/HPlay/View.hs view
@@ -0,0 +1,1396 @@+{-# LANGUAGE FlexibleContexts, FlexibleInstances, + OverloadedStrings, DeriveDataTypeable, UndecidableInstances, + ExistentialQuantification, GeneralizedNewtypeDeriving, CPP #-} + + +module GHCJS.HPlay.View( +Widget, + +-- * running it +simpleWebApp, atServer, atRemote, runCloudIO +,runWidget,runWidgetId', runBody, addHeader, render, + +-- * re-exported +module Control.Applicative, + +-- * widget combinators and modifiers + + (<**), validate +,(<<<),(<<),(<++),(++>),(<!) +,wcallback + +-- * basic widgets +,option,wprint +,getString,inputString, getInteger,inputInteger, +getInt, inputInt,inputFloat, inputDouble,getPassword,inputPassword, +setRadio,setRadioActive,getRadio +,setCheckBox, getCheckBoxes +,getTextBox, getMultilineText,textArea,getBool +,getSelect,setOption,setSelectedOption, wlabel, +resetButton,inputReset, submitButton, +inputSubmit, wbutton, wlink, noWidget, wraw, rawHtml, isEmpty, +-- * Event + +BrowserEvent(..) + +-- * out of flow updates +,at, UpdateMethod(..) + + +-- * reactive and events +,resetEventData,getEventData, setEventData, IsEvent(..), EventData(..),EvData(..) +,raiseEvent, fire, wake, pass +,continueIf + + + +-- * Perch is reexported +,module GHCJS.Perch + + +-- * low level and internals +,getNextId,genNewId, continuePerch +,getParam, getCont,runCont +,FormInput(..), + +ElemID, elemById,withElem,getProp,setProp, alert, +fromJSString, toJSString +) where + + + + + +import Transient.Base hiding (input,option,keep, keep') +import Transient.Internals(runTransient,onNothing,getCont,runCont,EventF(..),StateIO,RemoteStatus(..)) + +import Transient.Logged +import Control.Applicative +import Data.Monoid + +import Control.Monad.State + +import Data.Typeable + +import Unsafe.Coerce +import Data.Maybe +import System.IO.Unsafe +import Control.Concurrent.MVar +import Data.IORef +import qualified Data.Map as M +import Prelude hiding(id,span) + +import Data.Dynamic + +import Control.Concurrent + +#ifdef ghcjs_HOST_OS +import Transient.Move hiding (pack) +import GHCJS.Perch hiding (eventName,JsEvent(..),option) +import GHCJS.Types +import GHCJS.Marshal +import GHCJS.Foreign +import GHCJS.Foreign.Callback -- as CB + +import Data.JSString as JS hiding (span,empty,strip) +#else +import Transient.Move hiding (pack,JSString) +import GHCJS.Perch hiding (eventName,JsEvent(..),option,JSVal) +#endif + +-- | executes the application in the server and the Web browser. +-- the browser must point to http://hostname:port where port is the first parameter +simpleWebApp :: Integer -> Cloud x -> IO () +simpleWebApp port app= do + serverNode <- getWebServerNode port + + let mynode = if isBrowserInstance + then createWebNode + else serverNode + + runCloudIO $ do + listen mynode + setData serverNode + app + return () + +-- | if invoked from the browser, run A computation in the web server and return to the browser +atServer :: Loggable a => Cloud a -> Cloud a +atServer proc= do + server <- onAll getSData <|> error "server not set, use 'setData serverNode'" + wormhole server $ atRemote proc + +-- | if invoked from the server or browwser, run the computation in the other node (need to be in a wormhole) +atRemote proc= do + teleport + r <- proc + teleport + return r + +toJSString x= + if typeOf x== typeOf (undefined :: String ) + then pack $ unsafeCoerce x + else pack $ show x + +fromJSString :: (Typeable a,Read a) => JSString -> a +fromJSString s= x + where + x | typeOf x == typeOf (undefined :: JSString) = + unsafeCoerce x -- !> "unsafecoerce" + | typeOf x == typeOf (undefined :: String) = + unsafeCoerce $ pack $ unsafeCoerce x -- !!> "packcoerce" + | otherwise = read $ unpack s -- !> "readunpack" + +getValue :: MonadIO m => Elem -> m (Maybe String) +#ifdef ghcjs_HOST_OS +getValue e= liftIO $ do + s <- getValueDOM e + fromJSVal s -- return $ JS.unpack s +#else +getValue= undefined +#endif + +elemById :: MonadIO m => JSString -> m (Maybe Elem) +#ifdef ghcjs_HOST_OS +elemById id= liftIO $ do + re <- elemByIdDOM id + fromJSVal re +#else +elemById _= return Nothing +#endif + +withElem :: ElemID -> (Elem -> IO a) -> IO a +withElem id f= do + me <- elemById id + case me of + Nothing -> error ("withElem: not found"++ fromJSString id) + Just e -> f e + +atElem :: ElemID -> Perch -> Perch +atElem id f = Perch $ \ _ -> do + me <- elemById id + case me of + Nothing -> error ("withElem: not found"++ fromJSString id) + Just e -> build f e + +data NeedForm= HasForm | HasElems | NoElems deriving Show + + +type ElemID= JSString +type Widget a= TransIO a + + +runView :: TransIO a -> StateIO (Maybe a) +runView = runTrans + +-- | It is a callback in the view monad. The rendering of the second parameter substitutes the rendering +-- of the first paramenter when the latter validates without afecting the rendering of other widgets. +-- This allow the simultaneous execution of different dynamic behaviours in different page locations +-- at the same page. +wcallback + :: Widget a -> (a ->Widget b) -> Widget b + +wcallback x f= Transient $ do + nid <- genNewId + runView $ do + r <- at nid Insert x + at nid Insert $ f r + + + + + + +{- +instance Monoid view => MonadTrans (View view) where + lift f = Transient $ (lift f) >>= \x -> returnFormElm mempty $ Just x +-} + +type Name= JSString +type Type= JSString +type Value= JSString +type Checked= Bool +type OnClick1= Maybe JSString + + +-- | Minimal interface for defining the basic form and link elements. The core of MFlow is agnostic +-- about the rendering package used. Every formatting (either HTML or not) used with MFlow must have an +-- instance of this class. +-- See "MFlow.Forms.Blaze.Html for the instance for blaze-html" "MFlow.Forms.XHtml" for the instance +-- for @Text.XHtml@ and MFlow.Forms.HSP for the instance for Haskell Server Pages. +class (Monoid view,Typeable view) => FormInput view where + fromStr :: JSString -> view + fromStrNoEncode :: String -> view + ftag :: JSString -> view -> view + inred :: view -> view + flink :: JSString -> view -> view + flink1:: JSString -> view + flink1 verb = flink verb (fromStr verb) + finput :: Name -> Type -> Value -> Checked -> OnClick1 -> view + ftextarea :: JSString -> JSString -> view + fselect :: JSString -> view -> view + foption :: JSString -> view -> Bool -> view + foption1 :: JSString -> Bool -> view + foption1 val msel= foption val (fromStr val) msel + formAction :: JSString -> JSString -> view -> view + attrs :: view -> Attribs -> view + +type Attribs= [(JSString, JSString)] + + +data ParamResult v a= NoParam | NotValidated String v | Validated a deriving (Read, Show) + +valToMaybe (Validated x)= Just x +valToMaybe _= Nothing + +isValidated (Validated x)= True +isValidated _= False + +fromValidated (Validated x)= x +fromValidated NoParam= error "fromValidated : NoParam" +fromValidated (NotValidated s err)= error $ "fromValidated: NotValidated "++ s + +getParam1 :: ( Typeable a, Read a, Show a) + => JSString -> StateIO (ParamResult Perch a) +getParam1 par = do + me <- elemById par -- !> ("looking for " ++ show par) + case me of + Nothing -> return NoParam + Just e -> do + v <- getValue e -- !!> ("exist" ++ show par) + readParam v -- !!> ("getParam for "++ show v) + + +type Params= Attribs + + + +readParam :: (Typeable a, Read a, Show a)=> Maybe String -> StateIO (ParamResult Perch a) +readParam Nothing = return NoParam +readParam (Just x1) = r + where + r= maybeRead x1 + + getType :: m (ParamResult v a) -> a + getType= undefined + x= getType r + + maybeRead str= do + let typeofx = typeOf x + if typeofx == typeOf ( undefined :: String) then + return . Validated $ unsafeCoerce str -- !!> ("maybread string " ++ str) + else case reads $ str of -- -- !!> ("read " ++ str) of + [(x,"")] -> return $ Validated x -- !!> ("readsprec" ++ show x) + _ -> do + let err= inred . fromStr $ toJSString $ "can't read \"" ++ str ++ "\" as type " ++ show (typeOf x) + return $ NotValidated str err + +-- | Validates a form or widget result against a validating procedure +-- +-- @getOdd= getInt Nothing `validate` (\x -> return $ if mod x 2==0 then Nothing else Just "only odd numbers, please")@ +validate + :: Widget a + -> (a -> StateIO (Maybe Perch)) + -> TransIO a +validate w val= do + idn <- Transient $ Just <$> genNewId + wraw $ span ! id idn $ noHtml + x <- w + Transient $ do + me <- val x + case me of + Just str -> do + liftIO $ withElem idn $ build $ clear >> inred str + return Nothing + Nothing -> do + liftIO $ withElem idn $ build clear + return $ Just x + + + + +-- | Generate a new string. Useful for creating tag identifiers and other attributes. +-- +-- if the page is refreshed, the identifiers generated are the same. + +#ifdef ghcjs_HOST_OS +genNewId :: StateIO JSString +genNewId= do + Prefix pre <- getData `onNothing` return (Prefix "") + n <- genId + return $ pre <> (toJSString $ {-'p': (show $ Prelude.length log)++-} ('n':show n)) + +getPrev :: StateIO JSString +getPrev= do + n' <- getPrevId + let n= n'-1 + Prefix pre <- getData `onNothing` return (Prefix "") + + return $ pre <> (toJSString $ {-'p': (show $ Prelude.length log)++-} ('n':show n)) +#else +genNewId :: StateIO JSString +genNewId= return $ pack "" + +getPrev :: StateIO JSString +getPrev= return $ pack "" +#endif + +--addPrefix= Transient $ do +-- n <- genId +-- Prefix s <- getData `onNothing` return ( Prefix "") +-- setSData $ Prefix (toJSString( 's': show n)<> s) +-- return $ Just () + + +-- | get the next ideitifier that will be created by genNewId +getNextId :: MonadState EventF m => m JSString +getNextId= do + n <- gets mfSequence + + return $ toJSString $ 'p':show n + + +-- | Display a text box and return a non empty String +getString :: Maybe String -> TransIO String +getString = getTextBox +-- `validate` +-- \s -> if Prelude.null s then return (Just $ fromStr "") +-- else return Nothing + +inputString :: Maybe String -> TransIO String +inputString= getString + +-- | Display a text box and return an Integer (if the value entered is not an Integer, fails the validation) +getInteger :: Maybe Integer -> TransIO Integer +getInteger = getTextBox + +inputInteger :: Maybe Integer -> TransIO Integer +inputInteger= getInteger + +-- | Display a text box and return a Int (if the value entered is not an Int, fails the validation) +getInt :: Maybe Int -> TransIO Int +getInt = getTextBox + +inputInt :: Maybe Int -> TransIO Int +inputInt = getInt + +inputFloat :: Maybe Float -> TransIO Float +inputFloat = getTextBox + +inputDouble :: Maybe Double -> TransIO Double +inputDouble = getTextBox + +-- | Display a password box +getPassword :: TransIO String +getPassword = getParam "password" Nothing + +inputPassword :: TransIO String +inputPassword= getPassword + +newtype Radio a= Radio a deriving Monoid + + + +-- | Implement a radio button +-- the parameter is the name of the radio group +setRadio :: (Typeable a, Eq a, Show a) => + a -> TransIO (Radio a) +setRadio v = Transient $ do + RadioId n <- getData `onNothing` error "setRadio out of getRadio" + id <- genNewId + st <- get +-- setData HasElems -- only for MFlow + me <- liftIO $ elemById id + checked <- case me of + Nothing -> return "" + Just e -> liftIO $ getProp e "checked" + let strs= if checked=="true" then Just v else Nothing +-- let mn= if null strs then False else True + ret= fmap Radio strs + str = if typeOf v == typeOf(undefined :: String) + then unsafeCoerce v else show v + addSData + ( finput id "radio" (toJSString str) ( isJust strs ) Nothing `attrs` [("name",n)] :: Perch) + return ret + +setRadioActive :: (Typeable a, Eq a, Show a) => + a -> Widget (Radio a) +setRadioActive rs = setRadio rs `raiseEvent` OnClick + +data RadioId= RadioId JSString deriving Typeable + +-- | encloses a set of Radio boxes. Return the option selected +getRadio + :: Monoid a => [TransIO (Radio a)] -> TransIO a +getRadio ws = Transient $ do + id <- genNewId + setSData $ RadioId id + fs <- mapM runView ws + let mx = mconcat fs + delSData $ RadioId id + return $ fmap (\(Radio r) -> r) mx + + +data CheckBoxes a= CheckBoxes [a] deriving Show + +instance Monoid (CheckBoxes a) where + mappend (CheckBoxes xs) (CheckBoxes ys)= CheckBoxes $ xs ++ ys + mempty= CheckBoxes [] + + +-- | Display a text box and return the value entered if it is readable( Otherwise, fail the validation) +setCheckBox :: (Typeable a , Show a) => + Bool -> a -> TransIO (CheckBoxes a) +setCheckBox checked' v= Transient $ do + n <- genNewId + st <- get + setData HasElems + me <- liftIO $ elemById n + checked <- case me of -- !!> show ("setCheckBox",n,isJust me) of + Nothing -> return $ if checked' then "true" else "" + Just e -> liftIO $ getProp e "checked" + + let strs= if checked=="true" then [v] else [] + showv= toJSString (if typeOf v == typeOf (undefined :: String) + then unsafeCoerce v + else show v) + + addSData $ ( finput n "checkbox" showv checked' Nothing :: Perch) + return $ Just $ CheckBoxes strs -- !!> show ("checkbox return", strs) + + +getCheckBoxes :: Show a=> TransIO (CheckBoxes a) -> TransIO [a] +--getCheckBoxes w= Transient $ do +-- mcb <- runView w +-- liftIO $ print "PASSED" +-- return $ case mcb -- !!> show ("checks",mcb) of +-- Just(CheckBoxes rs) -> Just rs +-- _ -> Nothing + +getCheckBoxes w= do + CheckBoxes rs <- w + return rs + +whidden :: (Read a, Show a, Typeable a) => a -> TransIO a +whidden x= res where + res= Transient $ do + n <- genNewId + let showx= case cast x of + Just x' -> x' + Nothing -> show x + r <- getParam1 n `asTypeOf` typef res + addSData (finput n "hidden" (toJSString showx) False Nothing :: Perch) + return (valToMaybe r) + where + typef :: TransIO a -> StateIO (ParamResult Perch a) + typef = undefined + + + + +getTextBox + :: (Typeable a, + Show a, + Read a) => + Maybe a -> TransIO a +getTextBox ms = getParam "text" ms + + +getParam + :: (Typeable a, + Show a, + Read a) => + JSString -> Maybe a -> TransIO a +getParam type1 mvalue= Transient $ getParamS type1 mvalue + +getParamS type1 mvalue= do + tolook <- genNewId + + let nvalue x = case x of + Nothing -> mempty + Just v -> + if (typeOf v== typeOf (undefined :: String)) then pack (unsafeCoerce v) + else if typeOf v== typeOf (undefined :: JSString) then unsafeCoerce v -- !!> "jsstring" + else toJSString $ show v -- !!> "show" + + setData HasElems + r <- getParam1 tolook + + case r of + Validated x -> do addSData (finput tolook type1 (nvalue $ Just x) False Nothing :: Perch) ; return $ Just x -- !!> "validated" + NotValidated s err -> do addSData (finput tolook type1 (toJSString s) False Nothing <> err :: Perch); return Nothing + NoParam -> do setSData WasParallel;addSData (finput tolook type1 (nvalue mvalue) False Nothing :: Perch); return Nothing + + + + +-- | Display a multiline text box and return its content +getMultilineText :: JSString + -> TransIO String +getMultilineText nvalue = res where + res= Transient $ do + tolook <- genNewId + r <- getParam1 tolook `asTypeOf` typef res + case r of + Validated x -> do addSData (ftextarea tolook $ toJSString x :: Perch); return $ Just x + NotValidated s err -> do addSData (ftextarea tolook (toJSString s) :: Perch); return Nothing + NoParam -> do setSData WasParallel;addSData (ftextarea tolook $ toJSString nvalue :: Perch); return Nothing + where + typef :: TransIO String -> StateIO (ParamResult Perch String) + typef = undefined + +-- | A synonim of getMultilineText +textArea :: JSString ->TransIO String +textArea= getMultilineText + + + +getBool :: Bool -> String -> String -> TransIO Bool +getBool mv truestr falsestr= do + r <- getSelect $ setOption truestr (fromStr $ toJSString truestr) <! (if mv then [("selected","true")] else []) + <|> setOption falsestr(fromStr $ toJSString falsestr) <! if not mv then [("selected","true")] else [] + if r == truestr then return True else return False + + + +-- | Display a dropdown box with the options in the first parameter is optionally selected +-- . It returns the selected option. +getSelect :: (Typeable a, Read a,Show a) => + TransIO (MFOption a) -> TransIO a +getSelect opts = res where + res= Transient $ do + tolook <- genNewId + st <- get +-- setData HasElems + r <- getParam1 tolook `asTypeOf` typef res +-- setData $ fmap MFOption $ valToMaybe r + runView $ fselect tolook <<< opts +-- + return $ valToMaybe r + + where + typef :: TransIO a -> StateIO (ParamResult Perch a) + typef = undefined + +newtype MFOption a= MFOption a deriving Typeable + +instance Monoid (TransIO (MFOption a)) where + mappend = (<|>) + mempty = Control.Applicative.empty + +-- | Set the option for getSelect. Options are concatenated with `<|>` +setOption + :: (Show a, Eq a, Typeable a) => + a -> Perch -> TransIO (MFOption a) +setOption n v = setOption1 n v False + + +-- | Set the selected option for getSelect. Options are concatenated with `<|>` +setSelectedOption + :: (Show a, Eq a, Typeable a) => + a -> Perch -> TransIO (MFOption a) +setSelectedOption n v= setOption1 n v True + + +setOption1 :: (Typeable a, Eq a, Show a) => + a -> Perch -> Bool -> TransIO (MFOption a) +setOption1 nam val check= Transient $ do + let n = if typeOf nam == typeOf(undefined :: String) + then unsafeCoerce nam + else show nam + + addSData (foption (toJSString n) val check) + + return Nothing -- (Just $ MFOption nam) + + +wlabel:: Perch -> TransIO a -> TransIO a +wlabel str w =Transient $ do + id <- getNextId + runView $ (ftag "label" str `attrs` [("for",id)] :: Perch) ++> w + + + +-- passive reset button. +resetButton :: JSString -> TransIO () +resetButton label= Transient $ do + addSData (finput "reset" "reset" label False Nothing :: Perch) + return $ Just () + +inputReset :: JSString -> TransIO () +inputReset= resetButton + +-- passive submit button. Submit a form, but it is not trigger any event. +-- Unless you attach it with `raiseEvent` +submitButton :: (Read a, Show a, Typeable a) => a -> TransIO a +submitButton label= getParam "submit" $ Just label + + +inputSubmit :: (Read a, Show a, Typeable a) => a -> TransIO a +inputSubmit= submitButton + +-- | active button. When clicked, return the first parameter +wbutton :: a -> JSString -> Widget a +wbutton x label= + let label'= toJSString label in do + input ! atr "type" "submit" ! id label' ! atr "value" label `pass` OnClick + return x + `continuePerch` label' + + +-- | when creating a complex widget with many tags, this call indentifies which tag will receive the attributes of the (!) operator. +continuePerch :: Widget a -> ElemID -> Widget a +continuePerch w eid= c <<< w + where + c f =Perch $ \e' -> do + build f e' + elemid eid + + elemid id= elemById id >>= return . fromJust + + +-- | Present a link. Return the first parameter when clicked +wlink :: (Show a, Typeable a) => a -> Perch -> Widget a +wlink x v= do + (a ! href ( toJSString $ "#/"++show1 x) $ v) `pass` OnClick + + return x -- !!> "PASS" + + where + show1 x | typeOf x== typeOf (undefined :: String) = unsafeCoerce x + | otherwise= show x + + + +-- | show something enclosed in the <pre> tag, so ASCII formatting chars are honored +wprint :: ToElem a => a -> Widget () +wprint = wraw . pre + +-- | Enclose Widgets within some formating. +-- @view@ is intended to be instantiated to a particular format +-- +-- NOTE: It has a infix priority : @infixr 5@ less than the one of @++>@ and @<++@ of the operators, so use parentheses when appropriate, +-- unless the we want to enclose all the widgets in the right side. +-- Most of the type errors in the DSL are due to the low priority of this operator. +-- + +(<<<) :: (Perch -> Perch) + -> TransIO a + -> TransIO a +(<<<) v form= Transient $ do + rest <- getData `onNothing` return noHtml + delSData rest + mx <- runView form + f <- getData `onNothing` return noHtml + setSData $ rest <> v f + return mx + + +infixr 5 <<< + +-- | A parameter application with lower priority than ($) and direct function application +(<<) :: (Perch -> Perch) -> Perch -> Perch +(<<) tag content= tag $ toElem content + +infixr 7 << + + +-- | Append formatting code to a widget +-- +-- @ getString "hi" <++ H1 << "hi there"@ +-- +-- It has a infix prority: @infixr 6@ higuer that '<<<' and most other operators +(<++) :: TransIO a + -> Perch + -> TransIO a +(<++) form v= Transient $ do + mx <- runView form + addSData v + return mx + +infixr 6 ++> +infixr 6 <++ +-- | Prepend formatting code to a widget +-- +-- @bold << "enter name" ++> getString Nothing @ +-- +-- It has a infix prority: @infixr 6@ higuer that '<<<' and most other operators +(++>) :: Perch -> TransIO a -> TransIO a +html ++> w = + Transient $ do + addSData html + runView w + + + + +-- | Add attributes to the topmost tag of a widget +-- +-- it has a fixity @infix 8@ +infixl 8 <! +widget <! attribs= Transient $ do + rest <- getData `onNothing` return mempty + delSData rest + mx <- runView widget + fs <- getData `onNothing` return mempty + setData $ rest <> (fs `attrs` attribs :: Perch) + return mx + + +instance Attributable (Widget a) where + (!) widget atrib = widget <! [atrib] + + + +-- | Empty widget that does not validate. May be used as \"empty boxes\" inside larger widgets. +-- +-- It returns a non valid value. +noWidget :: TransIO a +noWidget= Control.Applicative.empty + +-- | a sinonym of noWidget that can be used in a monadic expression in the View monad. it stop the +-- computation in the Widget monad. +stop :: TransIO a +stop= Control.Applicative.empty + + +-- | Render raw view formatting. It is useful for displaying information. +wraw :: Perch -> Widget () +wraw x= x ++> return () + +-- | wraw synonym +rawHtml= wraw + +-- | True if the widget has no valid input +isEmpty :: Widget a -> Widget Bool +isEmpty w= Transient $ do + mv <- runView w + return $ Just $ isNothing mv + + +------------------------- +instance FormInput Perch where + fromStr = toElem + fromStrNoEncode = toElem + ftag n v = nelem n `child` v + + attrs tag [] = tag + attrs tag (nv:attribs) = attrs (attr tag nv) attribs + + inred msg= ftag "b" msg `attrs` [("style","color:red")] + + finput n t v f c= + let + tag= ftag "input" mempty `attrs` [("type", t), ("id", n), ("value", v)] + tag1= if f then tag `attrs` [("checked", "")] else tag + in case c of Just s -> tag1 `attrs` [("onclick", s)] ; _ -> tag1 + + ftextarea nam text= + ftag "textarea" mempty `attrs` [("id", nam)] `child` text + + + fselect nam list = ftag "select" mempty `attrs` [("id", nam)] `child` list + foption name v msel= + let tag= ftag "option" mempty `attrs` [("value", name)] `child` v + in if msel then tag `attrs` [("selected", "")] else tag + + + formAction action method1 form = ftag "form" mempty `attrs` [("acceptCharset", "UTF-8") + ,( "action", action) + ,("method", method1)] + `child` form + + + flink v str = ftag "a" mempty `attrs` [("href", v)] `child` str + + +--------------------------- +data EvData = NoData | Click Int (Int, Int) | Mouse (Int, Int) | MouseOut | Key Int deriving (Show,Eq,Typeable) + + + + +resetEventData :: TransIO () +resetEventData= Transient $ do + setSData $ EventData "Onload" $ toDyn NoData + return $ Just () -- !!> "RESETEVENTDATA" + + +getEventData :: TransIO EventData +getEventData = getSData <|> return (EventData "Onload" $ toDyn NoData) -- (error "getEventData: event type not expected") + +setEventData :: EventData -> TransIO () +setEventData = setSData + + +class IsEvent a where + eventName :: a -> JSString + buildHandler :: Elem -> a ->(EventData -> IO()) -> IO() + + + +data BrowserEvent= OnLoad | OnUnload | OnChange | OnFocus | OnMouseMove | OnMouseOver | + OnMouseOut | OnClick | OnDblClick | OnMouseDown | OnMouseUp | OnBlur | + OnKeyPress | OnKeyUp | OnKeyDown deriving Show + +data EventData= EventData{ evName :: JSString, evData :: Dynamic} deriving (Show,Typeable) + +--data OnLoad= OnLoad +instance IsEvent BrowserEvent where +-- data EData _= EventData{ evName :: JSString, evData :: EvData} deriving (Show,Typeable) + eventName e = +#ifdef ghcjs_HOST_OS + JS.toLower $ JS.drop 2 (toJSString $ show e) -- const "load" +#else + "" +#endif + buildHandler elem e io = + case e of + OnLoad -> do + cb <- syncCallback1 ContinueAsync (const $ setDat elem (io + (EventData (eventName e) $ toDyn NoData)) ) + js_addEventListener elem (eventName e) cb + +--data OnUnload = OnUnLoad +--instance IsEvent OnUnload where +-- eventName= const "unload" +-- buildHandler elem e io = do + OnUnload -> do + cb <- syncCallback1 ContinueAsync (const $ setDat elem $ io + (EventData (eventName e) $ toDyn NoData) ) + js_addEventListener elem (eventName e) cb +--data OnChange= OnChange +--instance IsEvent OnChange where +-- eventName= const "onchange" +-- buildHandler elem e io = do + OnChange -> do + cb <- syncCallback1 ContinueAsync (const $ setDat elem $ io + (EventData (eventName e) $ toDyn NoData) ) + js_addEventListener elem (eventName e) cb + +--data OnFocus= OnFocus +--instance IsEvent OnFocus where +-- eventName= const "focus" +-- buildHandler elem e io = do + OnFocus -> do + cb <- syncCallback1 ContinueAsync (const $ setDat elem $ io + (EventData (eventName e) $ toDyn NoData) ) + js_addEventListener elem (eventName e) cb + +--data OnBlur= OnBlur +--instance IsEvent OnBlur where +-- eventName= const "blur" +-- buildHandler elem e io = do + OnBlur -> do + cb <- syncCallback1 ContinueAsync (const $ setDat elem $ io + (EventData (eventName e)$ toDyn NoData) ) + js_addEventListener elem (eventName e) cb + +--data OnMouseMove= OnMouseMove Int Int +--instance IsEvent OnMouseMove where +-- eventName= const "mousemove" +-- buildHandler elem e io= do + OnMouseMove -> do + cb <- syncCallback1 ContinueAsync + (\r -> do + (x,y) <-fromJSValUnchecked r + stopPropagation r + setDat elem $ io $ EventData (eventName e) $ toDyn $ Mouse(x,y)) + js_addEventListener elem (eventName e) cb + +--data OnMouseOver= OnMouseOver +--instance IsEvent OnMouseOver where +-- eventName= const "mouseover" +-- buildHandler elem e io= do + OnMouseOver -> do + cb <- syncCallback1 ContinueAsync + (\r -> do + (x,y) <-fromJSValUnchecked r + stopPropagation r + setDat elem $ io $ EventData (nevent e) $ toDyn $ Mouse(x,y)) + js_addEventListener elem (eventName e) cb + +--data OnMouseOut= OnMouseOut +--instance IsEvent OnMouseOut where +-- eventName= const "mouseout" +-- buildHandler elem e io = do + OnMouseOut -> do + cb <- syncCallback1 ContinueAsync (const $ setDat elem $ io + (EventData (nevent e) $ toDyn $ NoData) ) + js_addEventListener elem (eventName e) cb + +--data OnClick= OnClick +-- +--instance IsEvent OnClick where +-- eventName= const "click" +-- buildHandler elem e io= do + OnClick -> do + cb <- syncCallback1 ContinueAsync $ \r -> do + (i,x,y)<- fromJSValUnchecked r + stopPropagation r + setDat elem $ io $ EventData (nevent e) $ toDyn $ Click i (x,y) + js_addEventListener elem (eventName e) cb + +--data OnDblClick= OnDblClick +--instance IsEvent OnDblClick where +-- eventName= const "dblclick" +-- buildHandler elem e io= do + OnDblClick -> do + cb <- syncCallback1 ContinueAsync $ \r -> do + (i,x,y)<- fromJSValUnchecked r + stopPropagation r + setDat elem $ io $ EventData (nevent e) $ toDyn $ Click i (x,y) + js_addEventListener elem (eventName e) cb + +-- +--data OnMouseDown= OnMouseDown +--instance IsEvent OnMouseDown where +-- eventName= const "mousedowm" +-- buildHandler elem e io= do + OnMouseDown -> do + cb <- syncCallback1 ContinueAsync $ \r -> do + (i,x,y)<- fromJSValUnchecked r + stopPropagation r + setDat elem $ io $ EventData (nevent e) $ toDyn $ Click i (x,y) + js_addEventListener elem (eventName e) cb + + +--data OnMouseUp= OnMouseUp +--instance IsEvent OnMouseUp where +-- eventName= const "mouseup" +-- buildHandler elem e io= do + OnMouseUp -> do + cb <- syncCallback1 ContinueAsync $ \r -> do + (i,x,y)<- fromJSValUnchecked r + stopPropagation r + setDat elem $ io $ EventData (nevent e) $ toDyn $ Click i (x,y) + js_addEventListener elem (eventName e) cb + + +--data OnKeyPress= OnKeyPress +--instance IsEvent OnKeyPress where +-- eventName= const "keypress" +-- buildHandler elem e io = do + OnKeyPress -> do + cb <- syncCallback1 ContinueAsync $ \r -> do + i <- fromJSValUnchecked r + stopPropagation r + setDat elem $ io $ EventData (nevent e) $ toDyn $ Key i + js_addEventListener elem (eventName e) cb + +--data OnKeyUp= OnKeyUp +--instance IsEvent OnKeyUp where +-- eventName= const "keyup" +-- buildHandler elem e io = do + OnKeyUp -> do + cb <- syncCallback1 ContinueAsync $ \r -> do + i <- fromJSValUnchecked r + stopPropagation r + setDat elem $ io $ EventData (nevent e) $ toDyn $ Key i + js_addEventListener elem (eventName e) cb + +--data OnKeyDown= OnKeyDown +--instance IsEvent OnKeyDown where +-- eventName= const "keydown" +-- buildHandler elem e io = do + OnKeyDown -> do + cb <- syncCallback1 ContinueAsync $ \r -> do + i <- fromJSValUnchecked r + stopPropagation r + setDat elem $ io $ EventData (nevent e) $ toDyn $ Key i + js_addEventListener elem (eventName e) cb + + where + + + nevent = eventName + + setDat :: Elem -> IO() -> IO () + setDat elem action = do + action -- !!> "begin action" + return () -- !!> "end action" +--viewEffects :: Effects +--viewEffects x _ f= do +-- id1 <- genNewId !!> "viewEffectsId" +-- +-- st <- get +-- +-- (t, mx) <- baseEffects x (strip st x) (\x -> runWidgetId' (f x) id1) +-- +-- return (\x -> (add id1 (span ! id id1) x ), mx) +-- +--add id1 v form= do +-- rest <- getData `onNothing` return noHtml +-- delSData rest !!> show("added span", id1) +-- mx <- form +-- f <- getData `onNothing` return noHtml +-- setSData $ rest <> v f +-- setSData $ IdLine id1 +-- return mx + +-- #ifdef ghcjs_HOST_OS +--foreign import javascript unsafe +-- "var p=$1.parentNode;while ($1.nextSibling)p.removeChild($1.nextSibling);p.removeChild($1)" +-- removeNextSibling :: Elem -> IO () +-- #else +--removeNextSibling = undefined +-- #endif + + +--static mx= Transient $ do +-- prev <- gets effects +-- modify $ \ s-> s{effects= baseEffects} +-- x <- runTrans mx +-- modify $ \ s-> s{effects= unsafeCoerce prev} +-- return x +-- +-- +--strip st x= Transient $ do +---- old <- getData `onNothing` return noHtml +-- st' <- get +-- put st'{mfSequence= mfSequence st} +-- mx <- runView x +-- put st' +-- delSData noHtml +-- return mx + +addSData :: (MonadState EventF m,Typeable a ,Monoid a) => a -> m () +addSData y= do + x <- getData `onNothing` return mempty + setData (x <> y) + + + + +-- | triggers the event that happens in a widget. The effects are the following: +-- +-- 1)The event reexecutes the monadic sentence where the widget is, (with no re-rendering) +-- +-- 2) with the result of this reevaluaution of 1), the rest of the monadic computation is executed +-- +-- 3) update the DOM tree with the rendering generated by the reevaluation of 2). +-- +-- As usual, If one step of the monadic computation return `empty` (`stop`), the reevaluation finish +-- So the effect of an event can be restricted as much as you may need. +-- +-- The part of the monadic expression that is before the event is not evaluated and his rendering is untouched. +-- (but, at any moment, you can choose the element to be updated in the page using `at`) + +raiseEvent :: IsEvent event => Widget a -> event -> Widget a +#ifdef ghcjs_HOST_OS +raiseEvent w event = Transient $ do + cont <- get -- >>= \c -> return c{mfSequence= mfSequence c -1} + let iohandler :: EventData -> IO () + iohandler eventdata =do + runStateT (setSData eventdata >> runCont' cont) cont -- !!> "runCont INIT" + return () -- !!> "runCont finished" + runView $ addEvent event iohandler <<< w +-- return r + where + runCont' cont= do + setSData Repeat -- !!> "INITCLOSURE" + mr <- runClosure cont + + case mr of + Nothing -> return Nothing + Just r -> runContinuation cont r + + -- create an element and add any event handler to it. + addEvent :: IsEvent a => a -> (EventData -> IO()) -> Perch -> Perch + addEvent event iohandler be= Perch $ \e -> do + e' <- build (span ! atr "name" "event" $ be) e + buildHandler e' event iohandler + return e +-- jsval <- getChildren e +-- es <- fromJSValUncheckedListOf jsval +-- +-- return $ Prelude.head es + +#else +raiseEvent w _ = w +#endif + +#ifdef ghcjs_HOST_OS +foreign import javascript unsafe + "$1.stopPropagation()" + stopPropagation :: JSVal -> IO () +#else +stopPropagation= undefined +#endif + + + +-- | A shorter synonym for `raiseEvent` +fire :: IsEvent event => Widget a -> event -> Widget a +fire = raiseEvent + +-- | A shorter and smoother synonym for `raiseEvent` +wake :: IsEvent event => Widget a -> event -> Widget a +wake = raiseEvent + + +-- | pass trough only if the event is fired in this DOM element. +-- Otherwise, if the code is executing from a previous event, the computation will stop +pass :: IsEvent event => Perch -> event -> Widget EventData +pass v event= do + resetEventData + wraw v `wake` event -- !!> "WAKE" + e@(EventData typ _) <- getEventData -- !!> "GETEVENTDATA" + continueIf (eventName event== typ) e -- !!> show(eventName event== typ) + +-- | return empty and the monadic computation stop if the condition is false. +-- If true, return the second parameter. +continueIf :: Bool -> a -> Widget a +continueIf b x = guard b >> return x + + +---- | executes a widget each t milliseconds until it validates and return () +--wtimeout :: Int -> Widget () -> Widget () +--wtimeout t w= Transient $ do +-- id <- genNewId +-- let f= do +-- me <- elemById id +-- case me of +-- Nothing -> return () +-- Just e ->do +-- r <- clearChildren e >> runWidget w e +-- case r of +-- Nothing -> f +-- Just () -> return () +-- +-- handler <- syncCallback ContinueAsync f +-- +-- let f= setTimeout t handler +-- liftIO f +-- FormElm f mx <- runView $ identified id w +-- returnFormElm f mx +-- + + +runWidgetId' :: Widget b -> ElemID -> TransIO b +runWidgetId' ac id1= Transient runWidget1 + where + runWidget1 = do + + me <- liftIO $ elemById id1 -- !!> ("RUNWIDGETID " ++ show id1) + case me of + Just e -> do + + r <- runTrans $ runWidget' ac e -- !!> show ("found",id1) + return r -- !!> show ( "END RUNWIDGETID", id1) + + + Nothing -> -- runTrans ac !!> ( "ID NOT FOUND " ++ show id) -- runTrans ac + do + body <- liftIO getBody -- !!> ( "ID NOT FOUND " ++ show id1) + liftIO $ build (span ! id id1 $ noHtml) body + + runWidget1 +-- runTrans $ runWidget' ( id1 <<< ac) body + + + +-- | run the widget as the content of a DOM element +-- the new rendering is added to the element +runWidget :: Widget b -> Elem -> IO (Maybe b) +runWidget action e = do + (mx, s) <- runTransient $ runWidget' action e + return mx + + +runWidget' :: Widget b -> Elem -> TransIO b +runWidget' action e = Transient $ do + mx <- runView action + render <- getData `onNothing` (return noHtml) +-- mr <- getData +-- when (mr== Just Repeat) $ do +-- delSData Repeat +-- liftIO $ clearChildren e + liftIO $ build render e + + delSData render + return mx + +-- | add a header in the <header> tag +addHeader :: Perch -> IO () +addHeader format= do + head <- getHead + build format head + return () + + +-- | run the widget as the body of the HTML +runBody :: Widget a -> IO (Maybe a) +runBody w= do + body <- getBody + runWidget w body + + + + +-- #ifdef ghcjs_HOST_OS +---- | use this instead of `Transient.Move.runCloud'` when running in the browser +--runCloudIO :: Cloud a -> IO () +--runCloudIO (Cloud mx)= runTransient mx >> return () +-- #endif +-- +--teleport= do +-- copyData $ Prefix "" +-- copyData $ IdLine "" +-- copyData $ Repeat +-- copyCounter +-- TL.teleport +-- where +-- copyCounter= do +-- r <- local $ gets mfSequence +-- onAll $ modify $ \s -> s{mfSequence= r} +-- + + +render :: TransIO a -> TransIO a +#ifdef ghcjs_HOST_OS +render mx = do + id1 <- Transient $ do + me <- getData -- !!> "RENDER" + case me of + Just (IdLine id1) -> return $ Just id1 + Nothing -> Just <$> genNewId + id2 <- Transient $ Just <$> genNewId + + runWidgetId' (mx' id1 id2 <++ (span ! id id2 $ noHtml)) id1 + + + + where + mx' id1 id2= do + setSData $ IdLine id1 + r <- mx + addPrefix + (setSData $ IdLine id2) -- !!> show ("set",id2) + + do + re <- getSData -- succed if is the result of an event + case re of -- !> "event" of + Repeat -> do + me <- liftIO $ elemById id2 + case me of + Just e -> (liftIO $ clearChildren e) -- !> show ("clear1",id2) + Nothing -> return () + setSData $ RepeatHandled id2 + delSData noHtml + RepeatHandled idx -> do + me <- liftIO $ elemById idx + case me of + Just e -> (liftIO $ clearChildren e) -- !> show ("clear2",idx) + Nothing -> return () + delSData Repeat + return r + <|> return r -- !!> "NO DEL" + + +#else +render x= x +#endif + + + -- st@(EventF eff e x (fs) d n r applic ch rc bs) <- get + + -- let cont= EventF eff e x fs d n r applic ch rc bs + -- put cont + -- liftIO $ print ("length1",Prelude.length fs) + + +-- | use this instead of `Transient.Base.option` when runing in the browser +option :: (Typeable b, Show b) => b -> String -> TransientIO b +option x v= wlink x (toElem v)<++ " " + + +--foreign import javascript unsafe "document.body" getBody :: IO Elem + + + +data UpdateMethod= Append | Prepend | Insert deriving Show + + + +-- | Run the widget as the content of the element with the given id. The content can +-- be appended, prepended to the previous content or it can be the only content depending on the +-- update method. +at :: JSString -> UpdateMethod -> Widget a -> Widget a +at id method w= set <<< w + where + set :: Perch -> Perch + set render = liftIO $ case method of + Insert -> do + forElems_ id $ clear >> render + return () + Append -> do + forElems_ id render + return () + Prepend -> do + forElems_ id $ Perch $ \e -> do + jsval <- getChildren e + es <- fromJSValUncheckedListOf jsval + case es of + [] -> build render e >> return e + e':es -> do + span <- newElem "span" + addChildBefore span e e' + build render span + return e + +#ifdef ghcjs_HOST_OS + +foreign import javascript unsafe "$1[$2].toString()" getProp :: Elem -> JSString -> IO JSString + +foreign import javascript unsafe "$1[$2]= $3" setProp :: Elem -> JSString -> JSString -> IO () + +foreign import javascript unsafe "alert($1)" alert :: JSString -> IO () + + + +foreign import javascript unsafe "document.getElementById($1)" elemByIdDOM :: JSString -> IO JSVal + +foreign import javascript unsafe "$1.value" getValueDOM :: Elem -> IO JSVal + +#else +unpack= undefined +getProp :: Elem -> JSString -> IO JSString +getProp = undefined +setProp :: Elem -> JSString -> JSString -> IO () +setProp = undefined +alert :: JSString -> IO () +alert= undefined +data Callback a= Callback a +data ContinueAsync=ContinueAsync +syncCallback1= undefined +fromJSValUnchecked= undefined +fromJSValUncheckedListOf= undefined +#endif + +#ifdef ghcjs_HOST_OS +foreign import javascript unsafe + "$1.addEventListener($2, $3,false);" + js_addEventListener :: Elem -> JSString -> Callback (JSVal -> IO ()) -> IO () +#else +js_addEventListener= undefined +#endif + + +#ifdef ghcjs_HOST_OS +foreign import javascript unsafe "document.head" getHead :: IO Elem +#else +getHead= undefined +#endif + +#ifdef ghcjs_HOST_OS +foreign import javascript unsafe "$1.childNodes" getChildren :: Elem -> IO JSVal +foreign import javascript unsafe "$2.insertBefore($1, $3)" addChildBefore :: Elem -> Elem -> Elem -> IO() +#else + +type JSVal = () +getChildren :: Elem -> IO JSVal +getChildren= undefined +addChildBefore :: Elem -> Elem -> Elem -> IO() +addChildBefore= undefined +#endif
+ src/Main.hs view
@@ -0,0 +1,361 @@+{-# LANGUAGE DeriveDataTypeable #-}+module Main where+import Haste+import Haste.Foreign+import Haste.Graphics.Canvas+import Haste.HPlay.View+import Haste.HPlay.Cell as Cell+import Control.Applicative+import Control.Monad+import Control.Monad.IO.Class+import Data.Monoid+import Data.Typeable+import Prelude hiding (div,all,id,print,getChar, putStr, putStrLn,getLine)+import qualified Data.Map as V+import Data.Maybe+import Data.List(isInfixOf)+++main= runBody $ do -- PerchM monad+ h1 ! style "text-align:center" $ "hplayground examples"+ h3 $ center $ do+ a ! href "https://github.com/agocorona/hplayground" $ "Git repository"+ toElem " "+ a ! href "https://github.com/agocorona/hplayground/blob/master/src/Main.hs" $ "Examples code"+ toElem " "+ a ! href "haskell-web.blogspot.com.es/2014/07/hplayground-translate-your-console.html" $ "Article"+ ++> do -- Widget monad+ (table ! style "border-collapse:collapse"+ <<<(tr ! style "vertical-align:top"+ <<< ( tds <<< sumTwo+ <|> tds <<< sumfold 3+ <|> tds <<< sumRecursive)+ <|> tr ! style "vertical-align:top"+ <<< (tds <<< (counter 3 <|> buttons <|> linksample)+ <|> tds <<< sumCell+ <|> tds <<< showpascal 4)+ <|> tr ! style "vertical-align:top"+ <<< (tds <<< formWidget+ <|> tds <<< palindrome+ <|> tds <<< naiveTodo)+ <|> tr ! style "vertical-align:top"+ <<< (tds <<< drawcanvas+ <|> tds <<< gallery+ <|> tds <<< mouse )++ ))++ <++ b << "bottom of the page"+ where+ tds= td ! style "padding:15px;border-style:dotted"++-- Don't be scared by the operators:+-- <|> is the Alternantive combinator, to combine Widget() entries+-- and the <<< combinator simply encloses a widget within a HTML tag.+-- ++> prepend HTML to a widget+-- <++ postpend it++++sumTwo :: Widget ()+sumTwo = p "This widget sum two numbers and append the result. Using applicative and monadic expressions" ++>+ (p <<< do+ r <- (+) <$> fromStr "first number" ++> br+ ++> inputInt Nothing `fire` OnKeyUp <++ br+ <*> fromStr "second number " ++> br+ ++> inputInt Nothing `fire` OnKeyUp <++ br+ p <<< fromStr "result: " ++> b (show r) ++> return())++ where+ less3 x= if x < 3 then return Nothing else return . Just $ b " no more than 2 please"++sumRecursive :: Widget ()+sumRecursive = p "This widget sum recursively n numbers. When enters 0, present the result" ++> sumr 0+ where+ sumr r=do+ r' <- inputInt Nothing `fire` OnKeyUp+ if r'== 0+ then br ++> fromStr "result: " ++> b (show r) ++> noWidget+ else do+ b (show $ r+r') ++> br ++> return ()+ sumr (r+r')++sumfold :: Int -> Widget ()+sumfold n = p ("This widget sum "++ show n ++" numbers and append the result using a fold") ++>+ (p <<< do+ r <- foldl (<>) (return 0) . take n $ repeat $ inputInt Nothing `fire` OnKeyUp <++ br+ br ++> fromStr "result: " ++> b (show r) ++> return ())++instance Monoid Int where+ mappend= (+)+ mempty= 0++++newtype Counter= Counter Int deriving Typeable++counter n = p "Two counters. One is pure and recursive, the other is stateful"+ ++> br ++> (center <<< (counter1 n <|> counter2 n))++ where+ -- a "pure" counter+ counter1 :: Int -> Widget ()+ counter1 n= (b (show n) ++> onemore) `wcallback` (const $ counter1 $ n +1)++ onemore= submitButton "+" `fire` OnClick+++ -- a stateful counter+ counter2 n = do+ onemore -- isEmpty (getSData :: Widget Counter ) <|> (onemore >> return True)+ Counter n <- getSData <|> return (Counter n)+ wraw $ b (show n)+ setSessionData . Counter $ n +1++++sumCell :: Widget ()++sumCell = p "This widget sum recursively n numbers, but remember the\+ \ previos entries when one entry is edited" ++> sumr 0 0++ where+ sumr i r=do+ r' <- cell i+ b (show $ r+r') ++> br ++> return ()+ sumr (i +1) (r+r')++ cell i= do+ stored <- Just <$> getNumber i <|> return Nothing+ r' <- inputInt stored `fire` OnKeyUp <|> fromM stored+ addNumber i r'+ return r'+ where+ addNumber i x= do+ xs <- getSData <|> return V.empty+ setSData $ V.insert i x xs++ getNumber :: Int -> Widget Int+ getNumber i= do+ xs <- getSData+ case V.lookup i xs of+ Nothing -> empty+ Just x -> return x++ fromM Nothing = empty+ fromM (Just x) = return x++++-- pascal triangle http://www.haskell.org/haskellwiki/Blow_your_mind++pascal = iterate (\row -> zipWith (+) ([0] ++ row) (row ++ [0])) [1] :: [[Int]]++showpascal n= p << ("Show " ++ show n ++ " rows of the Pascal triangle ")+ ++> mconcat[p ! style "text-align:center" $ row | row <- take n pascal]+ ++> empty -- the applicative empty === noWidget+++++drawcanvas :: Widget ()+drawcanvas=+ p << "This example draw a function of x between 10 and -10. You can define the function\+ \ using javascript expressions" ++>++ (center <<< do+ let initial= "x*x+x+10;"+ sanitize str= if isInfixOf "alert" str then initial else str+ expr <- inputString (Just initial) `fire` OnKeyUp <++ br <|> return initial+ wraw $ canvas ! id "canvas" $ noHtml+ wraw $ draw $sanitize expr)+++ where++ evalFormula :: String -> IO Double+ evalFormula= ffi $ toJSString "(function(exp){ return eval(exp);})"++ draw expr= liftIO $ do+ Just can <- getCanvasById "canvas"+ let range= [-10..10]+ exprs = Prelude.map (\v -> subst 'x' (show v) expr) range+ ps <- mapM evalFormula exprs+ render can $ scale (3,1) $ translate (50,130) $ rotate pi $ stroke $do+ line (-10,0) (10,0)+ line (0,30) (0,-30)+ path $ zip range ps++ subst _ _ []= []+ subst c v (c':cs)+ | c==c' = v++ subst c v cs+ | otherwise= c':subst c v cs++++newtype GalleryIndex= G Int deriving Typeable++gallery :: Widget ()+gallery = p "this example show a image gallery. It advances each 20 seconds and by\+ \ pressing the button" ++>+ (wtimeout 20000 $ do+ G i <- getSData <|> return (G 0)+ let i' = if i == length gall-1 then 0 else i+1+ setSData $ G i'+ wraw $ do+ img ! src (gall !! i) ! width "100%" ! height "100%" -- raw Perch code+ br+ submitButton ">" `fire` OnClick+ `wcallback` \_ -> gallery)++ where+ gall=["http://almaer.com/blog/uploads/interview-haskell.png"+ ,"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQmmC4kV3NPFIpGL_x4H_iHG_p-c93DGjWfkxVtjxEFVng7A8o-nw"+ ,"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ_ywj-zxDq3h_B4l48XHsjTywrdbK5egxvhxkYJ1HOkDFXd_-H"+ ,"https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcS53axpzkDyzEUAdaIP3YsaHuR-_YqN9qFK3W4bp_D2OBZfW5BU_Q"+ ,"https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSfP70npv4FOrkBjScP0tVu2t3veSNoFQ6MMxX6LDO8kldNeu-DxQ"+ ,"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRAgKkpDyzk8kdIqk5ECsZ14XgbpBzyWFvrCrHombkSBAUn6jFo"+ ]+++mouse :: Widget ()+mouse= do+ wraw (div ! style "height:100px;background-color:lightgreen;position:relative"+ $ h1 "Mouse events here")+ `fire` OnMouseOut+ `fire` OnMouseOver+ `fire` OnMouseDown+ `fire` OnMouseMove+ `fire` OnMouseUp+ `fire` OnClick+ `fire` OnDblClick+ `fire` OnKeyPress+ `fire` OnKeyDown+ `fire` OnKeyUp+ evdata <- getEventData+ wraw $ p << ( (evName evdata) ++" "++ show (evData evdata))++linksample= br ++> wlink "Hi!" (toElem "This link say Hi!")`fire` OnClick >>= \r -> wraw( b (" returns "++ r))++buttons= p "Different input elements:" ++> checkButton+ **> br ++> br+ ++> radio+ **> br ++> br+ ++> select+ <++ br+ where+ checkButton=do+ rs <- getCheckBoxes(+ ((setCheckBox False "Red" <++ b "red") `fire` OnClick)+ <> ((setCheckBox False "Green" <++ b "green") `fire` OnClick)+ <> ((setCheckBox False "blue" <++ b "blue") `fire` OnClick))+ wraw $ fromStr " returns: " <> b (show rs)++ radio= do+ r <- getRadio [\n -> fromStr v ++> setRadioActive v n | v <- ["red","green","blue"]]++ wraw $ fromStr " returns: " <> b ( show r )++ select= do+ r <- getSelect ( setOption "red" (fromStr "red") + <|> setOption "green" (fromStr "green")+ <|> setOption "blue" (fromStr "blue"))+ `fire` OnClick++ wraw $ fromStr " returns: " <> b ( show r )++formWidget= center <<< do -- PerchM monad+ p "Fields of a form appear in sequence. \+ \Some of the fields trigger events instantly. Some others use a button to trigger them. \+ \It also contains option buttons, radio buttons etc"+ p $ do+ toElem "This formulary is the same than the one "+ a ! href "http://mflowdemo.herokuapp.com/noscript/monadicwidgets/combination"+ $ "run in the server by MFlow"+ ++>+ do+ (n,s) <- (,) <$> p << "Who are you? "+ ++> getString Nothing <! hint "name" <++ br+ <*> getString Nothing <! hint "surname" <++ br+ <** submitButton "ok" `fire` OnClick <++ br++ flag <- b << "Do you " ++> getRadio[radiob "work?",radiob "study?"] <++ br++ r<- case flag of+ "work?" -> Left <$> b << "do you enjoy your work? "+ ++> getBool True "yes" "no"+ <** submitButton "ok" `fire` OnClick <++ br++ "study?"-> Right <$> b << "do you study in "+ ++> getRadio[radiob "University"+ ,radiob "High School"]++ p << ("You are "++n++" "++s)++ ++> case r of+ Left fl -> p << ("You work and it is " ++ show fl ++ " that you enjoy your work")+ ++> noWidget++ Right stu -> p << ("You study at the " ++ stu)+ ++> noWidget++ where+ hint s= [("placeholder",s)]+ radiob s n= wlabel (fromStr s) $ setRadioActive s n+++palindrome= p << "To search palindromes: one box present the other's reversed. It is also\+ \ an example of cell usage" ++> do+ let entry= boxCell "entry" :: Cell String+ revEntry= boxCell "revEntry"++ r <- center <<< ((mk entry Nothing `fire` OnKeyUp >>= return . Left) <++ br <|>+ (mk revEntry Nothing `fire` OnKeyUp >>= return . Right))++ case r of+ Left s -> do+ r <- Cell.get entry >>= return . reverse+ revEntry .= r+ Right s -> do+ r' <- Cell.get revEntry >>= return . reverse+ entry .= r'+++newtype Tasks = Tasks [String] deriving Typeable++data TaskAction = Done | Destroy++naiveTodo= do+ p $ do -- PerchM monad+ toElem "Work in progress for a todo application to be added to "+ a ! href "http://todomvc.com" $ "todomvc.com"+ ++> todos++ where++ todos= center <<< h1 "todos" ++>+ do+ let entry = boxCell "todo"+ task <- mk entry Nothing `fire` OnKeyUp+ EventData _ (Key k) <- getEventData+ when( k == 13) $ do+ entry .= ""+ Tasks tasks <- getSData <|> return (Tasks [])+ setSData . Tasks $ task:tasks++ at "list" Insert $ foldl (<|>) mempty [ display t | t <- (task:tasks)]+ return ()+ <|>+ wraw (div ! id "list" $ noHtml)++++ display task= li <<< (do+ ch <- getCheckBoxes $ setCheckBox False "check" `fire` OnClick+ case ch of+ ["check"] -> wraw $ b ! style "text-decoration:line-through;" $ task+ _ -> wraw $ b task++ )++
+ src/Main.html view
@@ -0,0 +1,2156 @@+<!DOCTYPE HTML><html><head><title>src\main.html</title><meta charset="UTF-8"><script type="text/javascript">// This object will hold all exports. +var Haste = {}; + +/* Thunk + Creates a thunk representing the given closure. + Since we want automatic memoization of as many expressions as possible, we + use a JS object as a sort of tagged pointer, where the member x denotes the + object actually pointed to. If a "pointer" points to a thunk, it has a + member 't' which is set to true; if it points to a value, be it a function, + a value of an algebraic type of a primitive value, it has no member 't'. +*/ + +function T(f) { + this.f = new F(f); +} + +function F(f) { + this.f = f; +} + +/* Apply + Applies the function f to the arguments args. If the application is under- + saturated, a closure is returned, awaiting further arguments. If it is over- + saturated, the function is fully applied, and the result (assumed to be a + function) is then applied to the remaining arguments. +*/ +function A(f, args) { + if(f instanceof T) { + f = E(f); + } + // Closure does some funny stuff with functions that occasionally + // results in non-functions getting applied, so we have to deal with + // it. + if(!(f instanceof Function)) { + f = B(f); + if(!(f instanceof Function)) { + return f; + } + } + + if(f.arity === undefined) { + f.arity = f.length; + } + if(args.length === f.arity) { + switch(f.arity) { + case 0: return f(); + case 1: return f(args[0]); + default: return f.apply(null, args); + } + } else if(args.length > f.arity) { + switch(f.arity) { + case 0: return f(); + case 1: return A(f(args.shift()), args); + default: return A(f.apply(null, args.splice(0, f.arity)), args); + } + } else { + var g = function() { + return A(f, args.concat(Array.prototype.slice.call(arguments))); + }; + g.arity = f.arity - args.length; + return g; + } +} + +/* Eval + Evaluate the given thunk t into head normal form. + If the "thunk" we get isn't actually a thunk, just return it. +*/ +function E(t) { + if(t instanceof T) { + if(t.f instanceof F) { + return t.f = t.f.f(); + } else { + return t.f; + } + } else { + return t; + } +} + +/* Bounce + Bonuce on a trampoline for as long as we get a function back. +*/ +function B(f) { + while(f instanceof F) { + f = f.f(); + } + return f; +} + +// Export Haste, A and E. Haste because we need to preserve exports, A and E +// because they're handy for Haste.Foreign. +if(!window) { + var window = {}; +} +window['Haste'] = Haste; +window['A'] = A; +window['E'] = E; + + +/* Throw an error. + We need to be able to use throw as an exception so we wrap it in a function. +*/ +function die(err) { + throw err; +} + +function quot(a, b) { + return (a-a%b)/b; +} + +function quotRemI(a, b) { + return [0, (a-a%b)/b, a%b]; +} + +// 32 bit integer multiplication, with correct overflow behavior +// note that |0 or >>>0 needs to be applied to the result, for int and word +// respectively. +function imul(a, b) { + // ignore high a * high a as the result will always be truncated + var lows = (a & 0xffff) * (b & 0xffff); // low a * low b + var aB = (a & 0xffff) * (b & 0xffff0000); // low a * high b + var bA = (a & 0xffff0000) * (b & 0xffff); // low b * high a + return lows + aB + bA; // sum will not exceed 52 bits, so it's safe +} + +function addC(a, b) { + var x = a+b; + return [0, x & 0xffffffff, x > 0x7fffffff]; +} + +function subC(a, b) { + var x = a-b; + return [0, x & 0xffffffff, x < -2147483648]; +} + +function sinh (arg) { + return (Math.exp(arg) - Math.exp(-arg)) / 2; +} + +function tanh (arg) { + return (Math.exp(arg) - Math.exp(-arg)) / (Math.exp(arg) + Math.exp(-arg)); +} + +function cosh (arg) { + return (Math.exp(arg) + Math.exp(-arg)) / 2; +} + +// Scratch space for byte arrays. +var rts_scratchBuf = new ArrayBuffer(8); +var rts_scratchW32 = new Uint32Array(rts_scratchBuf); +var rts_scratchFloat = new Float32Array(rts_scratchBuf); +var rts_scratchDouble = new Float64Array(rts_scratchBuf); + +function decodeFloat(x) { + rts_scratchFloat[0] = x; + var sign = x < 0 ? -1 : 1; + var exp = ((rts_scratchW32[0] >> 23) & 0xff) - 150; + var man = rts_scratchW32[0] & 0x7fffff; + if(exp === 0) { + ++exp; + } else { + man |= (1 << 23); + } + return [0, sign*man, exp]; +} + +function decodeDouble(x) { + rts_scratchDouble[0] = x; + var sign = x < 0 ? -1 : 1; + var manHigh = rts_scratchW32[1] & 0xfffff; + var manLow = rts_scratchW32[0]; + var exp = ((rts_scratchW32[1] >> 20) & 0x7ff) - 1075; + if(exp === 0) { + ++exp; + } else { + manHigh |= (1 << 20); + } + return [0, sign, manHigh, manLow, exp]; +} + +function isFloatFinite(x) { + return isFinite(x); +} + +function isDoubleFinite(x) { + return isFinite(x); +} + +function err(str) { + die(toJSStr(str)); +} + +/* unpackCString# + NOTE: update constructor tags if the code generator starts munging them. +*/ +function unCStr(str) {return unAppCStr(str, [0]);} + +function unFoldrCStr(str, f, z) { + var acc = z; + for(var i = str.length-1; i >= 0; --i) { + acc = A(f, [[0, str.charCodeAt(i)], acc]); + } + return acc; +} + +function unAppCStr(str, chrs) { + var i = arguments[2] ? arguments[2] : 0; + if(i >= str.length) { + return E(chrs); + } else { + return [1,[0,str.charCodeAt(i)],new T(function() { + return unAppCStr(str,chrs,i+1); + })]; + } +} + +function charCodeAt(str, i) {return str.charCodeAt(i);} + +function fromJSStr(str) { + return unCStr(E(str)); +} + +function toJSStr(hsstr) { + var s = ''; + for(var str = E(hsstr); str[0] == 1; str = E(str[2])) { + s += String.fromCharCode(E(str[1])[1]); + } + return s; +} + +// newMutVar +function nMV(val) { + return ({x: val}); +} + +// readMutVar +function rMV(mv) { + return mv.x; +} + +// writeMutVar +function wMV(mv, val) { + mv.x = val; +} + +// atomicModifyMutVar +function mMV(mv, f) { + var x = A(f, [mv.x]); + mv.x = x[1]; + return x[2]; +} + +function localeEncoding() { + var le = newByteArr(5); + le['b']['i8'] = 'U'.charCodeAt(0); + le['b']['i8'] = 'T'.charCodeAt(0); + le['b']['i8'] = 'F'.charCodeAt(0); + le['b']['i8'] = '-'.charCodeAt(0); + le['b']['i8'] = '8'.charCodeAt(0); + return le; +} + +var isDoubleNaN = isNaN; +var isFloatNaN = isNaN; + +function isDoubleInfinite(d) { + return (d === Infinity); +} +var isFloatInfinite = isDoubleInfinite; + +function isDoubleNegativeZero(x) { + return (x===0 && (1/x)===-Infinity); +} +var isFloatNegativeZero = isDoubleNegativeZero; + +function strEq(a, b) { + return a == b; +} + +function strOrd(a, b) { + if(a < b) { + return [0]; + } else if(a == b) { + return [1]; + } + return [2]; +} + +function jsCatch(act, handler) { + try { + return A(act,[0]); + } catch(e) { + return A(handler,[e, 0]); + } +} + +/* Haste represents constructors internally using 1 for the first constructor, + 2 for the second, etc. + However, dataToTag should use 0, 1, 2, etc. Also, booleans might be unboxed. + */ +function dataToTag(x) { + if(x instanceof Array) { + return x[0]; + } else { + return x; + } +} + +function __word_encodeDouble(d, e) { + return d * Math.pow(2,e); +} + +var __word_encodeFloat = __word_encodeDouble; +var jsRound = Math.round; // Stupid GHC doesn't like periods in FFI IDs... +var realWorld = undefined; +if(typeof _ == 'undefined') { + var _ = undefined; +} + +function popCnt(i) { + i = i - ((i >> 1) & 0x55555555); + i = (i & 0x33333333) + ((i >> 2) & 0x33333333); + return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24; +} + +function jsAlert(val) { + if(typeof alert != 'undefined') { + alert(val); + } else { + print(val); + } +} + +function jsLog(val) { + console.log(val); +} + +function jsPrompt(str) { + var val; + if(typeof prompt != 'undefined') { + val = prompt(str); + } else { + print(str); + val = readline(); + } + return val == undefined ? '' : val.toString(); +} + +function jsEval(str) { + var x = eval(str); + return x == undefined ? '' : x.toString(); +} + +function isNull(obj) { + return obj === null; +} + +function jsRead(str) { + return Number(str); +} + +function jsShowI(val) {return val.toString();} +function jsShow(val) { + var ret = val.toString(); + return val == Math.round(val) ? ret + '.0' : ret; +} + +function jsGetMouseCoords(e) { + var posx = 0; + var posy = 0; + if (!e) var e = window.event; + if (e.pageX || e.pageY) { + posx = e.pageX; + posy = e.pageY; + } + else if (e.clientX || e.clientY) { + posx = e.clientX + document.body.scrollLeft + + document.documentElement.scrollLeft; + posy = e.clientY + document.body.scrollTop + + document.documentElement.scrollTop; + } + return [posx - (e.currentTarget.offsetLeft || 0), + posy - (e.currentTarget.offsetTop || 0)]; +} + +function jsSetCB(elem, evt, cb) { + // Count return press in single line text box as a change event. + if(evt == 'change' && elem.type.toLowerCase() == 'text') { + setCB(elem, 'keyup', function(k) { + if(k == '\n'.charCodeAt(0)) { + A(cb,[[0,k.keyCode],0]); + } + }); + } + + var fun; + switch(evt) { + case 'click': + case 'dblclick': + case 'mouseup': + case 'mousedown': + fun = function(x) { + var mpos = jsGetMouseCoords(x); + var mx = [0,mpos[0]]; + var my = [0,mpos[1]]; + A(cb,[[0,x.button],[0,mx,my],0]); + }; + break; + case 'mousemove': + case 'mouseover': + fun = function(x) { + var mpos = jsGetMouseCoords(x); + var mx = [0,mpos[0]]; + var my = [0,mpos[1]]; + A(cb,[[0,mx,my],0]); + }; + break; + case 'keypress': + case 'keyup': + case 'keydown': + fun = function(x) {A(cb,[[0,x.keyCode],0]);}; + break; + default: + fun = function() {A(cb,[0]);}; + break; + } + return setCB(elem, evt, fun); +} + +function setCB(elem, evt, cb) { + if(elem.addEventListener) { + elem.addEventListener(evt, cb, false); + return true; + } else if(elem.attachEvent) { + elem.attachEvent('on'+evt, cb); + return true; + } + return false; +} + +function jsSetTimeout(msecs, cb) { + window.setTimeout(function() {A(cb,[0]);}, msecs); +} + +function jsGet(elem, prop) { + return elem[prop].toString(); +} + +function jsSet(elem, prop, val) { + elem[prop] = val; +} + +function jsGetAttr(elem, prop) { + if(elem.hasAttribute(prop)) { + return elem.getAttribute(prop).toString(); + } else { + return ""; + } +} + +function jsSetAttr(elem, prop, val) { + elem.setAttribute(prop, val); +} + +function jsGetStyle(elem, prop) { + return elem.style[prop].toString(); +} + +function jsSetStyle(elem, prop, val) { + elem.style[prop] = val; +} + +function jsKillChild(child, parent) { + parent.removeChild(child); +} + +function jsClearChildren(elem) { + while(elem.hasChildNodes()){ + elem.removeChild(elem.lastChild); + } +} + +function jsFind(elem) { + var e = document.getElementById(elem) + if(e) { + return [1,[0,e]]; + } + return [0]; +} + +function jsCreateElem(tag) { + return document.createElement(tag); +} + +function jsCreateTextNode(str) { + return document.createTextNode(str); +} + +function jsGetChildBefore(elem) { + elem = elem.previousSibling; + while(elem) { + if(typeof elem.tagName != 'undefined') { + return [1,[0,elem]]; + } + elem = elem.previousSibling; + } + return [0]; +} + +function jsGetLastChild(elem) { + var len = elem.childNodes.length; + for(var i = len-1; i >= 0; --i) { + if(typeof elem.childNodes[i].tagName != 'undefined') { + return [1,[0,elem.childNodes[i]]]; + } + } + return [0]; +} + + +function jsGetFirstChild(elem) { + var len = elem.childNodes.length; + for(var i = 0; i < len; i++) { + if(typeof elem.childNodes[i].tagName != 'undefined') { + return [1,[0,elem.childNodes[i]]]; + } + } + return [0]; +} + + +function jsGetChildren(elem) { + var children = [0]; + var len = elem.childNodes.length; + for(var i = len-1; i >= 0; --i) { + if(typeof elem.childNodes[i].tagName != 'undefined') { + children = [1, [0,elem.childNodes[i]], children]; + } + } + return children; +} + +function jsSetChildren(elem, children) { + children = E(children); + jsClearChildren(elem, 0); + while(children[0] === 1) { + elem.appendChild(E(E(children[1])[1])); + children = E(children[2]); + } +} + +function jsAppendChild(child, container) { + container.appendChild(child); +} + +function jsAddChildBefore(child, container, after) { + container.insertBefore(child, after); +} + +var jsRand = Math.random; + +// Concatenate a Haskell list of JS strings +function jsCat(strs, sep) { + var arr = []; + strs = E(strs); + while(strs[0]) { + strs = E(strs); + arr.push(E(strs[1])[1]); + strs = E(strs[2]); + } + return arr.join(sep); +} + +var jsJSONParse = JSON.parse; + +// JSON stringify a string +function jsStringify(str) { + return JSON.stringify(str); +} + +// Parse a JSON message into a Haste.JSON.JSON value. +// As this pokes around inside Haskell values, it'll need to be updated if: +// * Haste.JSON.JSON changes; +// * E() starts to choke on non-thunks; +// * data constructor code generation changes; or +// * Just and Nothing change tags. +function jsParseJSON(str) { + try { + var js = JSON.parse(str); + var hs = toHS(js); + } catch(_) { + return [0]; + } + return [1,hs]; +} + +function toHS(obj) { + switch(typeof obj) { + case 'number': + return [0, [0, jsRead(obj)]]; + case 'string': + return [1, [0, obj]]; + break; + case 'boolean': + return [2, obj]; // Booleans are special wrt constructor tags! + break; + case 'object': + if(obj instanceof Array) { + return [3, arr2lst_json(obj, 0)]; + } else if (obj == null) { + return [5]; + } else { + // Object type but not array - it's a dictionary. + // The RFC doesn't say anything about the ordering of keys, but + // considering that lots of people rely on keys being "in order" as + // defined by "the same way someone put them in at the other end," + // it's probably a good idea to put some cycles into meeting their + // misguided expectations. + var ks = []; + for(var k in obj) { + ks.unshift(k); + } + var xs = [0]; + for(var i = 0; i < ks.length; i++) { + xs = [1, [0, [0,ks[i]], toHS(obj[ks[i]])], xs]; + } + return [4, xs]; + } + } +} + +function arr2lst_json(arr, elem) { + if(elem >= arr.length) { + return [0]; + } + return [1, toHS(arr[elem]), new T(function() {return arr2lst_json(arr,elem+1);})] +} + +function arr2lst(arr, elem) { + if(elem >= arr.length) { + return [0]; + } + return [1, arr[elem], new T(function() {return arr2lst(arr,elem+1);})] +} + +function lst2arr(xs) { + var arr = []; + for(; xs[0]; xs = E(xs[2])) { + arr.push(E(xs[1])); + } + return arr; +} + +function ajaxReq(method, url, async, postdata, cb) { + var xhr = new XMLHttpRequest(); + xhr.open(method, url, async); + + if(method == "POST") { + xhr.setRequestHeader("Content-type", + "application/x-www-form-urlencoded"); + } + xhr.onreadystatechange = function() { + if(xhr.readyState == 4) { + if(xhr.status == 200) { + A(cb,[[1,[0,xhr.responseText]],0]); + } else { + A(cb,[[0],0]); // Nothing + } + } + } + xhr.send(postdata); +} + +// Create a little endian ArrayBuffer representation of something. +function toABHost(v, n, x) { + var a = new ArrayBuffer(n); + new window[v](a)[0] = x; + return a; +} + +function toABSwap(v, n, x) { + var a = new ArrayBuffer(n); + new window[v](a)[0] = x; + var bs = new Uint8Array(a); + for(var i = 0, j = n-1; i < j; ++i, --j) { + var tmp = bs[i]; + bs[i] = bs[j]; + bs[j] = tmp; + } + return a; +} + +window['toABle'] = toABHost; +window['toABbe'] = toABSwap; + +// Swap byte order if host is not little endian. +var buffer = new ArrayBuffer(2); +new DataView(buffer).setInt16(0, 256, true); +if(new Int16Array(buffer)[0] !== 256) { + window['toABle'] = toABSwap; + window['toABbe'] = toABHost; +} + +// MVar implementation. +// Since Haste isn't concurrent, takeMVar and putMVar don't block on empty +// and full MVars respectively, but terminate the program since they would +// otherwise be blocking forever. + +function newMVar() { + return ({empty: true}); +} + +function tryTakeMVar(mv) { + if(mv.empty) { + return [0, 0, undefined]; + } else { + var val = mv.x; + mv.empty = true; + mv.x = null; + return [0, 1, val]; + } +} + +function takeMVar(mv) { + if(mv.empty) { + // TODO: real BlockedOnDeadMVar exception, perhaps? + err("Attempted to take empty MVar!"); + } + var val = mv.x; + mv.empty = true; + mv.x = null; + return val; +} + +function putMVar(mv, val) { + if(!mv.empty) { + // TODO: real BlockedOnDeadMVar exception, perhaps? + err("Attempted to put full MVar!"); + } + mv.empty = false; + mv.x = val; +} + +function tryPutMVar(mv, val) { + if(!mv.empty) { + return 0; + } else { + mv.empty = false; + mv.x = val; + return 1; + } +} + +function sameMVar(a, b) { + return (a == b); +} + +function isEmptyMVar(mv) { + return mv.empty ? 1 : 0; +} + +// Implementation of stable names. +// Unlike native GHC, the garbage collector isn't going to move data around +// in a way that we can detect, so each object could serve as its own stable +// name if it weren't for the fact we can't turn a JS reference into an +// integer. +// So instead, each object has a unique integer attached to it, which serves +// as its stable name. + +var __next_stable_name = 1; + +function makeStableName(x) { + if(!x.stableName) { + x.stableName = __next_stable_name; + __next_stable_name += 1; + } + return x.stableName; +} + +function eqStableName(x, y) { + return (x == y) ? 1 : 0; +} + +var Integer = function(bits, sign) { + this.bits_ = []; + this.sign_ = sign; + + var top = true; + for (var i = bits.length - 1; i >= 0; i--) { + var val = bits[i] | 0; + if (!top || val != sign) { + this.bits_[i] = val; + top = false; + } + } +}; + +Integer.IntCache_ = {}; + +var I_fromInt = function(value) { + if (-128 <= value && value < 128) { + var cachedObj = Integer.IntCache_[value]; + if (cachedObj) { + return cachedObj; + } + } + + var obj = new Integer([value | 0], value < 0 ? -1 : 0); + if (-128 <= value && value < 128) { + Integer.IntCache_[value] = obj; + } + return obj; +}; + +var I_fromNumber = function(value) { + if (isNaN(value) || !isFinite(value)) { + return Integer.ZERO; + } else if (value < 0) { + return I_negate(I_fromNumber(-value)); + } else { + var bits = []; + var pow = 1; + for (var i = 0; value >= pow; i++) { + bits[i] = (value / pow) | 0; + pow *= Integer.TWO_PWR_32_DBL_; + } + return new Integer(bits, 0); + } +}; + +var I_fromBits = function(bits) { + var high = bits[bits.length - 1]; + return new Integer(bits, high & (1 << 31) ? -1 : 0); +}; + +var I_fromString = function(str, opt_radix) { + if (str.length == 0) { + throw Error('number format error: empty string'); + } + + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (str.charAt(0) == '-') { + return I_negate(I_fromString(str.substring(1), radix)); + } else if (str.indexOf('-') >= 0) { + throw Error('number format error: interior "-" character'); + } + + var radixToPower = I_fromNumber(Math.pow(radix, 8)); + + var result = Integer.ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i); + var value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = I_fromNumber(Math.pow(radix, size)); + result = I_add(I_mul(result, power), I_fromNumber(value)); + } else { + result = I_mul(result, radixToPower); + result = I_add(result, I_fromNumber(value)); + } + } + return result; +}; + + +Integer.TWO_PWR_32_DBL_ = (1 << 16) * (1 << 16); +Integer.ZERO = I_fromInt(0); +Integer.ONE = I_fromInt(1); +Integer.TWO_PWR_24_ = I_fromInt(1 << 24); + +var I_toInt = function(self) { + return self.bits_.length > 0 ? self.bits_[0] : self.sign_; +}; + +var I_toWord = function(self) { + return I_toInt(self) >>> 0; +}; + +var I_toNumber = function(self) { + if (isNegative(self)) { + return -I_toNumber(I_negate(self)); + } else { + var val = 0; + var pow = 1; + for (var i = 0; i < self.bits_.length; i++) { + val += I_getBitsUnsigned(self, i) * pow; + pow *= Integer.TWO_PWR_32_DBL_; + } + return val; + } +}; + +var I_getBits = function(self, index) { + if (index < 0) { + return 0; + } else if (index < self.bits_.length) { + return self.bits_[index]; + } else { + return self.sign_; + } +}; + +var I_getBitsUnsigned = function(self, index) { + var val = I_getBits(self, index); + return val >= 0 ? val : Integer.TWO_PWR_32_DBL_ + val; +}; + +var getSign = function(self) { + return self.sign_; +}; + +var isZero = function(self) { + if (self.sign_ != 0) { + return false; + } + for (var i = 0; i < self.bits_.length; i++) { + if (self.bits_[i] != 0) { + return false; + } + } + return true; +}; + +var isNegative = function(self) { + return self.sign_ == -1; +}; + +var isOdd = function(self) { + return (self.bits_.length == 0) && (self.sign_ == -1) || + (self.bits_.length > 0) && ((self.bits_[0] & 1) != 0); +}; + +var I_equals = function(self, other) { + if (self.sign_ != other.sign_) { + return false; + } + var len = Math.max(self.bits_.length, other.bits_.length); + for (var i = 0; i < len; i++) { + if (I_getBits(self, i) != I_getBits(other, i)) { + return false; + } + } + return true; +}; + +var I_notEquals = function(self, other) { + return !I_equals(self, other); +}; + +var I_greaterThan = function(self, other) { + return I_compare(self, other) > 0; +}; + +var I_greaterThanOrEqual = function(self, other) { + return I_compare(self, other) >= 0; +}; + +var I_lessThan = function(self, other) { + return I_compare(self, other) < 0; +}; + +var I_lessThanOrEqual = function(self, other) { + return I_compare(self, other) <= 0; +}; + +var I_compare = function(self, other) { + var diff = I_sub(self, other); + if (isNegative(diff)) { + return -1; + } else if (isZero(diff)) { + return 0; + } else { + return +1; + } +}; + +var I_compareInt = function(self, other) { + return I_compare(self, I_fromInt(other)); +} + +var shorten = function(self, numBits) { + var arr_index = (numBits - 1) >> 5; + var bit_index = (numBits - 1) % 32; + var bits = []; + for (var i = 0; i < arr_index; i++) { + bits[i] = I_getBits(self, i); + } + var sigBits = bit_index == 31 ? 0xFFFFFFFF : (1 << (bit_index + 1)) - 1; + var val = I_getBits(self, arr_index) & sigBits; + if (val & (1 << bit_index)) { + val |= 0xFFFFFFFF - sigBits; + bits[arr_index] = val; + return new Integer(bits, -1); + } else { + bits[arr_index] = val; + return new Integer(bits, 0); + } +}; + +var I_negate = function(self) { + return I_add(not(self), Integer.ONE); +}; + +var I_add = function(self, other) { + var len = Math.max(self.bits_.length, other.bits_.length); + var arr = []; + var carry = 0; + + for (var i = 0; i <= len; i++) { + var a1 = I_getBits(self, i) >>> 16; + var a0 = I_getBits(self, i) & 0xFFFF; + + var b1 = I_getBits(other, i) >>> 16; + var b0 = I_getBits(other, i) & 0xFFFF; + + var c0 = carry + a0 + b0; + var c1 = (c0 >>> 16) + a1 + b1; + carry = c1 >>> 16; + c0 &= 0xFFFF; + c1 &= 0xFFFF; + arr[i] = (c1 << 16) | c0; + } + return I_fromBits(arr); +}; + +var I_sub = function(self, other) { + return I_add(self, I_negate(other)); +}; + +var I_mul = function(self, other) { + if (isZero(self)) { + return Integer.ZERO; + } else if (isZero(other)) { + return Integer.ZERO; + } + + if (isNegative(self)) { + if (isNegative(other)) { + return I_mul(I_negate(self), I_negate(other)); + } else { + return I_negate(I_mul(I_negate(self), other)); + } + } else if (isNegative(other)) { + return I_negate(I_mul(self, I_negate(other))); + } + + if (I_lessThan(self, Integer.TWO_PWR_24_) && + I_lessThan(other, Integer.TWO_PWR_24_)) { + return I_fromNumber(I_toNumber(self) * I_toNumber(other)); + } + + var len = self.bits_.length + other.bits_.length; + var arr = []; + for (var i = 0; i < 2 * len; i++) { + arr[i] = 0; + } + for (var i = 0; i < self.bits_.length; i++) { + for (var j = 0; j < other.bits_.length; j++) { + var a1 = I_getBits(self, i) >>> 16; + var a0 = I_getBits(self, i) & 0xFFFF; + + var b1 = I_getBits(other, j) >>> 16; + var b0 = I_getBits(other, j) & 0xFFFF; + + arr[2 * i + 2 * j] += a0 * b0; + Integer.carry16_(arr, 2 * i + 2 * j); + arr[2 * i + 2 * j + 1] += a1 * b0; + Integer.carry16_(arr, 2 * i + 2 * j + 1); + arr[2 * i + 2 * j + 1] += a0 * b1; + Integer.carry16_(arr, 2 * i + 2 * j + 1); + arr[2 * i + 2 * j + 2] += a1 * b1; + Integer.carry16_(arr, 2 * i + 2 * j + 2); + } + } + + for (var i = 0; i < len; i++) { + arr[i] = (arr[2 * i + 1] << 16) | arr[2 * i]; + } + for (var i = len; i < 2 * len; i++) { + arr[i] = 0; + } + return new Integer(arr, 0); +}; + +Integer.carry16_ = function(bits, index) { + while ((bits[index] & 0xFFFF) != bits[index]) { + bits[index + 1] += bits[index] >>> 16; + bits[index] &= 0xFFFF; + } +}; + +var I_mod = function(self, other) { + return I_rem(I_add(other, I_rem(self, other)), other); +} + +var I_div = function(self, other) { + if(I_greaterThan(self, Integer.ZERO) != I_greaterThan(other, Integer.ZERO)) { + if(I_rem(self, other) != Integer.ZERO) { + return I_sub(I_quot(self, other), Integer.ONE); + } + } + return I_quot(self, other); +} + +var I_quotRem = function(self, other) { + return [0, I_quot(self, other), I_rem(self, other)]; +} + +var I_divMod = function(self, other) { + return [0, I_div(self, other), I_mod(self, other)]; +} + +var I_quot = function(self, other) { + if (isZero(other)) { + throw Error('division by zero'); + } else if (isZero(self)) { + return Integer.ZERO; + } + + if (isNegative(self)) { + if (isNegative(other)) { + return I_quot(I_negate(self), I_negate(other)); + } else { + return I_negate(I_quot(I_negate(self), other)); + } + } else if (isNegative(other)) { + return I_negate(I_quot(self, I_negate(other))); + } + + var res = Integer.ZERO; + var rem = self; + while (I_greaterThanOrEqual(rem, other)) { + var approx = Math.max(1, Math.floor(I_toNumber(rem) / I_toNumber(other))); + var log2 = Math.ceil(Math.log(approx) / Math.LN2); + var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); + var approxRes = I_fromNumber(approx); + var approxRem = I_mul(approxRes, other); + while (isNegative(approxRem) || I_greaterThan(approxRem, rem)) { + approx -= delta; + approxRes = I_fromNumber(approx); + approxRem = I_mul(approxRes, other); + } + + if (isZero(approxRes)) { + approxRes = Integer.ONE; + } + + res = I_add(res, approxRes); + rem = I_sub(rem, approxRem); + } + return res; +}; + +var I_rem = function(self, other) { + return I_sub(self, I_mul(I_quot(self, other), other)); +}; + +var not = function(self) { + var len = self.bits_.length; + var arr = []; + for (var i = 0; i < len; i++) { + arr[i] = ~self.bits_[i]; + } + return new Integer(arr, ~self.sign_); +}; + +var I_and = function(self, other) { + var len = Math.max(self.bits_.length, other.bits_.length); + var arr = []; + for (var i = 0; i < len; i++) { + arr[i] = I_getBits(self, i) & I_getBits(other, i); + } + return new Integer(arr, self.sign_ & other.sign_); +}; + +var I_or = function(self, other) { + var len = Math.max(self.bits_.length, other.bits_.length); + var arr = []; + for (var i = 0; i < len; i++) { + arr[i] = I_getBits(self, i) | I_getBits(other, i); + } + return new Integer(arr, self.sign_ | other.sign_); +}; + +var I_xor = function(self, other) { + var len = Math.max(self.bits_.length, other.bits_.length); + var arr = []; + for (var i = 0; i < len; i++) { + arr[i] = I_getBits(self, i) ^ I_getBits(other, i); + } + return new Integer(arr, self.sign_ ^ other.sign_); +}; + +var I_shiftLeft = function(self, numBits) { + var arr_delta = numBits >> 5; + var bit_delta = numBits % 32; + var len = self.bits_.length + arr_delta + (bit_delta > 0 ? 1 : 0); + var arr = []; + for (var i = 0; i < len; i++) { + if (bit_delta > 0) { + arr[i] = (I_getBits(self, i - arr_delta) << bit_delta) | + (I_getBits(self, i - arr_delta - 1) >>> (32 - bit_delta)); + } else { + arr[i] = I_getBits(self, i - arr_delta); + } + } + return new Integer(arr, self.sign_); +}; + +var I_shiftRight = function(self, numBits) { + var arr_delta = numBits >> 5; + var bit_delta = numBits % 32; + var len = self.bits_.length - arr_delta; + var arr = []; + for (var i = 0; i < len; i++) { + if (bit_delta > 0) { + arr[i] = (I_getBits(self, i + arr_delta) >>> bit_delta) | + (I_getBits(self, i + arr_delta + 1) << (32 - bit_delta)); + } else { + arr[i] = I_getBits(self, i + arr_delta); + } + } + return new Integer(arr, self.sign_); +}; + +var I_signum = function(self) { + var cmp = I_compare(self, Integer.ZERO); + if(cmp > 0) { + return Integer.ONE + } + if(cmp < 0) { + return I_sub(Integer.ZERO, Integer.ONE); + } + return Integer.ZERO; +}; + +var I_abs = function(self) { + if(I_compare(self, Integer.ZERO) < 0) { + return I_sub(Integer.ZERO, self); + } + return self; +}; + +var I_decodeDouble = function(x) { + var dec = decodeDouble(x); + var mantissa = I_fromBits([dec[3], dec[2]]); + if(dec[1] < 0) { + mantissa = I_negate(mantissa); + } + return [0, dec[4], mantissa]; +} + +var I_toString = function(self) { + var radix = 10; + + if (isZero(self)) { + return '0'; + } else if (isNegative(self)) { + return '-' + I_toString(I_negate(self)); + } + + var radixToPower = I_fromNumber(Math.pow(radix, 6)); + + var rem = self; + var result = ''; + while (true) { + var remDiv = I_div(rem, radixToPower); + var intval = I_toInt(I_sub(rem, I_mul(remDiv, radixToPower))); + var digits = intval.toString(); + + rem = remDiv; + if (isZero(rem)) { + return digits + result; + } else { + while (digits.length < 6) { + digits = '0' + digits; + } + result = '' + digits + result; + } + } +}; + +var I_fromRat = function(a, b) { + return I_toNumber(a) / I_toNumber(b); +} + +function I_fromInt64(x) { + return I_fromBits([x.getLowBits(), x.getHighBits()]); +} + +function I_toInt64(x) { + return Long.fromBits(I_getBits(x, 0), I_getBits(x, 1)); +} + +function I_fromWord64(x) { + return x; +} + +function I_toWord64(x) { + return I_rem(I_add(__w64_max, x), __w64_max); +} + +// Copyright 2009 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +var Long = function(low, high) { + this.low_ = low | 0; + this.high_ = high | 0; +}; + +Long.IntCache_ = {}; + +Long.fromInt = function(value) { + if (-128 <= value && value < 128) { + var cachedObj = Long.IntCache_[value]; + if (cachedObj) { + return cachedObj; + } + } + + var obj = new Long(value | 0, value < 0 ? -1 : 0); + if (-128 <= value && value < 128) { + Long.IntCache_[value] = obj; + } + return obj; +}; + +Long.fromNumber = function(value) { + if (isNaN(value) || !isFinite(value)) { + return Long.ZERO; + } else if (value <= -Long.TWO_PWR_63_DBL_) { + return Long.MIN_VALUE; + } else if (value + 1 >= Long.TWO_PWR_63_DBL_) { + return Long.MAX_VALUE; + } else if (value < 0) { + return Long.fromNumber(-value).negate(); + } else { + return new Long( + (value % Long.TWO_PWR_32_DBL_) | 0, + (value / Long.TWO_PWR_32_DBL_) | 0); + } +}; + +Long.fromBits = function(lowBits, highBits) { + return new Long(lowBits, highBits); +}; + +Long.TWO_PWR_16_DBL_ = 1 << 16; +Long.TWO_PWR_24_DBL_ = 1 << 24; +Long.TWO_PWR_32_DBL_ = + Long.TWO_PWR_16_DBL_ * Long.TWO_PWR_16_DBL_; +Long.TWO_PWR_31_DBL_ = + Long.TWO_PWR_32_DBL_ / 2; +Long.TWO_PWR_48_DBL_ = + Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_16_DBL_; +Long.TWO_PWR_64_DBL_ = + Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_32_DBL_; +Long.TWO_PWR_63_DBL_ = + Long.TWO_PWR_64_DBL_ / 2; +Long.ZERO = Long.fromInt(0); +Long.ONE = Long.fromInt(1); +Long.NEG_ONE = Long.fromInt(-1); +Long.MAX_VALUE = + Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); +Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0); +Long.TWO_PWR_24_ = Long.fromInt(1 << 24); + +Long.prototype.toInt = function() { + return this.low_; +}; + +Long.prototype.toNumber = function() { + return this.high_ * Long.TWO_PWR_32_DBL_ + + this.getLowBitsUnsigned(); +}; + +Long.prototype.getHighBits = function() { + return this.high_; +}; + +Long.prototype.getLowBits = function() { + return this.low_; +}; + +Long.prototype.getLowBitsUnsigned = function() { + return (this.low_ >= 0) ? + this.low_ : Long.TWO_PWR_32_DBL_ + this.low_; +}; + +Long.prototype.isZero = function() { + return this.high_ == 0 && this.low_ == 0; +}; + +Long.prototype.isNegative = function() { + return this.high_ < 0; +}; + +Long.prototype.isOdd = function() { + return (this.low_ & 1) == 1; +}; + +Long.prototype.equals = function(other) { + return (this.high_ == other.high_) && (this.low_ == other.low_); +}; + +Long.prototype.notEquals = function(other) { + return (this.high_ != other.high_) || (this.low_ != other.low_); +}; + +Long.prototype.lessThan = function(other) { + return this.compare(other) < 0; +}; + +Long.prototype.lessThanOrEqual = function(other) { + return this.compare(other) <= 0; +}; + +Long.prototype.greaterThan = function(other) { + return this.compare(other) > 0; +}; + +Long.prototype.greaterThanOrEqual = function(other) { + return this.compare(other) >= 0; +}; + +Long.prototype.compare = function(other) { + if (this.equals(other)) { + return 0; + } + + var thisNeg = this.isNegative(); + var otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) { + return -1; + } + if (!thisNeg && otherNeg) { + return 1; + } + + if (this.subtract(other).isNegative()) { + return -1; + } else { + return 1; + } +}; + +Long.prototype.negate = function() { + if (this.equals(Long.MIN_VALUE)) { + return Long.MIN_VALUE; + } else { + return this.not().add(Long.ONE); + } +}; + +Long.prototype.add = function(other) { + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +Long.prototype.subtract = function(other) { + return this.add(other.negate()); +}; + +Long.prototype.multiply = function(other) { + if (this.isZero()) { + return Long.ZERO; + } else if (other.isZero()) { + return Long.ZERO; + } + + if (this.equals(Long.MIN_VALUE)) { + return other.isOdd() ? Long.MIN_VALUE : Long.ZERO; + } else if (other.equals(Long.MIN_VALUE)) { + return this.isOdd() ? Long.MIN_VALUE : Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().multiply(other.negate()); + } else { + return this.negate().multiply(other).negate(); + } + } else if (other.isNegative()) { + return this.multiply(other.negate()).negate(); + } + + if (this.lessThan(Long.TWO_PWR_24_) && + other.lessThan(Long.TWO_PWR_24_)) { + return Long.fromNumber(this.toNumber() * other.toNumber()); + } + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +Long.prototype.div = function(other) { + if (other.isZero()) { + throw Error('division by zero'); + } else if (this.isZero()) { + return Long.ZERO; + } + + if (this.equals(Long.MIN_VALUE)) { + if (other.equals(Long.ONE) || + other.equals(Long.NEG_ONE)) { + return Long.MIN_VALUE; + } else if (other.equals(Long.MIN_VALUE)) { + return Long.ONE; + } else { + var halfThis = this.shiftRight(1); + var approx = halfThis.div(other).shiftLeft(1); + if (approx.equals(Long.ZERO)) { + return other.isNegative() ? Long.ONE : Long.NEG_ONE; + } else { + var rem = this.subtract(other.multiply(approx)); + var result = approx.add(rem.div(other)); + return result; + } + } + } else if (other.equals(Long.MIN_VALUE)) { + return Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().div(other.negate()); + } else { + return this.negate().div(other).negate(); + } + } else if (other.isNegative()) { + return this.div(other.negate()).negate(); + } + + var res = Long.ZERO; + var rem = this; + while (rem.greaterThanOrEqual(other)) { + var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); + + var log2 = Math.ceil(Math.log(approx) / Math.LN2); + var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); + + var approxRes = Long.fromNumber(approx); + var approxRem = approxRes.multiply(other); + while (approxRem.isNegative() || approxRem.greaterThan(rem)) { + approx -= delta; + approxRes = Long.fromNumber(approx); + approxRem = approxRes.multiply(other); + } + + if (approxRes.isZero()) { + approxRes = Long.ONE; + } + + res = res.add(approxRes); + rem = rem.subtract(approxRem); + } + return res; +}; + +Long.prototype.modulo = function(other) { + return this.subtract(this.div(other).multiply(other)); +}; + +Long.prototype.not = function() { + return Long.fromBits(~this.low_, ~this.high_); +}; + +Long.prototype.and = function(other) { + return Long.fromBits(this.low_ & other.low_, + this.high_ & other.high_); +}; + +Long.prototype.or = function(other) { + return Long.fromBits(this.low_ | other.low_, + this.high_ | other.high_); +}; + +Long.prototype.xor = function(other) { + return Long.fromBits(this.low_ ^ other.low_, + this.high_ ^ other.high_); +}; + +Long.prototype.shiftLeft = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var low = this.low_; + if (numBits < 32) { + var high = this.high_; + return Long.fromBits( + low << numBits, + (high << numBits) | (low >>> (32 - numBits))); + } else { + return Long.fromBits(0, low << (numBits - 32)); + } + } +}; + +Long.prototype.shiftRight = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >> numBits); + } else { + return Long.fromBits( + high >> (numBits - 32), + high >= 0 ? 0 : -1); + } + } +}; + +Long.prototype.shiftRightUnsigned = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >>> numBits); + } else if (numBits == 32) { + return Long.fromBits(high, 0); + } else { + return Long.fromBits(high >>> (numBits - 32), 0); + } + } +}; + + + +// Int64 +function hs_eqInt64(x, y) {return x.equals(y);} +function hs_neInt64(x, y) {return !x.equals(y);} +function hs_ltInt64(x, y) {return x.compare(y) < 0;} +function hs_leInt64(x, y) {return x.compare(y) <= 0;} +function hs_gtInt64(x, y) {return x.compare(y) > 0;} +function hs_geInt64(x, y) {return x.compare(y) >= 0;} +function hs_quotInt64(x, y) {return x.div(y);} +function hs_remInt64(x, y) {return x.modulo(y);} +function hs_plusInt64(x, y) {return x.add(y);} +function hs_minusInt64(x, y) {return x.subtract(y);} +function hs_timesInt64(x, y) {return x.multiply(y);} +function hs_negateInt64(x) {return x.negate();} +function hs_uncheckedIShiftL64(x, bits) {return x.shiftLeft(bits);} +function hs_uncheckedIShiftRA64(x, bits) {return x.shiftRight(bits);} +function hs_uncheckedIShiftRL64(x, bits) {return x.shiftRightUnsigned(bits);} +function hs_intToInt64(x) {return new Long(x, 0);} +function hs_int64ToInt(x) {return x.toInt();} + + + +// Word64 +function hs_wordToWord64(x) { + return I_fromInt(x); +} +function hs_word64ToWord(x) { + return I_toInt(x); +} +function hs_mkWord64(low, high) { + return I_fromBits([low, high]); +} + +var hs_and64 = I_and; +var hs_or64 = I_or; +var hs_xor64 = I_xor; +var __i64_all_ones = I_fromBits([0xffffffff, 0xffffffff]); +function hs_not64(x) { + return I_xor(x, __i64_all_ones); +} +var hs_eqWord64 = I_equals; +var hs_neWord64 = I_notEquals; +var hs_ltWord64 = I_lessThan; +var hs_leWord64 = I_lessThanOrEqual; +var hs_gtWord64 = I_greaterThan; +var hs_geWord64 = I_greaterThanOrEqual; +var hs_quotWord64 = I_quot; +var hs_remWord64 = I_rem; +var __w64_max = I_fromBits([0,0,1]); +function hs_uncheckedShiftL64(x, bits) { + return I_rem(I_shiftLeft(x, bits), __w64_max); +} +var hs_uncheckedShiftRL64 = I_shiftRight; +function hs_int64ToWord64(x) { + var tmp = I_add(__w64_max, I_fromBits([x.getLowBits(), x.getHighBits()])); + return I_rem(tmp, __w64_max); +} +function hs_word64ToInt64(x) { + return Long.fromBits(I_getBits(x, 0), I_getBits(x, 1)); +} + +// Joseph Myers' MD5 implementation; used under the BSD license. + +function md5cycle(x, k) { +var a = x[0], b = x[1], c = x[2], d = x[3]; + +a = ff(a, b, c, d, k[0], 7, -680876936); +d = ff(d, a, b, c, k[1], 12, -389564586); +c = ff(c, d, a, b, k[2], 17, 606105819); +b = ff(b, c, d, a, k[3], 22, -1044525330); +a = ff(a, b, c, d, k[4], 7, -176418897); +d = ff(d, a, b, c, k[5], 12, 1200080426); +c = ff(c, d, a, b, k[6], 17, -1473231341); +b = ff(b, c, d, a, k[7], 22, -45705983); +a = ff(a, b, c, d, k[8], 7, 1770035416); +d = ff(d, a, b, c, k[9], 12, -1958414417); +c = ff(c, d, a, b, k[10], 17, -42063); +b = ff(b, c, d, a, k[11], 22, -1990404162); +a = ff(a, b, c, d, k[12], 7, 1804603682); +d = ff(d, a, b, c, k[13], 12, -40341101); +c = ff(c, d, a, b, k[14], 17, -1502002290); +b = ff(b, c, d, a, k[15], 22, 1236535329); + +a = gg(a, b, c, d, k[1], 5, -165796510); +d = gg(d, a, b, c, k[6], 9, -1069501632); +c = gg(c, d, a, b, k[11], 14, 643717713); +b = gg(b, c, d, a, k[0], 20, -373897302); +a = gg(a, b, c, d, k[5], 5, -701558691); +d = gg(d, a, b, c, k[10], 9, 38016083); +c = gg(c, d, a, b, k[15], 14, -660478335); +b = gg(b, c, d, a, k[4], 20, -405537848); +a = gg(a, b, c, d, k[9], 5, 568446438); +d = gg(d, a, b, c, k[14], 9, -1019803690); +c = gg(c, d, a, b, k[3], 14, -187363961); +b = gg(b, c, d, a, k[8], 20, 1163531501); +a = gg(a, b, c, d, k[13], 5, -1444681467); +d = gg(d, a, b, c, k[2], 9, -51403784); +c = gg(c, d, a, b, k[7], 14, 1735328473); +b = gg(b, c, d, a, k[12], 20, -1926607734); + +a = hh(a, b, c, d, k[5], 4, -378558); +d = hh(d, a, b, c, k[8], 11, -2022574463); +c = hh(c, d, a, b, k[11], 16, 1839030562); +b = hh(b, c, d, a, k[14], 23, -35309556); +a = hh(a, b, c, d, k[1], 4, -1530992060); +d = hh(d, a, b, c, k[4], 11, 1272893353); +c = hh(c, d, a, b, k[7], 16, -155497632); +b = hh(b, c, d, a, k[10], 23, -1094730640); +a = hh(a, b, c, d, k[13], 4, 681279174); +d = hh(d, a, b, c, k[0], 11, -358537222); +c = hh(c, d, a, b, k[3], 16, -722521979); +b = hh(b, c, d, a, k[6], 23, 76029189); +a = hh(a, b, c, d, k[9], 4, -640364487); +d = hh(d, a, b, c, k[12], 11, -421815835); +c = hh(c, d, a, b, k[15], 16, 530742520); +b = hh(b, c, d, a, k[2], 23, -995338651); + +a = ii(a, b, c, d, k[0], 6, -198630844); +d = ii(d, a, b, c, k[7], 10, 1126891415); +c = ii(c, d, a, b, k[14], 15, -1416354905); +b = ii(b, c, d, a, k[5], 21, -57434055); +a = ii(a, b, c, d, k[12], 6, 1700485571); +d = ii(d, a, b, c, k[3], 10, -1894986606); +c = ii(c, d, a, b, k[10], 15, -1051523); +b = ii(b, c, d, a, k[1], 21, -2054922799); +a = ii(a, b, c, d, k[8], 6, 1873313359); +d = ii(d, a, b, c, k[15], 10, -30611744); +c = ii(c, d, a, b, k[6], 15, -1560198380); +b = ii(b, c, d, a, k[13], 21, 1309151649); +a = ii(a, b, c, d, k[4], 6, -145523070); +d = ii(d, a, b, c, k[11], 10, -1120210379); +c = ii(c, d, a, b, k[2], 15, 718787259); +b = ii(b, c, d, a, k[9], 21, -343485551); + +x[0] = add32(a, x[0]); +x[1] = add32(b, x[1]); +x[2] = add32(c, x[2]); +x[3] = add32(d, x[3]); + +} + +function cmn(q, a, b, x, s, t) { +a = add32(add32(a, q), add32(x, t)); +return add32((a << s) | (a >>> (32 - s)), b); +} + +function ff(a, b, c, d, x, s, t) { +return cmn((b & c) | ((~b) & d), a, b, x, s, t); +} + +function gg(a, b, c, d, x, s, t) { +return cmn((b & d) | (c & (~d)), a, b, x, s, t); +} + +function hh(a, b, c, d, x, s, t) { +return cmn(b ^ c ^ d, a, b, x, s, t); +} + +function ii(a, b, c, d, x, s, t) { +return cmn(c ^ (b | (~d)), a, b, x, s, t); +} + +function md51(s) { +var n = s.length, +state = [1732584193, -271733879, -1732584194, 271733878], i; +for (i=64; i<=s.length; i+=64) { +md5cycle(state, md5blk(s.substring(i-64, i))); +} +s = s.substring(i-64); +var tail = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; +for (i=0; i<s.length; i++) +tail[i>>2] |= s.charCodeAt(i) << ((i%4) << 3); +tail[i>>2] |= 0x80 << ((i%4) << 3); +if (i > 55) { +md5cycle(state, tail); +for (i=0; i<16; i++) tail[i] = 0; +} +tail[14] = n*8; +md5cycle(state, tail); +return state; +} + +function md5blk(s) { +var md5blks = [], i; +for (i=0; i<64; i+=4) { +md5blks[i>>2] = s.charCodeAt(i) ++ (s.charCodeAt(i+1) << 8) ++ (s.charCodeAt(i+2) << 16) ++ (s.charCodeAt(i+3) << 24); +} +return md5blks; +} + +var hex_chr = '0123456789abcdef'.split(''); + +function rhex(n) +{ +var s='', j=0; +for(; j<4; j++) +s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] ++ hex_chr[(n >> (j * 8)) & 0x0F]; +return s; +} + +function hex(x) { +for (var i=0; i<x.length; i++) +x[i] = rhex(x[i]); +return x.join(''); +} + +function md5(s) { +return hex(md51(s)); +} + +function add32(a, b) { +return (a + b) & 0xFFFFFFFF; +} + +// Functions for dealing with arrays. + +function newArr(n, x) { + var arr = []; + for(; n >= 0; --n) { + arr.push(x); + } + return arr; +} + +// Create all views at once; perhaps it's wasteful, but it's better than having +// to check for the right view at each read or write. +function newByteArr(n) { + // Pad the thing to multiples of 8. + var padding = 8 - n % 8; + if(padding < 8) { + n += padding; + } + var arr = {}; + var buffer = new ArrayBuffer(n); + var views = {}; + views['i8'] = new Int8Array(buffer); + views['i16'] = new Int16Array(buffer); + views['i32'] = new Int32Array(buffer); + views['w8'] = new Uint8Array(buffer); + views['w16'] = new Uint16Array(buffer); + views['w32'] = new Uint32Array(buffer); + views['f32'] = new Float32Array(buffer); + views['f64'] = new Float64Array(buffer); + arr['b'] = buffer; + arr['v'] = views; + // ByteArray and Addr are the same thing, so keep an offset if we get + // casted. + arr['off'] = 0; + return arr; +} + +// An attempt at emulating pointers enough for ByteString and Text to be +// usable without patching the hell out of them. +// The general idea is that Addr# is a byte array with an associated offset. + +function plusAddr(addr, off) { + var newaddr = {}; + newaddr['off'] = addr['off'] + off; + newaddr['b'] = addr['b']; + newaddr['v'] = addr['v']; + return newaddr; +} + +function writeOffAddr(type, elemsize, addr, off, x) { + addr['v'][type][addr.off/elemsize + off] = x; +} + +function readOffAddr(type, elemsize, addr, off) { + return addr['v'][type][addr.off/elemsize + off]; +} + +// Two addresses are equal if they point to the same buffer and have the same +// offset. For other comparisons, just use the offsets - nobody in their right +// mind would check if one pointer is less than another, completely unrelated, +// pointer and then act on that information anyway. +function addrEq(a, b) { + if(a == b) { + return true; + } + return a && b && a['b'] == b['b'] && a['off'] == b['off']; +} + +function addrLT(a, b) { + if(a) { + return b && a['off'] < b['off']; + } else { + return (b != 0); + } +} + +function addrGT(a, b) { + if(b) { + return a && a['off'] > b['off']; + } else { + return (a != 0); + } +} + +function withChar(f, charCode) { + return f(String.fromCharCode(charCode)).charCodeAt(0); +} + +function u_towlower(charCode) { + return withChar(function(c) {return c.toLowerCase()}, charCode); +} + +function u_towupper(charCode) { + return withChar(function(c) {return c.toUpperCase()}, charCode); +} + +var u_towtitle = u_towupper; + +function u_iswupper(charCode) { + var c = String.fromCharCode(charCode); + return c == c.toUpperCase() && c != c.toLowerCase(); +} + +function u_iswlower(charCode) { + var c = String.fromCharCode(charCode); + return c == c.toLowerCase() && c != c.toUpperCase(); +} + +function u_iswdigit(charCode) { + return charCode >= 48 && charCode <= 57; +} + +function u_iswcntrl(charCode) { + return charCode <= 0x1f || charCode == 0x7f; +} + +function u_iswspace(charCode) { + var c = String.fromCharCode(charCode); + return c.replace(/\s/g,'') != c; +} + +function u_iswalpha(charCode) { + var c = String.fromCharCode(charCode); + return c.replace(__hs_alphare, '') != c; +} + +function u_iswalnum(charCode) { + return u_iswdigit(charCode) || u_iswalpha(charCode); +} + +function u_iswprint(charCode) { + return !u_iswcntrl(charCode); +} + +function u_gencat(c) { + throw 'u_gencat is only supported with --full-unicode.'; +} + +// Regex that matches any alphabetic character in any language. Horrible thing. +var __hs_alphare = /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/g; + +// 2D Canvas drawing primitives. +function jsHasCtx2D(elem) {return !!elem.getContext;} +function jsGetCtx2D(elem) {return elem.getContext('2d');} +function jsBeginPath(ctx) {ctx.beginPath();} +function jsMoveTo(ctx, x, y) {ctx.moveTo(x, y);} +function jsLineTo(ctx, x, y) {ctx.lineTo(x, y);} +function jsStroke(ctx) {ctx.stroke();} +function jsFill(ctx) {ctx.fill();} +function jsRotate(ctx, radians) {ctx.rotate(radians);} +function jsTranslate(ctx, x, y) {ctx.translate(x, y);} +function jsScale(ctx, x, y) {ctx.scale(x, y);} +function jsPushState(ctx) {ctx.save();} +function jsPopState(ctx) {ctx.restore();} +function jsResetCanvas(el) {el.width = el.width;} +function jsDrawImage(ctx, img, x, y) {ctx.drawImage(img, x, y);} +function jsDrawImageClipped(ctx, img, x, y, cx, cy, cw, ch) { + ctx.drawImage(img, cx, cy, cw, ch, x, y, cw, ch); +} +function jsDrawText(ctx, str, x, y) {ctx.fillText(str, x, y);} +function jsClip(ctx) {ctx.clip();} +function jsArc(ctx, x, y, radius, fromAngle, toAngle) { + ctx.arc(x, y, radius, fromAngle, toAngle); +} +function jsCanvasToDataURL(el) {return el.toDataURL('image/png');} + +// Simulate handles. +// When implementing new handles, remember that passed strings may be thunks, +// and so need to be evaluated before use. + +function jsNewHandle(init, read, write, flush, close, seek, tell) { + var h = { + read: read || function() {}, + write: write || function() {}, + seek: seek || function() {}, + tell: tell || function() {}, + close: close || function() {}, + flush: flush || function() {} + }; + init.call(h); + return h; +} + +function jsReadHandle(h, len) {return h.read(len);} +function jsWriteHandle(h, str) {return h.write(str);} +function jsFlushHandle(h) {return h.flush();} +function jsCloseHandle(h) {return h.close();} + +function jsMkConWriter(op) { + return function(str) { + str = E(str); + var lines = (this.buf + str).split('\n'); + for(var i = 0; i < lines.length-1; ++i) { + op.call(console, lines[i]); + } + this.buf = lines[lines.length-1]; + } +} + +function jsMkStdout() { + return jsNewHandle( + function() {this.buf = '';}, + function(_) {return '';}, + jsMkConWriter(console.log), + function() {console.log(this.buf); this.buf = '';} + ); +} + +function jsMkStderr() { + return jsNewHandle( + function() {this.buf = '';}, + function(_) {return '';}, + jsMkConWriter(console.warn), + function() {console.warn(this.buf); this.buf = '';} + ); +} + +function jsMkStdin() { + return jsNewHandle( + function() {this.buf = '';}, + function(len) { + while(this.buf.length < len) { + this.buf += prompt('[stdin]') + '\n'; + } + var ret = this.buf.substr(0, len); + this.buf = this.buf.substr(len); + return ret; + } + ); +} + +var _0=false,_1=new T(function(){return [0,"(function(e){return e.parentNode;})"];}),_2=function(_3){var _4=B(A(_3,[_])),_5=_4;return E(_5);},_6=function(_7){return new F(function(){return _2(function(_){var _=0;return new F(function(){return eval(E(_7)[1]);});});});},_8=new T(function(){return B(_6(_1));}),_9=[0,0],_a=[0],_b=function(_c,_){return _a;},_d=function(_){return _a;},_e=[0,_d,_b],_f=2,_g=[1],_h=[0],_i=[0,_h,_9,_f,_e,_0,_g],_j=function(_){var _=0,_k=newMVar(),_l=_k,_=putMVar(_l,_i);return [0,_l];},_m=new T(function(){return B(_2(_j));}),_n=function(_o,_p,_){var _q=E(_m)[1],_r=takeMVar(_q),_s=_r,_t=B(A(_o,[_s,_])),_u=_t,_v=E(_u),_w=E(_v[1]),_x=_w[1],_y=_w[2],_=putMVar(_q,new T(function(){var _z=E(_v[2]);return [0,_z[1],_z[2],_z[3],_z[4],_0,_z[6]];}));if(!E(E(_s)[5])){var _A=B(A(_x,[_p,_])),_B=_A;return _y;}else{var _C=B(A(_8,[E(E(_p)[1]),_])),_D=_C,_E=B(A(_x,[[0,_D],_])),_F=_E;return _y;}},_G=new T(function(){return B(unCStr("id"));}),_H=0,_I=function(_J,_K,_L,_M){return new F(function(){return A(_J,[new T(function(){return function(_){var _N=jsSetAttr(E(_K)[1],toJSStr(E(_L)),toJSStr(E(_M)));return _H;};})]);});},_O=function(_P){return E(_P);},_Q=function(_R,_S,_T,_){var _U=E(_S),_V=B(A(_R,[_T,_])),_W=_V,_X=B(A(_I,[_O,_W,_U[1],_U[2],_])),_Y=_X;return _W;},_Z=function(_10,_11){while(1){var _12=(function(_13,_14){var _15=E(_14);if(!_15[0]){return E(_13);}else{_10=function(_16,_){return new F(function(){return _Q(_13,_15[1],_16,_);});};_11=_15[2];return null;}})(_10,_11);if(_12!=null){return _12;}}},_17=function(_18,_19,_){return [0,_H,_18];},_1a=function(_1b,_){return [0,_1b,_1b];},_1c=[0,_],_1d=function(_1e,_1f,_){var _1g=B(A(_1e,[_])),_1h=_1g;return new F(function(){return A(_1f,[_]);});},_1i=function(_1j,_1k,_){return new F(function(){return _1d(_1j,_1k,_);});},_1l=function(_1m,_1n,_){var _1o=B(A(_1m,[_])),_1p=_1o;return new F(function(){return A(_1n,[_1p,_]);});},_1q=new T(function(){return B(unCStr("base"));}),_1r=new T(function(){return B(unCStr("GHC.IO.Exception"));}),_1s=new T(function(){return B(unCStr("IOException"));}),_1t=[0,I_fromBits([4053623282,1685460941]),I_fromBits([3693590983,2507416641]),_1q,_1r,_1s],_1u=[0,I_fromBits([4053623282,1685460941]),I_fromBits([3693590983,2507416641]),_1t,_h],_1v=function(_1w){return E(_1u);},_1x=function(_1y){return E(E(_1y)[1]);},_1z=new T(function(){return B(unCStr("Maybe.fromJust: Nothing"));}),_1A=new T(function(){return B(err(_1z));}),_1B=function(_1C,_1D,_1E){var _1F=new T(function(){var _1G=B(A(_1C,[_1E])),_1H=B(A(_1D,[new T(function(){var _1I=E(_1F);return _1I[0]==0?E(_1A):E(_1I[1]);})])),_1J=hs_eqWord64(_1G[1],_1H[1]),_1K=_1J;if(!E(_1K)){var _1L=[0];}else{var _1M=hs_eqWord64(_1G[2],_1H[2]),_1N=_1M,_1L=E(_1N)==0?[0]:[1,_1E];}var _1O=_1L,_1P=_1O;return _1P;});return E(_1F);},_1Q=function(_1R){var _1S=E(_1R);return new F(function(){return _1B(B(_1x(_1S[1])),_1v,_1S[2]);});},_1T=new T(function(){return B(unCStr(": "));}),_1U=[0,41],_1V=new T(function(){return B(unCStr(" ("));}),_1W=function(_1X,_1Y){var _1Z=E(_1X);return _1Z[0]==0?E(_1Y):[1,_1Z[1],new T(function(){return B(_1W(_1Z[2],_1Y));})];},_20=new T(function(){return B(unCStr("already exists"));}),_21=new T(function(){return B(unCStr("does not exist"));}),_22=new T(function(){return B(unCStr("protocol error"));}),_23=new T(function(){return B(unCStr("failed"));}),_24=new T(function(){return B(unCStr("invalid argument"));}),_25=new T(function(){return B(unCStr("inappropriate type"));}),_26=new T(function(){return B(unCStr("hardware fault"));}),_27=new T(function(){return B(unCStr("unsupported operation"));}),_28=new T(function(){return B(unCStr("timeout"));}),_29=new T(function(){return B(unCStr("resource vanished"));}),_2a=new T(function(){return B(unCStr("interrupted"));}),_2b=new T(function(){return B(unCStr("resource busy"));}),_2c=new T(function(){return B(unCStr("resource exhausted"));}),_2d=new T(function(){return B(unCStr("end of file"));}),_2e=new T(function(){return B(unCStr("illegal operation"));}),_2f=new T(function(){return B(unCStr("permission denied"));}),_2g=new T(function(){return B(unCStr("user error"));}),_2h=new T(function(){return B(unCStr("unsatisified constraints"));}),_2i=new T(function(){return B(unCStr("system error"));}),_2j=function(_2k,_2l){switch(E(_2k)){case 0:return new F(function(){return _1W(_20,_2l);});break;case 1:return new F(function(){return _1W(_21,_2l);});break;case 2:return new F(function(){return _1W(_2b,_2l);});break;case 3:return new F(function(){return _1W(_2c,_2l);});break;case 4:return new F(function(){return _1W(_2d,_2l);});break;case 5:return new F(function(){return _1W(_2e,_2l);});break;case 6:return new F(function(){return _1W(_2f,_2l);});break;case 7:return new F(function(){return _1W(_2g,_2l);});break;case 8:return new F(function(){return _1W(_2h,_2l);});break;case 9:return new F(function(){return _1W(_2i,_2l);});break;case 10:return new F(function(){return _1W(_22,_2l);});break;case 11:return new F(function(){return _1W(_23,_2l);});break;case 12:return new F(function(){return _1W(_24,_2l);});break;case 13:return new F(function(){return _1W(_25,_2l);});break;case 14:return new F(function(){return _1W(_26,_2l);});break;case 15:return new F(function(){return _1W(_27,_2l);});break;case 16:return new F(function(){return _1W(_28,_2l);});break;case 17:return new F(function(){return _1W(_29,_2l);});break;default:return new F(function(){return _1W(_2a,_2l);});}},_2m=[0,125],_2n=new T(function(){return B(unCStr("{handle: "));}),_2o=function(_2p,_2q,_2r,_2s,_2t,_2u){var _2v=new T(function(){var _2w=new T(function(){return B(_2j(_2q,new T(function(){var _2x=E(_2s);return _2x[0]==0?E(_2u):B(_1W(_1V,new T(function(){return B(_1W(_2x,[1,_1U,_2u]));})));})));}),_2y=E(_2r);return _2y[0]==0?E(_2w):B(_1W(_2y,new T(function(){return B(_1W(_1T,_2w));})));}),_2z=E(_2t);if(!_2z[0]){var _2A=E(_2p);if(!_2A[0]){return E(_2v);}else{var _2B=E(_2A[1]);return _2B[0]==0?B(_1W(_2n,new T(function(){return B(_1W(_2B[1],[1,_2m,new T(function(){return B(_1W(_1T,_2v));})]));}))):B(_1W(_2n,new T(function(){return B(_1W(_2B[1],[1,_2m,new T(function(){return B(_1W(_1T,_2v));})]));})));}}else{return new F(function(){return _1W(_2z[1],new T(function(){return B(_1W(_1T,_2v));}));});}},_2C=function(_2D){var _2E=E(_2D);return new F(function(){return _2o(_2E[1],_2E[2],_2E[3],_2E[4],_2E[6],_h);});},_2F=function(_2G,_2H){var _2I=E(_2G);return new F(function(){return _2o(_2I[1],_2I[2],_2I[3],_2I[4],_2I[6],_2H);});},_2J=[0,44],_2K=[0,93],_2L=[0,91],_2M=function(_2N,_2O,_2P){var _2Q=E(_2O);return _2Q[0]==0?B(unAppCStr("[]",_2P)):[1,_2L,new T(function(){return B(A(_2N,[_2Q[1],new T(function(){var _2R=function(_2S){var _2T=E(_2S);return _2T[0]==0?E([1,_2K,_2P]):[1,_2J,new T(function(){return B(A(_2N,[_2T[1],new T(function(){return B(_2R(_2T[2]));})]));})];};return B(_2R(_2Q[2]));})]));})];},_2U=function(_2V,_2W){return new F(function(){return _2M(_2F,_2V,_2W);});},_2X=function(_2Y,_2Z,_30){var _31=E(_2Z);return new F(function(){return _2o(_31[1],_31[2],_31[3],_31[4],_31[6],_30);});},_32=[0,_2X,_2C,_2U],_33=new T(function(){return [0,_1v,_32,_34,_1Q];}),_34=function(_35){return [0,_33,_35];},_36=7,_37=function(_38){return [0,_a,_36,_h,_38,_a,_a];},_39=function(_3a,_){return new F(function(){return die(new T(function(){return B(_34(new T(function(){return B(_37(_3a));})));}));});},_3b=function(_3c,_){return new F(function(){return _39(_3c,_);});},_3d=function(_3e,_){return _3e;},_3f=[0,_1l,_1i,_3d,_3b],_3g=function(_3h){return E(E(_3h)[1]);},_3i=function(_3j,_3k,_3l,_3m){return new F(function(){return A(_3g,[_3j,new T(function(){return B(A(_3k,[_3m]));}),function(_3n){return new F(function(){return A(_3l,[new T(function(){return E(E(_3n)[1]);}),new T(function(){return E(E(_3n)[2]);})]);});}]);});},_3o=function(_3p,_3q,_3r,_3s){return new F(function(){return A(_3g,[_3p,new T(function(){return B(A(_3q,[_3s]));}),function(_3t){return new F(function(){return A(_3r,[new T(function(){return E(E(_3t)[2]);})]);});}]);});},_3u=function(_3v,_3w,_3x,_3y){return new F(function(){return _3o(_3v,_3w,_3x,_3y);});},_3z=function(_3A){return E(E(_3A)[4]);},_3B=function(_3C,_3D){return function(_3E){return E(new T(function(){return B(A(_3z,[_3C,_3D]));}));};},_3F=function(_3G){return E(E(_3G)[3]);},_3H=function(_3I){return [0,function(_3w,_3x,_3y){return new F(function(){return _3i(_3I,_3w,_3x,_3y);});},function(_3w,_3x,_3y){return new F(function(){return _3u(_3I,_3w,_3x,_3y);});},function(_3J,_3K){return new F(function(){return A(new T(function(){return B(_3F(_3I));}),[[0,_3J,_3K]]);});},function(_3y){return new F(function(){return _3B(_3I,_3y);});}];},_3L=new T(function(){return B(_3H(_3f));}),_3M=[0,112],_3N=function(_3O,_3P){var _3Q=jsShowI(_3O),_3R=_3Q;return new F(function(){return _1W(fromJSStr(_3R),_3P);});},_3S=[0,41],_3T=[0,40],_3U=function(_3V,_3W,_3X){return _3W>=0?B(_3N(_3W,_3X)):_3V<=6?B(_3N(_3W,_3X)):[1,_3T,new T(function(){var _3Y=jsShowI(_3W),_3Z=_3Y;return B(_1W(fromJSStr(_3Z),[1,_3S,_3X]));})];},_40=function(_41,_42,_43,_44){var _45=E(_42);return new F(function(){return A(_45[1],[new T(function(){var _46=E(_41);return E(_43);}),function(_47){var _48=new T(function(){return E(E(_47)[2]);});return new F(function(){return A(_45[2],[new T(function(){return B(A(_44,[new T(function(){var _49=E(new T(function(){var _4a=E(_41);return [0,_];})),_4b=E(_47);return [0,_4b[1],new T(function(){return [0,E(_48)[1]+1|0];}),_4b[3],_4b[4],_4b[5],_4b[6]];})]));}),new T(function(){return B(A(_45[3],[[1,_3M,new T(function(){return B(_1W(B(_3U(0,E(_48)[1],_h)),new T(function(){return E(E(_47)[1]);})));})]]));})]);});}]);});},_4c=new T(function(){return B(_40(_1c,_3L,_1a,_17));}),_4d=new T(function(){return B(unCStr("span"));}),_4e=function(_4f,_4g,_){var _4h=jsCreateElem(toJSStr(E(_4f))),_4i=_4h,_4j=jsAppendChild(_4i,E(_4g)[1]);return [0,_4i];},_4k=function(_16,_){return new F(function(){return _4e(_4d,_16,_);});},_4l=new T(function(){return B(unCStr(" could be found!"));}),_4m=function(_4n){return new F(function(){return err(B(unAppCStr("No element with ID ",new T(function(){return B(_1W(_4n,_4l));}))));});},_4o=function(_4p,_4q,_){var _4r=E(_4q),_4s=jsFind(toJSStr(_4r)),_4t=_4s,_4u=E(_4t);if(!_4u[0]){return new F(function(){return _4m(_4r);});}else{var _4v=E(_4u[1]),_4w=jsClearChildren(_4v[1]);return new F(function(){return _n(_4p,_4v,_);});}},_4x=function(_4y,_4z,_4A,_){var _4B=B(A(_4c,[_4A,_])),_4C=_4B,_4D=E(_4C),_4E=_4D[1],_4F=E(_4D[2]),_4G=_4F[2],_4H=E(_4F[4]),_4I=B(A(_4y,[[0,_4F[1],_4G,_4F[3],[0,function(_){return new F(function(){return _4o(function(_4J,_){var _4K=B(A(_4y,[new T(function(){var _4L=E(_4J);return [0,_4L[1],_4G,_4L[3],_4L[4],_4L[5],_4L[6]];}),_])),_4M=_4K;return [0,[0,_3d,E(E(_4M)[1])[2]],_4J];},_4E,_);});},function(_4N,_){var _4O=B(_4o(new T(function(){return B(A(_4z,[_4N]));}),_4E,_)),_4P=_4O,_4Q=E(_4P);return _4Q[0]==0?_a:B(A(_4H[2],[_4Q[1],_]));}],_4F[5],_4F[6]],_])),_4R=_4I,_4S=E(_4R),_4T=_4S[2],_4U=E(_4S[1]),_4V=_4U[1],_4W=new T(function(){return B(_Z(_4k,[1,[0,_G,_4E],_h]));}),_4X=E(_4U[2]);if(!_4X[0]){return [0,[0,function(_4Y,_){var _4Z=B(A(_4V,[_4Y,_])),_50=_4Z,_51=B(A(_4W,[_4Y,_])),_52=_51;return _4Y;},_a],new T(function(){var _53=E(_4T);return [0,_53[1],_53[2],_53[3],_4H,_53[5],_53[6]];})];}else{var _54=B(A(_4z,[_4X[1],new T(function(){var _55=E(_4T);return [0,_55[1],_55[2],_55[3],_4H,_55[5],_55[6]];}),_])),_56=_54,_57=E(_56),_58=E(_57[1]);return [0,[0,function(_59,_){var _5a=B(A(_4V,[_59,_])),_5b=_5a,_5c=B(A(_4W,[_59,_])),_5d=_5c,_5e=B(A(_58[1],[_5d,_])),_5f=_5e;return _59;},_58[2]],_57[2]];}},_5g=new T(function(){return B(unCStr("padding:15px;border-style:dotted"));}),_5h=new T(function(){return B(unCStr("border-collapse:collapse"));}),_5i=new T(function(){return B(unCStr("vertical-align:top"));}),_5j=[0,3],_5k=function(_5l,_5m,_){var _5n=jsCreateTextNode(toJSStr(E(_5l))),_5o=_5n,_5p=jsAppendChild(_5o,E(_5m)[1]);return [0,_5o];},_5q=[0,112],_5r=[1,_5q,_h],_5s=function(_5t,_5u){return function(_5v,_){var _5w=jsCreateElem(toJSStr(_5r)),_5x=_5w,_5y=jsAppendChild(_5x,E(_5v)[1]),_5z=[0,_5x],_5A=B(A(new T(function(){return B(A(_5t,[_5u]));}),[_5z,_])),_5B=_5A;return _5z;};},_5C=function(_5D){return new F(function(){return _3U(0,E(_5D)[1],_h);});},_5E=[0,98],_5F=[1,_5E,_h],_5G=function(_5H,_5I){return function(_5J,_){var _5K=jsCreateElem(toJSStr(_5F)),_5L=_5K,_5M=jsAppendChild(_5L,E(_5J)[1]),_5N=[0,_5L],_5O=B(A(new T(function(){return B(A(_5H,[_5I]));}),[_5N,_])),_5P=_5O;return _5N;};},_5Q=new T(function(){return B(unCStr("br"));}),_5R=function(_5S,_){var _5T=jsCreateElem(toJSStr(E(_5Q))),_5U=_5T,_5V=jsAppendChild(_5U,E(_5S)[1]);return [0,_5U];},_5W=[1,_H],_5X=new T(function(){return B(unCStr("result: "));}),_5Y=function(_5Z){return function(_60,_){return [0,[0,function(_61,_){var _62=B(_5R(_61,_)),_63=_62,_64=B(_5k(_5X,_61,_)),_65=_64,_66=B(A(new T(function(){return B(_5G(_5k,new T(function(){return B(_5C(_5Z));})));}),[_61,_])),_67=_66;return _61;},_5W],_60];};},_68=new T(function(){return B(unCStr(" numbers and append the result using a fold"));}),_69=[0,0],_6a=[1,_69],_6b=[0,_3d,_6a],_6c=function(_6d,_){return [0,_6b,_6d];},_6e=function(_6f,_6g,_6h,_){var _6i=B(_4e(_6f,_6h,_)),_6j=_6i,_6k=B(A(_6g,[_6j,_])),_6l=_6k;return _6j;},_6m=new T(function(){return B(unCStr("()"));}),_6n=new T(function(){return B(unCStr("GHC.Tuple"));}),_6o=new T(function(){return B(unCStr("ghc-prim"));}),_6p=[0,I_fromBits([2170319554,3688774321]),I_fromBits([26914641,3196943984]),_6o,_6n,_6m],_6q=[0,I_fromBits([2170319554,3688774321]),I_fromBits([26914641,3196943984]),_6p,_h],_6r=function(_6s){return E(_6q);},_6t=new T(function(){return B(unCStr("haste-perch-0.1.0.3"));}),_6u=new T(function(){return B(unCStr("Haste.Perch"));}),_6v=new T(function(){return B(unCStr("PerchM"));}),_6w=[0,I_fromBits([1709697934,243212220]),I_fromBits([4127062651,1134836086]),_6t,_6u,_6v],_6x=[0,I_fromBits([1709697934,243212220]),I_fromBits([4127062651,1134836086]),_6w,_h],_6y=function(_6z){return E(_6x);},_6A=function(_6B){var _6C=E(_6B);if(!_6C[0]){return [0];}else{return new F(function(){return _1W(_6C[1],new T(function(){return B(_6A(_6C[2]));}));});}},_6D=function(_6E,_6F){var _6G=E(_6E);if(!_6G){return [0,_h,_6F];}else{var _6H=E(_6F);if(!_6H[0]){return [0,_h,_h];}else{var _6I=new T(function(){var _6J=B(_6D(_6G-1|0,_6H[2]));return [0,_6J[1],_6J[2]];});return [0,[1,_6H[1],new T(function(){return E(E(_6I)[1]);})],new T(function(){return E(E(_6I)[2]);})];}}},_6K=[0,120],_6L=[0,48],_6M=function(_6N){var _6O=new T(function(){var _6P=B(_6D(8,new T(function(){var _6Q=md5(toJSStr(E(_6N))),_6R=_6Q;return fromJSStr(_6R);})));return [0,_6P[1],_6P[2]];}),_6S=parseInt([0,toJSStr([1,_6L,[1,_6K,new T(function(){return E(E(_6O)[1]);})]])]),_6T=_6S,_6U=new T(function(){var _6V=B(_6D(8,new T(function(){return E(E(_6O)[2]);})));return [0,_6V[1],_6V[2]];}),_6W=parseInt([0,toJSStr([1,_6L,[1,_6K,new T(function(){return E(E(_6U)[1]);})]])]),_6X=_6W,_6Y=hs_mkWord64(_6T,_6X),_6Z=_6Y,_70=parseInt([0,toJSStr([1,_6L,[1,_6K,new T(function(){return E(B(_6D(8,new T(function(){return E(E(_6U)[2]);})))[1]);})]])]),_71=_70,_72=hs_mkWord64(_71,_71),_73=_72;return [0,_6Z,_73];},_74=function(_75,_76){var _77=E(_76);return _77[0]==0?[0]:[1,new T(function(){return B(A(_75,[_77[1]]));}),new T(function(){return B(_74(_75,_77[2]));})];},_78=function(_79,_7a){var _7b=jsShowI(_79),_7c=_7b,_7d=md5(_7c),_7e=_7d;return new F(function(){return _1W(fromJSStr(_7e),new T(function(){var _7f=jsShowI(_7a),_7g=_7f,_7h=md5(_7g),_7i=_7h;return fromJSStr(_7i);}));});},_7j=function(_7k){var _7l=E(_7k);return new F(function(){return _78(_7l[1],_7l[2]);});},_7m=function(_7n){var _7o=E(_7n);if(!_7o[0]){return [0];}else{var _7p=E(_7o[1]);return [1,[0,_7p[1],_7p[2]],new T(function(){return B(_7m(_7o[2]));})];}},_7q=new T(function(){return B(unCStr("Prelude.undefined"));}),_7r=new T(function(){return B(err(_7q));}),_7s=function(_7t,_7u){return function(_7v){return E(new T(function(){var _7w=B(A(_7t,[_7r])),_7x=E(_7w[3]),_7y=_7x[1],_7z=_7x[2],_7A=B(_1W(_7w[4],[1,new T(function(){return B(A(_7u,[_7r]));}),_h]));if(!_7A[0]){var _7B=[0,_7y,_7z,_7x,_h];}else{var _7C=B(_6M(new T(function(){return B(_6A(B(_74(_7j,[1,[0,_7y,_7z],new T(function(){return B(_7m(_7A));})]))));}))),_7B=[0,_7C[1],_7C[2],_7x,_7A];}var _7D=_7B,_7E=_7D;return _7E;}));};},_7F=new T(function(){return B(_7s(_6y,_6r));}),_7G=new T(function(){return B(unCStr("value"));}),_7H=new T(function(){return B(unCStr("onclick"));}),_7I=new T(function(){return B(unCStr("checked"));}),_7J=[0,_7I,_h],_7K=[1,_7J,_h],_7L=new T(function(){return B(unCStr("type"));}),_7M=new T(function(){return B(unCStr("input"));}),_7N=function(_7O,_){return new F(function(){return _4e(_7M,_7O,_);});},_7P=function(_7Q,_7R,_7S,_7T,_7U){var _7V=new T(function(){var _7W=new T(function(){return B(_Z(_7N,[1,[0,_7L,_7R],[1,[0,_G,_7Q],[1,[0,_7G,_7S],_h]]]));});return !E(_7T)?E(_7W):B(_Z(_7W,_7K));}),_7X=E(_7U);return _7X[0]==0?E(_7V):B(_Z(_7V,[1,[0,_7H,_7X[1]],_h]));},_7Y=new T(function(){return B(unCStr("href"));}),_7Z=[0,97],_80=[1,_7Z,_h],_81=function(_82,_){return new F(function(){return _4e(_80,_82,_);});},_83=function(_84,_85){return function(_86,_){var _87=B(A(new T(function(){return B(_Z(_81,[1,[0,_7Y,_84],_h]));}),[_86,_])),_88=_87,_89=B(A(_85,[_88,_])),_8a=_89;return _88;};},_8b=function(_8c){return new F(function(){return _83(_8c,function(_16,_){return new F(function(){return _5k(_8c,_16,_);});});});},_8d=new T(function(){return B(unCStr("option"));}),_8e=function(_8f,_){return new F(function(){return _4e(_8d,_8f,_);});},_8g=new T(function(){return B(unCStr("selected"));}),_8h=[0,_8g,_h],_8i=[1,_8h,_h],_8j=function(_8k,_8l,_8m){var _8n=function(_8o,_){var _8p=B(A(new T(function(){return B(_Z(_8e,[1,[0,_7G,_8k],_h]));}),[_8o,_])),_8q=_8p,_8r=B(A(_8l,[_8q,_])),_8s=_8r;return _8q;};return !E(_8m)?E(_8n):B(_Z(_8n,_8i));},_8t=function(_8u,_8v){return new F(function(){return _8j(_8u,function(_16,_){return new F(function(){return _5k(_8u,_16,_);});},_8v);});},_8w=new T(function(){return B(unCStr("method"));}),_8x=new T(function(){return B(unCStr("action"));}),_8y=new T(function(){return B(unCStr("UTF-8"));}),_8z=new T(function(){return B(unCStr("acceptCharset"));}),_8A=[0,_8z,_8y],_8B=new T(function(){return B(unCStr("form"));}),_8C=function(_8D,_){return new F(function(){return _4e(_8B,_8D,_);});},_8E=function(_8F,_8G,_8H){return function(_8I,_){var _8J=B(A(new T(function(){return B(_Z(_8C,[1,_8A,[1,[0,_8x,_8F],[1,[0,_8w,_8G],_h]]]));}),[_8I,_])),_8K=_8J,_8L=B(A(_8H,[_8K,_])),_8M=_8L;return _8K;};},_8N=new T(function(){return B(unCStr("select"));}),_8O=function(_8P,_){return new F(function(){return _4e(_8N,_8P,_);});},_8Q=function(_8R,_8S){return function(_8T,_){var _8U=B(A(new T(function(){return B(_Z(_8O,[1,[0,_G,_8R],_h]));}),[_8T,_])),_8V=_8U,_8W=B(A(_8S,[_8V,_])),_8X=_8W;return _8V;};},_8Y=new T(function(){return B(unCStr("textarea"));}),_8Z=function(_90,_){return new F(function(){return _4e(_8Y,_90,_);});},_91=function(_92,_93){return function(_94,_){var _95=B(A(new T(function(){return B(_Z(_8Z,[1,[0,_G,_92],_h]));}),[_94,_])),_96=_95,_97=B(_5k(_93,_96,_)),_98=_97;return _96;};},_99=new T(function(){return B(unCStr("color:red"));}),_9a=new T(function(){return B(unCStr("style"));}),_9b=[0,_9a,_99],_9c=[1,_9b,_h],_9d=[0,98],_9e=[1,_9d,_h],_9f=function(_9g){return new F(function(){return _Z(function(_9h,_){var _9i=B(_4e(_9e,_9h,_)),_9j=_9i,_9k=B(A(_9g,[_9j,_])),_9l=_9k;return _9j;},_9c);});},_9m=function(_9n,_9o,_){var _9p=E(_9n);if(!_9p[0]){return _9o;}else{var _9q=B(A(_9p[1],[_9o,_])),_9r=_9q,_9s=B(_9m(_9p[2],_9o,_)),_9t=_9s;return _9o;}},_9u=function(_9v,_9w,_9x,_){var _9y=B(A(_9v,[_9x,_])),_9z=_9y,_9A=B(A(_9w,[_9x,_])),_9B=_9A;return _9x;},_9C=[0,_3d,_9u,_9m],_9D=[0,_9C,_7F,_5k,_5k,_6e,_9f,_83,_8b,_7P,_91,_8Q,_8j,_8t,_8E,_Z],_9E=function(_9F,_9G,_){var _9H=B(A(_9G,[_])),_9I=_9H;return _9F;},_9J=function(_9K,_9L,_){var _9M=B(A(_9L,[_])),_9N=_9M;return new T(function(){return B(A(_9K,[_9N]));});},_9O=[0,_9J,_9E],_9P=function(_9Q){var _9R=E(_9Q);return _9R[0]==0?0:E(_9R[1])[1]+B(_9P(_9R[2]))|0;},_9S=function(_9T){return [0,B(_9P(_9T))];},_9U=function(_9V,_9W){return [0,E(_9V)[1]+E(_9W)[1]|0];},_9X=[0,_69,_9U,_9S],_9Y=function(_9Z,_a0){var _a1=E(_a0);return _a1[0]==0?[0]:[1,new T(function(){return B(A(_9Z,[_a1[1]]));})];},_a2=function(_a3){return E(E(_a3)[1]);},_a4=function(_a5){return E(E(_a5)[2]);},_a6=function(_a7,_a8,_a9,_aa,_ab,_ac){return new F(function(){return A(_a8,[new T(function(){return B(A(_aa,[_ac]));}),function(_ad){var _ae=E(_ad),_af=E(_ae[1]);return new F(function(){return A(_a8,[new T(function(){return B(A(_ab,[_ae[2]]));}),function(_ag){var _ah=E(_ag),_ai=E(_ah[1]);return new F(function(){return A(_a9,[[0,[0,new T(function(){return B(A(new T(function(){return B(_a4(_a7));}),[_af[1],_ai[1]]));}),new T(function(){var _aj=E(_af[2]);if(!_aj[0]){var _ak=[0];}else{var _al=E(_ai[2]),_ak=_al[0]==0?[0]:[1,new T(function(){return B(A(_aj[1],[_al[1]]));})];}return _ak;})],_ah[2]]]);});}]);});}]);});},_am=function(_an){return E(E(_an)[1]);},_ao=function(_ap,_aq,_ar,_as,_at,_au){return function(_av){var _aw=E(_aq);return new F(function(){return _a6(new T(function(){return B(_a2(_ap));}),_aw[1],_aw[3],function(_ax){return new F(function(){return A(new T(function(){return B(A(_am,[_ar,function(_ay){return [0,new T(function(){var _az=E(E(_ay)[1]);return [0,_az[1],new T(function(){return B(_9Y(new T(function(){return B(_a4(_as));}),_az[2]));})];}),new T(function(){return E(E(_ay)[2]);})];}]));}),[new T(function(){return B(A(_at,[_ax]));})]);});},_au,_av);});};},_aA=function(_aB,_aC){while(1){var _aD=(function(_aE,_aF){var _aG=E(_aF);if(!_aG[0]){return E(_aE);}else{_aB=new T(function(){return B(_ao(_9D,_3f,_9O,_9X,_aE,_aG[1]));});_aC=_aG[2];return null;}})(_aB,_aC);if(_aD!=null){return _aD;}}},_aH=[13,_],_aI=new T(function(){return B(unCStr("text"));}),_aJ=[0,_3f,_O],_aK=new T(function(){return B(unCStr("base"));}),_aL=new T(function(){return B(unCStr("Control.Exception.Base"));}),_aM=new T(function(){return B(unCStr("PatternMatchFail"));}),_aN=[0,I_fromBits([18445595,3739165398]),I_fromBits([52003073,3246954884]),_aK,_aL,_aM],_aO=[0,I_fromBits([18445595,3739165398]),I_fromBits([52003073,3246954884]),_aN,_h],_aP=function(_aQ){return E(_aO);},_aR=function(_aS){var _aT=E(_aS);return new F(function(){return _1B(B(_1x(_aT[1])),_aP,_aT[2]);});},_aU=function(_aV){return E(E(_aV)[1]);},_aW=function(_aX,_aY){return new F(function(){return _1W(E(_aX)[1],_aY);});},_aZ=function(_b0,_b1){return new F(function(){return _2M(_aW,_b0,_b1);});},_b2=function(_b3,_b4,_b5){return new F(function(){return _1W(E(_b4)[1],_b5);});},_b6=[0,_b2,_aU,_aZ],_b7=new T(function(){return [0,_aP,_b6,_b8,_aR];}),_b8=function(_b9){return [0,_b7,_b9];},_ba=new T(function(){return B(unCStr("Non-exhaustive patterns in"));}),_bb=function(_bc,_bd){return new F(function(){return die(new T(function(){return B(A(_bd,[_bc]));}));});},_be=function(_bf,_bg){var _bh=E(_bg);if(!_bh[0]){return [0,_h,_h];}else{var _bi=_bh[1];if(!B(A(_bf,[_bi]))){return [0,_h,_bh];}else{var _bj=new T(function(){var _bk=B(_be(_bf,_bh[2]));return [0,_bk[1],_bk[2]];});return [0,[1,_bi,new T(function(){return E(E(_bj)[1]);})],new T(function(){return E(E(_bj)[2]);})];}}},_bl=[0,32],_bm=[0,10],_bn=[1,_bm,_h],_bo=function(_bp){return E(E(_bp)[1])==124?false:true;},_bq=function(_br,_bs){var _bt=B(_be(_bo,B(unCStr(_br)))),_bu=_bt[1],_bv=function(_bw,_bx){return new F(function(){return _1W(_bw,new T(function(){return B(unAppCStr(": ",new T(function(){return B(_1W(_bs,new T(function(){return B(_1W(_bx,_bn));})));})));}));});},_by=E(_bt[2]);if(!_by[0]){return new F(function(){return _bv(_bu,_h);});}else{return E(E(_by[1])[1])==124?B(_bv(_bu,[1,_bl,_by[2]])):B(_bv(_bu,_h));}},_bz=function(_bA){return new F(function(){return _bb([0,new T(function(){return B(_bq(_bA,_ba));})],_b8);});},_bB=new T(function(){return B(_bz("Text\\ParserCombinators\\ReadP.hs:(134,3)-(157,60)|function mplus"));}),_bC=function(_bD,_bE){while(1){var _bF=(function(_bG,_bH){var _bI=E(_bG);switch(_bI[0]){case 0:var _bJ=E(_bH);if(!_bJ[0]){return [0];}else{_bD=B(A(_bI[1],[_bJ[1]]));_bE=_bJ[2];return null;}break;case 1:var _bK=B(A(_bI[1],[_bH])),_bL=_bH;_bD=_bK;_bE=_bL;return null;case 2:return [0];case 3:return [1,[0,_bI[1],_bH],new T(function(){return B(_bC(_bI[2],_bH));})];default:return E(_bI[1]);}})(_bD,_bE);if(_bF!=null){return _bF;}}},_bM=function(_bN,_bO){var _bP=new T(function(){var _bQ=E(_bO);if(_bQ[0]==3){var _bR=[3,_bQ[1],new T(function(){return B(_bM(_bN,_bQ[2]));})];}else{var _bS=E(_bN);if(_bS[0]==2){var _bT=E(_bQ);}else{var _bU=E(_bQ);if(_bU[0]==2){var _bV=E(_bS);}else{var _bW=new T(function(){var _bX=E(_bU);if(_bX[0]==4){var _bY=[1,function(_bZ){return [4,new T(function(){return B(_1W(B(_bC(_bS,_bZ)),_bX[1]));})];}];}else{var _c0=E(_bS);if(_c0[0]==1){var _c1=_c0[1],_c2=E(_bX);if(!_c2[0]){var _c3=[1,function(_c4){return new F(function(){return _bM(B(A(_c1,[_c4])),_c2);});}];}else{var _c3=[1,function(_c5){return new F(function(){return _bM(B(A(_c1,[_c5])),new T(function(){return B(A(_c2[1],[_c5]));}));});}];}var _c6=_c3;}else{var _c7=E(_bX);if(!_c7[0]){var _c8=E(_bB);}else{var _c8=[1,function(_c9){return new F(function(){return _bM(_c0,new T(function(){return B(A(_c7[1],[_c9]));}));});}];}var _c6=_c8;}var _bY=_c6;}return _bY;}),_ca=E(_bS);switch(_ca[0]){case 1:var _cb=E(_bU);if(_cb[0]==4){var _cc=[1,function(_cd){return [4,new T(function(){return B(_1W(B(_bC(B(A(_ca[1],[_cd])),_cd)),_cb[1]));})];}];}else{var _cc=E(_bW);}var _ce=_cc;break;case 4:var _cf=_ca[1],_cg=E(_bU);switch(_cg[0]){case 0:var _ch=[1,function(_ci){return [4,new T(function(){return B(_1W(_cf,new T(function(){return B(_bC(_cg,_ci));})));})];}];break;case 1:var _ch=[1,function(_cj){return [4,new T(function(){return B(_1W(_cf,new T(function(){return B(_bC(B(A(_cg[1],[_cj])),_cj));})));})];}];break;default:var _ch=[4,new T(function(){return B(_1W(_cf,_cg[1]));})];}var _ce=_ch;break;default:var _ce=E(_bW);}var _bV=_ce;}var _bT=_bV;}var _bR=_bT;}return _bR;}),_ck=E(_bN);switch(_ck[0]){case 0:var _cl=E(_bO);return _cl[0]==0?[0,function(_cm){return new F(function(){return _bM(B(A(_ck[1],[_cm])),new T(function(){return B(A(_cl[1],[_cm]));}));});}]:E(_bP);case 3:return [3,_ck[1],new T(function(){return B(_bM(_ck[2],_bO));})];default:return E(_bP);}},_cn=function(_co,_cp){return E(_co)[1]!=E(_cp)[1];},_cq=function(_cr,_cs){return E(_cr)[1]==E(_cs)[1];},_ct=[0,_cq,_cn],_cu=function(_cv){return E(E(_cv)[1]);},_cw=function(_cx,_cy,_cz){while(1){var _cA=E(_cy);if(!_cA[0]){return E(_cz)[0]==0?true:false;}else{var _cB=E(_cz);if(!_cB[0]){return false;}else{if(!B(A(_cu,[_cx,_cA[1],_cB[1]]))){return false;}else{_cy=_cA[2];_cz=_cB[2];continue;}}}}},_cC=function(_cD,_cE,_cF){return !B(_cw(_cD,_cE,_cF))?true:false;},_cG=function(_cH){return [0,function(_cI,_cJ){return new F(function(){return _cw(_cH,_cI,_cJ);});},function(_cI,_cJ){return new F(function(){return _cC(_cH,_cI,_cJ);});}];},_cK=new T(function(){return B(_cG(_ct));}),_cL=function(_cM,_cN){var _cO=E(_cM);switch(_cO[0]){case 0:return [0,function(_cP){return new F(function(){return _cL(B(A(_cO[1],[_cP])),_cN);});}];case 1:return [1,function(_cQ){return new F(function(){return _cL(B(A(_cO[1],[_cQ])),_cN);});}];case 2:return [2];case 3:return new F(function(){return _bM(B(A(_cN,[_cO[1]])),new T(function(){return B(_cL(_cO[2],_cN));}));});break;default:var _cR=function(_cS){var _cT=E(_cS);if(!_cT[0]){return [0];}else{var _cU=E(_cT[1]);return new F(function(){return _1W(B(_bC(B(A(_cN,[_cU[1]])),_cU[2])),new T(function(){return B(_cR(_cT[2]));}));});}},_cV=B(_cR(_cO[1]));return _cV[0]==0?[2]:[4,_cV];}},_cW=[2],_cX=function(_cY){return [3,_cY,_cW];},_cZ=function(_d0,_d1){var _d2=E(_d0);if(!_d2){return new F(function(){return A(_d1,[_H]);});}else{return [0,function(_d3){return E(new T(function(){return B(_cZ(_d2-1|0,_d1));}));}];}},_d4=function(_d5,_d6,_d7){return [1,function(_d8){return new F(function(){return A(function(_d9,_da,_db){while(1){var _dc=(function(_dd,_de,_df){var _dg=E(_dd);switch(_dg[0]){case 0:var _dh=E(_de);if(!_dh[0]){return E(_d6);}else{_d9=B(A(_dg[1],[_dh[1]]));_da=_dh[2];var _di=_df+1|0;_db=_di;return null;}break;case 1:var _dj=B(A(_dg[1],[_de])),_dk=_de,_di=_df;_d9=_dj;_da=_dk;_db=_di;return null;case 2:return E(_d6);case 3:return function(_dl){return new F(function(){return _cZ(_df,function(_dm){return E(new T(function(){return B(_cL(_dg,_dl));}));});});};default:return function(_dn){return new F(function(){return _cL(_dg,_dn);});};}})(_d9,_da,_db);if(_dc!=null){return _dc;}}},[new T(function(){return B(A(_d5,[_cX]));}),_d8,0,_d7]);});}];},_do=[6],_dp=new T(function(){return B(unCStr("valDig: Bad base"));}),_dq=new T(function(){return B(err(_dp));}),_dr=function(_ds,_dt){var _du=function(_dv,_dw){var _dx=E(_dv);if(!_dx[0]){return function(_dy){return new F(function(){return A(_dy,[new T(function(){return B(A(_dw,[_h]));})]);});};}else{var _dz=E(_dx[1])[1],_dA=function(_dB){return function(_dC){return [0,function(_dD){return E(new T(function(){return B(A(new T(function(){return B(_du(_dx[2],function(_dE){return new F(function(){return A(_dw,[[1,_dB,_dE]]);});}));}),[_dC]));}));}];};};switch(E(E(_ds)[1])){case 8:if(48>_dz){return function(_dF){return new F(function(){return A(_dF,[new T(function(){return B(A(_dw,[_h]));})]);});};}else{if(_dz>55){return function(_dG){return new F(function(){return A(_dG,[new T(function(){return B(A(_dw,[_h]));})]);});};}else{return new F(function(){return _dA([0,_dz-48|0]);});}}break;case 10:if(48>_dz){return function(_dH){return new F(function(){return A(_dH,[new T(function(){return B(A(_dw,[_h]));})]);});};}else{if(_dz>57){return function(_dI){return new F(function(){return A(_dI,[new T(function(){return B(A(_dw,[_h]));})]);});};}else{return new F(function(){return _dA([0,_dz-48|0]);});}}break;case 16:var _dJ=new T(function(){if(97>_dz){if(65>_dz){var _dK=[0];}else{if(_dz>70){var _dL=[0];}else{var _dL=[1,[0,(_dz-65|0)+10|0]];}var _dK=_dL;}var _dM=_dK;}else{if(_dz>102){if(65>_dz){var _dN=[0];}else{if(_dz>70){var _dO=[0];}else{var _dO=[1,[0,(_dz-65|0)+10|0]];}var _dN=_dO;}var _dP=_dN;}else{var _dP=[1,[0,(_dz-97|0)+10|0]];}var _dM=_dP;}return _dM;});if(48>_dz){var _dQ=E(_dJ);if(!_dQ[0]){return function(_dR){return new F(function(){return A(_dR,[new T(function(){return B(A(_dw,[_h]));})]);});};}else{return new F(function(){return _dA(_dQ[1]);});}}else{if(_dz>57){var _dS=E(_dJ);if(!_dS[0]){return function(_dT){return new F(function(){return A(_dT,[new T(function(){return B(A(_dw,[_h]));})]);});};}else{return new F(function(){return _dA(_dS[1]);});}}else{return new F(function(){return _dA([0,_dz-48|0]);});}}break;default:return E(_dq);}}};return [1,function(_dU){return new F(function(){return A(_du,[_dU,_O,function(_dV){var _dW=E(_dV);return _dW[0]==0?[2]:B(A(_dt,[_dW]));}]);});}];},_dX=[0,10],_dY=[0,1],_dZ=[0,2147483647],_e0=function(_e1,_e2){while(1){var _e3=E(_e1);if(!_e3[0]){var _e4=_e3[1],_e5=E(_e2);if(!_e5[0]){var _e6=_e5[1],_e7=addC(_e4,_e6);if(!E(_e7[2])){return [0,_e7[1]];}else{_e1=[1,I_fromInt(_e4)];_e2=[1,I_fromInt(_e6)];continue;}}else{_e1=[1,I_fromInt(_e4)];_e2=_e5;continue;}}else{var _e8=E(_e2);if(!_e8[0]){_e1=_e3;_e2=[1,I_fromInt(_e8[1])];continue;}else{return [1,I_add(_e3[1],_e8[1])];}}}},_e9=new T(function(){return B(_e0(_dZ,_dY));}),_ea=function(_eb){var _ec=E(_eb);if(!_ec[0]){var _ed=E(_ec[1]);return _ed==(-2147483648)?E(_e9):[0, -_ed];}else{return [1,I_negate(_ec[1])];}},_ee=[0,10],_ef=[0,0],_eg=function(_eh){return [0,_eh];},_ei=function(_ej,_ek){while(1){var _el=E(_ej);if(!_el[0]){var _em=_el[1],_en=E(_ek);if(!_en[0]){var _eo=_en[1];if(!(imul(_em,_eo)|0)){return [0,imul(_em,_eo)|0];}else{_ej=[1,I_fromInt(_em)];_ek=[1,I_fromInt(_eo)];continue;}}else{_ej=[1,I_fromInt(_em)];_ek=_en;continue;}}else{var _ep=E(_ek);if(!_ep[0]){_ej=_el;_ek=[1,I_fromInt(_ep[1])];continue;}else{return [1,I_mul(_el[1],_ep[1])];}}}},_eq=function(_er,_es,_et){while(1){var _eu=E(_et);if(!_eu[0]){return E(_es);}else{var _ev=B(_e0(B(_ei(_es,_er)),B(_eg(E(_eu[1])[1]))));_et=_eu[2];_es=_ev;continue;}}},_ew=function(_ex){var _ey=new T(function(){return B(_bM(B(_bM([0,function(_ez){if(E(E(_ez)[1])==45){return new F(function(){return _dr(_dX,function(_eA){return new F(function(){return A(_ex,[[1,new T(function(){return B(_ea(B(_eq(_ee,_ef,_eA))));})]]);});});});}else{return [2];}}],[0,function(_eB){if(E(E(_eB)[1])==43){return new F(function(){return _dr(_dX,function(_eC){return new F(function(){return A(_ex,[[1,new T(function(){return B(_eq(_ee,_ef,_eC));})]]);});});});}else{return [2];}}])),new T(function(){return B(_dr(_dX,function(_eD){return new F(function(){return A(_ex,[[1,new T(function(){return B(_eq(_ee,_ef,_eD));})]]);});}));})));});return new F(function(){return _bM([0,function(_eE){return E(E(_eE)[1])==101?E(_ey):[2];}],[0,function(_eF){return E(E(_eF)[1])==69?E(_ey):[2];}]);});},_eG=function(_eH){return new F(function(){return A(_eH,[_a]);});},_eI=function(_eJ){return new F(function(){return A(_eJ,[_a]);});},_eK=function(_eL){return [0,function(_eM){return E(E(_eM)[1])==46?E(new T(function(){return B(_dr(_dX,function(_eN){return new F(function(){return A(_eL,[[1,_eN]]);});}));})):[2];}];},_eO=function(_eP){return new F(function(){return _dr(_dX,function(_eQ){return new F(function(){return _d4(_eK,_eG,function(_eR){return new F(function(){return _d4(_ew,_eI,function(_eS){return new F(function(){return A(_eP,[[5,[1,_eQ,_eR,_eS]]]);});});});});});});});},_eT=function(_eU,_eV,_eW){while(1){var _eX=E(_eW);if(!_eX[0]){return false;}else{if(!B(A(_cu,[_eU,_eV,_eX[1]]))){_eW=_eX[2];continue;}else{return true;}}}},_eY=new T(function(){return B(unCStr("!@#$%&*+./<=>?\\^|:-~"));}),_eZ=function(_f0){return new F(function(){return _eT(_ct,_f0,_eY);});},_f1=[0,8],_f2=[0,16],_f3=function(_f4){return [0,function(_f5){return E(E(_f5)[1])==48?E([0,function(_f6){switch(E(E(_f6)[1])){case 79:return E(new T(function(){return B(_dr(_f1,function(_f7){return new F(function(){return A(_f4,[[5,[0,_f1,_f7]]]);});}));}));case 88:return E(new T(function(){return B(_dr(_f2,function(_f8){return new F(function(){return A(_f4,[[5,[0,_f2,_f8]]]);});}));}));case 111:return E(new T(function(){return B(_dr(_f1,function(_f9){return new F(function(){return A(_f4,[[5,[0,_f1,_f9]]]);});}));}));case 120:return E(new T(function(){return B(_dr(_f2,function(_fa){return new F(function(){return A(_f4,[[5,[0,_f2,_fa]]]);});}));}));default:return [2];}}]):[2];}];},_fb=true,_fc=function(_fd){return [0,function(_fe){switch(E(E(_fe)[1])){case 79:return E(new T(function(){return B(A(_fd,[_f1]));}));case 88:return E(new T(function(){return B(A(_fd,[_f2]));}));case 111:return E(new T(function(){return B(A(_fd,[_f1]));}));case 120:return E(new T(function(){return B(A(_fd,[_f2]));}));default:return [2];}}];},_ff=function(_fg){return new F(function(){return A(_fg,[_dX]);});},_fh=function(_fi){return new F(function(){return err(B(unAppCStr("Prelude.chr: bad argument: ",new T(function(){return B(_3U(9,_fi,_h));}))));});},_fj=function(_fk){var _fl=E(_fk);return _fl[0]==0?E(_fl[1]):I_toInt(_fl[1]);},_fm=function(_fn,_fo){var _fp=E(_fn);if(!_fp[0]){var _fq=_fp[1],_fr=E(_fo);return _fr[0]==0?_fq<=_fr[1]:I_compareInt(_fr[1],_fq)>=0;}else{var _fs=_fp[1],_ft=E(_fo);return _ft[0]==0?I_compareInt(_fs,_ft[1])<=0:I_compare(_fs,_ft[1])<=0;}},_fu=function(_fv){return [2];},_fw=function(_fx){var _fy=E(_fx);if(!_fy[0]){return E(_fu);}else{var _fz=_fy[1],_fA=E(_fy[2]);return _fA[0]==0?E(_fz):function(_fB){return new F(function(){return _bM(B(A(_fz,[_fB])),new T(function(){return B(A(new T(function(){return B(_fw(_fA));}),[_fB]));}));});};}},_fC=new T(function(){return B(unCStr("NUL"));}),_fD=function(_fE){return [2];},_fF=function(_fG){return new F(function(){return _fD(_fG);});},_fH=function(_fI,_fJ){var _fK=function(_fL,_fM){var _fN=E(_fL);if(!_fN[0]){return function(_fO){return new F(function(){return A(_fO,[_fI]);});};}else{var _fP=E(_fM);return _fP[0]==0?E(_fD):E(_fN[1])[1]!=E(_fP[1])[1]?E(_fF):function(_fQ){return [0,function(_fR){return E(new T(function(){return B(A(new T(function(){return B(_fK(_fN[2],_fP[2]));}),[_fQ]));}));}];};}};return [1,function(_fS){return new F(function(){return A(_fK,[_fI,_fS,_fJ]);});}];},_fT=[0,0],_fU=function(_fV){return new F(function(){return _fH(_fC,function(_fW){return E(new T(function(){return B(A(_fV,[_fT]));}));});});},_fX=new T(function(){return B(unCStr("STX"));}),_fY=[0,2],_fZ=function(_g0){return new F(function(){return _fH(_fX,function(_g1){return E(new T(function(){return B(A(_g0,[_fY]));}));});});},_g2=new T(function(){return B(unCStr("ETX"));}),_g3=[0,3],_g4=function(_g5){return new F(function(){return _fH(_g2,function(_g6){return E(new T(function(){return B(A(_g5,[_g3]));}));});});},_g7=new T(function(){return B(unCStr("EOT"));}),_g8=[0,4],_g9=function(_ga){return new F(function(){return _fH(_g7,function(_gb){return E(new T(function(){return B(A(_ga,[_g8]));}));});});},_gc=new T(function(){return B(unCStr("ENQ"));}),_gd=[0,5],_ge=function(_gf){return new F(function(){return _fH(_gc,function(_gg){return E(new T(function(){return B(A(_gf,[_gd]));}));});});},_gh=new T(function(){return B(unCStr("ACK"));}),_gi=[0,6],_gj=function(_gk){return new F(function(){return _fH(_gh,function(_gl){return E(new T(function(){return B(A(_gk,[_gi]));}));});});},_gm=new T(function(){return B(unCStr("BEL"));}),_gn=[0,7],_go=function(_gp){return new F(function(){return _fH(_gm,function(_gq){return E(new T(function(){return B(A(_gp,[_gn]));}));});});},_gr=new T(function(){return B(unCStr("BS"));}),_gs=[0,8],_gt=function(_gu){return new F(function(){return _fH(_gr,function(_gv){return E(new T(function(){return B(A(_gu,[_gs]));}));});});},_gw=new T(function(){return B(unCStr("HT"));}),_gx=[0,9],_gy=function(_gz){return new F(function(){return _fH(_gw,function(_gA){return E(new T(function(){return B(A(_gz,[_gx]));}));});});},_gB=new T(function(){return B(unCStr("LF"));}),_gC=[0,10],_gD=function(_gE){return new F(function(){return _fH(_gB,function(_gF){return E(new T(function(){return B(A(_gE,[_gC]));}));});});},_gG=new T(function(){return B(unCStr("VT"));}),_gH=[0,11],_gI=function(_gJ){return new F(function(){return _fH(_gG,function(_gK){return E(new T(function(){return B(A(_gJ,[_gH]));}));});});},_gL=new T(function(){return B(unCStr("FF"));}),_gM=[0,12],_gN=function(_gO){return new F(function(){return _fH(_gL,function(_gP){return E(new T(function(){return B(A(_gO,[_gM]));}));});});},_gQ=new T(function(){return B(unCStr("CR"));}),_gR=[0,13],_gS=function(_gT){return new F(function(){return _fH(_gQ,function(_gU){return E(new T(function(){return B(A(_gT,[_gR]));}));});});},_gV=new T(function(){return B(unCStr("SI"));}),_gW=[0,15],_gX=function(_gY){return new F(function(){return _fH(_gV,function(_gZ){return E(new T(function(){return B(A(_gY,[_gW]));}));});});},_h0=new T(function(){return B(unCStr("DLE"));}),_h1=[0,16],_h2=function(_h3){return new F(function(){return _fH(_h0,function(_h4){return E(new T(function(){return B(A(_h3,[_h1]));}));});});},_h5=new T(function(){return B(unCStr("DC1"));}),_h6=[0,17],_h7=function(_h8){return new F(function(){return _fH(_h5,function(_h9){return E(new T(function(){return B(A(_h8,[_h6]));}));});});},_ha=new T(function(){return B(unCStr("DC2"));}),_hb=[0,18],_hc=function(_hd){return new F(function(){return _fH(_ha,function(_he){return E(new T(function(){return B(A(_hd,[_hb]));}));});});},_hf=new T(function(){return B(unCStr("DC3"));}),_hg=[0,19],_hh=function(_hi){return new F(function(){return _fH(_hf,function(_hj){return E(new T(function(){return B(A(_hi,[_hg]));}));});});},_hk=new T(function(){return B(unCStr("DC4"));}),_hl=[0,20],_hm=function(_hn){return new F(function(){return _fH(_hk,function(_ho){return E(new T(function(){return B(A(_hn,[_hl]));}));});});},_hp=new T(function(){return B(unCStr("NAK"));}),_hq=[0,21],_hr=function(_hs){return new F(function(){return _fH(_hp,function(_ht){return E(new T(function(){return B(A(_hs,[_hq]));}));});});},_hu=new T(function(){return B(unCStr("SYN"));}),_hv=[0,22],_hw=function(_hx){return new F(function(){return _fH(_hu,function(_hy){return E(new T(function(){return B(A(_hx,[_hv]));}));});});},_hz=new T(function(){return B(unCStr("ETB"));}),_hA=[0,23],_hB=function(_hC){return new F(function(){return _fH(_hz,function(_hD){return E(new T(function(){return B(A(_hC,[_hA]));}));});});},_hE=new T(function(){return B(unCStr("CAN"));}),_hF=[0,24],_hG=function(_hH){return new F(function(){return _fH(_hE,function(_hI){return E(new T(function(){return B(A(_hH,[_hF]));}));});});},_hJ=new T(function(){return B(unCStr("EM"));}),_hK=[0,25],_hL=function(_hM){return new F(function(){return _fH(_hJ,function(_hN){return E(new T(function(){return B(A(_hM,[_hK]));}));});});},_hO=new T(function(){return B(unCStr("SUB"));}),_hP=[0,26],_hQ=function(_hR){return new F(function(){return _fH(_hO,function(_hS){return E(new T(function(){return B(A(_hR,[_hP]));}));});});},_hT=new T(function(){return B(unCStr("ESC"));}),_hU=[0,27],_hV=function(_hW){return new F(function(){return _fH(_hT,function(_hX){return E(new T(function(){return B(A(_hW,[_hU]));}));});});},_hY=new T(function(){return B(unCStr("FS"));}),_hZ=[0,28],_i0=function(_i1){return new F(function(){return _fH(_hY,function(_i2){return E(new T(function(){return B(A(_i1,[_hZ]));}));});});},_i3=new T(function(){return B(unCStr("GS"));}),_i4=[0,29],_i5=function(_i6){return new F(function(){return _fH(_i3,function(_i7){return E(new T(function(){return B(A(_i6,[_i4]));}));});});},_i8=new T(function(){return B(unCStr("RS"));}),_i9=[0,30],_ia=function(_ib){return new F(function(){return _fH(_i8,function(_ic){return E(new T(function(){return B(A(_ib,[_i9]));}));});});},_id=new T(function(){return B(unCStr("US"));}),_ie=[0,31],_if=function(_ig){return new F(function(){return _fH(_id,function(_ih){return E(new T(function(){return B(A(_ig,[_ie]));}));});});},_ii=new T(function(){return B(unCStr("SP"));}),_ij=[0,32],_ik=function(_il){return new F(function(){return _fH(_ii,function(_im){return E(new T(function(){return B(A(_il,[_ij]));}));});});},_in=new T(function(){return B(unCStr("DEL"));}),_io=[0,127],_ip=function(_iq){return new F(function(){return _fH(_in,function(_ir){return E(new T(function(){return B(A(_iq,[_io]));}));});});},_is=[1,_ip,_h],_it=[1,_ik,_is],_iu=[1,_if,_it],_iv=[1,_ia,_iu],_iw=[1,_i5,_iv],_ix=[1,_i0,_iw],_iy=[1,_hV,_ix],_iz=[1,_hQ,_iy],_iA=[1,_hL,_iz],_iB=[1,_hG,_iA],_iC=[1,_hB,_iB],_iD=[1,_hw,_iC],_iE=[1,_hr,_iD],_iF=[1,_hm,_iE],_iG=[1,_hh,_iF],_iH=[1,_hc,_iG],_iI=[1,_h7,_iH],_iJ=[1,_h2,_iI],_iK=[1,_gX,_iJ],_iL=[1,_gS,_iK],_iM=[1,_gN,_iL],_iN=[1,_gI,_iM],_iO=[1,_gD,_iN],_iP=[1,_gy,_iO],_iQ=[1,_gt,_iP],_iR=[1,_go,_iQ],_iS=[1,_gj,_iR],_iT=[1,_ge,_iS],_iU=[1,_g9,_iT],_iV=[1,_g4,_iU],_iW=[1,_fZ,_iV],_iX=[1,_fU,_iW],_iY=new T(function(){return B(unCStr("SOH"));}),_iZ=[0,1],_j0=function(_j1){return new F(function(){return _fH(_iY,function(_j2){return E(new T(function(){return B(A(_j1,[_iZ]));}));});});},_j3=new T(function(){return B(unCStr("SO"));}),_j4=[0,14],_j5=function(_j6){return new F(function(){return _fH(_j3,function(_j7){return E(new T(function(){return B(A(_j6,[_j4]));}));});});},_j8=function(_j9){return new F(function(){return _d4(_j0,_j5,_j9);});},_ja=[1,_j8,_iX],_jb=new T(function(){return B(_fw(_ja));}),_jc=[0,1114111],_jd=[0,34],_je=[0,_jd,_fb],_jf=[0,39],_jg=[0,_jf,_fb],_jh=[0,92],_ji=[0,_jh,_fb],_jj=[0,_gn,_fb],_jk=[0,_gs,_fb],_jl=[0,_gM,_fb],_jm=[0,_gC,_fb],_jn=[0,_gR,_fb],_jo=[0,_gx,_fb],_jp=[0,_gH,_fb],_jq=[0,_fT,_fb],_jr=[0,_iZ,_fb],_js=[0,_fY,_fb],_jt=[0,_g3,_fb],_ju=[0,_g8,_fb],_jv=[0,_gd,_fb],_jw=[0,_gi,_fb],_jx=[0,_gn,_fb],_jy=[0,_gs,_fb],_jz=[0,_gx,_fb],_jA=[0,_gC,_fb],_jB=[0,_gH,_fb],_jC=[0,_gM,_fb],_jD=[0,_gR,_fb],_jE=[0,_j4,_fb],_jF=[0,_gW,_fb],_jG=[0,_h1,_fb],_jH=[0,_h6,_fb],_jI=[0,_hb,_fb],_jJ=[0,_hg,_fb],_jK=[0,_hl,_fb],_jL=[0,_hq,_fb],_jM=[0,_hv,_fb],_jN=[0,_hA,_fb],_jO=[0,_hF,_fb],_jP=[0,_hK,_fb],_jQ=[0,_hP,_fb],_jR=[0,_hU,_fb],_jS=[0,_hZ,_fb],_jT=[0,_i4,_fb],_jU=[0,_i9,_fb],_jV=[0,_ie,_fb],_jW=function(_jX){return new F(function(){return _bM([0,function(_jY){switch(E(E(_jY)[1])){case 34:return E(new T(function(){return B(A(_jX,[_je]));}));case 39:return E(new T(function(){return B(A(_jX,[_jg]));}));case 92:return E(new T(function(){return B(A(_jX,[_ji]));}));case 97:return E(new T(function(){return B(A(_jX,[_jj]));}));case 98:return E(new T(function(){return B(A(_jX,[_jk]));}));case 102:return E(new T(function(){return B(A(_jX,[_jl]));}));case 110:return E(new T(function(){return B(A(_jX,[_jm]));}));case 114:return E(new T(function(){return B(A(_jX,[_jn]));}));case 116:return E(new T(function(){return B(A(_jX,[_jo]));}));case 118:return E(new T(function(){return B(A(_jX,[_jp]));}));default:return [2];}}],new T(function(){return B(_bM(B(_d4(_fc,_ff,function(_jZ){return new F(function(){return _dr(_jZ,function(_k0){var _k1=B(_eq(new T(function(){return B(_eg(E(_jZ)[1]));}),_ef,_k0));return !B(_fm(_k1,_jc))?[2]:B(A(_jX,[[0,new T(function(){var _k2=B(_fj(_k1));if(_k2>>>0>1114111){var _k3=B(_fh(_k2));}else{var _k3=[0,_k2];}var _k4=_k3,_k5=_k4;return _k5;}),_fb]]));});});})),new T(function(){return B(_bM([0,function(_k6){return E(E(_k6)[1])==94?E([0,function(_k7){switch(E(E(_k7)[1])){case 64:return E(new T(function(){return B(A(_jX,[_jq]));}));case 65:return E(new T(function(){return B(A(_jX,[_jr]));}));case 66:return E(new T(function(){return B(A(_jX,[_js]));}));case 67:return E(new T(function(){return B(A(_jX,[_jt]));}));case 68:return E(new T(function(){return B(A(_jX,[_ju]));}));case 69:return E(new T(function(){return B(A(_jX,[_jv]));}));case 70:return E(new T(function(){return B(A(_jX,[_jw]));}));case 71:return E(new T(function(){return B(A(_jX,[_jx]));}));case 72:return E(new T(function(){return B(A(_jX,[_jy]));}));case 73:return E(new T(function(){return B(A(_jX,[_jz]));}));case 74:return E(new T(function(){return B(A(_jX,[_jA]));}));case 75:return E(new T(function(){return B(A(_jX,[_jB]));}));case 76:return E(new T(function(){return B(A(_jX,[_jC]));}));case 77:return E(new T(function(){return B(A(_jX,[_jD]));}));case 78:return E(new T(function(){return B(A(_jX,[_jE]));}));case 79:return E(new T(function(){return B(A(_jX,[_jF]));}));case 80:return E(new T(function(){return B(A(_jX,[_jG]));}));case 81:return E(new T(function(){return B(A(_jX,[_jH]));}));case 82:return E(new T(function(){return B(A(_jX,[_jI]));}));case 83:return E(new T(function(){return B(A(_jX,[_jJ]));}));case 84:return E(new T(function(){return B(A(_jX,[_jK]));}));case 85:return E(new T(function(){return B(A(_jX,[_jL]));}));case 86:return E(new T(function(){return B(A(_jX,[_jM]));}));case 87:return E(new T(function(){return B(A(_jX,[_jN]));}));case 88:return E(new T(function(){return B(A(_jX,[_jO]));}));case 89:return E(new T(function(){return B(A(_jX,[_jP]));}));case 90:return E(new T(function(){return B(A(_jX,[_jQ]));}));case 91:return E(new T(function(){return B(A(_jX,[_jR]));}));case 92:return E(new T(function(){return B(A(_jX,[_jS]));}));case 93:return E(new T(function(){return B(A(_jX,[_jT]));}));case 94:return E(new T(function(){return B(A(_jX,[_jU]));}));case 95:return E(new T(function(){return B(A(_jX,[_jV]));}));default:return [2];}}]):[2];}],new T(function(){return B(A(_jb,[function(_k8){return new F(function(){return A(_jX,[[0,_k8,_fb]]);});}]));})));})));}));});},_k9=function(_ka){return new F(function(){return A(_ka,[_H]);});},_kb=function(_kc){var _kd=E(_kc);if(!_kd[0]){return E(_k9);}else{var _ke=_kd[2],_kf=E(E(_kd[1])[1]);switch(_kf){case 9:return function(_kg){return [0,function(_kh){return E(new T(function(){return B(A(new T(function(){return B(_kb(_ke));}),[_kg]));}));}];};case 10:return function(_ki){return [0,function(_kj){return E(new T(function(){return B(A(new T(function(){return B(_kb(_ke));}),[_ki]));}));}];};case 11:return function(_kk){return [0,function(_kl){return E(new T(function(){return B(A(new T(function(){return B(_kb(_ke));}),[_kk]));}));}];};case 12:return function(_km){return [0,function(_kn){return E(new T(function(){return B(A(new T(function(){return B(_kb(_ke));}),[_km]));}));}];};case 13:return function(_ko){return [0,function(_kp){return E(new T(function(){return B(A(new T(function(){return B(_kb(_ke));}),[_ko]));}));}];};case 32:return function(_kq){return [0,function(_kr){return E(new T(function(){return B(A(new T(function(){return B(_kb(_ke));}),[_kq]));}));}];};case 160:return function(_ks){return [0,function(_kt){return E(new T(function(){return B(A(new T(function(){return B(_kb(_ke));}),[_ks]));}));}];};default:var _ku=u_iswspace(_kf),_kv=_ku;return E(_kv)==0?E(_k9):function(_kw){return [0,function(_kx){return E(new T(function(){return B(A(new T(function(){return B(_kb(_ke));}),[_kw]));}));}];};}}},_ky=function(_kz){var _kA=new T(function(){return B(_ky(_kz));}),_kB=[1,function(_kC){return new F(function(){return A(_kb,[_kC,function(_kD){return E([0,function(_kE){return E(E(_kE)[1])==92?E(_kA):[2];}]);}]);});}];return new F(function(){return _bM([0,function(_kF){return E(E(_kF)[1])==92?E([0,function(_kG){var _kH=E(E(_kG)[1]);switch(_kH){case 9:return E(_kB);case 10:return E(_kB);case 11:return E(_kB);case 12:return E(_kB);case 13:return E(_kB);case 32:return E(_kB);case 38:return E(_kA);case 160:return E(_kB);default:var _kI=u_iswspace(_kH),_kJ=_kI;return E(_kJ)==0?[2]:E(_kB);}}]):[2];}],[0,function(_kK){var _kL=E(_kK);return E(_kL[1])==92?E(new T(function(){return B(_jW(_kz));})):B(A(_kz,[[0,_kL,_0]]));}]);});},_kM=function(_kN,_kO){return new F(function(){return _ky(function(_kP){var _kQ=E(_kP),_kR=E(_kQ[1]);if(E(_kR[1])==34){if(!E(_kQ[2])){return E(new T(function(){return B(A(_kO,[[1,new T(function(){return B(A(_kN,[_h]));})]]));}));}else{return new F(function(){return _kM(function(_kS){return new F(function(){return A(_kN,[[1,_kR,_kS]]);});},_kO);});}}else{return new F(function(){return _kM(function(_kT){return new F(function(){return A(_kN,[[1,_kR,_kT]]);});},_kO);});}});});},_kU=new T(function(){return B(unCStr("_\'"));}),_kV=function(_kW){var _kX=u_iswalnum(_kW),_kY=_kX;return E(_kY)==0?B(_eT(_ct,[0,_kW],_kU)):true;},_kZ=function(_l0){return new F(function(){return _kV(E(_l0)[1]);});},_l1=new T(function(){return B(unCStr(",;()[]{}`"));}),_l2=function(_l3){return new F(function(){return A(_l3,[_h]);});},_l4=function(_l5,_l6){var _l7=function(_l8){var _l9=E(_l8);if(!_l9[0]){return E(_l2);}else{var _la=_l9[1];return !B(A(_l5,[_la]))?E(_l2):function(_lb){return [0,function(_lc){return E(new T(function(){return B(A(new T(function(){return B(_l7(_l9[2]));}),[function(_ld){return new F(function(){return A(_lb,[[1,_la,_ld]]);});}]));}));}];};}};return [1,function(_le){return new F(function(){return A(_l7,[_le,_l6]);});}];},_lf=new T(function(){return B(unCStr(".."));}),_lg=new T(function(){return B(unCStr("::"));}),_lh=new T(function(){return B(unCStr("->"));}),_li=[0,64],_lj=[1,_li,_h],_lk=[0,126],_ll=[1,_lk,_h],_lm=new T(function(){return B(unCStr("=>"));}),_ln=[1,_lm,_h],_lo=[1,_ll,_ln],_lp=[1,_lj,_lo],_lq=[1,_lh,_lp],_lr=new T(function(){return B(unCStr("<-"));}),_ls=[1,_lr,_lq],_lt=[0,124],_lu=[1,_lt,_h],_lv=[1,_lu,_ls],_lw=[1,_jh,_h],_lx=[1,_lw,_lv],_ly=[0,61],_lz=[1,_ly,_h],_lA=[1,_lz,_lx],_lB=[1,_lg,_lA],_lC=[1,_lf,_lB],_lD=function(_lE){return new F(function(){return _bM([1,function(_lF){return E(_lF)[0]==0?E(new T(function(){return B(A(_lE,[_do]));})):[2];}],new T(function(){return B(_bM([0,function(_lG){return E(E(_lG)[1])==39?E([0,function(_lH){var _lI=E(_lH);switch(E(_lI[1])){case 39:return [2];case 92:return E(new T(function(){return B(_jW(function(_lJ){var _lK=E(_lJ);return new F(function(){return (function(_lL,_lM){var _lN=new T(function(){return B(A(_lE,[[0,_lL]]));});return !E(_lM)?E(E(_lL)[1])==39?[2]:[0,function(_lO){return E(E(_lO)[1])==39?E(_lN):[2];}]:[0,function(_lP){return E(E(_lP)[1])==39?E(_lN):[2];}];})(_lK[1],_lK[2]);});}));}));default:return [0,function(_lQ){return E(E(_lQ)[1])==39?E(new T(function(){return B(A(_lE,[[0,_lI]]));})):[2];}];}}]):[2];}],new T(function(){return B(_bM([0,function(_lR){return E(E(_lR)[1])==34?E(new T(function(){return B(_kM(_O,_lE));})):[2];}],new T(function(){return B(_bM([0,function(_lS){return !B(_eT(_ct,_lS,_l1))?[2]:B(A(_lE,[[2,[1,_lS,_h]]]));}],new T(function(){return B(_bM([0,function(_lT){if(!B(_eT(_ct,_lT,_eY))){return [2];}else{return new F(function(){return _l4(_eZ,function(_lU){var _lV=[1,_lT,_lU];return !B(_eT(_cK,_lV,_lC))?B(A(_lE,[[4,_lV]])):B(A(_lE,[[2,_lV]]));});});}}],new T(function(){return B(_bM([0,function(_lW){var _lX=E(_lW),_lY=_lX[1],_lZ=u_iswalpha(_lY),_m0=_lZ;if(!E(_m0)){if(E(_lY)==95){return new F(function(){return _l4(_kZ,function(_m1){return new F(function(){return A(_lE,[[3,[1,_lX,_m1]]]);});});});}else{return [2];}}else{return new F(function(){return _l4(_kZ,function(_m2){return new F(function(){return A(_lE,[[3,[1,_lX,_m2]]]);});});});}}],new T(function(){return B(_d4(_f3,_eO,_lE));})));})));})));})));})));}));});},_m3=function(_m4){return [1,function(_m5){return new F(function(){return A(_kb,[_m5,function(_m6){return E(new T(function(){return B(_lD(_m4));}));}]);});}];},_m7=[0,0],_m8=function(_m9,_ma){return new F(function(){return _m3(function(_mb){var _mc=E(_mb);if(_mc[0]==2){var _md=E(_mc[1]);return _md[0]==0?[2]:E(E(_md[1])[1])==40?E(_md[2])[0]==0?E(new T(function(){return B(A(_m9,[_m7,function(_me){return new F(function(){return _m3(function(_mf){var _mg=E(_mf);if(_mg[0]==2){var _mh=E(_mg[1]);return _mh[0]==0?[2]:E(E(_mh[1])[1])==41?E(_mh[2])[0]==0?E(new T(function(){return B(A(_ma,[_me]));})):[2]:[2];}else{return [2];}});});}]));})):[2]:[2];}else{return [2];}});});},_mi=function(_mj,_mk,_ml){var _mm=function(_mn,_mo){return new F(function(){return _bM(B(_m3(function(_mp){var _mq=E(_mp);if(_mq[0]==4){var _mr=E(_mq[1]);if(!_mr[0]){return new F(function(){return A(_mj,[_mq,_mn,_mo]);});}else{return E(E(_mr[1])[1])==45?E(_mr[2])[0]==0?E([1,function(_ms){return new F(function(){return A(_kb,[_ms,function(_mt){return E(new T(function(){return B(_lD(function(_mu){return new F(function(){return A(_mj,[_mu,_mn,function(_mv){return new F(function(){return A(_mo,[new T(function(){return [0, -E(_mv)[1]];})]);});}]);});}));}));}]);});}]):B(A(_mj,[_mq,_mn,_mo])):B(A(_mj,[_mq,_mn,_mo]));}}else{return new F(function(){return A(_mj,[_mq,_mn,_mo]);});}})),new T(function(){return B(_m8(_mm,_mo));}));});};return new F(function(){return _mm(_mk,_ml);});},_mw=function(_mx,_my){return [2];},_mz=function(_mA,_mB){return new F(function(){return _mw(_mA,_mB);});},_mC=function(_mD){var _mE=E(_mD);return _mE[0]==0?[1,new T(function(){return B(_eq(new T(function(){return B(_eg(E(_mE[1])[1]));}),_ef,_mE[2]));})]:E(_mE[2])[0]==0?E(_mE[3])[0]==0?[1,new T(function(){return B(_eq(_ee,_ef,_mE[1]));})]:[0]:[0];},_mF=function(_mG){var _mH=E(_mG);if(_mH[0]==5){var _mI=B(_mC(_mH[1]));return _mI[0]==0?E(_mw):function(_mJ,_mK){return new F(function(){return A(_mK,[new T(function(){return [0,B(_fj(_mI[1]))];})]);});};}else{return E(_mz);}},_mL=function(_mA,_mB){return new F(function(){return _mi(_mF,_mA,_mB);});},_mM=function(_mN,_mO){var _mP=function(_mQ,_mR){return new F(function(){return _m3(function(_mS){var _mT=E(_mS);if(_mT[0]==2){var _mU=E(_mT[1]);if(!_mU[0]){return [2];}else{var _mV=_mU[2];switch(E(E(_mU[1])[1])){case 44:return E(_mV)[0]==0?!E(_mQ)?[2]:E(new T(function(){return B(A(_mN,[_m7,function(_mW){return new F(function(){return _mP(_fb,function(_mX){return new F(function(){return A(_mR,[[1,_mW,_mX]]);});});});}]));})):[2];case 93:return E(_mV)[0]==0?E(new T(function(){return B(A(_mR,[_h]));})):[2];default:return [2];}}}else{return [2];}});});},_mY=function(_mZ){return new F(function(){return _bM(B(_m3(function(_n0){var _n1=E(_n0);if(_n1[0]==2){var _n2=E(_n1[1]);return _n2[0]==0?[2]:E(E(_n2[1])[1])==91?E(_n2[2])[0]==0?E(new T(function(){return B(_bM(B(_mP(_0,_mZ)),new T(function(){return B(A(_mN,[_m7,function(_n3){return new F(function(){return _mP(_fb,function(_n4){return new F(function(){return A(_mZ,[[1,_n3,_n4]]);});});});}]));})));})):[2]:[2];}else{return [2];}})),new T(function(){return B(_m8(function(_n5,_n6){return new F(function(){return _mY(_n6);});},_mZ));}));});};return new F(function(){return _mY(_mO);});},_n7=function(_n8,_n9){return new F(function(){return _mM(_mL,_n9);});},_na=new T(function(){return B(_mM(_mL,_cX));}),_nb=function(_mB){return new F(function(){return _bC(_na,_mB);});},_nc=function(_nd){return function(_dn){return new F(function(){return _bC(new T(function(){return B(_mi(_mF,_nd,_cX));}),_dn);});};},_ne=[0,_nc,_nb,_mL,_n7],_nf=function(_ng,_nh){return new F(function(){return _3U(0,E(_ng)[1],_nh);});},_ni=function(_nj,_nk){return new F(function(){return _2M(_nf,_nj,_nk);});},_nl=function(_nm,_nn,_no){return new F(function(){return _3U(E(_nm)[1],E(_nn)[1],_no);});},_np=[0,_nl,_5C,_ni],_nq=new T(function(){return B(unCStr("GHC.Types"));}),_nr=new T(function(){return B(unCStr("Int"));}),_ns=[0,I_fromBits([1521842780,3792221899]),I_fromBits([1346191152,3861967380]),_6o,_nq,_nr],_nt=[0,I_fromBits([1521842780,3792221899]),I_fromBits([1346191152,3861967380]),_ns,_h],_nu=function(_nv){return E(_nt);},_nw=function(_nx){return E(E(_nx)[1]);},_ny=function(_nz){return E(E(_nz)[2]);},_nA=function(_nB,_nC){var _nD=new T(function(){return B(_nw(_nB));});return function(_nE){return new F(function(){return A(new T(function(){return B(_3g(_nD));}),[new T(function(){return B(A(_ny,[_nB,_nC]));}),function(_nF){return new F(function(){return A(new T(function(){return B(_3F(_nD));}),[[0,_nF,_nE]]);});}]);});};},_nG=function(_nH,_nI){return new F(function(){return A(_nH,[function(_){return new F(function(){return jsFind(toJSStr(E(_nI)));});}]);});},_nJ=[0],_nK=function(_nL){return E(E(_nL)[3]);},_nM=new T(function(){return E(_7r);}),_nN=new T(function(){return [0,"value"];}),_nO=function(_nP){return E(E(_nP)[6]);},_nQ=new T(function(){return B(unCStr("[]"));}),_nR=[0,I_fromBits([4033920485,4128112366]),I_fromBits([786266835,2297333520]),_6o,_nq,_nQ],_nS=[0,I_fromBits([4033920485,4128112366]),I_fromBits([786266835,2297333520]),_nR,_h],_nT=function(_nU){return E(_nS);},_nV=new T(function(){return B(unCStr("Char"));}),_nW=[0,I_fromBits([3763641161,3907222913]),I_fromBits([1343745632,586881778]),_6o,_nq,_nV],_nX=[0,I_fromBits([3763641161,3907222913]),I_fromBits([1343745632,586881778]),_nW,_h],_nY=function(_nZ){return E(_nX);},_o0=new T(function(){return B(_7s(_nT,_nY));}),_o1=new T(function(){return B(A(_o0,[_7r]));}),_o2=function(_o3){return E(E(_o3)[1]);},_o4=[0,0],_o5=[0,32],_o6=[0,10],_o7=function(_o8){var _o9=E(_o8);if(!_o9[0]){return E(_O);}else{var _oa=_o9[1],_ob=E(_o9[2]);if(!_ob[0]){return new F(function(){return _oc(_o6,_oa);});}else{return function(_od){return new F(function(){return A(new T(function(){return B(_oc(_o6,_oa));}),[[1,_o5,new T(function(){return B(A(new T(function(){return B(_o7(_ob));}),[_od]));})]]);});};}}},_oe=new T(function(){return B(unCStr("->"));}),_of=[1,_oe,_h],_og=[1,_nq,_of],_oh=[1,_6o,_og],_oi=[0,32],_oj=function(_ok){var _ol=E(_ok);if(!_ol[0]){return [0];}else{var _om=_ol[1],_on=E(_ol[2]);if(!_on[0]){return E(_om);}else{return new F(function(){return _1W(_om,[1,_oi,new T(function(){return B(_oj(_on));})]);});}}},_oo=new T(function(){return B(_oj(_oh));}),_op=new T(function(){var _oq=B(_6M(_oo));return [0,_oq[1],_oq[2],_6o,_nq,_oe];}),_or=function(_os,_ot){var _ou=E(_os);if(!_ou[0]){return E(_ot);}else{return new F(function(){return A(_ou[1],[new T(function(){return B(_or(_ou[2],_ot));})]);});}},_ov=[0,I_fromBits([4033920485,4128112366]),I_fromBits([786266835,2297333520])],_ow=[1,_6q,_h],_ox=function(_oy){var _oz=E(_oy);if(!_oz[0]){return [0];}else{var _oA=E(_oz[1]);return [1,[0,_oA[1],_oA[2]],new T(function(){return B(_ox(_oz[2]));})];}},_oB=new T(function(){var _oC=B(_1W(_h,_ow));if(!_oC[0]){var _oD=E(_nR);}else{var _oE=B(_6M(new T(function(){return B(_6A(B(_74(_7j,[1,_ov,new T(function(){return B(_ox(_oC));})]))));}))),_oD=E(_nR);}return _oD;}),_oF=[0,40],_oG=function(_oH){return new F(function(){return _oc(_o6,_oH);});},_oI=[0,8],_oJ=new T(function(){return B(unCStr(" -> "));}),_oK=[0,9],_oL=[0,93],_oM=[0,91],_oN=[0,41],_oO=[0,44],_oP=function(_oH){return [1,_oO,_oH];},_oQ=function(_oR,_oS){var _oT=E(_oS);return _oT[0]==0?[0]:[1,_oR,[1,_oT[1],new T(function(){return B(_oQ(_oR,_oT[2]));})]];},_oc=function(_oU,_oV){var _oW=E(_oV),_oX=_oW[3],_oY=E(_oW[4]);if(!_oY[0]){return function(_oZ){return new F(function(){return _1W(E(_oX)[5],_oZ);});};}else{var _p0=_oY[1],_p1=new T(function(){var _p2=E(_oX)[5],_p3=new T(function(){return B(_o7(_oY));}),_p4=new T(function(){if(E(_oU)[1]<=9){var _p5=function(_p6){return new F(function(){return _1W(_p2,[1,_o5,new T(function(){return B(A(_p3,[_p6]));})]);});};}else{var _p5=function(_p7){return [1,_3T,new T(function(){return B(_1W(_p2,[1,_o5,new T(function(){return B(A(_p3,[[1,_3S,_p7]]));})]));})];};}var _p8=_p5;return _p8;}),_p9=E(_p2);if(!_p9[0]){var _pa=E(_p4);}else{if(E(E(_p9[1])[1])==40){var _pb=E(_p9[2]);if(!_pb[0]){var _pc=E(_p4);}else{if(E(E(_pb[1])[1])==44){var _pd=function(_pe){return [1,_oF,new T(function(){return B(A(new T(function(){var _pf=B(_74(_oG,_oY));if(!_pf[0]){var _pg=E(_O);}else{var _pg=function(_dn){return new F(function(){return _or([1,_pf[1],new T(function(){return B(_oQ(_oP,_pf[2]));})],_dn);});};}return _pg;}),[[1,_oN,_pe]]));})];};}else{var _pd=E(_p4);}var _ph=_pd,_pc=_ph;}var _pi=_pc;}else{var _pi=E(_p4);}var _pj=_pi,_pa=_pj;}var _pk=_pa;return _pk;}),_pl=E(_oY[2]);if(!_pl[0]){var _pm=E(_oX),_pn=E(_oB),_po=hs_eqWord64(_pm[1],_pn[1]),_pp=_po;if(!E(_pp)){return E(_p1);}else{var _pq=hs_eqWord64(_pm[2],_pn[2]),_pr=_pq;return E(_pr)==0?E(_p1):function(_ps){return [1,_oM,new T(function(){return B(A(new T(function(){return B(_oc(_o4,_p0));}),[[1,_oL,_ps]]));})];};}}else{if(!E(_pl[2])[0]){var _pt=E(_oX),_pu=E(_op),_pv=hs_eqWord64(_pt[1],_pu[1]),_pw=_pv;if(!E(_pw)){return E(_p1);}else{var _px=hs_eqWord64(_pt[2],_pu[2]),_py=_px;if(!E(_py)){return E(_p1);}else{var _pz=new T(function(){return B(_oc(_oI,_pl[1]));}),_pA=new T(function(){return B(_oc(_oK,_p0));});return E(_oU)[1]<=8?function(_pB){return new F(function(){return A(_pA,[new T(function(){return B(_1W(_oJ,new T(function(){return B(A(_pz,[_pB]));})));})]);});}:function(_pC){return [1,_3T,new T(function(){return B(A(_pA,[new T(function(){return B(_1W(_oJ,new T(function(){return B(A(_pz,[[1,_3S,_pC]]));})));})]));})];};}}}else{return E(_p1);}}}},_pD=function(_pE,_pF,_pG,_pH,_pI,_pJ){var _pK=E(_pE),_pL=_pK[1],_pM=_pK[3],_pN=new T(function(){return B(A(_pM,[_nJ]));});return new F(function(){return A(_pL,[new T(function(){return B(_nG(_pF,_pJ));}),function(_pO){var _pP=E(_pO);return _pP[0]==0?E(_pN):B(A(_pL,[new T(function(){return B(A(_pF,[function(_){var _pQ=jsGet(E(_pP[1])[1],E(_nN)[1]),_pR=_pQ;return [1,new T(function(){return fromJSStr(_pR);})];}]));}),function(_pS){var _pT=E(_pS);if(!_pT[0]){return E(_pN);}else{var _pU=_pT[1];if(!E(new T(function(){var _pV=B(A(_pG,[_nM])),_pW=E(_o1),_pX=hs_eqWord64(_pV[1],_pW[1]),_pY=_pX;if(!E(_pY)){var _pZ=false;}else{var _q0=hs_eqWord64(_pV[2],_pW[2]),_q1=_q0,_pZ=E(_q1)==0?false:true;}var _q2=_pZ,_q3=_q2;return _q3;}))){var _q4=new T(function(){return B(A(_pM,[[1,_pU,new T(function(){return B(A(new T(function(){return B(_nO(_pI));}),[new T(function(){return B(A(new T(function(){return B(_nK(_pI));}),[new T(function(){return B(unAppCStr("can\'t read \"",new T(function(){return B(_1W(_pU,new T(function(){return B(unAppCStr("\" as type ",new T(function(){return B(A(_oc,[_o4,B(A(_pG,[_nM])),_h]));})));})));})));})]));})]));})]]));}),_q5=B(A(new T(function(){return B(A(_o2,[_pH,_9]));}),[_pU]));if(!_q5[0]){return E(_q4);}else{var _q6=E(_q5[1]);return E(_q6[2])[0]==0?E(_q5[2])[0]==0?B(A(_pM,[[2,_q6[1]]])):E(_q4):E(_q4);}}else{return new F(function(){return A(_pM,[[2,_pU]]);});}}}]));}]);});},_q7=1,_q8=function(_q9){return E(E(_q9)[9]);},_qa=function(_qb,_qc){return new F(function(){return A(_3F,[_qb,[0,_qc,_qc]]);});},_qd=function(_qe,_qf,_qg){return new F(function(){return A(_3F,[_qe,[0,_H,_qf]]);});},_qh=function(_qi){return E(E(_qi)[2]);},_qj=function(_qk,_ql,_qm,_qn,_qo){var _qp=new T(function(){return B(_nw(_ql));}),_qq=new T(function(){return B(_3H(_qp));}),_qr=new T(function(){return B(_3F(_qp));}),_qs=new T(function(){return B(_qh(_qn));}),_qt=new T(function(){return B(_q8(_qk));});return function(_qu,_qv,_qw){return function(_qx){return new F(function(){return A(new T(function(){return B(_3g(_qp));}),[new T(function(){var _qy=E(_qu);return _qy[0]==0?B(A(new T(function(){return B(_40([0,_],_qq,function(_qz){return new F(function(){return _qa(_qp,_qz);});},function(_qA,_qB){return new F(function(){return _qd(_qp,_qA,_qB);});}));}),[_qx])):B(A(new T(function(){return B(_3F(_qp));}),[[0,_qy[1],_qx]]));}),function(_qC){var _qD=new T(function(){return E(E(_qC)[1]);});return new F(function(){return A(new T(function(){return B(_3g(_qp));}),[new T(function(){var _qE=new T(function(){return E(E(_qC)[2]);});return B(A(new T(function(){return B(_3F(_qp));}),[[0,_qE,_qE]]));}),function(_qF){return new F(function(){return A(new T(function(){return B(_3g(_qp));}),[new T(function(){return B(A(new T(function(){return B(_3F(_qp));}),[[0,_H,new T(function(){var _qG=E(E(_qF)[1]);return [0,_qG[1],_qG[2],_q7,_qG[4],_qG[5],_qG[6]];})]]));}),function(_qH){return new F(function(){return A(new T(function(){return B(_3g(_qp));}),[new T(function(){return B(A(new T(function(){return B(_pD(_qq,function(_qI){return new F(function(){return _nA(_ql,_qI);});},_qm,_qo,_qk,_qD));}),[new T(function(){return E(E(_qH)[2]);})]));}),function(_qJ){var _qK=E(_qJ),_qL=_qK[2],_qM=E(_qK[1]);switch(_qM[0]){case 0:return new F(function(){return A(_qr,[[0,[0,new T(function(){return B(A(_qt,[_qD,_qv,new T(function(){var _qN=E(_qw);if(!_qN[0]){var _qO=[0];}else{var _qP=_qN[1],_qQ=B(_1B(_qm,_o0,_qP)),_qO=_qQ[0]==0?B(A(_qs,[_qP])):E(_qQ[1]);}return _qO;}),_0,_a]));}),_a],_qL]]);});break;case 1:return new F(function(){return A(_qr,[[0,[0,new T(function(){return B(A(new T(function(){return B(_a4(new T(function(){return B(_a2(_qk));})));}),[new T(function(){return B(A(_qt,[_qD,_qv,_qM[1],_0,_a]));}),_qM[2]]));}),_a],_qL]]);});break;default:var _qR=_qM[1];return new F(function(){return A(_qr,[[0,[0,new T(function(){return B(A(_qt,[_qD,_qv,new T(function(){var _qS=B(_1B(_qm,_o0,_qR));return _qS[0]==0?B(A(_qs,[_qR])):E(_qS[1]);}),_0,_a]));}),[1,_qR]],_qL]]);});}}]);});}]);});}]);});}]);});};};},_qT=new T(function(){return B(_qj(_9D,_aJ,_nu,_np,_ne));}),_qU=new T(function(){return B(A(_qT,[_a,_aI,_a]));}),_qV=new T(function(){return B(unCStr("keydown"));}),_qW=new T(function(){return B(unCStr("mousemove"));}),_qX=new T(function(){return B(unCStr("blur"));}),_qY=new T(function(){return B(unCStr("focus"));}),_qZ=new T(function(){return B(unCStr("change"));}),_r0=new T(function(){return B(unCStr("unload"));}),_r1=new T(function(){return B(unCStr("load"));}),_r2=new T(function(){return B(unCStr("keyup"));}),_r3=new T(function(){return B(unCStr("keypress"));}),_r4=new T(function(){return B(unCStr("mouseup"));}),_r5=new T(function(){return B(unCStr("mousedown"));}),_r6=new T(function(){return B(unCStr("dblclick"));}),_r7=new T(function(){return B(unCStr("click"));}),_r8=new T(function(){return B(unCStr("mouseout"));}),_r9=new T(function(){return B(unCStr("mouseover"));}),_ra=function(_rb){switch(E(_rb)[0]){case 0:return E(_r1);case 1:return E(_r0);case 2:return E(_qZ);case 3:return E(_qY);case 4:return E(_qX);case 5:return E(_qW);case 6:return E(_r9);case 7:return E(_r8);case 8:return E(_r7);case 9:return E(_r6);case 10:return E(_r5);case 11:return E(_r4);case 12:return E(_r3);case 13:return E(_r2);default:return E(_qV);}},_rc=[0],_rd=new T(function(){return B(unCStr("OnLoad"));}),_re=[0,_rd,_rc],_rf=function(_){var _=0,_rg=newMVar(),_rh=_rg,_=putMVar(_rh,_re);return [0,_rh];},_ri=new T(function(){return B(_2(_rf));}),_rj=function(_rk,_rl,_){var _rm=B(A(_rk,[_])),_rn=_rm;return new F(function(){return die(_rl);});},_ro=function(_rp,_rq,_rr,_){return new F(function(){return _rj(function(_){var _=putMVar(_rq,_rp);return _H;},_rr,_);});},_rs=function(_rt,_){var _ru=0,_rv=_ru;if(!E(_rv)){return new F(function(){return (function(_){var _rw=E(_ri)[1],_rx=takeMVar(_rw),_ry=_rx,_rz=jsCatch(function(_){return new F(function(){return (function(_){return _rt;})();});},function(_16,_){return new F(function(){return _ro(_ry,_rw,_16,_);});}),_rA=_rz,_=putMVar(_rw,_rA);return _H;})();});}else{var _rB=E(_ri)[1],_rC=takeMVar(_rB),_rD=_rC,_rE=jsCatch(function(_){return _rt;},function(_16,_){return new F(function(){return _ro(_rD,_rB,_16,_);});}),_rF=_rE,_=putMVar(_rB,_rF);return _H;}},_rG=new T(function(){return B(unCStr("true"));}),_rH=function(_rI,_rJ){while(1){var _rK=E(_rI);if(!_rK[0]){return E(_rJ)[0]==0?true:false;}else{var _rL=E(_rJ);if(!_rL[0]){return false;}else{if(E(_rK[1])[1]!=E(_rL[1])[1]){return false;}else{_rI=_rK[2];_rJ=_rL[2];continue;}}}}},_rM=new T(function(){return [0,"keydown"];}),_rN=new T(function(){return [0,"mousemove"];}),_rO=new T(function(){return [0,"blur"];}),_rP=new T(function(){return [0,"focus"];}),_rQ=new T(function(){return [0,"change"];}),_rR=new T(function(){return [0,"unload"];}),_rS=new T(function(){return [0,"load"];}),_rT=new T(function(){return [0,"keyup"];}),_rU=new T(function(){return [0,"keypress"];}),_rV=new T(function(){return [0,"mouseup"];}),_rW=new T(function(){return [0,"mousedown"];}),_rX=new T(function(){return [0,"dblclick"];}),_rY=new T(function(){return [0,"click"];}),_rZ=new T(function(){return [0,"mouseout"];}),_s0=new T(function(){return [0,"mouseover"];}),_s1=function(_s2){switch(E(_s2)[0]){case 0:return E(_rS);case 1:return E(_rR);case 2:return E(_rQ);case 3:return E(_rP);case 4:return E(_rO);case 5:return E(_rN);case 6:return E(_s0);case 7:return E(_rZ);case 8:return E(_rY);case 9:return E(_rX);case 10:return E(_rW);case 11:return E(_rV);case 12:return E(_rU);case 13:return E(_rT);default:return E(_rM);}},_s3=function(_s4,_s5,_s6){return function(_s7,_){var _s8=B(A(_s4,[_s7,_])),_s9=_s8,_sa=E(_s9),_sb=_sa[1],_sc=E(new T(function(){return B(_ra(_s5));})),_sd=jsGetAttr(_sb,toJSStr(_sc)),_se=_sd;if(!B(_rH(fromJSStr(_se),_rG))){var _sf=E(_s6),_sg=jsSetCB(_sb,E(new T(function(){return B(_s1(_s5));}))[1],E([0,_s6])[1]),_sh=_sg,_si=B(A(_I,[_O,_sa,_sc,_rG,_])),_sj=_si;return _sa;}else{return _sa;}};},_sk=function(_sl,_sm){var _sn=new T(function(){return B(_ra(_sm));}),_so=[0,_sn,_rc];return function(_sp,_){var _sq=E(_sp),_sr=E(_sq[4]),_ss=_sr[1],_st=_sr[2],_su=B(A(_sl,[_sq,_])),_sv=_su,_sw=E(_sv),_sx=E(_sw[1]),_sy=_sx[1];return [0,[0,new T(function(){var _sz=E(_sm);switch(_sz[0]){case 0:var _sA=B(_s3(_sy,_sz,function(_){var _sB=B(_rs(_so,_)),_sC=_sB,_sD=B(A(_ss,[_])),_sE=_sD,_sF=E(_sE);if(!_sF[0]){return _H;}else{var _sG=B(A(_st,[_sF[1],_])),_sH=_sG;return _H;}}));break;case 1:var _sA=B(_s3(_sy,_sz,function(_){var _sI=B(_rs(_so,_)),_sJ=_sI,_sK=B(A(_ss,[_])),_sL=_sK,_sM=E(_sL);if(!_sM[0]){return _H;}else{var _sN=B(A(_st,[_sM[1],_])),_sO=_sN;return _H;}}));break;case 2:var _sA=B(_s3(_sy,_sz,function(_){var _sP=B(_rs(_so,_)),_sQ=_sP,_sR=B(A(_ss,[_])),_sS=_sR,_sT=E(_sS);if(!_sT[0]){return _H;}else{var _sU=B(A(_st,[_sT[1],_])),_sV=_sU;return _H;}}));break;case 3:var _sA=B(_s3(_sy,_sz,function(_){var _sW=B(_rs(_so,_)),_sX=_sW,_sY=B(A(_ss,[_])),_sZ=_sY,_t0=E(_sZ);if(!_t0[0]){return _H;}else{var _t1=B(A(_st,[_t0[1],_])),_t2=_t1;return _H;}}));break;case 4:var _sA=B(_s3(_sy,_sz,function(_){var _t3=B(_rs(_so,_)),_t4=_t3,_t5=B(A(_ss,[_])),_t6=_t5,_t7=E(_t6);if(!_t7[0]){return _H;}else{var _t8=B(A(_st,[_t7[1],_])),_t9=_t8;return _H;}}));break;case 5:var _sA=B(_s3(_sy,_sz,function(_ta,_){var _tb=B(_rs([0,_sn,[2,E(_ta)]],_)),_tc=_tb,_td=B(A(_ss,[_])),_te=_td,_tf=E(_te);if(!_tf[0]){return _H;}else{var _tg=B(A(_st,[_tf[1],_])),_th=_tg;return _H;}}));break;case 6:var _sA=B(_s3(_sy,_sz,function(_ti,_){var _tj=B(_rs([0,_sn,[2,E(_ti)]],_)),_tk=_tj,_tl=B(A(_ss,[_])),_tm=_tl,_tn=E(_tm);if(!_tn[0]){return _H;}else{var _to=B(A(_st,[_tn[1],_])),_tp=_to;return _H;}}));break;case 7:var _sA=B(_s3(_sy,_sz,function(_){var _tq=B(A(_ss,[_])),_tr=_tq,_ts=E(_tr);if(!_ts[0]){return _H;}else{var _tt=B(A(_st,[_ts[1],_])),_tu=_tt;return _H;}}));break;case 8:var _sA=B(_s3(_sy,_sz,function(_tv,_tw,_){var _tx=B(_rs([0,_sn,[1,_tv,E(_tw)]],_)),_ty=_tx,_tz=B(A(_ss,[_])),_tA=_tz,_tB=E(_tA);if(!_tB[0]){return _H;}else{var _tC=B(A(_st,[_tB[1],_])),_tD=_tC;return _H;}}));break;case 9:var _sA=B(_s3(_sy,_sz,function(_tE,_tF,_){var _tG=B(_rs([0,_sn,[1,_tE,E(_tF)]],_)),_tH=_tG,_tI=B(A(_ss,[_])),_tJ=_tI,_tK=E(_tJ);if(!_tK[0]){return _H;}else{var _tL=B(A(_st,[_tK[1],_])),_tM=_tL;return _H;}}));break;case 10:var _sA=B(_s3(_sy,_sz,function(_tN,_tO,_){var _tP=B(_rs([0,_sn,[1,_tN,E(_tO)]],_)),_tQ=_tP,_tR=B(A(_ss,[_])),_tS=_tR,_tT=E(_tS);if(!_tT[0]){return _H;}else{var _tU=B(A(_st,[_tT[1],_])),_tV=_tU;return _H;}}));break;case 11:var _sA=B(_s3(_sy,_sz,function(_tW,_tX,_){var _tY=B(_rs([0,_sn,[1,_tW,E(_tX)]],_)),_tZ=_tY,_u0=B(A(_ss,[_])),_u1=_u0,_u2=E(_u1);if(!_u2[0]){return _H;}else{var _u3=B(A(_st,[_u2[1],_])),_u4=_u3;return _H;}}));break;case 12:var _sA=B(_s3(_sy,_sz,function(_u5,_){var _u6=B(_rs([0,_sn,[3,_u5]],_)),_u7=_u6,_u8=B(A(_ss,[_])),_u9=_u8,_ua=E(_u9);if(!_ua[0]){return _H;}else{var _ub=B(A(_st,[_ua[1],_])),_uc=_ub;return _H;}}));break;case 13:var _sA=B(_s3(_sy,_sz,function(_ud,_){var _ue=B(_rs([0,_sn,[3,_ud]],_)),_uf=_ue,_ug=B(A(_ss,[_])),_uh=_ug,_ui=E(_uh);if(!_ui[0]){return _H;}else{var _uj=B(A(_st,[_ui[1],_])),_uk=_uj;return _H;}}));break;default:var _sA=B(_s3(_sy,_sz,function(_ul,_){var _um=B(_rs([0,_sn,[3,_ul]],_)),_un=_um,_uo=B(A(_ss,[_])),_up=_uo,_uq=E(_up);if(!_uq[0]){return _H;}else{var _ur=B(A(_st,[_uq[1],_])),_us=_ur;return _H;}}));}return _sA;}),_sx[2]],_sw[2]];};},_ut=new T(function(){return B(_sk(_qU,_aH));}),_uu=function(_uv,_){var _uw=B(A(_ut,[_uv,_])),_ux=_uw,_uy=E(_ux),_uz=E(_uy[1]);return [0,[0,function(_uA,_){var _uB=B(A(_uz[1],[_uA,_])),_uC=_uB,_uD=B(_5R(_uA,_)),_uE=_uD;return _uA;},_uz[2]],_uy[2]];},_uF=new T(function(){return [1,_uu,_uF];}),_uG=function(_uH,_uI){var _uJ=E(_uH);if(!_uJ){return [0];}else{var _uK=E(_uI);return _uK[0]==0?[0]:[1,_uK[1],new T(function(){return B(_uG(_uJ-1|0,_uK[2]));})];}},_uL=function(_uM,_uN){return _uM<0?[0]:B(_uG(_uM,_uN));},_uO=function(_uP,_uQ){var _uR=E(_uP)[1];return _uR>0?B(_uL(_uR,_uQ)):[0];},_uS=function(_uT){return E(_uT);},_uU=function(_uV){return function(_uW,_){var _uX=B(_4x(new T(function(){return B(_aA(_6c,B(_uO(_uV,_uF))));}),_5Y,_uW,_)),_uY=_uX,_uZ=E(_uY),_v0=E(_uZ[1]);return [0,[0,function(_v1,_){var _v2=B(A(new T(function(){return B(_5s(_5k,new T(function(){return B(unAppCStr("This widget sum ",new T(function(){return B(_1W(B(_3U(0,E(_uV)[1],_h)),_68));})));})));}),[_v1,_])),_v3=_v2,_v4=B(A(new T(function(){return B(_5s(_uS,_v0[1]));}),[_v1,_])),_v5=_v4;return _v1;},_v0[2]],_uZ[2]];};},_v6=new T(function(){return B(_uU(_5j));}),_v7=new T(function(){return B(unCStr("center"));}),_v8=function(_v9,_va){return function(_vb,_){var _vc=jsCreateElem(toJSStr(E(_v7))),_vd=_vc,_ve=jsAppendChild(_vd,E(_vb)[1]),_vf=[0,_vd],_vg=B(A(new T(function(){return B(A(_v9,[_va]));}),[_vf,_])),_vh=_vg;return _vf;};},_vi=function(_vj,_){return _vj;},_vk=new T(function(){return B(unCStr("Two counters. One is pure and recursive, the other is stateful"));}),_vl=new T(function(){return B(_5s(_5k,_vk));}),_vm=[8,_],_vn=function(_vo){return new F(function(){return _bM(B(_m3(function(_vp){var _vq=E(_vp);return _vq[0]==0?B(A(_vo,[_vq[1]])):[2];})),new T(function(){return B(_m8(_vr,_vo));}));});},_vr=function(_vs,_vt){return new F(function(){return _vn(_vt);});},_vu=function(_vv){return new F(function(){return _bM(B(_bM(B(_m3(function(_vw){var _vx=E(_vw);return _vx[0]==1?B(A(_vv,[_vx[1]])):[2];})),new T(function(){return B(_mM(_vr,_vv));}))),new T(function(){return B(_m8(_vy,_vv));}));});},_vy=function(_vz,_vA){return new F(function(){return _vu(_vA);});},_vB=new T(function(){return B(_m8(_vy,_cX));}),_vC=new T(function(){return B(_mM(_vr,_cX));}),_vD=function(_vE){var _vF=E(_vE);return _vF[0]==1?[3,_vF[1],_cW]:[2];},_vG=new T(function(){return B(_lD(_vD));}),_vH=function(_vI){return E(_vG);},_vJ=function(_vK){return new F(function(){return A(_kb,[_vK,_vH]);});},_vL=[1,_vJ],_vM=new T(function(){return B(_bM(_vL,_vC));}),_vN=new T(function(){return B(_bM(_vM,_vB));}),_vO=function(_mB){return new F(function(){return _bC(_vN,_mB);});},_vP=new T(function(){return B(_vn(_cX));}),_vQ=function(_mB){return new F(function(){return _bC(_vP,_mB);});},_vR=function(_vS){return E(_vQ);},_vT=[0,_vR,_vO,_vr,_vy],_vU=function(_vV){return E(E(_vV)[4]);},_vW=function(_vX,_vY,_vZ){return new F(function(){return _mM(new T(function(){return B(_vU(_vX));}),_vZ);});},_w0=function(_w1){return function(_dn){return new F(function(){return _bC(new T(function(){return B(_mM(new T(function(){return B(_vU(_w1));}),_cX));}),_dn);});};},_w2=function(_w3,_w4){return function(_dn){return new F(function(){return _bC(new T(function(){return B(A(_vU,[_w3,_w4,_cX]));}),_dn);});};},_w5=function(_w6){return [0,function(_mB){return new F(function(){return _w2(_w6,_mB);});},new T(function(){return B(_w0(_w6));}),new T(function(){return B(_vU(_w6));}),function(_mA,_mB){return new F(function(){return _vW(_w6,_mA,_mB);});}];},_w7=new T(function(){return B(_w5(_vT));}),_w8=new T(function(){return B(unCStr("Prelude.(!!): negative index\n"));}),_w9=new T(function(){return B(err(_w8));}),_wa=new T(function(){return B(unCStr("Prelude.(!!): index too large\n"));}),_wb=new T(function(){return B(err(_wa));}),_wc=function(_wd,_we){while(1){var _wf=E(_wd);if(!_wf[0]){return E(_wb);}else{var _wg=E(_we);if(!_wg){return E(_wf[1]);}else{_wd=_wf[2];_we=_wg-1|0;continue;}}}},_wh=new T(function(){return B(unCStr("ACK"));}),_wi=new T(function(){return B(unCStr("BEL"));}),_wj=new T(function(){return B(unCStr("BS"));}),_wk=new T(function(){return B(unCStr("SP"));}),_wl=[1,_wk,_h],_wm=new T(function(){return B(unCStr("US"));}),_wn=[1,_wm,_wl],_wo=new T(function(){return B(unCStr("RS"));}),_wp=[1,_wo,_wn],_wq=new T(function(){return B(unCStr("GS"));}),_wr=[1,_wq,_wp],_ws=new T(function(){return B(unCStr("FS"));}),_wt=[1,_ws,_wr],_wu=new T(function(){return B(unCStr("ESC"));}),_wv=[1,_wu,_wt],_ww=new T(function(){return B(unCStr("SUB"));}),_wx=[1,_ww,_wv],_wy=new T(function(){return B(unCStr("EM"));}),_wz=[1,_wy,_wx],_wA=new T(function(){return B(unCStr("CAN"));}),_wB=[1,_wA,_wz],_wC=new T(function(){return B(unCStr("ETB"));}),_wD=[1,_wC,_wB],_wE=new T(function(){return B(unCStr("SYN"));}),_wF=[1,_wE,_wD],_wG=new T(function(){return B(unCStr("NAK"));}),_wH=[1,_wG,_wF],_wI=new T(function(){return B(unCStr("DC4"));}),_wJ=[1,_wI,_wH],_wK=new T(function(){return B(unCStr("DC3"));}),_wL=[1,_wK,_wJ],_wM=new T(function(){return B(unCStr("DC2"));}),_wN=[1,_wM,_wL],_wO=new T(function(){return B(unCStr("DC1"));}),_wP=[1,_wO,_wN],_wQ=new T(function(){return B(unCStr("DLE"));}),_wR=[1,_wQ,_wP],_wS=new T(function(){return B(unCStr("SI"));}),_wT=[1,_wS,_wR],_wU=new T(function(){return B(unCStr("SO"));}),_wV=[1,_wU,_wT],_wW=new T(function(){return B(unCStr("CR"));}),_wX=[1,_wW,_wV],_wY=new T(function(){return B(unCStr("FF"));}),_wZ=[1,_wY,_wX],_x0=new T(function(){return B(unCStr("VT"));}),_x1=[1,_x0,_wZ],_x2=new T(function(){return B(unCStr("LF"));}),_x3=[1,_x2,_x1],_x4=new T(function(){return B(unCStr("HT"));}),_x5=[1,_x4,_x3],_x6=[1,_wj,_x5],_x7=[1,_wi,_x6],_x8=[1,_wh,_x7],_x9=new T(function(){return B(unCStr("ENQ"));}),_xa=[1,_x9,_x8],_xb=new T(function(){return B(unCStr("EOT"));}),_xc=[1,_xb,_xa],_xd=new T(function(){return B(unCStr("ETX"));}),_xe=[1,_xd,_xc],_xf=new T(function(){return B(unCStr("STX"));}),_xg=[1,_xf,_xe],_xh=new T(function(){return B(unCStr("SOH"));}),_xi=[1,_xh,_xg],_xj=new T(function(){return B(unCStr("NUL"));}),_xk=[1,_xj,_xi],_xl=[0,92],_xm=new T(function(){return B(unCStr("\\DEL"));}),_xn=new T(function(){return B(unCStr("\\a"));}),_xo=new T(function(){return B(unCStr("\\\\"));}),_xp=new T(function(){return B(unCStr("\\SO"));}),_xq=new T(function(){return B(unCStr("\\r"));}),_xr=new T(function(){return B(unCStr("\\f"));}),_xs=new T(function(){return B(unCStr("\\v"));}),_xt=new T(function(){return B(unCStr("\\n"));}),_xu=new T(function(){return B(unCStr("\\t"));}),_xv=new T(function(){return B(unCStr("\\b"));}),_xw=function(_xx,_xy){if(_xx<=127){var _xz=E(_xx);switch(_xz){case 92:return new F(function(){return _1W(_xo,_xy);});break;case 127:return new F(function(){return _1W(_xm,_xy);});break;default:if(_xz<32){var _xA=E(_xz);switch(_xA){case 7:return new F(function(){return _1W(_xn,_xy);});break;case 8:return new F(function(){return _1W(_xv,_xy);});break;case 9:return new F(function(){return _1W(_xu,_xy);});break;case 10:return new F(function(){return _1W(_xt,_xy);});break;case 11:return new F(function(){return _1W(_xs,_xy);});break;case 12:return new F(function(){return _1W(_xr,_xy);});break;case 13:return new F(function(){return _1W(_xq,_xy);});break;case 14:return new F(function(){return _1W(_xp,new T(function(){var _xB=E(_xy);if(!_xB[0]){var _xC=[0];}else{var _xC=E(E(_xB[1])[1])==72?B(unAppCStr("\\&",_xB)):E(_xB);}return _xC;}));});break;default:return new F(function(){return _1W([1,_xl,new T(function(){var _xD=_xA;return _xD>=0?B(_wc(_xk,_xD)):E(_w9);})],_xy);});}}else{return [1,[0,_xz],_xy];}}}else{return [1,_xl,new T(function(){var _xE=jsShowI(_xx),_xF=_xE;return B(_1W(fromJSStr(_xF),new T(function(){var _xG=E(_xy);if(!_xG[0]){var _xH=[0];}else{var _xI=E(_xG[1])[1],_xH=_xI<48?E(_xG):_xI>57?E(_xG):B(unAppCStr("\\&",_xG));}return _xH;})));})];}},_xJ=[0,39],_xK=[1,_xJ,_h],_xL=new T(function(){return B(unCStr("\'\\\'\'"));}),_xM=function(_xN){var _xO=E(E(_xN)[1]);return _xO==39?E(_xL):[1,_xJ,new T(function(){return B(_xw(_xO,_xK));})];},_xP=[0,34],_xQ=new T(function(){return B(unCStr("\\\""));}),_xR=function(_xS,_xT){var _xU=E(_xS);if(!_xU[0]){return E(_xT);}else{var _xV=_xU[2],_xW=E(E(_xU[1])[1]);if(_xW==34){return new F(function(){return _1W(_xQ,new T(function(){return B(_xR(_xV,_xT));}));});}else{return new F(function(){return _xw(_xW,new T(function(){return B(_xR(_xV,_xT));}));});}}},_xX=function(_xY,_xZ){return [1,_xP,new T(function(){return B(_xR(_xY,[1,_xP,_xZ]));})];},_y0=function(_y1){return new F(function(){return _1W(_xL,_y1);});},_y2=function(_y3,_y4){var _y5=E(E(_y4)[1]);return _y5==39?E(_y0):function(_y6){return [1,_xJ,new T(function(){return B(_xw(_y5,[1,_xJ,_y6]));})];};},_y7=[0,_y2,_xM,_xX],_y8=function(_y9){return E(E(_y9)[3]);},_ya=function(_yb,_yc){return new F(function(){return A(_y8,[_yb,_yc,_h]);});},_yd=function(_ye,_yf,_yg){return new F(function(){return _2M(new T(function(){return B(_y8(_ye));}),_yf,_yg);});},_yh=function(_yi){return [0,function(_yj){return E(new T(function(){return B(_y8(_yi));}));},function(_y1){return new F(function(){return _ya(_yi,_y1);});},function(_yk,_y1){return new F(function(){return _yd(_yi,_yk,_y1);});}];},_yl=new T(function(){return B(_yh(_y7));}),_ym=new T(function(){return B(unCStr("submit"));}),_yn=new T(function(){return B(A(_qj,[_9D,_aJ,_o0,_yl,_w7,_a,_ym]));}),_yo=[0,43],_yp=[1,_yo,_h],_yq=[1,_yp],_yr=new T(function(){return B(A(_yn,[_yq]));}),_ys=new T(function(){return B(_sk(_yr,_vm));}),_yt=function(_yu,_yv,_yw,_){var _yx=B(A(_yv,[_yw,_])),_yy=_yx,_yz=E(_yy),_yA=E(_yz[1]);return [0,[0,function(_yB,_){var _yC=B(_4e(_4d,_yB,_)),_yD=_yC,_yE=B(A(_I,[_O,_yD,_G,_yu,_])),_yF=_yE,_yG=B(A(_yA[1],[_yD,_])),_yH=_yG;return _yD;},_yA[2]],_yz[2]];},_yI=new T(function(){return B(_40(_1c,_3L,_1a,_17));}),_yJ=new T(function(){return B(_40(_1c,_3L,_1a,_17));}),_yK=function(_yL,_yM,_yN,_){var _yO=B(A(_yJ,[_yN,_])),_yP=_yO,_yQ=B(A(_yI,[new T(function(){return E(E(_yP)[2]);}),_])),_yR=_yQ,_yS=new T(function(){return E(E(_yP)[1]);});return new F(function(){return _4x(function(_16,_){return new F(function(){return _yt(_yS,_yL,_16,_);});},function(_yT){return function(_yU,_){var _yV=B(A(new T(function(){return B(A(_yM,[_yT]));}),[_yU,_])),_yW=_yV,_yX=E(_yW),_yY=E(_yX[1]);return [0,[0,function(_yZ,_){var _z0=E(_yS),_z1=jsFind(toJSStr(_z0)),_z2=_z1,_z3=E(_z2);if(!_z3[0]){return new F(function(){return _4m(_z0);});}else{var _z4=E(_z3[1]),_z5=B(A(_8,[E(_z4[1]),_])),_z6=_z5,_z7=jsKillChild(E(_z4)[1],_z6),_z8=B(A(_yY[1],[_yZ,_])),_z9=_z8;return _yZ;}},_yY[2]],_yX[2]];};},new T(function(){return E(E(_yR)[2]);}),_);});},_za=function(_zb){return function(_dn,_zc){return new F(function(){return _yK(function(_zd,_){var _ze=B(A(_ys,[_zd,_])),_zf=_ze,_zg=E(_zf),_zh=E(_zg[1]);return [0,[0,function(_zi,_){var _zj=B(A(new T(function(){return B(_5G(_5k,new T(function(){return B(_5C(_zb));})));}),[_zi,_])),_zk=_zj,_zl=B(A(_zh[1],[_zi,_])),_zm=_zl;return _zi;},_zh[2]],_zg[2]];},function(_zn){return E(new T(function(){return B(_za(new T(function(){return [0,E(_zb)[1]+1|0];})));}));},_dn,_zc);});};},_zo=new T(function(){return B(unCStr("main"));}),_zp=new T(function(){return B(unCStr("Main"));}),_zq=new T(function(){return B(unCStr("Counter"));}),_zr=[0,I_fromBits([4029179641,2406453796]),I_fromBits([547056354,2957229436]),_zo,_zp,_zq],_zs=[0,I_fromBits([4029179641,2406453796]),I_fromBits([547056354,2957229436]),_zr,_h],_zt=function(_zu,_zv){var _zw=hs_leWord64(_zu,_zv),_zx=_zw;return E(_zx)==0?false:true;},_zy=function(_zz,_zA,_zB,_zC){var _zD=hs_eqWord64(_zz,_zB),_zE=_zD;if(!E(_zE)){var _zF=hs_leWord64(_zz,_zB),_zG=_zF;return E(_zG)==0?false:true;}else{return new F(function(){return _zt(_zA,_zC);});}},_zH=function(_zI,_zJ){var _zK=E(_zI),_zL=_zK[1],_zM=_zK[2],_zN=E(_zJ),_zO=_zN[1],_zP=_zN[2],_zQ=hs_eqWord64(_zL,_zO),_zR=_zQ;if(!E(_zR)){return !B(_zy(_zL,_zM,_zO,_zP))?2:0;}else{var _zS=hs_eqWord64(_zM,_zP),_zT=_zS;return E(_zT)==0?!B(_zy(_zL,_zM,_zO,_zP))?2:0:1;}},_zU=new T(function(){return B(unCStr("Failure in Data.Map.balanceL"));}),_zV=new T(function(){return B(err(_zU));}),_zW=function(_zX,_zY,_zZ,_A0){var _A1=E(_A0);if(!_A1[0]){var _A2=_A1[1],_A3=E(_zZ);if(!_A3[0]){var _A4=_A3[1],_A5=_A3[2],_A6=_A3[3];if(_A4<=(imul(3,_A2)|0)){return [0,(1+_A4|0)+_A2|0,E(E(_zX)),_zY,E(_A3),E(_A1)];}else{var _A7=E(_A3[4]);if(!_A7[0]){var _A8=_A7[1],_A9=E(_A3[5]);if(!_A9[0]){var _Aa=_A9[1],_Ab=_A9[2],_Ac=_A9[3],_Ad=_A9[4];if(_Aa>=(imul(2,_A8)|0)){var _Ae=function(_Af){var _Ag=E(_A9[5]);return _Ag[0]==0?[0,(1+_A4|0)+_A2|0,E(_Ab),_Ac,E([0,(1+_A8|0)+_Af|0,E(_A5),_A6,E(_A7),E(_Ad)]),E([0,(1+_A2|0)+_Ag[1]|0,E(E(_zX)),_zY,E(_Ag),E(_A1)])]:[0,(1+_A4|0)+_A2|0,E(_Ab),_Ac,E([0,(1+_A8|0)+_Af|0,E(_A5),_A6,E(_A7),E(_Ad)]),E([0,1+_A2|0,E(E(_zX)),_zY,E(_g),E(_A1)])];},_Ah=E(_Ad);return _Ah[0]==0?B(_Ae(_Ah[1])):B(_Ae(0));}else{return [0,(1+_A4|0)+_A2|0,E(_A5),_A6,E(_A7),E([0,(1+_A2|0)+_Aa|0,E(E(_zX)),_zY,E(_A9),E(_A1)])];}}else{return E(_zV);}}else{return E(_zV);}}}else{return [0,1+_A2|0,E(E(_zX)),_zY,E(_g),E(_A1)];}}else{var _Ai=E(_zZ);if(!_Ai[0]){var _Aj=_Ai[1],_Ak=_Ai[2],_Al=_Ai[3],_Am=_Ai[5],_An=E(_Ai[4]);if(!_An[0]){var _Ao=_An[1],_Ap=E(_Am);if(!_Ap[0]){var _Aq=_Ap[1],_Ar=_Ap[2],_As=_Ap[3],_At=_Ap[4];if(_Aq>=(imul(2,_Ao)|0)){var _Au=function(_Av){var _Aw=E(_Ap[5]);return _Aw[0]==0?[0,1+_Aj|0,E(_Ar),_As,E([0,(1+_Ao|0)+_Av|0,E(_Ak),_Al,E(_An),E(_At)]),E([0,1+_Aw[1]|0,E(E(_zX)),_zY,E(_Aw),E(_g)])]:[0,1+_Aj|0,E(_Ar),_As,E([0,(1+_Ao|0)+_Av|0,E(_Ak),_Al,E(_An),E(_At)]),E([0,1,E(E(_zX)),_zY,E(_g),E(_g)])];},_Ax=E(_At);return _Ax[0]==0?B(_Au(_Ax[1])):B(_Au(0));}else{return [0,1+_Aj|0,E(_Ak),_Al,E(_An),E([0,1+_Aq|0,E(E(_zX)),_zY,E(_Ap),E(_g)])];}}else{return [0,3,E(_Ak),_Al,E(_An),E([0,1,E(E(_zX)),_zY,E(_g),E(_g)])];}}else{var _Ay=E(_Am);return _Ay[0]==0?[0,3,E(_Ay[2]),_Ay[3],E([0,1,E(_Ak),_Al,E(_g),E(_g)]),E([0,1,E(E(_zX)),_zY,E(_g),E(_g)])]:[0,2,E(E(_zX)),_zY,E(_Ai),E(_g)];}}else{return [0,1,E(E(_zX)),_zY,E(_g),E(_g)];}}},_Az=new T(function(){return B(unCStr("Failure in Data.Map.balanceR"));}),_AA=new T(function(){return B(err(_Az));}),_AB=function(_AC,_AD,_AE,_AF){var _AG=E(_AE);if(!_AG[0]){var _AH=_AG[1],_AI=E(_AF);if(!_AI[0]){var _AJ=_AI[1],_AK=_AI[2],_AL=_AI[3];if(_AJ<=(imul(3,_AH)|0)){return [0,(1+_AH|0)+_AJ|0,E(E(_AC)),_AD,E(_AG),E(_AI)];}else{var _AM=E(_AI[4]);if(!_AM[0]){var _AN=_AM[1],_AO=_AM[2],_AP=_AM[3],_AQ=_AM[4],_AR=E(_AI[5]);if(!_AR[0]){var _AS=_AR[1];if(_AN>=(imul(2,_AS)|0)){var _AT=function(_AU){var _AV=E(_AC),_AW=E(_AM[5]);return _AW[0]==0?[0,(1+_AH|0)+_AJ|0,E(_AO),_AP,E([0,(1+_AH|0)+_AU|0,E(_AV),_AD,E(_AG),E(_AQ)]),E([0,(1+_AS|0)+_AW[1]|0,E(_AK),_AL,E(_AW),E(_AR)])]:[0,(1+_AH|0)+_AJ|0,E(_AO),_AP,E([0,(1+_AH|0)+_AU|0,E(_AV),_AD,E(_AG),E(_AQ)]),E([0,1+_AS|0,E(_AK),_AL,E(_g),E(_AR)])];},_AX=E(_AQ);return _AX[0]==0?B(_AT(_AX[1])):B(_AT(0));}else{return [0,(1+_AH|0)+_AJ|0,E(_AK),_AL,E([0,(1+_AH|0)+_AN|0,E(E(_AC)),_AD,E(_AG),E(_AM)]),E(_AR)];}}else{return E(_AA);}}else{return E(_AA);}}}else{return [0,1+_AH|0,E(E(_AC)),_AD,E(_AG),E(_g)];}}else{var _AY=E(_AF);if(!_AY[0]){var _AZ=_AY[1],_B0=_AY[2],_B1=_AY[3],_B2=_AY[5],_B3=E(_AY[4]);if(!_B3[0]){var _B4=_B3[1],_B5=_B3[2],_B6=_B3[3],_B7=_B3[4],_B8=E(_B2);if(!_B8[0]){var _B9=_B8[1];if(_B4>=(imul(2,_B9)|0)){var _Ba=function(_Bb){var _Bc=E(_AC),_Bd=E(_B3[5]);return _Bd[0]==0?[0,1+_AZ|0,E(_B5),_B6,E([0,1+_Bb|0,E(_Bc),_AD,E(_g),E(_B7)]),E([0,(1+_B9|0)+_Bd[1]|0,E(_B0),_B1,E(_Bd),E(_B8)])]:[0,1+_AZ|0,E(_B5),_B6,E([0,1+_Bb|0,E(_Bc),_AD,E(_g),E(_B7)]),E([0,1+_B9|0,E(_B0),_B1,E(_g),E(_B8)])];},_Be=E(_B7);return _Be[0]==0?B(_Ba(_Be[1])):B(_Ba(0));}else{return [0,1+_AZ|0,E(_B0),_B1,E([0,1+_B4|0,E(E(_AC)),_AD,E(_g),E(_B3)]),E(_B8)];}}else{return [0,3,E(_B5),_B6,E([0,1,E(E(_AC)),_AD,E(_g),E(_g)]),E([0,1,E(_B0),_B1,E(_g),E(_g)])];}}else{var _Bf=E(_B2);return _Bf[0]==0?[0,3,E(_B0),_B1,E([0,1,E(E(_AC)),_AD,E(_g),E(_g)]),E(_Bf)]:[0,2,E(E(_AC)),_AD,E(_g),E(_AY)];}}else{return [0,1,E(E(_AC)),_AD,E(_g),E(_g)];}}},_Bg=function(_Bh,_Bi,_Bj){var _Bk=E(_Bh),_Bl=E(_Bj);if(!_Bl[0]){var _Bm=_Bl[2],_Bn=_Bl[3],_Bo=_Bl[4],_Bp=_Bl[5];switch(B(_zH(_Bk,_Bm))){case 0:return new F(function(){return _zW(_Bm,_Bn,B(_Bg(_Bk,_Bi,_Bo)),_Bp);});break;case 1:return [0,_Bl[1],E(_Bk),_Bi,E(_Bo),E(_Bp)];default:return new F(function(){return _AB(_Bm,_Bn,_Bo,B(_Bg(_Bk,_Bi,_Bp)));});}}else{return [0,1,E(_Bk),_Bi,E(_g),E(_g)];}},_Bq=[0,_3d,_5W],_Br=function(_Bs,_){return [0,[0,_3d,[1,_Bs]],_Bs];},_Bt=[1,_H],_Bu=function(_Bv){return function(_dn,_zc){return new F(function(){return _4x(function(_Bw,_){return [0,[0,new T(function(){return B(_5G(_5k,new T(function(){return B(_5C(_Bv));})));}),_Bt],_Bw];},function(_Bx,_By,_){return new F(function(){return (function(_By,_){return new F(function(){return _4x(_Br,function(_Bz){return function(_BA,_){return [0,_Bq,new T(function(){var _BB=E(_Bz);return [0,_BB[1],_BB[2],_BB[3],_BB[4],_BB[5],new T(function(){return B(_Bg(_zs,new T(function(){return [0,E(_Bv)[1]+1|0];}),_BB[6]));})];})];};},_By,_);});})(_By,_);});},_dn,_zc);});};},_BC=function(_BD){return E(_zs);},_BE=function(_BF,_BG){while(1){var _BH=E(_BF),_BI=E(_BG);if(!_BI[0]){switch(B(_zH(_BH,_BI[2]))){case 0:_BF=_BH;_BG=_BI[4];continue;case 1:return [1,_BI[3]];default:_BF=_BH;_BG=_BI[5];continue;}}else{return [0];}}},_BJ=function(_BK,_BL,_BM,_BN){var _BO=E(_BL),_BP=_BO[1],_BQ=_BO[3];return new F(function(){return A(_BP,[new T(function(){return B(A(_BP,[_BM,function(_BR){return new F(function(){return A(_BQ,[new T(function(){var _BS=E(_BK);return E(E(_BR)[6]);})]);});}]));}),function(_BT){var _BU=B(_BE(new T(function(){return B(A(_BN,[_nM]));}),_BT));return _BU[0]==0?E(new T(function(){return B(A(_BQ,[_a]));})):B(A(_BQ,[[1,_BU[1]]]));}]);});},_BV=new T(function(){return B(_BJ(_1c,_3L,_1a,_BC));}),_BW=function(_BX){return function(_BY,_){var _BZ=B(A(new T(function(){return B(_za(_BX));}),[_BY,_])),_C0=_BZ,_C1=E(_C0),_C2=E(_C1[1]),_C3=B(_4x(_ys,function(_C4){return function(_By,_){return new F(function(){return _4x(function(_C5,_){var _C6=B(A(_BV,[_C5,_])),_C7=_C6;return [0,[0,_vi,new T(function(){var _C8=E(E(_C7)[1]);return _C8[0]==0?E([1,_BX]):E(_C8);})],new T(function(){return E(E(_C7)[2]);})];},_Bu,_By,_);});};},_C1[2],_)),_C9=_C3,_Ca=E(_C9),_Cb=E(_Ca[1]);return [0,[0,function(_Cc,_){var _Cd=B(A(_vl,[_Cc,_])),_Ce=_Cd,_Cf=B(_5R(_Cc,_)),_Cg=_Cf,_Ch=B(A(new T(function(){return B(_v8(_uS,function(_Ci,_){var _Cj=B(A(_C2[1],[_Ci,_])),_Ck=_Cj,_Cl=B(A(_Cb[1],[_Ci,_])),_Cm=_Cl;return _Ci;}));}),[_Cc,_])),_Cn=_Ch;return _Cc;},new T(function(){var _Co=E(_C2[2]);return _Co[0]==0?E(_Cb[2]):E(_Co);})],_Ca[2]];};},_Cp=new T(function(){return B(_BW(_5j));}),_Cq=[0,4],_Cr=function(_Cs,_Ct){return [1,_Ct,new T(function(){return B(_Cr(_Cs,new T(function(){return B(A(_Cs,[_Ct]));})));})];},_Cu=[0,1],_Cv=[1,_Cu,_h],_Cw=[1,_69,_h],_Cx=function(_Cy,_Cz,_CA){var _CB=E(_Cz);if(!_CB[0]){return [0];}else{var _CC=E(_CA);return _CC[0]==0?[0]:[1,new T(function(){return B(A(_Cy,[_CB[1],_CC[1]]));}),new T(function(){return B(_Cx(_Cy,_CB[2],_CC[2]));})];}},_CD=function(_CE){return new F(function(){return _Cx(_9U,[1,_69,_CE],new T(function(){return B(_1W(_CE,_Cw));}));});},_CF=new T(function(){return B(_Cr(_CD,_Cv));}),_CG=new T(function(){return B(unCStr(" rows of the Pascal triangle "));}),_CH=function(_CI){return function(_dn,_zc){return new F(function(){return _5k(new T(function(){return B(_2M(_nf,_CI,_h));}),_dn,_zc);});};},_CJ=new T(function(){return B(unCStr("text-align:center"));}),_CK=new T(function(){return B(unCStr("style"));}),_CL=function(_CM,_CN){return [1,function(_CO,_){var _CP=B(A(new T(function(){return B(_5s(_CH,_CM));}),[_CO,_])),_CQ=_CP,_CR=B(A(_I,[_O,_CQ,_CK,_CJ,_])),_CS=_CR;return _CQ;},_CN];},_CT=function(_CU,_CV){var _CW=E(_CU);if(!_CW[0]){return [0];}else{var _CX=_CW[1];if(_CV>1){return new F(function(){return _CL(_CX,new T(function(){return B(_CT(_CW[2],_CV-1|0));}));});}else{return new F(function(){return _CL(_CX,_h);});}}},_CY=function(_CZ){return function(_D0,_){return [0,[0,function(_D1,_){var _D2=B(A(new T(function(){return B(_5s(_5k,new T(function(){return B(unAppCStr("Show ",new T(function(){return B(_1W(B(_3U(0,E(_CZ)[1],_h)),_CG));})));})));}),[_D1,_])),_D3=_D2,_D4=B(_9m(new T(function(){var _D5=E(_CZ)[1];return _D5>0?B(_CT(_CF,_D5)):[0];}),_D1,_)),_D6=_D4;return _D1;},_a],_D0];};},_D7=new T(function(){return B(_CY(_Cq));}),_D8=new T(function(){return B(unCStr("Different input elements:"));}),_D9=new T(function(){return B(_5s(_5k,_D8));}),_Da=new T(function(){return B(unCStr(" returns: "));}),_Db=[1,_xP,_h],_Dc=function(_Dd){return function(_De,_){return [0,[0,function(_Df,_){var _Dg=B(_5k(_Da,_Df,_)),_Dh=_Dg,_Di=B(A(new T(function(){return B(_5G(_5k,[1,_xP,new T(function(){return B(_xR(_Dd,_Db));})]));}),[_Df,_])),_Dj=_Di;return _Df;},_Bt],_De];};},_Dk=new T(function(){return B(unCStr("blue"));}),_Dl=[1,_Dk,_h],_Dm=new T(function(){return B(unCStr("green"));}),_Dn=[1,_Dm,_Dl],_Do=new T(function(){return B(unCStr("red"));}),_Dp=[1,_Do,_Dn],_Dq=function(_Dr){return E(E(_Dr)[15]);},_Ds=function(_Dt,_Du,_){var _Dv=jsGet(_Dt,toJSStr(E(_Du))),_Dw=_Dv;return new T(function(){return fromJSStr(_Dw);});},_Dx=function(_Dy,_Dz,_){return new F(function(){return _Ds(E(_Dy)[1],_Dz,_);});},_DA=new T(function(){return B(unCStr("name"));}),_DB=new T(function(){return B(unCStr("true"));}),_DC=new T(function(){return B(unCStr("radio"));}),_DD=new T(function(){return B(A(_o0,[_7r]));}),_DE=function(_DF,_DG,_DH,_DI){var _DJ=new T(function(){return B(_nw(_DG));}),_DK=new T(function(){return B(_3g(_DJ));}),_DL=new T(function(){return B(_qh(_DI));});return function(_DM,_DN){return function(_DO){return new F(function(){return A(_DK,[new T(function(){return B(A(new T(function(){return B(_40([0,_],B(_3H(_DJ)),function(_DP){return new F(function(){return _qa(_DJ,_DP);});},function(_DQ,_DR){return new F(function(){return _qd(_DJ,_DQ,_DR);});}));}),[_DO]));}),function(_DS){var _DT=new T(function(){return E(E(_DS)[1]);});return new F(function(){return A(new T(function(){return B(_3g(_DJ));}),[new T(function(){var _DU=new T(function(){return E(E(_DS)[2]);});return B(A(new T(function(){return B(_3F(_DJ));}),[[0,_DU,_DU]]));}),function(_DV){return new F(function(){return A(new T(function(){return B(_3g(_DJ));}),[new T(function(){return B(A(new T(function(){return B(_3F(_DJ));}),[[0,_H,new T(function(){var _DW=E(E(_DV)[1]);return [0,_DW[1],_DW[2],_q7,_DW[4],_DW[5],_DW[6]];})]]));}),function(_DX){return new F(function(){return A(new T(function(){return B(_3g(_DJ));}),[new T(function(){return B(A(new T(function(){return B(_nA(_DG,function(_){return new F(function(){return jsFind(toJSStr(E(_DT)));});}));}),[new T(function(){return E(E(_DX)[2]);})]));}),function(_DY){return new F(function(){return A(_DK,[new T(function(){var _DZ=E(_DY),_E0=_DZ[2],_E1=E(_DZ[1]);if(!_E1[0]){var _E2=B(A(new T(function(){return B(_3F(_DJ));}),[[0,_h,_E0]]));}else{var _E2=B(A(_nA,[_DG,function(_){return new F(function(){return _Dx(_E1[1],_7I,_);});},_E0]));}var _E3=_E2;return _E3;}),function(_E4){var _E5=new T(function(){return !B(_rH(E(_E4)[1],_DB))?[0]:E([1,_DM]);});return new F(function(){return A(new T(function(){return B(_3F(_DJ));}),[[0,[0,new T(function(){return B(A(new T(function(){return B(_Dq(_DF));}),[new T(function(){return B(A(new T(function(){return B(_q8(_DF));}),[_DT,_DC,new T(function(){var _E6=B(A(_DH,[_DM])),_E7=E(_DD),_E8=hs_eqWord64(_E6[1],_E7[1]),_E9=_E8;if(!E(_E9)){var _Ea=B(A(_DL,[_DM]));}else{var _Eb=hs_eqWord64(_E6[2],_E7[2]),_Ec=_Eb,_Ea=E(_Ec)==0?B(A(_DL,[_DM])):E(_DM);}var _Ed=_Ea,_Ee=_Ed;return _Ee;}),new T(function(){return E(_E5)[0]==0?false:true;}),_a]));}),[1,[0,_DA,_DN],_h]]));}),new T(function(){var _Ef=E(_E5);return _Ef[0]==0?[0]:[1,_Ef[1]];})],new T(function(){return E(E(_E4)[2]);})]]);});}]);});}]);});}]);});}]);});}]);});};};},_Eg=new T(function(){return B(_7s(_nT,_nY));}),_Eh=new T(function(){return B(_yh(_y7));}),_Ei=new T(function(){return B(_DE(_9D,_aJ,_Eg,_Eh));}),_Ej=function(_Ek){var _El=E(_Ek);if(!_El[0]){return [0];}else{var _Em=_El[1];return [1,function(_En){return function(_Eo,_){var _Ep=B(A(new T(function(){return B(_sk(new T(function(){return B(A(_Ei,[_Em,_En]));}),_vm));}),[_Eo,_])),_Eq=_Ep,_Er=E(_Eq),_Es=E(_Er[1]);return [0,[0,function(_Et,_){var _Eu=B(_5k(_Em,_Et,_)),_Ev=_Eu,_Ew=B(A(_Es[1],[_Et,_])),_Ex=_Ew;return _Et;},_Es[2]],_Er[2]];};},new T(function(){return B(_Ej(_El[2]));})];}},_Ey=new T(function(){return B(_Ej(_Dp));}),_Ez=function(_EA){return E(E(_EA)[1]);},_EB=function(_EC,_ED){var _EE=new T(function(){return B(_a2(_ED));}),_EF=function(_EG){var _EH=E(_EG);if(!_EH[0]){return [0,new T(function(){return B(_Ez(_EE));}),_a];}else{var _EI=E(_EH[1]),_EJ=B(_EF(_EH[2]));return [0,new T(function(){return B(A(new T(function(){return B(_a4(_EE));}),[_EI[1],_EJ[1]]));}),new T(function(){var _EK=E(_EI[2]);return _EK[0]==0?E(_EJ[2]):E(_EK);})];}},_EL=new T(function(){return B(_3F(_EC));});return function(_EM,_EN){return new F(function(){return A(new T(function(){return B(_3g(_EC));}),[new T(function(){return B(A(new T(function(){return B(_40([0,_],B(_3H(_EC)),function(_EO){return new F(function(){return _qa(_EC,_EO);});},function(_EP,_EQ){return new F(function(){return _qd(_EC,_EP,_EQ);});}));}),[_EN]));}),function(_ER){return new F(function(){return A(new T(function(){return B(_3g(_EC));}),[new T(function(){var _ES=function(_ET){var _EU=E(_ET);return _EU[0]==0?function(_EV){return new F(function(){return A(_EL,[[0,_h,_EV]]);});}:function(_EW){return new F(function(){return A(new T(function(){return B(_3g(_EC));}),[new T(function(){return B(A(new T(function(){return B(A(_EU[1],[new T(function(){return E(E(_ER)[1]);})]));}),[_EW]));}),function(_EX){return new F(function(){return A(new T(function(){return B(_3g(_EC));}),[new T(function(){return B(A(new T(function(){return B(_ES(_EU[2]));}),[new T(function(){return E(E(_EX)[2]);})]));}),function(_EY){return new F(function(){return A(_EL,[[0,[1,new T(function(){return E(E(_EX)[1]);}),new T(function(){return E(E(_EY)[1]);})],new T(function(){return E(E(_EY)[2]);})]]);});}]);});}]);});};};return B(A(_ES,[_EM,new T(function(){return E(E(_ER)[2]);})]));}),function(_EZ){var _F0=new T(function(){var _F1=B(_EF(E(_EZ)[1]));return [0,_F1[1],_F1[2]];});return new F(function(){return A(new T(function(){return B(_3F(_EC));}),[[0,[0,new T(function(){return E(E(_F0)[1]);}),new T(function(){var _F2=E(E(_F0)[2]);return _F2[0]==0?[0]:[1,_F2[1]];})],new T(function(){return E(E(_EZ)[2]);})]]);});}]);});}]);});};},_F3=new T(function(){return B(_EB(_3f,_9D));}),_F4=new T(function(){return B(A(_F3,[_Ey]));}),_F5=function(_F6){return function(_F7,_){return [0,[0,function(_F8,_){var _F9=B(_5k(_Da,_F8,_)),_Fa=_F9,_Fb=B(A(new T(function(){return B(_5G(_5k,new T(function(){return B(_2M(_xX,_F6,_h));})));}),[_F8,_])),_Fc=_Fb;return _F8;},_Bt],_F7];};},_Fd=new T(function(){return B(_5G(_5k,_Dm));}),_Fe=new T(function(){return B(unCStr("checkbox"));}),_Ff=function(_Fg,_Fh){var _Fi=new T(function(){return B(_nw(_Fh));}),_Fj=new T(function(){return B(_3g(_Fi));});return function(_Fk,_Fl){return function(_Fm){return new F(function(){return A(_Fj,[new T(function(){return B(A(new T(function(){return B(_40([0,_],B(_3H(_Fi)),function(_Fn){return new F(function(){return _qa(_Fi,_Fn);});},function(_Fo,_Fp){return new F(function(){return _qd(_Fi,_Fo,_Fp);});}));}),[_Fm]));}),function(_Fq){var _Fr=new T(function(){return E(E(_Fq)[1]);});return new F(function(){return A(new T(function(){return B(_3g(_Fi));}),[new T(function(){var _Fs=new T(function(){return E(E(_Fq)[2]);});return B(A(new T(function(){return B(_3F(_Fi));}),[[0,_Fs,_Fs]]));}),function(_Ft){return new F(function(){return A(new T(function(){return B(_3g(_Fi));}),[new T(function(){return B(A(new T(function(){return B(_3F(_Fi));}),[[0,_H,new T(function(){var _Fu=E(E(_Ft)[1]);return [0,_Fu[1],_Fu[2],_q7,_Fu[4],_Fu[5],_Fu[6]];})]]));}),function(_Fv){return new F(function(){return A(new T(function(){return B(_3g(_Fi));}),[new T(function(){return B(A(new T(function(){return B(_nA(_Fh,function(_){return new F(function(){return jsFind(toJSStr(E(_Fr)));});}));}),[new T(function(){return E(E(_Fv)[2]);})]));}),function(_Fw){return new F(function(){return A(_Fj,[new T(function(){var _Fx=E(_Fw),_Fy=_Fx[2],_Fz=E(_Fx[1]);if(!_Fz[0]){var _FA=B(A(new T(function(){return B(_3F(_Fi));}),[[0,new T(function(){return !E(_Fk)?[0]:E(_DB);}),_Fy]]));}else{var _FA=B(A(_nA,[_Fh,function(_){return new F(function(){return _Dx(_Fz[1],_7I,_);});},_Fy]));}var _FB=_FA;return _FB;}),function(_FC){return new F(function(){return A(new T(function(){return B(_3F(_Fi));}),[[0,[0,new T(function(){return B(A(new T(function(){return B(_q8(_Fg));}),[_Fr,_Fe,_Fl,_Fk,_a]));}),[1,[0,new T(function(){return !B(_rH(E(_FC)[1],_DB))?[0]:E([1,_Fl,_h]);})]]],new T(function(){return E(E(_FC)[2]);})]]);});}]);});}]);});}]);});}]);});}]);});};};},_FD=new T(function(){return B(_Ff(_9D,_aJ));}),_FE=new T(function(){return B(unCStr("Green"));}),_FF=new T(function(){return B(A(_FD,[_0,_FE]));}),_FG=function(_FH,_){var _FI=B(A(_FF,[_FH,_])),_FJ=_FI,_FK=E(_FJ),_FL=E(_FK[1]);return [0,[0,function(_FM,_){var _FN=B(A(_FL[1],[_FM,_])),_FO=_FN,_FP=B(A(_Fd,[_FM,_])),_FQ=_FP;return _FM;},_FL[2]],_FK[2]];},_FR=new T(function(){return B(_sk(_FG,_vm));}),_FS=new T(function(){return B(_5G(_5k,_Dk));}),_FT=new T(function(){return B(A(_FD,[_0,_Dk]));}),_FU=function(_FV,_){var _FW=B(A(_FT,[_FV,_])),_FX=_FW,_FY=E(_FX),_FZ=E(_FY[1]);return [0,[0,function(_G0,_){var _G1=B(A(_FZ[1],[_G0,_])),_G2=_G1,_G3=B(A(_FS,[_G0,_])),_G4=_G3;return _G0;},_FZ[2]],_FY[2]];},_G5=new T(function(){return B(_sk(_FU,_vm));}),_G6=new T(function(){return B(_5G(_5k,_Do));}),_G7=new T(function(){return B(unCStr("Red"));}),_G8=new T(function(){return B(A(_FD,[_0,_G7]));}),_G9=function(_Ga,_){var _Gb=B(A(_G8,[_Ga,_])),_Gc=_Gb,_Gd=E(_Gc),_Ge=E(_Gd[1]);return [0,[0,function(_Gf,_){var _Gg=B(A(_Ge[1],[_Gf,_])),_Gh=_Gg,_Gi=B(A(_G6,[_Gf,_])),_Gj=_Gi;return _Gf;},_Ge[2]],_Gd[2]];},_Gk=new T(function(){return B(_sk(_G9,_vm));}),_Gl=function(_Gm,_){var _Gn=B(A(_Gk,[_Gm,_])),_Go=_Gn,_Gp=E(_Go),_Gq=E(_Gp[1]),_Gr=B(A(_FR,[_Gp[2],_])),_Gs=_Gr,_Gt=E(_Gs),_Gu=E(_Gt[1]),_Gv=B(A(_G5,[_Gt[2],_])),_Gw=_Gv,_Gx=E(_Gw),_Gy=E(_Gx[1]);return [0,[0,function(_Gz,_){var _GA=B(A(_Gq[1],[_Gz,_])),_GB=_GA,_GC=B(A(_Gu[1],[_Gz,_])),_GD=_GC,_GE=B(A(_Gy[1],[_Gz,_])),_GF=_GE;return _Gz;},new T(function(){var _GG=E(_Gq[2]);if(!_GG[0]){var _GH=[0];}else{var _GI=E(_Gu[2]);if(!_GI[0]){var _GJ=[0];}else{var _GK=E(_Gy[2]);if(!_GK[0]){var _GL=[0];}else{var _GL=[1,new T(function(){var _GM=function(_GN){var _GO=E(_GN);return _GO[0]==0?E(new T(function(){var _GP=function(_GQ){var _GR=E(_GQ);return _GR[0]==0?E(E(_GK[1])[1]):[1,_GR[1],new T(function(){return B(_GP(_GR[2]));})];};return B(_GP(E(_GI[1])[1]));})):[1,_GO[1],new T(function(){return B(_GM(_GO[2]));})];};return B(_GM(E(_GG[1])[1]));})];}var _GJ=_GL;}var _GH=_GJ;}return _GH;})],_Gx[2]];},_GS=function(_GT){return function(_GU,_){return [0,[0,function(_GV,_){var _GW=B(_5k(_Da,_GV,_)),_GX=_GW,_GY=B(A(new T(function(){return B(_5G(_5k,[1,_xP,new T(function(){return B(_xR(_GT,_Db));})]));}),[_GV,_])),_GZ=_GY;return _GV;},_Bt],_GU];};},_H0=new T(function(){return B(_w5(_vT));}),_H1=function(_H2){return E(E(_H2)[11]);},_H3=function(_H4,_H5,_H6,_H7){var _H8=new T(function(){return B(_nw(_H5));}),_H9=new T(function(){return B(_3H(_H8));});return function(_Ha,_Hb){return new F(function(){return A(new T(function(){return B(_3g(_H8));}),[new T(function(){return B(A(new T(function(){return B(_40([0,_],_H9,function(_Hc){return new F(function(){return _qa(_H8,_Hc);});},function(_Hd,_He){return new F(function(){return _qd(_H8,_Hd,_He);});}));}),[_Hb]));}),function(_Hf){var _Hg=new T(function(){return E(E(_Hf)[1]);});return new F(function(){return A(new T(function(){return B(_3g(_H8));}),[new T(function(){var _Hh=new T(function(){return E(E(_Hf)[2]);});return B(A(new T(function(){return B(_3F(_H8));}),[[0,_Hh,_Hh]]));}),function(_Hi){return new F(function(){return A(new T(function(){return B(_3g(_H8));}),[new T(function(){return B(A(new T(function(){return B(_3F(_H8));}),[[0,_H,new T(function(){var _Hj=E(E(_Hi)[1]);return [0,_Hj[1],_Hj[2],_q7,_Hj[4],_Hj[5],_Hj[6]];})]]));}),function(_Hk){return new F(function(){return A(new T(function(){return B(_3g(_H8));}),[new T(function(){return B(A(new T(function(){return B(_pD(_H9,function(_Hl){return new F(function(){return _nA(_H5,_Hl);});},_H6,_H7,_H4,_Hg));}),[new T(function(){return E(E(_Hk)[2]);})]));}),function(_Hm){return new F(function(){return A(new T(function(){return B(_3g(_H8));}),[new T(function(){return B(A(_Ha,[new T(function(){return E(E(_Hm)[2]);})]));}),function(_Hn){var _Ho=E(_Hn);return new F(function(){return A(new T(function(){return B(_3F(_H8));}),[[0,[0,new T(function(){return B(A(new T(function(){return B(_H1(_H4));}),[_Hg,E(_Ho[1])[1]]));}),new T(function(){var _Hp=E(E(_Hm)[1]);return _Hp[0]==2?[1,_Hp[1]]:[0];})],_Ho[2]]]);});}]);});}]);});}]);});}]);});}]);});};},_Hq=new T(function(){return B(_H3(_9D,_aJ,_Eg,_H0));}),_Hr=new T(function(){return B(_xR(_Dk,_Db));}),_Hs=new T(function(){return B(_xR(_Dk,_Db));}),_Ht=new T(function(){return B(A(_o0,[_7r]));}),_Hu=new T(function(){var _Hv=B(A(_Eg,[_Dk])),_Hw=E(_Ht),_Hx=hs_eqWord64(_Hv[1],_Hw[1]),_Hy=_Hx;if(!E(_Hy)){var _Hz=[1,_xP,_Hr];}else{var _HA=hs_eqWord64(_Hv[2],_Hw[2]),_HB=_HA,_Hz=E(_HB)==0?[1,_xP,_Hs]:E(_Dk);}var _HC=_Hz,_HD=_HC;return _HD;}),_HE=[0,_7G,_Hu],_HF=[1,_HE,_h],_HG=new T(function(){return B(_Z(_8e,_HF));}),_HH=new T(function(){return B(_xR(_Dm,_Db));}),_HI=new T(function(){return B(_xR(_Dm,_Db));}),_HJ=new T(function(){var _HK=B(A(_Eg,[_Dm])),_HL=E(_Ht),_HM=hs_eqWord64(_HK[1],_HL[1]),_HN=_HM;if(!E(_HN)){var _HO=[1,_xP,_HH];}else{var _HP=hs_eqWord64(_HK[2],_HL[2]),_HQ=_HP,_HO=E(_HQ)==0?[1,_xP,_HI]:E(_Dm);}var _HR=_HO,_HS=_HR;return _HS;}),_HT=[0,_7G,_HJ],_HU=[1,_HT,_h],_HV=new T(function(){return B(_Z(_8e,_HU));}),_HW=new T(function(){return B(_xR(_Do,_Db));}),_HX=new T(function(){return B(_xR(_Do,_Db));}),_HY=new T(function(){var _HZ=B(A(_Eg,[_Do])),_I0=E(_Ht),_I1=hs_eqWord64(_HZ[1],_I0[1]),_I2=_I1;if(!E(_I2)){var _I3=[1,_xP,_HW];}else{var _I4=hs_eqWord64(_HZ[2],_I0[2]),_I5=_I4,_I3=E(_I5)==0?[1,_xP,_HX]:E(_Do);}var _I6=_I3,_I7=_I6;return _I7;}),_I8=[0,_7G,_HY],_I9=[1,_I8,_h],_Ia=new T(function(){return B(_Z(_8e,_I9));}),_Ib=function(_Ic,_){var _Id=B(A(_Ia,[_Ic,_])),_Ie=_Id,_If=B(_5k(_Do,_Ie,_)),_Ig=_If,_Ih=B(A(_HV,[_Ic,_])),_Ii=_Ih,_Ij=B(_5k(_Dm,_Ii,_)),_Ik=_Ij,_Il=B(A(_HG,[_Ic,_])),_Im=_Il,_In=B(_5k(_Dk,_Im,_)),_Io=_In;return _Ic;},_Ip=[1,_Do],_Iq=[0,_Ib,_Ip],_Ir=function(_Is,_){return [0,_Iq,_Is];},_It=new T(function(){return B(A(_Hq,[_Ir]));}),_Iu=new T(function(){return B(_sk(_It,_vm));}),_Iv=function(_Iw,_){var _Ix=B(_4x(_Gl,_F5,_Iw,_)),_Iy=_Ix,_Iz=E(_Iy),_IA=B(_4x(_F4,_Dc,_Iz[2],_)),_IB=_IA,_IC=E(_IB),_ID=B(_4x(_Iu,_GS,_IC[2],_)),_IE=_ID,_IF=E(_IE),_IG=E(_IF[1]);return [0,[0,function(_IH,_){var _II=B(A(_D9,[_IH,_])),_IJ=_II,_IK=B(A(E(_Iz[1])[1],[_IH,_])),_IL=_IK,_IM=B(_5R(_IH,_)),_IN=_IM,_IO=B(_5R(_IH,_)),_IP=_IO,_IQ=B(A(E(_IC[1])[1],[_IH,_])),_IR=_IQ,_IS=B(_5R(_IH,_)),_IT=_IS,_IU=B(_5R(_IH,_)),_IV=_IU,_IW=B(A(_IG[1],[_IH,_])),_IX=_IW,_IY=B(_5R(_IH,_)),_IZ=_IY;return _IH;},_IG[2]],_IF[2]];},_J0=new T(function(){return B(unCStr("This example draw a function of x between 10 and -10. You can define the function using javascript expressions"));}),_J1=new T(function(){return B(_5s(_5k,_J0));}),_J2=function(_J3){var _J4=jsShow(E(_J3)[1]),_J5=_J4;return new F(function(){return fromJSStr(_J5);});},_J6=function(_J7){return function(_dn){return new F(function(){return _1W(new T(function(){return B(_J2(_J7));}),_dn);});};},_J8=function(_J9,_Ja,_Jb){var _Jc=E(_Jb);if(!_Jc[0]){return [0];}else{var _Jd=_Jc[2],_Je=E(_Jc[1]);if(_J9!=_Je[1]){return [1,_Je,new T(function(){return B(_J8(_J9,_Ja,_Jd));})];}else{return new F(function(){return _1W(_Ja,new T(function(){return B(_J8(_J9,_Ja,_Jd));}));});}}},_Jf=[0,45],_Jg=function(_Jh,_Ji,_Jj){var _Jk=new T(function(){return B(A(_Jh,[[0, -_Jj]]));}),_Jl=new T(function(){if(E(_Ji)[1]<=6){var _Jm=function(_Jn){return [1,_Jf,new T(function(){return B(A(_Jk,[_Jn]));})];};}else{var _Jm=function(_Jo){return [1,_3T,[1,_Jf,new T(function(){return B(A(_Jk,[[1,_3S,_Jo]]));})]];};}var _Jp=_Jm;return _Jp;});if(_Jj>=0){var _Jq=isDoubleNegativeZero(_Jj),_Jr=_Jq;return E(_Jr)==0?B(A(_Jh,[[0,_Jj]])):E(_Jl);}else{return E(_Jl);}},_Js=new T(function(){return B(unCStr("canvas"));}),_Jt=new T(function(){return B(unCStr("id"));}),_Ju=new T(function(){return B(unCStr("canvas"));}),_Jv=function(_Jw,_Jx){return function(_Jy,_){var _Jz=jsCreateElem(toJSStr(E(_Ju))),_JA=_Jz,_JB=jsAppendChild(_JA,E(_Jy)[1]),_JC=[0,_JA],_JD=B(A(new T(function(){return B(A(_Jw,[_Jx]));}),[_JC,_])),_JE=_JD;return _JC;};},_JF=new T(function(){return B(_Jv(_uS,_3d));}),_JG=function(_JH,_){var _JI=B(A(_JF,[_JH,_])),_JJ=_JI,_JK=B(A(_I,[_O,_JJ,_Jt,_Js,_])),_JL=_JK;return _JJ;},_JM=[0,_JG,_Bt],_JN=function(_JO,_){return [0,_JM,_JO];},_JP=new T(function(){return B(unCStr("Pattern match failure in do expression at src\\main.hs:180:5-12"));}),_JQ=function(_JR,_JS){while(1){var _JT=E(_JS);if(!_JT[0]){return false;}else{if(!B(A(_JR,[_JT[1]]))){_JS=_JT[2];continue;}else{return true;}}}},_JU=new T(function(){return B(unCStr("x*x+x+10;"));}),_JV=new T(function(){return [0,"(function(exp){ return eval(exp);})"];}),_JW=new T(function(){return B(_6(_JV));}),_JX=function(_JY,_){var _JZ=jsHasCtx2D(_JY),_K0=_JZ;if(!E(_K0)){return _a;}else{var _K1=jsGetCtx2D(_JY),_K2=_K1;return [1,[0,[0,_K2],[0,_JY]]];}},_K3=function(_K4,_){return new F(function(){return _JX(E(_K4)[1],_);});},_K5=function(_K6,_K7){return new F(function(){return A(_K6,[function(_){var _K8=jsFind(toJSStr(E(_K7))),_K9=_K8,_Ka=E(_K9);return _Ka[0]==0?_a:B(_K3(_Ka[1],_));}]);});},_Kb=new T(function(){return B(_K5(_O,_Js));}),_Kc=[0,-10],_Kd=[0,0],_Ke=[0,_Kc,_Kd],_Kf=[0,10],_Kg=[0,_Kf,_Kd],_Kh=[1,_Kg,_h],_Ki=[1,_Ke,_Kh],_Kj=function(_Kk,_){return _H;},_Kl=function(_Km){var _Kn=E(_Km);if(!_Kn[0]){return E(_Kj);}else{var _Ko=E(_Kn[1]);return function(_Kp,_){var _Kq=E(_Kp)[1],_Kr=jsMoveTo(_Kq,E(_Ko[1])[1],E(_Ko[2])[1]);return new F(function(){return (function(_Ks,_){while(1){var _Kt=E(_Ks);if(!_Kt[0]){return _H;}else{var _Ku=E(_Kt[1]),_Kv=jsLineTo(_Kq,E(_Ku[1])[1],E(_Ku[2])[1]);_Ks=_Kt[2];continue;}}})(_Kn[2],_);});};}},_Kw=new T(function(){return B(_Kl(_Ki));}),_Kx=[0,30],_Ky=[0,_Kd,_Kx],_Kz=[0,-30],_KA=[0,_Kd,_Kz],_KB=[1,_KA,_h],_KC=[1,_Ky,_KB],_KD=new T(function(){return B(_Kl(_KC));}),_KE=function(_KF,_KG,_KH){while(1){var _KI=E(_KG);if(!_KI[0]){return true;}else{var _KJ=E(_KH);if(!_KJ[0]){return false;}else{if(!B(A(_cu,[_KF,_KI[1],_KJ[1]]))){return false;}else{_KG=_KI[2];_KH=_KJ[2];continue;}}}}},_KK=new T(function(){return B(unCStr("alert"));}),_KL=function(_KM){return new F(function(){return _KE(_ct,_KK,_KM);});},_KN=new T(function(){return [0,0/0];}),_KO=new T(function(){return [0,-1/0];}),_KP=new T(function(){return [0,1/0];}),_KQ=[0,0],_KR=function(_KS,_KT){while(1){var _KU=E(_KS);if(!_KU[0]){_KS=[1,I_fromInt(_KU[1])];continue;}else{var _KV=E(_KT);if(!_KV[0]){_KS=_KU;_KT=[1,I_fromInt(_KV[1])];continue;}else{return new F(function(){return I_fromRat(_KU[1],_KV[1]);});}}}},_KW=function(_KX,_KY){var _KZ=E(_KX);if(!_KZ[0]){var _L0=_KZ[1],_L1=E(_KY);return _L1[0]==0?_L0==_L1[1]:I_compareInt(_L1[1],_L0)==0?true:false;}else{var _L2=_KZ[1],_L3=E(_KY);return _L3[0]==0?I_compareInt(_L2,_L3[1])==0?true:false:I_compare(_L2,_L3[1])==0?true:false;}},_L4=function(_L5,_L6){var _L7=E(_L5);if(!_L7[0]){var _L8=_L7[1],_L9=E(_L6);return _L9[0]==0?_L8<_L9[1]:I_compareInt(_L9[1],_L8)>0;}else{var _La=_L7[1],_Lb=E(_L6);return _Lb[0]==0?I_compareInt(_La,_Lb[1])<0:I_compare(_La,_Lb[1])<0;}},_Lc=function(_Ld,_Le){return !B(_KW(_Le,_KQ))?[0,B(_KR(_Ld,_Le))]:!B(_KW(_Ld,_KQ))?!B(_L4(_Ld,_KQ))?E(_KP):E(_KO):E(_KN);},_Lf=function(_Lg){var _Lh=E(_Lg);return new F(function(){return _Lc(_Lh[1],_Lh[2]);});},_Li=function(_Lj){return [0,1/E(_Lj)[1]];},_Lk=function(_Ll){var _Lm=E(_Ll),_Ln=_Lm[1];return _Ln<0?[0, -_Ln]:E(_Lm);},_Lo=function(_Lp){var _Lq=E(_Lp);return _Lq[0]==0?_Lq[1]:I_toNumber(_Lq[1]);},_Lr=function(_Ls){return [0,B(_Lo(_Ls))];},_Lt=[0,0],_Lu=[0,1],_Lv=[0,-1],_Lw=function(_Lx){var _Ly=E(_Lx)[1];return _Ly!=0?_Ly<=0?E(_Lv):E(_Lu):E(_Lt);},_Lz=function(_LA,_LB){return [0,E(_LA)[1]-E(_LB)[1]];},_LC=function(_LD){return [0, -E(_LD)[1]];},_LE=function(_LF,_LG){return [0,E(_LF)[1]+E(_LG)[1]];},_LH=function(_LI,_LJ){return [0,E(_LI)[1]*E(_LJ)[1]];},_LK=[0,_LE,_LH,_Lz,_LC,_Lk,_Lw,_Lr],_LL=function(_LM,_LN){return [0,E(_LM)[1]/E(_LN)[1]];},_LO=[0,_LK,_LL,_Li,_Lf],_LP=function(_LQ,_LR){return E(_LQ)[1]!=E(_LR)[1]?true:false;},_LS=function(_LT,_LU){return E(_LT)[1]==E(_LU)[1];},_LV=[0,_LS,_LP],_LW=function(_LX,_LY){return E(_LX)[1]<E(_LY)[1];},_LZ=function(_M0,_M1){return E(_M0)[1]<=E(_M1)[1];},_M2=function(_M3,_M4){return E(_M3)[1]>E(_M4)[1];},_M5=function(_M6,_M7){return E(_M6)[1]>=E(_M7)[1];},_M8=function(_M9,_Ma){var _Mb=E(_M9)[1],_Mc=E(_Ma)[1];return _Mb>=_Mc?_Mb!=_Mc?2:1:0;},_Md=function(_Me,_Mf){var _Mg=E(_Me),_Mh=E(_Mf);return _Mg[1]>_Mh[1]?E(_Mg):E(_Mh);},_Mi=function(_Mj,_Mk){var _Ml=E(_Mj),_Mm=E(_Mk);return _Ml[1]>_Mm[1]?E(_Mm):E(_Ml);},_Mn=[0,_LV,_M8,_LW,_M5,_M2,_LZ,_Md,_Mi],_Mo=[0,1],_Mp=function(_Mq){return E(E(_Mq)[1]);},_Mr=function(_Ms){return E(E(_Ms)[2]);},_Mt=function(_Mu){return E(E(_Mu)[6]);},_Mv=[0,2],_Mw=function(_Mx,_My){var _Mz=E(_My);return [1,_Mz,new T(function(){var _MA=B(_Mp(_Mx));return B(_Mw(_Mx,B(A(_MA[1],[_Mz,new T(function(){return B(A(_MA[7],[_Mo]));})]))));})];},_MB=function(_MC,_MD){var _ME=E(_MD);if(!_ME[0]){return [0];}else{var _MF=_ME[1];return !B(A(_MC,[_MF]))?[0]:[1,_MF,new T(function(){return B(_MB(_MC,_ME[2]));})];}},_MG=function(_MH,_MI,_MJ,_MK){return new F(function(){return _MB(function(_ML){return new F(function(){return A(new T(function(){return B(_Mt(_MH));}),[_ML,new T(function(){var _MM=B(_Mp(_MI)),_MN=_MM[7];return B(A(_MM[1],[_MK,new T(function(){return B(A(_Mr,[_MI,new T(function(){return B(A(_MN,[_Mo]));}),new T(function(){return B(A(_MN,[_Mv]));})]));})]));})]);});},B(_Mw(_MI,_MJ)));});},_MO=new T(function(){return B(_MG(_Mn,_LO,_Kc,_Kf));}),_MP=function(_MQ){return [1,_MQ,new T(function(){var _MR=E(_MQ);return _MR[0]==0?[0]:B(_MP(_MR[2]));})];},_MS=function(_MT,_MU){var _MV=E(_MT);if(!_MV[0]){return [0];}else{var _MW=E(_MU);return _MW[0]==0?[0]:[1,[0,_MV[1],_MW[1]],new T(function(){return B(_MS(_MV[2],_MW[2]));})];}},_MX=function(_MY){var _MZ=function(_N0,_){var _N1=E(_N0);if(!_N1[0]){return _h;}else{var _N2=B(A(_JW,[E(toJSStr(B(_J8(120,new T(function(){return B(A(_Jg,[_J6,_o4,E(_N1[1])[1],_h]));}),new T(function(){return !B(_JQ(_KL,B(_MP(_MY))))?E(_MY):E(_JU);}))))),_])),_N3=_N2,_N4=B(_MZ(_N1[2],_)),_N5=_N4;return [1,[0,_N3],_N5];}};return function(_dn,_zc){return new F(function(){return _4x(_JN,function(_N6,_By,_){return new F(function(){return (function(_N7,_){return [0,[0,function(_N8,_){var _N9=B(A(_Kb,[_])),_Na=_N9,_Nb=E(_Na);if(!_Nb[0]){var _Nc=B(_3b(_JP,_)),_Nd=_Nc;return _N8;}else{var _Ne=B(_MZ(_MO,_)),_Nf=_Ne,_Ng=E(_Nb[1]),_Nh=jsResetCanvas(E(_Ng[2])[1]),_Ni=E(_Ng[1]),_Nj=_Ni[1],_Nk=jsPushState(_Nj),_Nl=jsScale(_Nj,3,1),_Nm=jsPushState(_Nj),_Nn=jsTranslate(_Nj,50,130),_No=jsPushState(_Nj),_Np=jsRotate(_Nj,3.141592653589793),_Nq=jsBeginPath(_Nj),_Nr=B(A(_Kw,[_Ni,_])),_Ns=_Nr,_Nt=B(A(_KD,[_Ni,_])),_Nu=_Nt,_Nv=B(A(_Kl,[B(_MS(_MO,_Nf)),_Ni,_])),_Nw=_Nv,_Nx=jsStroke(_Nj),_Ny=jsPopState(_Nj),_Nz=jsPopState(_Nj),_NA=jsPopState(_Nj);return _N8;}},_Bt],_N7];})(_By,_);});},_dn,_zc);});};},_NB=[1,_JU],_NC=new T(function(){return B(_qj(_9D,_aJ,_o0,_yl,_w7));}),_ND=new T(function(){return B(A(_NC,[_a,_aI,_NB]));}),_NE=new T(function(){return B(_sk(_ND,_aH));}),_NF=function(_NG,_){var _NH=B(A(_NE,[_NG,_])),_NI=_NH,_NJ=E(_NI),_NK=E(_NJ[1]);return [0,[0,function(_NL,_){var _NM=B(A(_NK[1],[_NL,_])),_NN=_NM,_NO=B(_5R(_NL,_)),_NP=_NO;return _NL;},new T(function(){var _NQ=E(_NK[2]);return _NQ[0]==0?E(_NB):E(_NQ);})],_NJ[2]];},_NR=function(_NS,_){var _NT=B(_4x(_NF,_MX,_NS,_)),_NU=_NT,_NV=E(_NU),_NW=E(_NV[1]);return [0,[0,function(_NX,_){var _NY=B(A(_J1,[_NX,_])),_NZ=_NY,_O0=B(A(new T(function(){return B(_v8(_uS,_NW[1]));}),[_NX,_])),_O1=_O0;return _NX;},_NW[2]],_NV[2]];},_O2=new T(function(){return B(unCStr("work?"));}),_O3=function(_O4,_O5,_O6){var _O7=E(_O5);return new F(function(){return A(_O7[1],[new T(function(){var _O8=E(_O4);return E(_O6);}),function(_O9){return new F(function(){return A(_O7[3],[[1,_3M,new T(function(){var _Oa=E(_O9);return B(_1W(B(_3U(0,E(_Oa[2])[1],_h)),_Oa[1]));})]]);});}]);});},_Ob=function(_Oc){return E(E(_Oc)[5]);},_Od=new T(function(){return B(unCStr("for"));}),_Oe=new T(function(){return B(unCStr("label"));}),_Of=function(_Og,_Oh){return function(_Oi,_Oj){return function(_Ok){return new F(function(){return A(new T(function(){return B(_3g(_Og));}),[new T(function(){return B(A(new T(function(){return B(_O3([0,_],B(_3H(_Og)),function(_Ol){return new F(function(){return _qa(_Og,_Ol);});}));}),[_Ok]));}),function(_Om){return new F(function(){return A(new T(function(){return B(_3g(_Og));}),[new T(function(){return B(A(_Oj,[new T(function(){return E(E(_Om)[2]);})]));}),function(_On){var _Oo=E(_On),_Op=E(_Oo[1]);return new F(function(){return A(new T(function(){return B(_3F(_Og));}),[[0,[0,new T(function(){return B(A(new T(function(){return B(_a4(new T(function(){return B(_a2(_Oh));})));}),[new T(function(){return B(A(new T(function(){return B(_Dq(_Oh));}),[new T(function(){return B(A(new T(function(){return B(_Ob(_Oh));}),[_Oe,_Oi]));}),[1,[0,_Od,new T(function(){return E(E(_Om)[1]);})],_h]]));}),_Op[1]]));}),_Op[2]],_Oo[2]]]);});}]);});}]);});};};},_Oq=new T(function(){return B(_Of(_3f,_9D));}),_Or=new T(function(){return B(_DE(_9D,_aJ,_Eg,_Eh));}),_Os=function(_Ot,_Ou){return new F(function(){return A(_Oq,[function(_By,_){return new F(function(){return _5k(_Ot,_By,_);});},new T(function(){return B(_sk(new T(function(){return B(A(_Or,[_Ot,_Ou]));}),_vm));})]);});},_Ov=function(_KM){return new F(function(){return _Os(_O2,_KM);});},_Ow=new T(function(){return B(unCStr("study?"));}),_Ox=function(_KM){return new F(function(){return _Os(_Ow,_KM);});},_Oy=[1,_Ox,_h],_Oz=[1,_Ov,_Oy],_OA=new T(function(){return B(A(_F3,[_Oz]));}),_OB=new T(function(){return B(unCStr("Do you "));}),_OC=new T(function(){return B(_5G(_5k,_OB));}),_OD=function(_OE,_){var _OF=B(A(_OA,[_OE,_])),_OG=_OF,_OH=E(_OG),_OI=E(_OH[1]);return [0,[0,function(_OJ,_){var _OK=B(A(_OC,[_OJ,_])),_OL=_OK,_OM=B(A(_OI[1],[_OJ,_])),_ON=_OM,_OO=B(_5R(_OJ,_)),_OP=_OO;return _OJ;},_OI[2]],_OH[2]];},_OQ=new T(function(){return B(unCStr("do you enjoy your work? "));}),_OR=new T(function(){return B(_5G(_5k,_OQ));}),_OS=function(_OT,_OU,_){return [0,[0,_3d,[1,_OT]],_OU];},_OV=function(_OW,_OX,_OY,_){return new F(function(){return _4x(_OW,function(_OZ){return E(_OX);},_OY,_);});},_P0=function(_P1,_P2,_16,_){return new F(function(){return _OV(_P1,_P2,_16,_);});},_P3=function(_P4){return new F(function(){return err(_P4);});},_P5=[0,_4x,_P0,_OS,_P3],_P6=function(_P7,_P8,_P9,_Pa,_Pb,_Pc){return new F(function(){return A(_P8,[new T(function(){return B(A(_Pa,[_Pc]));}),function(_Pd){var _Pe=E(_Pd),_Pf=E(_Pe[1]);return new F(function(){return A(_P8,[new T(function(){return B(A(_Pb,[_Pe[2]]));}),function(_Pg){var _Ph=E(_Pg),_Pi=E(_Ph[1]);return new F(function(){return A(_P9,[[0,[0,new T(function(){return B(A(new T(function(){return B(_a4(_P7));}),[_Pf[1],_Pi[1]]));}),new T(function(){var _Pj=E(_Pf[2]);return _Pj[0]==0?E(_Pi[2]):E(_Pj);})],_Ph[2]]]);});}]);});}]);});},_Pk=function(_Pl,_Pm,_Pn,_Po,_Pp,_Pq){return new F(function(){return A(_Pl,[new T(function(){return B(A(_Po,[_Pq]));}),function(_Pr){var _Ps=E(_Pr),_Pt=E(_Ps[1]);return new F(function(){return A(_Pm,[[0,[0,new T(function(){return B(A(new T(function(){return B(_Dq(_Pn));}),[_Pt[1],_Pp]));}),_Pt[2]],_Ps[2]]]);});}]);});},_Pu=function(_Pv){return E(E(_Pv)[12]);},_Pw=function(_Px,_Py,_Pz,_PA,_PB,_PC,_PD){return function(_PE){return new F(function(){return A(new T(function(){return B(_3F(_Py));}),[[0,[0,new T(function(){return B(A(_Pu,[_Px,new T(function(){var _PF=B(A(_Pz,[_PB])),_PG=E(_Ht),_PH=hs_eqWord64(_PF[1],_PG[1]),_PI=_PH;if(!E(_PI)){var _PJ=B(A(_qh,[_PA,_PB]));}else{var _PK=hs_eqWord64(_PF[2],_PG[2]),_PL=_PK,_PJ=E(_PL)==0?B(A(_qh,[_PA,_PB])):E(_PB);}var _PM=_PJ,_PN=_PM;return _PN;}),_PC,_PD]));}),[1,_PB]],_PE]]);});};},_PO=[0,_8g,_DB],_PP=[1,_PO,_h],_PQ=[0,_8g,_DB],_PR=[1,_PQ,_h],_PS=function(_PT,_PU,_PV,_PW){var _PX=new T(function(){return B(_nw(_PV));}),_PY=new T(function(){return B(_nK(_PW));});return function(_PZ,_Q0,_Q1){return new F(function(){return A(new T(function(){return B(_3g(_PT));}),[new T(function(){return B(A(new T(function(){return B(_H3(_PW,_PV,_o0,_w7));}),[function(_Q2){var _Q3=E(_PX);return new F(function(){return _P6(new T(function(){return B(_a2(_PW));}),_Q3[1],_Q3[3],function(_Q4){var _Q5=E(_PX);return new F(function(){return _Pk(_Q5[1],_Q5[3],_PW,new T(function(){return B(_Pw(_PW,_PX,_o0,_yl,_Q0,new T(function(){return B(A(_PY,[_Q0]));}),_0));}),new T(function(){return !E(_PZ)?[0]:E(_PP);}),_Q4);});},function(_Q6){var _Q7=E(_PX);return new F(function(){return _Pk(_Q7[1],_Q7[3],_PW,new T(function(){return B(_Pw(_PW,_PX,_o0,_yl,_Q1,new T(function(){return B(A(_PY,[_Q1]));}),_0));}),new T(function(){return !E(_PZ)?E(_PR):[0];}),_Q6);});},_Q2);});}]));}),function(_Q8){return !B(_rH(_Q8,_Q0))?E(new T(function(){return B(A(_3F,[_PT,_0]));})):E(new T(function(){return B(A(_3F,[_PT,_fb]));}));}]);});};},_Q9=new T(function(){return B(_PS(_P5,_9O,_aJ,_9D));}),_Qa=new T(function(){return B(unCStr("yes"));}),_Qb=new T(function(){return B(unCStr("no"));}),_Qc=new T(function(){return B(A(_Q9,[_fb,_Qa,_Qb]));}),_Qd=new T(function(){return B(unCStr("ok"));}),_Qe=[1,_Qd],_Qf=new T(function(){return B(A(_yn,[_Qe]));}),_Qg=new T(function(){return B(_sk(_Qf,_vm));}),_Qh=function(_Qi,_){var _Qj=B(A(_Qc,[_Qi,_])),_Qk=_Qj,_Ql=E(_Qk),_Qm=E(_Ql[1]),_Qn=B(A(_Qg,[_Ql[2],_])),_Qo=_Qn,_Qp=E(_Qo);return [0,[0,function(_Qq,_){var _Qr=B(A(_OR,[_Qq,_])),_Qs=_Qr,_Qt=B(A(_Qm[1],[_Qq,_])),_Qu=_Qt,_Qv=B(A(E(_Qp[1])[1],[_Qq,_])),_Qw=_Qv,_Qx=B(_5R(_Qq,_)),_Qy=_Qx;return _Qq;},new T(function(){var _Qz=E(_Qm[2]);return _Qz[0]==0?[0]:[1,[0,_Qz[1]]];})],_Qp[2]];},_QA=new T(function(){return B(unCStr("do you study in "));}),_QB=new T(function(){return B(_5G(_5k,_QA));}),_QC=new T(function(){return B(unCStr("University"));}),_QD=function(_KM){return new F(function(){return _Os(_QC,_KM);});},_QE=new T(function(){return B(unCStr("High School"));}),_QF=function(_KM){return new F(function(){return _Os(_QE,_KM);});},_QG=[1,_QF,_h],_QH=[1,_QD,_QG],_QI=new T(function(){return B(A(_F3,[_QH]));}),_QJ=function(_QK,_){var _QL=B(A(_QI,[_QK,_])),_QM=_QL,_QN=E(_QM),_QO=E(_QN[1]);return [0,[0,function(_QP,_){var _QQ=B(A(_QB,[_QP,_])),_QR=_QQ,_QS=B(A(_QO[1],[_QP,_])),_QT=_QS;return _QP;},new T(function(){var _QU=E(_QO[2]);return _QU[0]==0?[0]:[1,[1,_QU[1]]];})],_QN[2]];},_QV=new T(function(){return B(_bz("src\\main.hs:(283,11)-(290,64)|case"));}),_QW=new T(function(){return B(unCStr(" that you enjoy your work"));}),_QX=new T(function(){return B(unCStr("False"));}),_QY=new T(function(){return B(_1W(_QX,_QW));}),_QZ=new T(function(){return B(unCStr("True"));}),_R0=new T(function(){return B(_1W(_QZ,_QW));}),_R1=[0,32],_R2=function(_R3,_R4){return function(_dn,_zc){return new F(function(){return _4x(_OD,function(_R5){return function(_dn,_zc){return new F(function(){return _4x(new T(function(){return !B(_rH(_R5,_Ow))?!B(_rH(_R5,_O2))?E(_QV):E(_Qh):E(_QJ);}),function(_R6){return function(_R7,_){var _R8=B(A(new T(function(){var _R9=E(_R6);if(!_R9[0]){var _Ra=function(_Rb,_){return [0,[0,function(_Rc,_){var _Rd=B(A(new T(function(){return B(_5s(_5k,new T(function(){return B(unAppCStr("You work and it is ",new T(function(){return !E(_R9[1])?E(_QY):E(_R0);})));})));}),[_Rc,_])),_Re=_Rd;return _Rc;},_a],_Rb];};}else{var _Ra=function(_Rf,_){return [0,[0,function(_Rg,_){var _Rh=B(A(new T(function(){return B(_5s(_5k,new T(function(){return B(unAppCStr("You study at the ",_R9[1]));})));}),[_Rg,_])),_Ri=_Rh;return _Rg;},_a],_Rf];};}return _Ra;}),[_R7,_])),_Rj=_R8,_Rk=E(_Rj),_Rl=E(_Rk[1]);return [0,[0,function(_Rm,_){var _Rn=B(A(new T(function(){return B(_5s(_5k,new T(function(){return B(unAppCStr("You are ",new T(function(){return B(_1W(_R3,[1,_R1,_R4]));})));})));}),[_Rm,_])),_Ro=_Rn,_Rp=B(A(_Rl[1],[_Rm,_])),_Rq=_Rp;return _Rm;},_Rl[2]],_Rk[2]];};},_dn,_zc);});};},_dn,_zc);});};},_Rr=function(_Rs){var _Rt=E(_Rs);return new F(function(){return _R2(_Rt[1],_Rt[2]);});},_Ru=new T(function(){return B(unCStr("Who are you? "));}),_Rv=new T(function(){return B(_5s(_5k,_Ru));}),_Rw=new T(function(){return B(unCStr("name"));}),_Rx=new T(function(){return B(unCStr("placeholder"));}),_Ry=[0,_Rx,_Rw],_Rz=[1,_Ry,_h],_RA=new T(function(){return B(unCStr("surname"));}),_RB=[0,_Rx,_RA],_RC=[1,_RB,_h],_RD=[1,_Qd],_RE=new T(function(){return B(A(_yn,[_RD]));}),_RF=new T(function(){return B(_sk(_RE,_vm));}),_RG=new T(function(){return B(A(_NC,[_a,_aI,_a]));}),_RH=new T(function(){return B(A(_NC,[_a,_aI,_a]));}),_RI=function(_RJ,_){var _RK=B(A(_RH,[_RJ,_])),_RL=_RK,_RM=E(_RL),_RN=E(_RM[1]),_RO=B(A(_RG,[_RM[2],_])),_RP=_RO,_RQ=E(_RP),_RR=E(_RQ[1]),_RS=B(A(_RF,[_RQ[2],_])),_RT=_RS,_RU=E(_RT);return [0,[0,function(_RV,_){var _RW=B(A(_Rv,[_RV,_])),_RX=_RW,_RY=B(A(new T(function(){return B(_Z(_RN[1],_Rz));}),[_RV,_])),_RZ=_RY,_S0=B(_5R(_RV,_)),_S1=_S0,_S2=B(A(new T(function(){return B(_Z(_RR[1],_RC));}),[_RV,_])),_S3=_S2,_S4=B(_5R(_RV,_)),_S5=_S4,_S6=B(A(E(_RU[1])[1],[_RV,_])),_S7=_S6,_S8=B(_5R(_RV,_)),_S9=_S8;return _RV;},new T(function(){var _Sa=E(_RN[2]);if(!_Sa[0]){var _Sb=[0];}else{var _Sc=E(_RR[2]),_Sb=_Sc[0]==0?[0]:[1,[0,_Sa[1],_Sc[1]]];}return _Sb;})],_RU[2]];},_Sd=new T(function(){return B(unCStr("http://mflowdemo.herokuapp.com/noscript/monadicwidgets/combination"));}),_Se=new T(function(){return B(unCStr("This formulary is the same than the one "));}),_Sf=[0,97],_Sg=[1,_Sf,_h],_Sh=function(_Si,_Sj){return function(_Sk,_){var _Sl=jsCreateElem(toJSStr(_Sg)),_Sm=_Sl,_Sn=jsAppendChild(_Sm,E(_Sk)[1]),_So=[0,_Sm],_Sp=B(A(new T(function(){return B(A(_Si,[_Sj]));}),[_So,_])),_Sq=_Sp;return _So;};},_Sr=new T(function(){return B(unCStr("run in the server by MFlow"));}),_Ss=new T(function(){return B(_Sh(_5k,_Sr));}),_St=new T(function(){return B(unCStr("href"));}),_Su=function(_Sv,_){var _Sw=B(_5k(_Se,_Sv,_)),_Sx=_Sw,_Sy=B(A(_Ss,[_Sv,_])),_Sz=_Sy,_SA=B(A(_I,[_O,_Sz,_St,_Sd,_])),_SB=_SA;return _Sv;},_SC=new T(function(){return B(_5s(_uS,_Su));}),_SD=new T(function(){return B(unCStr("Fields of a form appear in sequence. Some of the fields trigger events instantly. Some others use a button to trigger them. It also contains option buttons, radio buttons etc"));}),_SE=new T(function(){return B(_5s(_5k,_SD));}),_SF=function(_SG,_){var _SH=B(_4x(_RI,_Rr,_SG,_)),_SI=_SH,_SJ=E(_SI),_SK=E(_SJ[1]);return [0,[0,function(_SL,_){var _SM=B(A(_SE,[_SL,_])),_SN=_SM,_SO=B(A(_SC,[_SL,_])),_SP=_SO,_SQ=B(A(_SK[1],[_SL,_])),_SR=_SQ;return _SL;},_SK[2]],_SJ[2]];},_SS=new T(function(){return B(unCStr("this example show a image gallery. It advances each 20 seconds and by pressing the button"));}),_ST=new T(function(){return B(_5s(_5k,_SS));}),_SU=[1,_69],_SV=new T(function(){return B(unCStr("GalleryIndex"));}),_SW=[0,I_fromBits([203033753,3200738202]),I_fromBits([3394053259,1065442867]),_zo,_zp,_SV],_SX=[0,I_fromBits([203033753,3200738202]),I_fromBits([3394053259,1065442867]),_SW,_h],_SY=function(_SZ){return E(_SX);},_T0=new T(function(){return B(_BJ(_1c,_3L,_1a,_SY));}),_T1=function(_T2,_){var _T3=B(A(_T0,[_T2,_])),_T4=_T3;return [0,[0,_vi,new T(function(){var _T5=E(E(_T4)[1]);return _T5[0]==0?E(_SU):E(_T5);})],new T(function(){return E(E(_T4)[2]);})];},_T6=new T(function(){return B(unCStr("100%"));}),_T7=[0,62],_T8=[1,_T7,_h],_T9=[1,_T8],_Ta=new T(function(){return B(A(_yn,[_T9]));}),_Tb=new T(function(){return B(_sk(_Ta,_vm));}),_Tc=function(_Td){return E(_Tb);},_Te=new T(function(){return B(unCStr("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRAgKkpDyzk8kdIqk5ECsZ14XgbpBzyWFvrCrHombkSBAUn6jFo"));}),_Tf=[1,_Te,_h],_Tg=new T(function(){return B(unCStr("https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSfP70npv4FOrkBjScP0tVu2t3veSNoFQ6MMxX6LDO8kldNeu-DxQ"));}),_Th=[1,_Tg,_Tf],_Ti=new T(function(){return B(unCStr("https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcS53axpzkDyzEUAdaIP3YsaHuR-_YqN9qFK3W4bp_D2OBZfW5BU_Q"));}),_Tj=[1,_Ti,_Th],_Tk=new T(function(){return B(unCStr("https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ_ywj-zxDq3h_B4l48XHsjTywrdbK5egxvhxkYJ1HOkDFXd_-H"));}),_Tl=[1,_Tk,_Tj],_Tm=new T(function(){return B(unCStr("https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQmmC4kV3NPFIpGL_x4H_iHG_p-c93DGjWfkxVtjxEFVng7A8o-nw"));}),_Tn=[1,_Tm,_Tl],_To=new T(function(){return B(unCStr("http://almaer.com/blog/uploads/interview-haskell.png"));}),_Tp=[1,_To,_Tn],_Tq=new T(function(){return B(unCStr("height"));}),_Tr=new T(function(){return B(unCStr("img"));}),_Ts=function(_Tt,_){var _Tu=jsCreateElem(toJSStr(E(_Tr))),_Tv=_Tu,_Tw=jsAppendChild(_Tv,E(_Tt)[1]);return [0,_Tv];},_Tx=function(_Ty,_Tz){while(1){var _TA=E(_Ty);if(!_TA[0]){return E(_Tz);}else{_Ty=_TA[2];var _TB=_Tz+1|0;_Tz=_TB;continue;}}},_TC=new T(function(){return [0,B(_Tx(_Tp,0))-1|0];}),_TD=[0,_3d,_5W],_TE=new T(function(){return B(unCStr("src"));}),_TF=new T(function(){return B(unCStr("width"));}),_TG=function(_TH){return function(_dn,_zc){return new F(function(){return _4x(function(_By,_){return new F(function(){return _4x(_Br,function(_TI){return function(_TJ,_){return [0,_TD,new T(function(){var _TK=E(_TI);return [0,_TK[1],_TK[2],_TK[3],_TK[4],_TK[5],new T(function(){return B(_Bg(_SX,new T(function(){var _TL=E(_TH)[1];if(_TL!=E(_TC)[1]){var _TM=[0,_TL+1|0];}else{var _TM=E(_69);}var _TN=_TM,_TO=_TN;return _TO;}),_TK[6]));})];})];};},_By,_);});},function(_TP,_By,_){return new F(function(){return (function(_By,_){return new F(function(){return _4x(function(_TQ,_){return [0,[0,function(_TR,_){var _TS=B(_Ts(_TR,_)),_TT=_TS,_TU=B(A(_I,[_O,_TT,_TE,new T(function(){var _TV=E(_TH)[1];return _TV>=0?B(_wc(_Tp,_TV)):E(_w9);}),_])),_TW=_TU,_TX=B(A(_I,[_O,_TT,_TF,_T6,_])),_TY=_TX,_TZ=B(A(_I,[_O,_TT,_Tq,_T6,_])),_U0=_TZ,_U1=B(_5R(_TR,_)),_U2=_U1;return _TR;},_Bt],_TQ];},_Tc,_By,_);});})(_By,_);});},_dn,_zc);});};},_U3=function(_By,_){return new F(function(){return _4x(_T1,_TG,_By,_);});},_U4=function(_U5,_U6,_){return new F(function(){return _U7(_U6,_);});},_U8=function(_By,_){return new F(function(){return _yK(_U3,_U4,_By,_);});},_U9=[0,20000],_Ua=new T(function(){return B(_40(_1c,_3L,_1a,_17));}),_Ub=function(_Uc,_Ud,_Ue,_){var _Uf=B(A(_Ua,[_Ue,_])),_Ug=_Uf,_Uh=new T(function(){return E(E(_Ug)[1]);}),_Ui=function(_){var _Uj=jsSetTimeout(E(_Uc)[1],function(_){var _Uk=jsFind(toJSStr(E(_Uh))),_Ul=_Uk,_Um=E(_Ul);if(!_Um[0]){return _H;}else{var _Un=E(_Um[1]),_Uo=E(_Un),_Up=jsClearChildren(_Un[1]),_Uq=E(_m)[1],_Ur=takeMVar(_Uq),_Us=_Ur,_Ut=B(A(_Ud,[_Us,_])),_Uu=_Ut,_Uv=E(_Uu),_Uw=E(_Uv[1]),_Ux=_Uw[1],_Uy=_Uw[2],_=putMVar(_Uq,new T(function(){var _Uz=E(_Uv[2]);return [0,_Uz[1],_Uz[2],_Uz[3],_Uz[4],_0,_Uz[6]];}));if(!E(E(_Us)[5])){var _UA=B(A(_Ux,[_Uo,_])),_UB=_UA,_UC=E(_Uy);if(!_UC[0]){return new F(function(){return _Ui(_);});}else{var _UD=E(_UC[1]);return _H;}}else{var _UE=B(A(_8,[E(_Uo[1]),_])),_UF=_UE,_UG=B(A(_Ux,[[0,_UF],_])),_UH=_UG,_UI=E(_Uy);if(!_UI[0]){return new F(function(){return _Ui(_);});}else{var _UJ=E(_UI[1]);return _H;}}}});return _H;},_UK=B(_Ui(_)),_UL=_UK;return new F(function(){return _yt(_Uh,_Ud,new T(function(){return E(E(_Ug)[2]);}),_);});},_U7=function(_UM,_){var _UN=B(_Ub(_U9,_U8,_UM,_)),_UO=_UN,_UP=E(_UO),_UQ=E(_UP[1]);return [0,[0,function(_UR,_){var _US=B(A(_ST,[_UR,_])),_UT=_US,_UU=B(A(_UQ[1],[_UR,_])),_UV=_UU;return _UR;},_UQ[2]],_UP[2]];},_UW=function(_UX){return function(_UY,_){return [0,[0,new T(function(){return B(_5G(_5k,new T(function(){return B(unAppCStr(" returns ",_UX));})));}),_Bt],_UY];};},_UZ=new T(function(){return B(unCStr("This link say Hi!"));}),_V0=function(_By,_){return new F(function(){return _5k(_UZ,_By,_);});},_V1=new T(function(){return B(unCStr("Hi!"));}),_V2=new T(function(){return B(unCStr("Onload"));}),_V3=[0,_V2,_rc],_V4=function(_V5,_){var _V6=0,_V7=_V6;if(!E(_V7)){return new F(function(){return (function(_){var _V8=E(_ri)[1],_V9=takeMVar(_V8),_Va=_V9,_Vb=jsCatch(function(_){return new F(function(){return (function(_){return _V5;})();});},function(_16,_){return new F(function(){return _ro(_Va,_V8,_16,_);});}),_Vc=_Vb,_=putMVar(_V8,_Vc);return _H;})();});}else{var _Vd=E(_ri)[1],_Ve=takeMVar(_Vd),_Vf=_Ve,_Vg=jsCatch(function(_){return _V5;},function(_16,_){return new F(function(){return _ro(_Vf,_Vd,_16,_);});}),_Vh=_Vg,_=putMVar(_Vd,_Vh);return _H;}},_Vi=function(_Vj,_){var _Vk=B(_V4(_V3,_)),_Vl=_Vk;return [0,[0,_3d,[1,_Vl]],_Vj];},_Vm=function(_){var _Vn=E(_ri)[1],_Vo=takeMVar(_Vn),_Vp=_Vo,_=putMVar(_Vn,_Vp);return _Vp;},_Vq=function(_Vr,_){var _Vs=0,_Vt=_Vs;if(!E(_Vt)){var _Vu=B(_Vm()),_Vv=_Vu;return [0,[0,_3d,[1,_Vv]],_Vr];}else{var _Vw=E(_ri)[1],_Vx=takeMVar(_Vw),_Vy=_Vx,_=putMVar(_Vw,_Vy);return [0,[0,_3d,[1,_Vy]],_Vr];}},_Vz=[0,_3d,_a],_VA=function(_VB,_VC){return function(_dn,_zc){return new F(function(){return _4x(_Vi,function(_VD,_16,_){return new F(function(){return (function(_16,_){return new F(function(){return _4x(new T(function(){return B(_sk(function(_VE,_){return [0,[0,_VB,_Bt],_VE];},_VC));}),function(_VF){return function(_16,_){return new F(function(){return _4x(_Vq,function(_VG){var _VH=E(_VG);return new F(function(){return (function(_VI,_VJ){return function(_VK,_){return !E(new T(function(){return B(_rH(new T(function(){return B(_ra(_VC));}),_VI));}))?[0,_Vz,_VK]:[0,[0,_3d,[1,[0,_VI,_VJ]]],_VK];};})(_VH[1],_VH[2]);});},_16,_);});};},_16,_);});})(_16,_);});},_dn,_zc);});};},_VL=new T(function(){return B(A(_o0,[_7r]));}),_VM=function(_VN,_VO,_VP,_VQ){return function(_dn,_zc){return new F(function(){return _4x(new T(function(){return B(_VA(function(_VR,_){var _VS=B(A(new T(function(){return B(_Sh(_uS,_VQ));}),[_VR,_])),_VT=_VS,_VU=B(A(_I,[_O,_VT,_St,new T(function(){return B(unAppCStr("#/",new T(function(){var _VV=B(A(_VO,[_VP])),_VW=E(_VL),_VX=hs_eqWord64(_VV[1],_VW[1]),_VY=_VX;if(!E(_VY)){var _VZ=B(A(_qh,[_VN,_VP]));}else{var _W0=hs_eqWord64(_VV[2],_VW[2]),_W1=_W0,_VZ=E(_W1)==0?B(A(_qh,[_VN,_VP])):E(_VP);}var _W2=_VZ,_W3=_W2;return _W3;})));}),_])),_W4=_VU;return _VT;},_vm));}),function(_W5,_16,_){return new F(function(){return (function(_W6,_){return [0,[0,_3d,[1,_VP]],_W6];})(_16,_);});},_dn,_zc);});};},_W7=new T(function(){return B(_VM(_Eh,_Eg,_V1,_V0));}),_W8=new T(function(){return B(_sk(_W7,_vm));}),_W9=function(_Wa,_){var _Wb=B(A(_W8,[_Wa,_])),_Wc=_Wb,_Wd=E(_Wc),_We=E(_Wd[1]);return [0,[0,function(_Wf,_){var _Wg=B(_5R(_Wf,_)),_Wh=_Wg,_Wi=B(A(_We[1],[_Wf,_])),_Wj=_Wi;return _Wf;},_We[2]],_Wd[2]];},_Wk=function(_Wl,_){var _Wm=0,_Wn=_Wm;if(!E(_Wn)){var _Wo=B(_Vm()),_Wp=_Wo;return [0,[0,_3d,[1,_Wp]],_Wl];}else{var _Wq=E(_ri)[1],_Wr=takeMVar(_Wq),_Ws=_Wr,_=putMVar(_Wq,_Ws);return [0,[0,_3d,[1,_Ws]],_Wl];}},_Wt=function(_Wu,_Wv,_Ww){return new F(function(){return A(_Wu,[[1,_2J,new T(function(){return B(A(_Wv,[_Ww]));})]]);});},_Wx=new T(function(){return B(unCStr("Key "));}),_Wy=new T(function(){return B(unCStr("Mouse "));}),_Wz=new T(function(){return B(unCStr("Click "));}),_WA=new T(function(){return B(unCStr("NoData"));}),_WB=function(_WC){return new F(function(){return _1W(_WA,_WC);});},_WD=new T(function(){return B(unCStr(": empty list"));}),_WE=new T(function(){return B(unCStr("Prelude."));}),_WF=function(_WG){return new F(function(){return err(B(_1W(_WE,new T(function(){return B(_1W(_WG,_WD));}))));});},_WH=new T(function(){return B(unCStr("foldr1"));}),_WI=new T(function(){return B(_WF(_WH));}),_WJ=function(_WK,_WL){var _WM=E(_WL);if(!_WM[0]){return E(_WI);}else{var _WN=_WM[1],_WO=E(_WM[2]);if(!_WO[0]){return E(_WN);}else{return new F(function(){return A(_WK,[_WN,new T(function(){return B(_WJ(_WK,_WO));})]);});}}},_WP=[0,32],_WQ=function(_WR,_WS){var _WT=E(_WS);switch(_WT[0]){case 0:return E(_WB);case 1:var _WU=function(_WV){return new F(function(){return _3U(11,E(_WT[1])[1],[1,_WP,new T(function(){var _WW=E(_WT[2]);return [1,_3T,new T(function(){return B(A(_WJ,[_Wt,[1,function(_WX){return new F(function(){return _3U(0,E(_WW[1])[1],_WX);});},[1,function(_WY){return new F(function(){return _3U(0,E(_WW[2])[1],_WY);});},_h]],[1,_3S,_WV]]));})];})]);});};return E(_WR)[1]<11?function(_WZ){return new F(function(){return _1W(_Wz,new T(function(){return B(_WU(_WZ));}));});}:function(_X0){return [1,_3T,new T(function(){return B(_1W(_Wz,new T(function(){return B(_WU([1,_3S,_X0]));})));})];};case 2:var _X1=function(_X2){return new F(function(){return _1W(_Wy,new T(function(){var _X3=E(_WT[1]);return [1,_3T,new T(function(){return B(A(_WJ,[_Wt,[1,function(_X4){return new F(function(){return _3U(0,E(_X3[1])[1],_X4);});},[1,function(_X5){return new F(function(){return _3U(0,E(_X3[2])[1],_X5);});},_h]],[1,_3S,_X2]]));})];}));});};return E(_WR)[1]<11?E(_X1):function(_X6){return [1,_3T,new T(function(){return B(_X1([1,_3S,_X6]));})];};default:var _X7=_WT[1];return E(_WR)[1]<11?function(_X8){return new F(function(){return _1W(_Wx,new T(function(){return B(_3U(11,E(_X7)[1],_X8));}));});}:function(_X9){return [1,_3T,new T(function(){return B(_1W(_Wx,new T(function(){return B(_3U(11,E(_X7)[1],[1,_3S,_X9]));})));})];};}},_Xa=function(_Xb){return function(_Xc,_){return [0,[0,new T(function(){return B(_5s(_5k,new T(function(){var _Xd=E(_Xb);return B(_1W(_Xd[1],[1,_R1,new T(function(){return B(A(_WQ,[_o4,_Xd[2],_h]));})]));})));}),_Bt],_Xc];};},_Xe=function(_By,_){return new F(function(){return _4x(_Wk,_Xa,_By,_);});},_Xf=function(_Xg){return E(_Xe);},_Xh=[14,_],_Xi=[12,_],_Xj=[9,_],_Xk=[11,_],_Xl=[5,_],_Xm=[10,_],_Xn=[6,_],_Xo=[7,_],_Xp=new T(function(){return B(unCStr("height:100px;background-color:lightgreen;position:relative"));}),_Xq=new T(function(){return B(unCStr("div"));}),_Xr=function(_Xs,_Xt){return function(_Xu,_){var _Xv=jsCreateElem(toJSStr(E(_Xq))),_Xw=_Xv,_Xx=jsAppendChild(_Xw,E(_Xu)[1]),_Xy=[0,_Xw],_Xz=B(A(new T(function(){return B(A(_Xs,[_Xt]));}),[_Xy,_])),_XA=_Xz;return _Xy;};},_XB=new T(function(){return B(unCStr("h1"));}),_XC=function(_XD,_XE){return function(_XF,_){var _XG=jsCreateElem(toJSStr(E(_XB))),_XH=_XG,_XI=jsAppendChild(_XH,E(_XF)[1]),_XJ=[0,_XH],_XK=B(A(new T(function(){return B(A(_XD,[_XE]));}),[_XJ,_])),_XL=_XK;return _XJ;};},_XM=new T(function(){return B(unCStr("Mouse events here"));}),_XN=new T(function(){return B(_XC(_5k,_XM));}),_XO=new T(function(){return B(_Xr(_uS,_XN));}),_XP=function(_XQ,_){var _XR=B(A(_XO,[_XQ,_])),_XS=_XR,_XT=B(A(_I,[_O,_XS,_CK,_Xp,_])),_XU=_XT;return _XS;},_XV=[0,_XP,_Bt],_XW=function(_XX,_){return [0,_XV,_XX];},_XY=new T(function(){return B(_sk(_XW,_Xo));}),_XZ=new T(function(){return B(_sk(_XY,_Xn));}),_Y0=new T(function(){return B(_sk(_XZ,_Xm));}),_Y1=new T(function(){return B(_sk(_Y0,_Xl));}),_Y2=new T(function(){return B(_sk(_Y1,_Xk));}),_Y3=new T(function(){return B(_sk(_Y2,_vm));}),_Y4=new T(function(){return B(_sk(_Y3,_Xj));}),_Y5=new T(function(){return B(_sk(_Y4,_Xi));}),_Y6=new T(function(){return B(_sk(_Y5,_Xh));}),_Y7=new T(function(){return B(_sk(_Y6,_aH));}),_Y8=new T(function(){return B(unCStr("http://todomvc.com"));}),_Y9=new T(function(){return B(unCStr("Work in progress for a todo application to be added to "));}),_Ya=new T(function(){return B(unCStr("todomvc.com"));}),_Yb=new T(function(){return B(_Sh(_5k,_Ya));}),_Yc=function(_Yd,_){var _Ye=B(_5k(_Y9,_Yd,_)),_Yf=_Ye,_Yg=B(A(_Yb,[_Yd,_])),_Yh=_Yg,_Yi=B(A(_I,[_O,_Yh,_St,_Y8,_])),_Yj=_Yi;return _Yd;},_Yk=new T(function(){return B(_5s(_uS,_Yc));}),_Yl=new T(function(){return B(unCStr("Tasks"));}),_Ym=[0,I_fromBits([3561938990,657451105]),I_fromBits([3021302870,108592267]),_zo,_zp,_Yl],_Yn=[0,I_fromBits([3561938990,657451105]),I_fromBits([3021302870,108592267]),_Ym,_h],_Yo=2,_Yp=function(_Yq,_Yr,_Ys,_Yt,_){var _Yu=B(A(_Ys,[_Yt,_])),_Yv=_Yu,_Yw=E(_Yv),_Yx=E(_Yw[1]),_Yy=_Yx[1];return [0,[0,function(_Yz,_){var _YA=jsFind(toJSStr(E(_Yq))),_YB=_YA,_YC=E(_YB);if(!_YC[0]){return _Yz;}else{var _YD=_YC[1];switch(E(_Yr)){case 0:var _YE=B(A(_Yy,[_YD,_])),_YF=_YE;return _Yz;case 1:var _YG=E(_YD),_YH=_YG[1],_YI=jsGetChildren(_YH),_YJ=_YI,_YK=E(_YJ);if(!_YK[0]){var _YL=B(A(_Yy,[_YG,_])),_YM=_YL;return _Yz;}else{var _YN=jsCreateElem(toJSStr(E(_4d))),_YO=_YN,_YP=jsAddChildBefore(_YO,_YH,E(_YK[1])[1]),_YQ=B(A(_Yy,[[0,_YO],_])),_YR=_YQ;return _Yz;}break;default:var _YS=E(_YD),_YT=jsClearChildren(_YS[1]),_YU=B(A(_Yy,[_YS,_])),_YV=_YU;return _Yz;}}},_Yx[2]],_Yw[2]];},_YW=[0,_3d,_5W],_YX=function(_YY,_){return [0,_YW,_YY];},_YZ=new T(function(){return B(unCStr("Pattern match failure in do expression at src\\main.hs:339:7-25"));}),_Z0=new T(function(){return B(_P3(_YZ));}),_Z1=function(_Z2,_Z3,_Z4,_Z5){return new F(function(){return A(_Z2,[new T(function(){return function(_){var _Z6=jsSet(E(_Z3)[1],toJSStr(E(_Z4)),toJSStr(E(_Z5)));return _H;};})]);});},_Z7=new T(function(){return B(unCStr("text"));}),_Z8=new T(function(){return B(unCStr("value"));}),_Z9=new T(function(){return B(_7s(_nT,_nY));}),_Za=new T(function(){return B(A(_Z9,[_7r]));}),_Zb=new T(function(){return B(A(_Z9,[_7r]));}),_Zc=new T(function(){return B(unCStr("Prelude.read: ambiguous parse"));}),_Zd=new T(function(){return B(unCStr("Prelude.read: no parse"));}),_Ze=function(_Zf){return [1,function(_Zg){return new F(function(){return A(_kb,[_Zg,function(_Zh){return E([3,_Zf,_cW]);}]);});}];},_Zi=function(_Zj){while(1){var _Zk=(function(_Zl){var _Zm=E(_Zl);if(!_Zm[0]){return [0];}else{var _Zn=_Zm[2],_Zo=E(_Zm[1]);if(!E(_Zo[2])[0]){return [1,_Zo[1],new T(function(){return B(_Zi(_Zn));})];}else{_Zj=_Zn;return null;}}})(_Zj);if(_Zk!=null){return _Zk;}}},_Zp=function(_Zq,_Zr){var _Zs=B(_Zi(B(_bC(B(A(E(_Zq)[3],[_m7,_Ze])),_Zr))));return _Zs[0]==0?B(err(_Zd)):E(_Zs[2])[0]==0?E(_Zs[1]):B(err(_Zc));},_Zt=function(_Zu,_Zv,_Zw,_Zx){var _Zy=new T(function(){return B(_qh(_Zv));});return [0,function(_Zz){return new F(function(){return A(new T(function(){return B(_qj(_9D,_aJ,_Zw,_Zv,_Zu));}),[[1,_Zx],_Z7,_Zz]);});},function(_ZA,_){var _ZB=E(_Zx),_ZC=jsFind(toJSStr(_ZB)),_ZD=_ZC,_ZE=E(_ZD);return _ZE[0]==0?B(_4m(_ZB)):B(A(_Z1,[_O,_ZE[1],_Z8,new T(function(){var _ZF=B(A(_Zw,[_ZA])),_ZG=E(_Za),_ZH=hs_eqWord64(_ZF[1],_ZG[1]),_ZI=_ZH;if(!E(_ZI)){var _ZJ=B(A(_Zy,[_ZA]));}else{var _ZK=hs_eqWord64(_ZF[2],_ZG[2]),_ZL=_ZK,_ZJ=E(_ZL)==0?B(A(_Zy,[_ZA])):E(_ZA);}var _ZM=_ZJ,_ZN=_ZM;return _ZN;}),_]));},function(_){var _ZO=E(_Zx),_ZP=jsFind(toJSStr(_ZO)),_ZQ=_ZP,_ZR=E(_ZQ);if(!_ZR[0]){return new F(function(){return _4m(_ZO);});}else{var _ZS=B(_Ds(E(_ZR[1])[1],_Z8,_)),_ZT=_ZS;return new T(function(){var _ZU=B(A(_Z9,[_ZT])),_ZV=E(_Zb),_ZW=hs_eqWord64(_ZU[1],_ZV[1]),_ZX=_ZW;if(!E(_ZX)){var _ZY=B(_Zp(_Zu,_ZT));}else{var _ZZ=hs_eqWord64(_ZU[2],_ZV[2]),_100=_ZZ,_ZY=E(_100)==0?B(_Zp(_Zu,_ZT)):E(_ZT);}var _101=_ZY,_102=_101;return _102;});}}];},_103=new T(function(){return B(unCStr("todo"));}),_104=new T(function(){var _105=B(_Zt(_H0,_Eh,_Eg,_103));return [0,_105[1],_105[2],_105[3]];}),_106=new T(function(){var _107=B(A(E(_104)[2],[_h]));return function(_108,_){var _109=B(A(_107,[_])),_10a=_109;return [0,[0,_3d,[1,_10a]],_108];};}),_10b=[1,_h],_10c=function(_10d){return E(_Yn);},_10e=new T(function(){return B(_BJ(_1c,_3L,_1a,_10c));}),_10f=function(_10g,_){var _10h=B(A(_10e,[_10g,_])),_10i=_10h;return [0,[0,_vi,new T(function(){var _10j=E(E(_10i)[1]);return _10j[0]==0?E(_10b):E(_10j);})],new T(function(){return E(E(_10i)[2]);})];},_10k=[0,_3d,_5W],_10l=[0,_3d,_5W],_10m=function(_10n,_10o,_){return [0,_10l,_10o];},_10p=[0,_3d,_5W],_10q=function(_10r,_){return [0,_10p,_10r];},_10s=new T(function(){return B(unCStr("list"));}),_10t=new T(function(){return B(unCStr("check"));}),_10u=new T(function(){return B(A(_FD,[_0,_10t]));}),_10v=new T(function(){return B(_sk(_10u,_vm));}),_10w=function(_10x,_){var _10y=B(A(_10v,[_10x,_])),_10z=_10y,_10A=E(_10z),_10B=E(_10A[1]);return [0,[0,_10B[1],new T(function(){var _10C=E(_10B[2]);if(!_10C[0]){var _10D=[0];}else{var _10D=[1,E(_10C[1])[1]];}return _10D;})],_10A[2]];},_10E=new T(function(){return B(unCStr("text-decoration:line-through;"));}),_10F=new T(function(){return B(unCStr("li"));}),_10G=function(_10H,_10I){return function(_10J,_){var _10K=jsCreateElem(toJSStr(E(_10F))),_10L=_10K,_10M=jsAppendChild(_10L,E(_10J)[1]),_10N=[0,_10L],_10O=B(A(new T(function(){return B(A(_10H,[_10I]));}),[_10N,_])),_10P=_10O;return _10N;};},_10Q=function(_10R){var _10S=E(_10R);if(!_10S[0]){return [0];}else{var _10T=new T(function(){return B(_5G(_5k,_10S[1]));});return [1,function(_10U,_){var _10V=B(_4x(_10w,function(_10W){var _10X=E(_10W);return _10X[0]==0?function(_10Y,_){return [0,[0,_10T,_Bt],_10Y];}:!B(_rH(_10X[1],_10t))?function(_10Z,_){return [0,[0,_10T,_Bt],_10Z];}:E(_10X[2])[0]==0?function(_110,_){return [0,[0,function(_111,_){var _112=B(A(_10T,[_111,_])),_113=_112,_114=B(A(_I,[_O,_113,_CK,_10E,_])),_115=_114;return _113;},_Bt],_110];}:function(_116,_){return [0,[0,_10T,_Bt],_116];};},_10U,_)),_117=_10V,_118=E(_117),_119=E(_118[1]);return [0,[0,new T(function(){return B(_10G(_uS,_119[1]));}),_119[2]],_118[2]];},new T(function(){return B(_10Q(_10S[2]));})];}},_11a=function(_11b,_11c){while(1){var _11d=(function(_11e,_11f){var _11g=E(_11f);if(!_11g[0]){return E(_11e);}else{_11b=function(_11h,_){var _11i=B(A(_11e,[_11h,_])),_11j=_11i,_11k=E(_11j),_11l=E(_11k[1]),_11m=B(A(_11g[1],[_11k[2],_])),_11n=_11m,_11o=E(_11n),_11p=E(_11o[1]);return [0,[0,function(_11q,_){var _11r=B(A(_11l[1],[_11q,_])),_11s=_11r,_11t=B(A(_11p[1],[_11q,_])),_11u=_11t;return _11q;},new T(function(){var _11v=E(_11l[2]);return _11v[0]==0?E(_11p[2]):E(_11v);})],_11o[2]];};_11c=_11g[2];return null;}})(_11b,_11c);if(_11d!=null){return _11d;}}},_11w=function(_11x,_11y,_){return new F(function(){return _4x(_Wk,function(_11z){var _11A=E(E(_11z)[2]);return _11A[0]==3?E(E(_11A[1])[1])==13?function(_By,_){return new F(function(){return _4x(_106,function(_11B){return function(_By,_){return new F(function(){return _4x(_10f,function(_11C){return function(_dn,_zc){return new F(function(){return _4x(function(_By,_){return new F(function(){return _4x(_Br,function(_11D){return function(_11E,_){return [0,_10k,new T(function(){var _11F=E(_11D);return [0,_11F[1],_11F[2],_11F[3],_11F[4],_11F[5],new T(function(){return B(_Bg(_Yn,[1,_11x,_11C],_11F[6]));})];})];};},_By,_);});},function(_11G,_By,_){return new F(function(){return (function(_By,_){return new F(function(){return _4x(function(_By,_){return new F(function(){return _Yp(_10s,_Yo,new T(function(){return B(_11a(_10q,B(_10Q([1,_11x,_11C]))));}),_By,_);});},_10m,_By,_);});})(_By,_);});},_dn,_zc);});};},_By,_);});};},_By,_);});}:E(_YX):E(_Z0);},_11y,_);});},_11H=new T(function(){return B(A(E(_104)[1],[_a]));}),_11I=new T(function(){return B(_sk(_11H,_aH));}),_11J=new T(function(){return B(unCStr("todos"));}),_11K=new T(function(){return B(_XC(_5k,_11J));}),_11L=new T(function(){return B(_Xr(_uS,_3d));}),_11M=function(_11N,_){var _11O=B(_4x(_11I,_11w,_11N,_)),_11P=_11O,_11Q=E(_11P),_11R=E(_11Q[1]);return [0,[0,function(_11S,_){var _11T=B(A(new T(function(){return B(_v8(_uS,function(_11U,_){var _11V=B(A(_11K,[_11U,_])),_11W=_11V,_11X=B(A(_11R[1],[_11U,_])),_11Y=_11X;return _11U;}));}),[_11S,_])),_11Z=_11T,_120=B(A(_11L,[_11S,_])),_121=_120,_122=B(A(_I,[_O,_121,_Jt,_10s,_])),_123=_122;return _11S;},new T(function(){var _124=E(_11R[2]);return _124[0]==0?E(_Bt):E(_124);})],_11Q[2]];},_125=function(_126,_127,_){return [0,[0,_3d,[1,[1,_126]]],_127];},_128=new T(function(){return B(unCStr("revEntry"));}),_129=new T(function(){var _12a=B(_Zt(_H0,_Eh,_Eg,_128));return [0,_12a[1],_12a[2],_12a[3]];}),_12b=new T(function(){return B(A(E(_129)[1],[_a]));}),_12c=new T(function(){return B(_sk(_12b,_aH));}),_12d=function(_12e,_12f,_){return [0,[0,_3d,[1,[0,_12e]]],_12f];},_12g=new T(function(){return B(unCStr("entry"));}),_12h=new T(function(){var _12i=B(_Zt(_H0,_Eh,_Eg,_12g));return [0,_12i[1],_12i[2],_12i[3]];}),_12j=new T(function(){return B(A(E(_12h)[1],[_a]));}),_12k=new T(function(){return B(_sk(_12j,_aH));}),_12l=function(_12m,_){var _12n=B(_4x(_12k,_12d,_12m,_)),_12o=_12n,_12p=E(_12o),_12q=E(_12p[1]),_12r=B(_4x(_12c,_125,_12p[2],_)),_12s=_12r,_12t=E(_12s),_12u=E(_12t[1]);return [0,[0,new T(function(){return B(_v8(_uS,function(_12v,_){var _12w=B(A(_12q[1],[_12v,_])),_12x=_12w,_12y=B(_5R(_12v,_)),_12z=_12y,_12A=B(A(_12u[1],[_12v,_])),_12B=_12A;return _12v;}));}),new T(function(){var _12C=E(_12q[2]);return _12C[0]==0?E(_12u[2]):E(_12C);})],_12t[2]];},_12D=new T(function(){return B(unCStr("To search palindromes: one box present the other\'s reversed. It is also an example of cell usage"));}),_12E=new T(function(){return B(_5s(_5k,_12D));}),_12F=function(_12G){var _12H=B(A(E(_129)[2],[_12G]));return function(_12I,_){var _12J=B(A(_12H,[_])),_12K=_12J;return [0,[0,_3d,[1,_12K]],_12I];};},_12L=function(_12M,_12N){while(1){var _12O=E(_12M);if(!_12O[0]){return E(_12N);}else{_12M=_12O[2];var _12P=[1,_12O[1],_12N];_12N=_12P;continue;}}},_12Q=function(_12R){return function(_12S,_){return [0,[0,_3d,[1,new T(function(){return B(_12L(_12R,_h));})]],_12S];};},_12T=new T(function(){var _12U=E(E(_12h)[3]);return function(_12V,_){var _12W=B(A(_12U,[_])),_12X=_12W;return [0,[0,_3d,[1,_12X]],_12V];};}),_12Y=function(_By,_){return new F(function(){return _4x(_12T,_12Q,_By,_);});},_12Z=function(_By,_){return new F(function(){return _4x(_12Y,_12F,_By,_);});},_130=function(_131){var _132=B(A(E(_12h)[2],[_131]));return function(_133,_){var _134=B(A(_132,[_])),_135=_134;return [0,[0,_3d,[1,_135]],_133];};},_136=new T(function(){var _137=E(E(_129)[3]);return function(_138,_){var _139=B(A(_137,[_])),_13a=_139;return [0,[0,_3d,[1,_13a]],_138];};}),_13b=function(_13c){return function(_13d,_){return [0,[0,_3d,[1,new T(function(){return B(_12L(_13c,_h));})]],_13d];};},_13e=function(_By,_){return new F(function(){return _4x(_136,_13b,_By,_);});},_13f=function(_By,_){return new F(function(){return _4x(_13e,_130,_By,_);});},_13g=function(_13h){return E(_13h)[0]==0?E(_12Z):E(_13f);},_13i=function(_13j,_){var _13k=B(_4x(_12l,_13g,_13j,_)),_13l=_13k,_13m=E(_13l),_13n=E(_13m[1]);return [0,[0,function(_13o,_){var _13p=B(A(_12E,[_13o,_])),_13q=_13p,_13r=B(A(_13n[1],[_13o,_])),_13s=_13r;return _13o;},_13n[2]],_13m[2]];},_13t=new T(function(){return B(unCStr("This widget sum recursively n numbers, but remember the previos entries when one entry is edited"));}),_13u=new T(function(){return B(_5s(_5k,_13t));}),_13v=[0,_3d,_a],_13w=function(_13x,_){return [0,_13v,_13x];},_13y=function(_13z,_13A,_13B){var _13C=E(_13B);if(!_13C[0]){var _13D=_13C[3],_13E=_13C[4],_13F=_13C[5],_13G=E(_13C[2]),_13H=_13G[1];if(_13z>=_13H){if(_13z!=_13H){return new F(function(){return _AB(_13G,_13D,_13E,B(_13y(_13z,_13A,_13F)));});}else{return [0,_13C[1],E([0,_13z]),_13A,E(_13E),E(_13F)];}}else{return new F(function(){return _zW(_13G,_13D,B(_13y(_13z,_13A,_13E)),_13F);});}}else{return [0,1,E([0,_13z]),_13A,E(_g),E(_g)];}},_13I=function(_13J,_13K,_13L){var _13M=E(_13J),_13N=_13M[1],_13O=E(_13L);if(!_13O[0]){var _13P=_13O[3],_13Q=_13O[4],_13R=_13O[5],_13S=E(_13O[2]),_13T=_13S[1];if(_13N>=_13T){if(_13N!=_13T){return new F(function(){return _AB(_13S,_13P,_13Q,B(_13y(_13N,_13K,_13R)));});}else{return [0,_13O[1],E(_13M),_13K,E(_13Q),E(_13R)];}}else{return new F(function(){return _zW(_13S,_13P,B(_13y(_13N,_13K,_13Q)),_13R);});}}else{return [0,1,E(_13M),_13K,E(_g),E(_g)];}},_13U=function(_13V,_13W){while(1){var _13X=E(_13W);if(!_13X[0]){var _13Y=E(_13X[2])[1];if(_13V>=_13Y){if(_13V!=_13Y){_13W=_13X[5];continue;}else{return [1,_13X[3]];}}else{_13W=_13X[4];continue;}}else{return [0];}}},_13Z=new T(function(){return B(unCStr("containers-0.5.5.1"));}),_140=new T(function(){return B(unCStr("Data.Map.Base"));}),_141=new T(function(){return B(unCStr("Map"));}),_142=[0,I_fromBits([2800860092,98171937]),I_fromBits([2262449324,1391410843]),_13Z,_140,_141],_143=[0,I_fromBits([2800860092,98171937]),I_fromBits([2262449324,1391410843]),_142,_h],_144=function(_145){return E(_143);},_146=function(_147){var _148=E(_147);if(!_148[0]){return [0];}else{var _149=E(_148[1]);return [1,[0,_149[1],_149[2]],new T(function(){return B(_146(_148[2]));})];}},_14a=function(_14b,_14c){return function(_14d){return E(new T(function(){var _14e=B(A(_14b,[_7r])),_14f=E(_14e[3]),_14g=_14f[1],_14h=_14f[2],_14i=B(_1W(_14e[4],[1,new T(function(){return B(A(_14c,[_7r]));}),_h]));if(!_14i[0]){var _14j=[0,_14g,_14h,_14f,_h];}else{var _14k=B(_6M(new T(function(){return B(_6A(B(_74(_7j,[1,[0,_14g,_14h],new T(function(){return B(_146(_14i));})]))));}))),_14j=[0,_14k[1],_14k[2],_14f,_14i];}var _14l=_14j,_14m=_14l;return _14m;}));};},_14n=new T(function(){return B(_14a(_144,_nu));}),_14o=new T(function(){return B(_7s(_14n,_nu));}),_14p=new T(function(){return B(_BJ(_1c,_3L,_1a,_14o));}),_14q=function(_14r,_){var _14s=B(A(_14p,[_14r,_])),_14t=_14s;return [0,[0,_3d,new T(function(){return E(E(_14t)[1]);})],new T(function(){return E(E(_14t)[2]);})];},_14u=new T(function(){return B(_7s(_14n,_nu));}),_14v=[1,_g],_14w=new T(function(){return B(_BJ(_1c,_3L,_1a,_14u));}),_14x=function(_14y,_){var _14z=B(A(_14w,[_14y,_])),_14A=_14z;return [0,[0,_vi,new T(function(){var _14B=E(E(_14A)[1]);return _14B[0]==0?E(_14v):E(_14B);})],new T(function(){return E(E(_14A)[2]);})];},_14C=[0,_3d,_5W],_14D=[1,_a],_14E=function(_14F,_14G){return function(_dn,_zc){return new F(function(){return _4x(function(_By,_){return new F(function(){return _4x(function(_14H,_){var _14I=B(_4x(_14q,function(_14J){var _14K=B(_13U(E(_14F)[1],_14J));return _14K[0]==0?E(_13w):function(_14L,_){return [0,[0,_3d,_14K],_14L];};},_14H,_)),_14M=_14I,_14N=E(_14M),_14O=E(_14N[1]);return [0,[0,function(_14P,_){var _14Q=B(A(_14O[1],[_14P,_])),_14R=_14Q;return _14P;},new T(function(){var _14S=E(_14O[2]);return _14S[0]==0?E(_14D):[1,_14S];})],_14N[2]];},function(_14T){return function(_dn,_zc){return new F(function(){return _4x(function(_14U,_){var _14V=B(A(new T(function(){return B(_sk(new T(function(){return B(A(_qT,[_a,_aI,_14T]));}),_aH));}),[_14U,_])),_14W=_14V,_14X=E(_14W),_14Y=_14X[2],_14Z=E(_14X[1]),_150=_14Z[1],_151=_14Z[2],_152=E(_14T);return _152[0]==0?[0,[0,function(_153,_){var _154=B(A(_150,[_153,_])),_155=_154;return _153;},_151],_14Y]:[0,[0,function(_156,_){var _157=B(A(_150,[_156,_])),_158=_157;return _156;},new T(function(){var _159=E(_151);return _159[0]==0?E(_152):E(_159);})],_14Y];},function(_15a,_15b,_){return new F(function(){return _4x(function(_By,_){return new F(function(){return _4x(_14x,function(_15c){var _15d=new T(function(){return B(_13I(_14F,_15a,_15c));});return function(_dn,_zc){return new F(function(){return _4x(_Br,function(_15e){return function(_15f,_){return [0,_14C,new T(function(){var _15g=E(_15e);return [0,_15g[1],_15g[2],_15g[3],_15g[4],_15g[5],new T(function(){return B(_Bg(new T(function(){return B(A(_14u,[_15d]));}),_15d,_15g[6]));})];})];};},_dn,_zc);});};},_By,_);});},function(_15h,_By,_){return new F(function(){return (function(_15i,_){return [0,[0,_3d,[1,_15a]],_15i];})(_By,_);});},_15b,_);});},_dn,_zc);});};},_By,_);});},function(_15j){return function(_dn,_zc){return new F(function(){return _4x(function(_15k,_){return [0,[0,function(_15l,_){var _15m=B(A(new T(function(){return B(_5G(_5k,new T(function(){return B(_3U(0,E(_14G)[1]+E(_15j)[1]|0,_h));})));}),[_15l,_])),_15n=_15m,_15o=B(_5R(_15l,_)),_15p=_15o;return _15l;},_5W],_15k];},function(_15q){return E(new T(function(){return B(_14E(new T(function(){return [0,E(_14F)[1]+1|0];}),new T(function(){return B(_9U(_14G,_15j));})));}));},_dn,_zc);});};},_dn,_zc);});};},_15r=new T(function(){return B(_14E(_69,_69));}),_15s=new T(function(){return B(unCStr("This widget sum recursively n numbers. When enters 0, present the result"));}),_15t=new T(function(){return B(_5s(_5k,_15s));}),_15u=new T(function(){return B(A(_qT,[_a,_aI,_a]));}),_15v=new T(function(){return B(_sk(_15u,_aH));}),_15w=function(_15x){return function(_dn,_zc){return new F(function(){return _4x(_15v,function(_15y){var _15z=E(E(_15y)[1]);return _15z==0?function(_15A,_){return [0,[0,function(_15B,_){var _15C=B(_5R(_15B,_)),_15D=_15C,_15E=B(_5k(_5X,_15B,_)),_15F=_15E,_15G=B(A(new T(function(){return B(_5G(_5k,new T(function(){return B(_5C(_15x));})));}),[_15B,_])),_15H=_15G;return _15B;},_a],_15A];}:function(_dn,_zc){return new F(function(){return _4x(function(_15I,_){return [0,[0,function(_15J,_){var _15K=B(A(new T(function(){return B(_5G(_5k,new T(function(){return B(_3U(0,E(_15x)[1]+_15z|0,_h));})));}),[_15J,_])),_15L=_15K,_15M=B(_5R(_15J,_)),_15N=_15M;return _15J;},_5W],_15I];},function(_15O){return E(new T(function(){return B(_15w(new T(function(){return [0,E(_15x)[1]+_15z|0];})));}));},_dn,_zc);});};},_dn,_zc);});};},_15P=new T(function(){return B(_15w(_69));}),_15Q=new T(function(){return B(unCStr("This widget sum two numbers and append the result. Using applicative and monadic expressions"));}),_15R=new T(function(){return B(_5s(_5k,_15Q));}),_15S=function(_15T){return function(_15U,_){return [0,[0,new T(function(){return B(_5s(_uS,function(_15V,_){var _15W=B(_5k(_5X,_15V,_)),_15X=_15W,_15Y=B(A(new T(function(){return B(_5G(_5k,new T(function(){return B(_5C(_15T));})));}),[_15V,_])),_15Z=_15Y;return _15V;}));}),_5W],_15U];};},_160=new T(function(){return B(A(_qT,[_a,_aI,_a]));}),_161=new T(function(){return B(_sk(_160,_aH));}),_162=new T(function(){return B(unCStr("second number "));}),_163=new T(function(){return B(unCStr("first number"));}),_164=new T(function(){return B(A(_qT,[_a,_aI,_a]));}),_165=new T(function(){return B(_sk(_164,_aH));}),_166=function(_167,_){var _168=B(A(_161,[_167,_])),_169=_168,_16a=E(_169),_16b=E(_16a[1]),_16c=B(A(_165,[_16a[2],_])),_16d=_16c,_16e=E(_16d),_16f=E(_16e[1]);return [0,[0,function(_16g,_){var _16h=B(_5k(_163,_16g,_)),_16i=_16h,_16j=B(_5R(_16g,_)),_16k=_16j,_16l=B(A(_16b[1],[_16g,_])),_16m=_16l,_16n=B(_5R(_16g,_)),_16o=_16n,_16p=B(_5k(_162,_16g,_)),_16q=_16p,_16r=B(_5R(_16g,_)),_16s=_16r,_16t=B(A(_16f[1],[_16g,_])),_16u=_16t,_16v=B(_5R(_16g,_)),_16w=_16v;return _16g;},new T(function(){var _16x=E(_16b[2]);if(!_16x[0]){var _16y=[0];}else{var _16z=E(_16f[2]),_16y=_16z[0]==0?[0]:[1,new T(function(){return B(_9U(_16x[1],_16z[1]));})];}return _16y;})],_16e[2]];},_16A=function(_16B,_){var _16C=B(_4x(_166,_15S,_16B,_)),_16D=_16C,_16E=E(_16D),_16F=E(_16E[1]);return [0,[0,function(_16G,_){var _16H=B(A(_15R,[_16G,_])),_16I=_16H,_16J=B(A(new T(function(){return B(_5s(_uS,_16F[1]));}),[_16G,_])),_16K=_16J;return _16G;},_16F[2]],_16E[2]];},_16L=new T(function(){return B(unCStr("table"));}),_16M=function(_16N,_16O){return function(_16P,_){var _16Q=jsCreateElem(toJSStr(E(_16L))),_16R=_16Q,_16S=jsAppendChild(_16R,E(_16P)[1]),_16T=[0,_16R],_16U=B(A(new T(function(){return B(A(_16N,[_16O]));}),[_16T,_])),_16V=_16U;return _16T;};},_16W=new T(function(){return B(unCStr("hplayground examples"));}),_16X=new T(function(){return B(_XC(_5k,_16W));}),_16Y=new T(function(){return B(unCStr("td"));}),_16Z=function(_170,_171){return function(_172,_){var _173=jsCreateElem(toJSStr(E(_16Y))),_174=_173,_175=jsAppendChild(_174,E(_172)[1]),_176=[0,_174],_177=B(A(new T(function(){return B(A(_170,[_171]));}),[_176,_])),_178=_177;return _176;};},_179=new T(function(){return B(unCStr("tr"));}),_17a=function(_17b,_17c){return function(_17d,_){var _17e=jsCreateElem(toJSStr(E(_179))),_17f=_17e,_17g=jsAppendChild(_17f,E(_17d)[1]),_17h=[0,_17f],_17i=B(A(new T(function(){return B(A(_17b,[_17c]));}),[_17h,_])),_17j=_17i;return _17h;};},_17k=new T(function(){return B(unCStr("bottom of the page"));}),_17l=new T(function(){return B(_5G(_5k,_17k));}),_17m=new T(function(){return B(unCStr("h3"));}),_17n=function(_17o,_17p){return function(_17q,_){var _17r=jsCreateElem(toJSStr(E(_17m))),_17s=_17r,_17t=jsAppendChild(_17s,E(_17q)[1]),_17u=[0,_17s],_17v=B(A(new T(function(){return B(A(_17o,[_17p]));}),[_17u,_])),_17w=_17v;return _17u;};},_17x=new T(function(){return B(unCStr("https://github.com/agocorona/hplayground"));}),_17y=new T(function(){return B(unCStr(" "));}),_17z=new T(function(){return B(unCStr("https://github.com/agocorona/hplayground/blob/master/src/Main.hs"));}),_17A=new T(function(){return B(unCStr("haskell-web.blogspot.com.es/2014/07/hplayground-translate-your-console.html"));}),_17B=new T(function(){return B(unCStr("Git repository"));}),_17C=new T(function(){return B(_Sh(_5k,_17B));}),_17D=new T(function(){return B(unCStr("Examples code"));}),_17E=new T(function(){return B(_Sh(_5k,_17D));}),_17F=new T(function(){return B(unCStr("Article"));}),_17G=new T(function(){return B(_Sh(_5k,_17F));}),_17H=function(_17I,_){var _17J=B(A(_17C,[_17I,_])),_17K=_17J,_17L=B(A(_I,[_O,_17K,_St,_17x,_])),_17M=_17L,_17N=B(_5k(_17y,_17I,_)),_17O=_17N,_17P=B(A(_17E,[_17I,_])),_17Q=_17P,_17R=B(A(_I,[_O,_17Q,_St,_17z,_])),_17S=_17R,_17T=B(_5k(_17y,_17I,_)),_17U=_17T,_17V=B(A(_17G,[_17I,_])),_17W=_17V,_17X=B(A(_I,[_O,_17W,_St,_17A,_])),_17Y=_17X;return _17I;},_17Z=new T(function(){return B(_v8(_uS,_17H));}),_180=new T(function(){return B(_17n(_uS,_17Z));}),_181=function(_182,_){var _183=B(_16A(_182,_)),_184=_183,_185=E(_184),_186=E(_185[1]),_187=B(A(_v6,[_185[2],_])),_188=_187,_189=E(_188),_18a=E(_189[1]),_18b=B(A(_15P,[_189[2],_])),_18c=_18b,_18d=E(_18c),_18e=E(_18d[1]),_18f=B(A(_Cp,[_18d[2],_])),_18g=_18f,_18h=E(_18g),_18i=E(_18h[1]),_18j=B(_Iv(_18h[2],_)),_18k=_18j,_18l=E(_18k),_18m=E(_18l[1]),_18n=B(_4x(_W9,_UW,_18l[2],_)),_18o=_18n,_18p=E(_18o),_18q=E(_18p[1]),_18r=B(A(_15r,[_18p[2],_])),_18s=_18r,_18t=E(_18s),_18u=E(_18t[1]),_18v=B(A(_D7,[_18t[2],_])),_18w=_18v,_18x=E(_18w),_18y=E(_18x[1]),_18z=B(_SF(_18x[2],_)),_18A=_18z,_18B=E(_18A),_18C=E(_18B[1]),_18D=B(_13i(_18B[2],_)),_18E=_18D,_18F=E(_18E),_18G=E(_18F[1]),_18H=B(_11M(_18F[2],_)),_18I=_18H,_18J=E(_18I),_18K=E(_18J[1]),_18L=B(_NR(_18J[2],_)),_18M=_18L,_18N=E(_18M),_18O=E(_18N[1]),_18P=B(_U7(_18N[2],_)),_18Q=_18P,_18R=E(_18Q),_18S=E(_18R[1]),_18T=B(_4x(_Y7,_Xf,_18R[2],_)),_18U=_18T,_18V=E(_18U),_18W=E(_18V[1]);return [0,[0,function(_18X,_){var _18Y=B(A(_16X,[_18X,_])),_18Z=_18Y,_190=B(A(_I,[_O,_18Z,_CK,_CJ,_])),_191=_190,_192=B(A(_180,[_18X,_])),_193=_192,_194=B(A(new T(function(){return B(_16M(_uS,function(_195,_){var _196=B(A(new T(function(){return B(_17a(_uS,function(_197,_){var _198=B(A(new T(function(){return B(_16Z(_uS,_186[1]));}),[_197,_])),_199=_198,_19a=B(A(_I,[_O,_199,_CK,_5g,_])),_19b=_19a,_19c=B(A(new T(function(){return B(_16Z(_uS,_18a[1]));}),[_197,_])),_19d=_19c,_19e=B(A(_I,[_O,_19d,_CK,_5g,_])),_19f=_19e,_19g=B(A(new T(function(){return B(_16Z(_uS,function(_19h,_){var _19i=B(A(_15t,[_19h,_])),_19j=_19i,_19k=B(A(_18e[1],[_19h,_])),_19l=_19k;return _19h;}));}),[_197,_])),_19m=_19g,_19n=B(A(_I,[_O,_19m,_CK,_5g,_])),_19o=_19n;return _197;}));}),[_195,_])),_19p=_196,_19q=B(A(_I,[_O,_19p,_CK,_5i,_])),_19r=_19q,_19s=B(A(new T(function(){return B(_17a(_uS,function(_19t,_){var _19u=B(A(new T(function(){return B(_16Z(_uS,function(_19v,_){var _19w=B(A(_18i[1],[_19v,_])),_19x=_19w,_19y=B(A(_18m[1],[_19v,_])),_19z=_19y,_19A=B(A(_18q[1],[_19v,_])),_19B=_19A;return _19v;}));}),[_19t,_])),_19C=_19u,_19D=B(A(_I,[_O,_19C,_CK,_5g,_])),_19E=_19D,_19F=B(A(new T(function(){return B(_16Z(_uS,function(_19G,_){var _19H=B(A(_13u,[_19G,_])),_19I=_19H,_19J=B(A(_18u[1],[_19G,_])),_19K=_19J;return _19G;}));}),[_19t,_])),_19L=_19F,_19M=B(A(_I,[_O,_19L,_CK,_5g,_])),_19N=_19M,_19O=B(A(new T(function(){return B(_16Z(_uS,_18y[1]));}),[_19t,_])),_19P=_19O,_19Q=B(A(_I,[_O,_19P,_CK,_5g,_])),_19R=_19Q;return _19t;}));}),[_195,_])),_19S=_19s,_19T=B(A(_I,[_O,_19S,_CK,_5i,_])),_19U=_19T,_19V=B(A(new T(function(){return B(_17a(_uS,function(_19W,_){var _19X=B(A(new T(function(){return B(_16Z(_uS,new T(function(){return B(_v8(_uS,_18C[1]));})));}),[_19W,_])),_19Y=_19X,_19Z=B(A(_I,[_O,_19Y,_CK,_5g,_])),_1a0=_19Z,_1a1=B(A(new T(function(){return B(_16Z(_uS,_18G[1]));}),[_19W,_])),_1a2=_1a1,_1a3=B(A(_I,[_O,_1a2,_CK,_5g,_])),_1a4=_1a3,_1a5=B(A(new T(function(){return B(_16Z(_uS,function(_1a6,_){var _1a7=B(A(_Yk,[_1a6,_])),_1a8=_1a7,_1a9=B(A(_18K[1],[_1a6,_])),_1aa=_1a9;return _1a6;}));}),[_19W,_])),_1ab=_1a5,_1ac=B(A(_I,[_O,_1ab,_CK,_5g,_])),_1ad=_1ac;return _19W;}));}),[_195,_])),_1ae=_19V,_1af=B(A(_I,[_O,_1ae,_CK,_5i,_])),_1ag=_1af,_1ah=B(A(new T(function(){return B(_17a(_uS,function(_1ai,_){var _1aj=B(A(new T(function(){return B(_16Z(_uS,_18O[1]));}),[_1ai,_])),_1ak=_1aj,_1al=B(A(_I,[_O,_1ak,_CK,_5g,_])),_1am=_1al,_1an=B(A(new T(function(){return B(_16Z(_uS,_18S[1]));}),[_1ai,_])),_1ao=_1an,_1ap=B(A(_I,[_O,_1ao,_CK,_5g,_])),_1aq=_1ap,_1ar=B(A(new T(function(){return B(_16Z(_uS,_18W[1]));}),[_1ai,_])),_1as=_1ar,_1at=B(A(_I,[_O,_1as,_CK,_5g,_])),_1au=_1at;return _1ai;}));}),[_195,_])),_1av=_1ah,_1aw=B(A(_I,[_O,_1av,_CK,_5i,_])),_1ax=_1aw;return _195;}));}),[_18X,_])),_1ay=_194,_1az=B(A(_I,[_O,_1ay,_CK,_5h,_])),_1aA=_1az,_1aB=B(A(_17l,[_18X,_])),_1aC=_1aB;return _18X;},new T(function(){var _1aD=E(_186[2]);if(!_1aD[0]){var _1aE=E(_18a[2]);if(!_1aE[0]){var _1aF=E(_18e[2]);if(!_1aF[0]){var _1aG=E(_18i[2]);if(!_1aG[0]){var _1aH=E(_18m[2]);if(!_1aH[0]){var _1aI=E(_18q[2]);if(!_1aI[0]){var _1aJ=E(_18u[2]);if(!_1aJ[0]){var _1aK=E(_18y[2]);if(!_1aK[0]){var _1aL=E(_18C[2]);if(!_1aL[0]){var _1aM=E(_18G[2]);if(!_1aM[0]){var _1aN=E(_18K[2]);if(!_1aN[0]){var _1aO=E(_18O[2]);if(!_1aO[0]){var _1aP=E(_18S[2]),_1aQ=_1aP[0]==0?E(_18W[2]):E(_1aP);}else{var _1aQ=E(_1aO);}var _1aR=_1aQ;}else{var _1aR=E(_1aN);}var _1aS=_1aR;}else{var _1aS=E(_1aM);}var _1aT=_1aS;}else{var _1aT=E(_1aL);}var _1aU=_1aT;}else{var _1aU=E(_1aK);}var _1aV=_1aU;}else{var _1aV=E(_1aJ);}var _1aW=_1aV;}else{var _1aW=E(_1aI);}var _1aX=_1aW;}else{var _1aX=E(_1aH);}var _1aY=_1aX;}else{var _1aY=E(_1aG);}var _1aZ=_1aY;}else{var _1aZ=E(_1aF);}var _1b0=_1aZ;}else{var _1b0=E(_1aE);}var _1b1=_1b0;}else{var _1b1=E(_1aD);}return _1b1;})],_18V[2]];},_1b2=new T(function(){return [0,"(function(){return document.body;})"];}),_1b3=new T(function(){return B(_6(_1b2));}),_1b4=function(_){var _1b5=B(A(_1b3,[_])),_1b6=_1b5;return new F(function(){return _n(_181,[0,_1b6],_);});},_1b7=function(_){return new F(function(){return _1b4(_);});}; +var hasteMain = function() {B(A(_1b7, [0]));};window.onload = hasteMain;</script></head><body></body></html>