diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -2,6 +2,22 @@
 
 Espial is an open-source, web-based bookmarking server.
 
+It allows mutiple accounts, but currently intended for self-host scenarios.
+
+The bookmarks are stored in a sqlite3 database, for ease of deployment & maintenence.
+
+The easist way for logged-in users to add bookmarks, is with the "bookmarklet", found on the Settings page.
+
+## demo server
+
+log in — username: demo  password: demo
+
+https://esp.ae8.org/u:demo
+
+![jpg](https://i.imgur.com/y8PE0Ul.png)
+
+
+
 ## Haskell Setup
 
 1. If you haven't already, [install Stack](https://haskell-lang.org/get-started)
diff --git a/app/migration/Main.hs b/app/migration/Main.hs
--- a/app/migration/Main.hs
+++ b/app/migration/Main.hs
@@ -5,7 +5,6 @@
 import Types
 import Model
 import ModelCrypto
-import Pretty
 
 import qualified Database.Persist as P
 import qualified Database.Persist.Sqlite as P
@@ -21,41 +20,53 @@
                , userPassword :: Text
                , userApiToken :: Maybe Text}
   | DeleteUser { conn :: Text
-               , userName :: Text
-               }
+               , userName :: Text}
   | ImportBookmarks { conn :: Text
                     , userName :: Text
                     , bookmarkFile :: FilePath}
+  | ImportNotes { conn :: Text
+                , userName :: Text
+                , noteDirectory :: FilePath}
   deriving (Generic, Show)
 
 instance ParseRecord MigrationOpts
 
 main :: IO ()
-main =
-  getRecord "Migrations" >>=
-  \case
-    CreateDB conn -> P.runSqlite conn runMigrations
+main = do
+  args <- getRecord "Migrations"
+  case args of
+
+    CreateDB conn ->
+      P.runSqlite conn runMigrations
+
     CreateUser conn uname upass utoken ->
-      P.runSqlite conn $
-      do hash' <- liftIO $ hashPassword upass
-         user <-
-           P.upsertBy
-             (UniqueUserName uname)
-             (User uname hash' utoken)
-             [UserPasswordHash P.=. hash', UserApiToken P.=. utoken]
-         liftIO $ cpprint user
-         pure () :: DB ()
+      P.runSqlite conn $ do
+        hash' <- liftIO (hashPassword upass)
+        void $ P.upsertBy
+          (UniqueUserName uname)
+          (User uname hash' utoken)
+          [UserPasswordHash P.=. hash', UserApiToken P.=. utoken]
+        pure () :: DB ()
+
     DeleteUser conn uname ->
-      P.runSqlite conn $
-      do P.getBy (UniqueUserName uname) >>=
-           \case
-             Just (P.Entity uid _) -> do
-               P.deleteCascade uid
-               pure () :: DB ()
-             Nothing -> liftIO $ print $ uname ++ "not found"
+      P.runSqlite conn $ do
+        muser <- P.getBy (UniqueUserName uname)
+        case muser of
+          Nothing -> liftIO (print (uname ++ "not found"))
+          Just (P.Entity uid _) -> do
+            P.deleteCascade uid
+            pure () :: DB ()
+
     ImportBookmarks conn uname file ->
-      P.runSqlite conn $
-      do P.getBy (UniqueUserName uname) >>=
-           \case
-             Just (P.Entity uid _) -> insertFileBookmarks uid file
-             Nothing -> liftIO $ print $ uname ++ "not found"
+      P.runSqlite conn $ do
+        muser <- P.getBy (UniqueUserName uname)
+        case muser of
+          Just (P.Entity uid _) -> insertFilePbPosts uid file
+          Nothing -> liftIO (print (uname ++ "not found"))
+
+    ImportNotes conn uname dir ->
+      P.runSqlite conn $ do
+        muser <- P.getBy (UniqueUserName uname)
+        case muser of
+          Just (P.Entity uid _) -> insertDirPbNotes uid dir
+          Nothing -> liftIO (print (uname ++ "not found"))
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+__v0.0.5__
+
+add notes, ekg. update data fetches 
+
 __v0.0.3__
 
 replaced jQuery and .julius scripts with PureScript-compiled static js file
diff --git a/config/routes b/config/routes
--- a/config/routes
+++ b/config/routes
@@ -5,12 +5,22 @@
 
 /auth  AuthR  Auth getAuth
 
+-- notes
+!/#UserNameP/notes NotesR GET
+!/#UserNameP/notes/#Int64 NoteR GET
+!/#UserNameP/notes/add AddNoteViewR GET
+!/api/note/#Int64 DeleteNoteR DELETE
+!/api/note/add AddNoteR POST
+
 -- user
 / HomeR GET
 !/#UserNameP UserR GET
 !/#UserNameP/#SharedP UserSharedR GET
 !/#UserNameP/#FilterP UserFilterR GET
 !/#UserNameP/#TagsP UserTagsR GET
+
+-- settings
+!/#UserNameP/Settings UserSettingsR GET
 
 -- add
 /add AddViewR GET
diff --git a/espial.cabal b/espial.cabal
--- a/espial.cabal
+++ b/espial.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 8ef5bfe0c483801f3c3100cffc7bf1dbacace5b94ff965f13cef227a59e290c5
+-- hash: e4fdf7bcebff83a6ea6853b7aad42d28122ca511fc2dbf38d99cb1aac15181d1
 
 name:           espial
-version:        0.0.4
+version:        0.0.5
 synopsis:       Espial is an open-source, web-based bookmarking server.
 description:    .
                 Espial is an open-source, web-based bookmarking server.
@@ -59,8 +59,11 @@
     templates/default-layout.hamlet
     templates/homepage.hamlet
     templates/login.hamlet
+    templates/note.hamlet
+    templates/notes.hamlet
     templates/pager.hamlet
     templates/popup-layout.hamlet
+    templates/user-settings.hamlet
     templates/user.hamlet
 
 source-repository head
@@ -82,51 +85,57 @@
       src
   default-extensions: BangPatterns CPP ConstraintKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings QuasiQuotes RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeFamilies TypeOperators ViewPatterns
   build-depends:
-      aeson >=0.11.1 && <2.0
+      aeson >=0.11.1
     , base >=4.8.2.0 && <4.9 || >=4.9.1.0 && <5
-    , bcrypt >=0.0.8 && <0.0.12
-    , bytestring >=0.9 && <0.11
+    , bcrypt >=0.0.8
+    , bytestring >=0.9
     , case-insensitive
     , classy-prelude >=0.10.2
     , classy-prelude-conduit >=0.10.2
     , classy-prelude-yesod >=0.10.2 && <1.0 || >=1.1
-    , conduit >=1.0 && <2.0
+    , conduit >=1.0
     , containers
     , data-default
-    , directory >=1.1 && <1.4
+    , directory >=1.1
+    , ekg
+    , ekg-core
     , esqueleto
-    , fast-logger >=2.2 && <2.5
+    , fast-logger >=2.2
     , file-embed
     , foreign-store
-    , hjsmin >=0.1 && <0.3
+    , hjsmin >=0.1
     , hscolour
-    , http-conduit >=2.1 && <2.3.2
-    , iso8601-time >=0.1.3 && <0.2.0
-    , monad-control >=0.3 && <1.1
-    , monad-logger >=0.3 && <0.4
+    , http-conduit >=2.1
+    , iso8601-time >=0.1.3
+    , microlens
+    , monad-control >=0.3
+    , monad-logger >=0.3
+    , monad-metrics
     , mtl
-    , persistent >=2.0 && <2.8.3
-    , persistent-sqlite >=2.6.2 && <2.8.2
-    , persistent-template >=2.0 && <2.8
+    , persistent >=2.0
+    , persistent-sqlite >=2.6.2
+    , persistent-template >=2.0
+    , pinboard
     , pretty-show
     , safe
-    , shakespeare >=2.0 && <2.1
+    , shakespeare >=2.0
     , template-haskell
-    , text >=0.11 && <2.0
+    , text >=0.11
     , time
     , transformers >=0.2.2
     , unordered-containers
     , vector
     , wai
-    , wai-extra >=3.0 && <3.1
-    , wai-logger >=2.2 && <2.4
-    , warp >=3.0 && <3.3
-    , yaml >=0.8 && <0.9
-    , yesod >=1.4.3 && <1.7
-    , yesod-auth >=1.4.0 && <1.7
-    , yesod-core >=1.4.30 && <1.7
-    , yesod-form >=1.4.0 && <1.7
-    , yesod-static >=1.4.0.3 && <1.7
+    , wai-extra >=3.0
+    , wai-logger >=2.2
+    , wai-middleware-metrics
+    , warp >=3.0
+    , yaml >=0.8
+    , yesod >=1.4.3
+    , yesod-auth >=1.4.0
+    , yesod-core >=1.4.30
+    , yesod-form >=1.4.0
+    , yesod-static >=1.4.0.3
   if (flag(dev)) || (flag(library-only))
     ghc-options: -Wall -fwarn-tabs -O0
     cpp-options: -DDEVELOPMENT
@@ -139,6 +148,7 @@
       Handler.Common
       Handler.Edit
       Handler.Home
+      Handler.Notes
       Handler.User
       Import
       Import.NoFoundation
@@ -160,52 +170,58 @@
   default-extensions: BangPatterns CPP ConstraintKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings QuasiQuotes RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeFamilies TypeOperators ViewPatterns
   ghc-options: -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      aeson >=0.11.1 && <2.0
+      aeson >=0.11.1
     , base >=4.8.2.0 && <4.9 || >=4.9.1.0 && <5
-    , bcrypt >=0.0.8 && <0.0.12
-    , bytestring >=0.9 && <0.11
+    , bcrypt >=0.0.8
+    , bytestring >=0.9
     , case-insensitive
     , classy-prelude >=0.10.2
     , classy-prelude-conduit >=0.10.2
     , classy-prelude-yesod >=0.10.2 && <1.0 || >=1.1
-    , conduit >=1.0 && <2.0
+    , conduit >=1.0
     , containers
     , data-default
-    , directory >=1.1 && <1.4
+    , directory >=1.1
+    , ekg
+    , ekg-core
     , espial
     , esqueleto
-    , fast-logger >=2.2 && <2.5
+    , fast-logger >=2.2
     , file-embed
     , foreign-store
-    , hjsmin >=0.1 && <0.3
+    , hjsmin >=0.1
     , hscolour
-    , http-conduit >=2.1 && <2.3.2
-    , iso8601-time >=0.1.3 && <0.2.0
-    , monad-control >=0.3 && <1.1
-    , monad-logger >=0.3 && <0.4
+    , http-conduit >=2.1
+    , iso8601-time >=0.1.3
+    , microlens
+    , monad-control >=0.3
+    , monad-logger >=0.3
+    , monad-metrics
     , mtl
-    , persistent >=2.0 && <2.8.3
-    , persistent-sqlite >=2.6.2 && <2.8.2
-    , persistent-template >=2.0 && <2.8
+    , persistent >=2.0
+    , persistent-sqlite >=2.6.2
+    , persistent-template >=2.0
+    , pinboard
     , pretty-show
     , safe
-    , shakespeare >=2.0 && <2.1
+    , shakespeare >=2.0
     , template-haskell
-    , text >=0.11 && <2.0
+    , text >=0.11
     , time
     , transformers >=0.2.2
     , unordered-containers
     , vector
     , wai
-    , wai-extra >=3.0 && <3.1
-    , wai-logger >=2.2 && <2.4
-    , warp >=3.0 && <3.3
-    , yaml >=0.8 && <0.9
-    , yesod >=1.4.3 && <1.7
-    , yesod-auth >=1.4.0 && <1.7
-    , yesod-core >=1.4.30 && <1.7
-    , yesod-form >=1.4.0 && <1.7
-    , yesod-static >=1.4.0.3 && <1.7
+    , wai-extra >=3.0
+    , wai-logger >=2.2
+    , wai-middleware-metrics
+    , warp >=3.0
+    , yaml >=0.8
+    , yesod >=1.4.3
+    , yesod-auth >=1.4.0
+    , yesod-core >=1.4.30
+    , yesod-form >=1.4.0
+    , yesod-static >=1.4.0.3
   if flag(library-only)
     buildable: False
   other-modules:
@@ -220,53 +236,59 @@
   default-extensions: BangPatterns CPP ConstraintKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings QuasiQuotes RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeFamilies TypeOperators ViewPatterns
   ghc-options: -threaded -rtsopts -with-rtsopts=-N
   build-depends:
-      aeson >=0.11.1 && <2.0
+      aeson >=0.11.1
     , base >=4.8.2.0 && <4.9 || >=4.9.1.0 && <5
-    , bcrypt >=0.0.8 && <0.0.12
-    , bytestring >=0.9 && <0.11
+    , bcrypt >=0.0.8
+    , bytestring >=0.9
     , case-insensitive
     , classy-prelude >=0.10.2
     , classy-prelude-conduit >=0.10.2
     , classy-prelude-yesod >=0.10.2 && <1.0 || >=1.1
-    , conduit >=1.0 && <2.0
+    , conduit >=1.0
     , containers
     , data-default
-    , directory >=1.1 && <1.4
+    , directory >=1.1
+    , ekg
+    , ekg-core
     , espial
     , esqueleto
-    , fast-logger >=2.2 && <2.5
+    , fast-logger >=2.2
     , file-embed
     , foreign-store
-    , hjsmin >=0.1 && <0.3
+    , hjsmin >=0.1
     , hscolour
-    , http-conduit >=2.1 && <2.3.2
-    , iso8601-time >=0.1.3 && <0.2.0
-    , monad-control >=0.3 && <1.1
-    , monad-logger >=0.3 && <0.4
+    , http-conduit >=2.1
+    , iso8601-time >=0.1.3
+    , microlens
+    , monad-control >=0.3
+    , monad-logger >=0.3
+    , monad-metrics
     , mtl
     , optparse-generic >=1.2.3
-    , persistent >=2.0 && <2.8.3
-    , persistent-sqlite >=2.6.2 && <2.8.2
-    , persistent-template >=2.0 && <2.8
+    , persistent >=2.0
+    , persistent-sqlite >=2.6.2
+    , persistent-template >=2.0
+    , pinboard
     , pretty-show
     , safe
-    , shakespeare >=2.0 && <2.1
+    , shakespeare >=2.0
     , template-haskell
-    , text >=0.11 && <2.0
+    , text >=0.11
     , time
     , transformers >=0.2.2
     , unordered-containers
     , vector
     , wai
-    , wai-extra >=3.0 && <3.1
-    , wai-logger >=2.2 && <2.4
-    , warp >=3.0 && <3.3
-    , yaml >=0.8 && <0.9
-    , yesod >=1.4.3 && <1.7
-    , yesod-auth >=1.4.0 && <1.7
-    , yesod-core >=1.4.30 && <1.7
-    , yesod-form >=1.4.0 && <1.7
-    , yesod-static >=1.4.0.3 && <1.7
+    , wai-extra >=3.0
+    , wai-logger >=2.2
+    , wai-middleware-metrics
+    , warp >=3.0
+    , yaml >=0.8
+    , yesod >=1.4.3
+    , yesod-auth >=1.4.0
+    , yesod-core >=1.4.30
+    , yesod-form >=1.4.0
+    , yesod-static >=1.4.0.3
   if flag(library-only)
     buildable: False
   other-modules:
@@ -281,54 +303,59 @@
   default-extensions: BangPatterns CPP ConstraintKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings QuasiQuotes RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeFamilies TypeOperators ViewPatterns
   ghc-options: -Wall
   build-depends:
-      aeson >=0.11.1 && <2.0
+      aeson >=0.11.1
     , base >=4.8.2.0 && <4.9 || >=4.9.1.0 && <5
-    , bcrypt >=0.0.8 && <0.0.12
-    , bytestring >=0.9 && <0.11
+    , bcrypt >=0.0.8
+    , bytestring >=0.9
     , case-insensitive
     , classy-prelude >=0.10.2
     , classy-prelude-conduit >=0.10.2
     , classy-prelude-yesod >=0.10.2 && <1.0 || >=1.1
-    , conduit >=1.0 && <2.0
+    , conduit >=1.0
     , containers
     , data-default
-    , directory >=1.1 && <1.4
+    , directory >=1.1
+    , ekg
+    , ekg-core
     , espial
     , esqueleto
-    , fast-logger >=2.2 && <2.5
+    , fast-logger >=2.2
     , file-embed
     , foreign-store
-    , hjsmin >=0.1 && <0.3
+    , hjsmin >=0.1
     , hscolour
     , hspec >=2.0.0
-    , http-conduit >=2.1 && <2.3.2
-    , iso8601-time >=0.1.3 && <0.2.0
+    , http-conduit >=2.1
+    , iso8601-time >=0.1.3
     , microlens
-    , monad-control >=0.3 && <1.1
-    , monad-logger >=0.3 && <0.4
+    , monad-control >=0.3
+    , monad-logger >=0.3
+    , monad-metrics
     , mtl
-    , persistent >=2.0 && <2.8.3
-    , persistent-sqlite >=2.6.2 && <2.8.2
-    , persistent-template >=2.0 && <2.8
+    , persistent >=2.0
+    , persistent-sqlite >=2.6.2
+    , persistent-template >=2.0
+    , pinboard
     , pretty-show
     , safe
-    , shakespeare >=2.0 && <2.1
+    , shakespeare >=2.0
     , template-haskell
-    , text >=0.11 && <2.0
+    , text >=0.11
     , time
     , transformers >=0.2.2
     , unordered-containers
     , vector
     , wai
-    , wai-extra >=3.0 && <3.1
-    , wai-logger >=2.2 && <2.4
-    , warp >=3.0 && <3.3
-    , yaml >=0.8 && <0.9
-    , yesod >=1.4.3 && <1.7
-    , yesod-auth >=1.4.0 && <1.7
-    , yesod-core >=1.4.30 && <1.7
-    , yesod-form >=1.4.0 && <1.7
-    , yesod-static >=1.4.0.3 && <1.7
+    , wai-extra >=3.0
+    , wai-logger >=2.2
+    , wai-middleware-metrics
+    , warp >=3.0
+    , yaml >=0.8
+    , yesod >=1.4.3
+    , yesod-auth >=1.4.0
+    , yesod-core >=1.4.30
+    , yesod-form >=1.4.0
+    , yesod-static >=1.4.0.3
     , yesod-test
   other-modules:
       Handler.CommonSpec
diff --git a/purs/src/App.purs b/purs/src/App.purs
--- a/purs/src/App.purs
+++ b/purs/src/App.purs
@@ -2,6 +2,7 @@
 
 import Prelude
 
+import Data.Argonaut (Json)
 import Data.Array ((:))
 import Data.Either (Either(..))
 import Data.FormURLEncoded (FormURLEncoded)
@@ -12,10 +13,12 @@
 import Effect.Aff (Aff, launchAff)
 import Effect.Class (liftEffect)
 import Globals (app')
-import Model (Bookmark, Bookmark'(..))
+import Model (Bookmark, Bookmark'(..), Note, Note'(..))
 import Network.HTTP.Affjax (affjax, AffjaxResponse)
 import Network.HTTP.Affjax (defaultRequest) as AX
+import Network.HTTP.Affjax.Request (Request(..))
 import Network.HTTP.Affjax.Request as AXReq
+import Network.HTTP.Affjax.Response (Response(..))
 import Network.HTTP.Affjax.Response as AXRes
 import Network.HTTP.RequestHeader (RequestHeader(..))
 import Simple.JSON as J
@@ -32,7 +35,7 @@
 toggleStar :: Int -> StarAction -> Aff Unit
 toggleStar bid action = do
   let path = "bm/" <> show bid <> "/" <> show action
-  void $ fetchUrlEnc POST path Nothing AXRes.ignore
+  void (fetchUrlEnc POST path Nothing AXRes.ignore)
 
 destroy :: Int -> Aff (AffjaxResponse Unit)
 destroy bid =
@@ -45,15 +48,23 @@
 
 editBookmark :: Bookmark -> Aff (AffjaxResponse Unit)
 editBookmark bm =  do
-    fetchJson POST "api/add" (Just $ Bookmark' bm) AXRes.ignore
+    fetchJson POST "api/add" (Just (Bookmark' bm)) AXRes.ignore
 
+editNote :: Note -> Aff (AffjaxResponse Json)
+editNote bm =  do
+    fetchJson POST "api/note/add" (Just (Note' bm)) AXRes.json
+
+destroyNote :: Int -> Aff (AffjaxResponse Unit)
+destroyNote nid =  do
+  fetchUrlEnc DELETE ("api/note/" <> show nid) Nothing AXRes.ignore
+
 logoutE :: Event -> Effect Unit
 logoutE e = void <<< launchAff <<< logout =<< preventDefault e
 
 logout :: Unit -> Aff Unit
 logout u = do
-  void $ fetchUrl POST app.authRlogoutR [] Nothing AXRes.ignore
-  liftEffect $ window >>= location >>= reload
+  void (fetchUrl POST app.authRlogoutR [] Nothing AXRes.ignore)
+  liftEffect (window >>= location >>= reload)
   where
     app = app' u
 
diff --git a/purs/src/Model.purs b/purs/src/Model.purs
--- a/purs/src/Model.purs
+++ b/purs/src/Model.purs
@@ -18,5 +18,20 @@
   }
 
 newtype Bookmark' = Bookmark' Bookmark
-derive newtype instance rfI :: J.ReadForeign Bookmark'
-derive newtype instance wfI :: J.WriteForeign Bookmark'
+derive newtype instance bookmark_rfI :: J.ReadForeign Bookmark'
+derive newtype instance bookmark_wfI :: J.WriteForeign Bookmark'
+
+type NoteId = Int
+
+type Note =
+  { id :: NoteId
+  , title :: String
+  , text :: String
+  , length :: Int
+  , created :: String
+  , updated :: String
+  }
+
+newtype Note' = Note' Note
+derive newtype instance note_rfI :: J.ReadForeign Note'
+derive newtype instance note_wfI :: J.WriteForeign Note'
diff --git a/purs/src/User.purs b/purs/src/User.purs
--- a/purs/src/User.purs
+++ b/purs/src/User.purs
@@ -1,17 +1,17 @@
 module User where
 
-import Model (Bookmark)
-import Component.Add (addbmark)
-import Component.BList (blist)
-
 import Prelude
 
+import Component.Add (addbmark)
+import Component.BList (blist)
+import Component.NList (nlist, nnote)
 import Data.Foldable (traverse_)
 import Effect (Effect)
 import Effect.Aff (Aff)
 import Effect.Class (liftEffect)
 import Halogen.Aff as HA
 import Halogen.VDom.Driver (runUI)
+import Model (Bookmark, Note)
 import Web.DOM.Element (removeAttribute)
 import Web.DOM.ParentNode (QuerySelector(..))
 import Web.HTML.HTMLElement (toElement)
@@ -28,6 +28,19 @@
   HA.runHalogenAff do
     HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
       runUI (addbmark bmark) unit el
+
+renderNotes :: String -> Array Note -> Effect Unit
+renderNotes renderElSelector notes = do
+  HA.runHalogenAff do
+    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
+      void $ runUI (nlist notes) unit el
+      showFooter
+
+renderNote :: String -> Note -> Effect Unit
+renderNote renderElSelector note = do
+  HA.runHalogenAff do
+    HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \el -> do
+      void $ runUI (nnote note) unit el
 
 showFooter :: Aff Unit
 showFooter = HA.selectElement (QuerySelector ".user_footer") >>= traverse_ \el ->
diff --git a/src/Application.hs b/src/Application.hs
--- a/src/Application.hs
+++ b/src/Application.hs
@@ -20,6 +20,7 @@
 import Import
 import Yesod.Auth (getAuth)
 import Language.Haskell.TH.Syntax (qLocation)
+import Lens.Micro
 import Network.Wai (Middleware)
 import Network.Wai.Middleware.Autohead
 import Network.Wai.Middleware.AcceptOverride
@@ -34,6 +35,11 @@
 import System.Log.FastLogger
        (defaultBufSize, newStdoutLoggerSet, toLogStr)
 
+import qualified Control.Monad.Metrics as MM
+import qualified Network.Wai.Metrics   as WM
+import qualified System.Metrics        as EKG
+import qualified System.Remote.Monitoring as EKG
+
 -- Import all relevant handler modules here.
 -- Don't forget to add new modules to your cabal file!
 import Handler.Common
@@ -41,6 +47,7 @@
 import Handler.User
 import Handler.Add
 import Handler.Edit
+import Handler.Notes
 
 mkYesodDispatch "App" resourcesApp
 
@@ -48,6 +55,9 @@
 makeFoundation appSettings = do
   appHttpManager <- newManager
   appLogger <- newStdoutLoggerSet defaultBufSize >>= makeYesodLogger
+  store <- EKG.newStore
+  EKG.registerGcMetrics store
+  appMetrics <- MM.initializeWith store
   appStatic <-
     (if appMutableStatic appSettings
        then staticDevel
@@ -70,11 +80,13 @@
 makeApplication foundation = do
   logWare <- makeLogWare foundation
   appPlain <- toWaiAppPlain foundation
-  return (logWare (makeMiddleware appPlain))
+  let store = appMetrics foundation ^. MM.metricsStore
+  waiMetrics <- WM.registerWaiMetrics store
+  return (logWare (makeMiddleware waiMetrics appPlain))
 
-makeMiddleware :: Middleware
-makeMiddleware =
-  acceptOverride . autohead . gzip def
+makeMiddleware :: WM.WaiMetrics -> Middleware
+makeMiddleware waiMetrics =
+  WM.metrics waiMetrics . acceptOverride . autohead . gzip def
     { gzipFiles = GzipPreCompressed GzipIgnore
     } .
   methodOverride
@@ -117,6 +129,7 @@
   foundation <- makeFoundation settings
   wsettings <- getDevSettings (warpSettings foundation)
   app <- makeApplication foundation
+  void $ forkEKG foundation
   return (wsettings, app)
 
 getAppSettings :: IO AppSettings
@@ -126,12 +139,20 @@
 develMain :: IO ()
 develMain = develMainHelper getApplicationDev
 
+forkEKG :: App -> IO EKG.Server
+forkEKG foundation = 
+  EKG.forkServerWith
+    (appMetrics foundation ^. MM.metricsStore)
+    "localhost"
+    8000
+
 -- | The @main@ function for an executable running this site.
 appMain :: IO ()
 appMain = do
   settings <- loadYamlSettingsArgs [configSettingsYmlValue] useEnv
   foundation <- makeFoundation settings
   app <- makeApplication foundation
+  void $ forkEKG foundation
   runSettings (warpSettings foundation) app
 
 getApplicationRepl :: IO (Int, App, Application)
diff --git a/src/Foundation.hs b/src/Foundation.hs
--- a/src/Foundation.hs
+++ b/src/Foundation.hs
@@ -13,21 +13,25 @@
 import Yesod.Default.Util   (addStaticContentExternal)
 import Yesod.Core.Types
 import Yesod.Auth.Message
-import qualified Yesod.Core.Unsafe as Unsafe
+import qualified Network.Wai as NW
+import qualified Control.Monad.Metrics as MM
 import qualified Data.CaseInsensitive as CI
 import qualified Data.Text.Encoding as TE
+import qualified Yesod.Core.Unsafe as Unsafe
 
+deriving instance Typeable Route 
+
 data App = App
     { appSettings    :: AppSettings
     , appStatic      :: Static -- ^ Settings for static file serving.
     , appConnPool    :: ConnectionPool -- ^ Database connection pool.
     , appHttpManager :: Manager
     , appLogger      :: Logger
-    }
+    , appMetrics     :: !MM.Metrics
+    } deriving (Typeable)
 
 mkYesodData "App" $(parseRoutesFile "config/routes")
 
-
 -- YesodPersist
 
 instance YesodPersist App where
@@ -51,7 +55,7 @@
         10080 -- min (7 days)
         "config/client_session_key.aes"
 
-    yesodMiddleware = defaultYesodMiddleware . defaultCsrfMiddleware
+    yesodMiddleware = metricsMiddleware . defaultYesodMiddleware . defaultCsrfMiddleware
 
     defaultLayout widget = do
         req <- getRequest
@@ -60,6 +64,7 @@
         mmsg <- getMessage
         musername <- maybeAuthUsername
         mcurrentRoute <- getCurrentRoute
+        void $ mapM (incrementRouteEKG req) mcurrentRoute
         pc <- widgetToPageContent $ do
             setTitle "Espial"
             addAppScripts
@@ -93,6 +98,17 @@
     isAuthorized (AuthR _) _ = pure Authorized
     isAuthorized _ _ = pure Authorized
 
+    defaultMessageWidget title body = do
+      setTitle title
+      toWidget [hamlet|
+        <main .pv2.ph3.mh1>
+          <div .w-100.mw8.center>
+            <div .pa3.bg-near-white>
+              <h1>#{title}
+              ^{body}
+      |]
+
+
 isAuthenticated :: Handler AuthResult
 isAuthenticated = maybeAuthId >>= \case
                     Just authId -> pure Authorized
@@ -112,7 +128,6 @@
     master <- getYesod
     mmsg <- getMessage
     musername <- maybeAuthUsername
-    mcurrentRoute <- getCurrentRoute
     pc <- widgetToPageContent $ do
       addAppScripts
       addStylesheet (StaticR css_tachyons_min_css)
@@ -120,6 +135,44 @@
       $(widgetFile "popup-layout")
     withUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet")
 
+
+metricsMiddleware :: Handler a -> Handler a
+metricsMiddleware handler = do
+  req <- getRequest
+  mcurrentRoute <- getCurrentRoute
+  void $ mapM (incrementRouteEKG req) mcurrentRoute
+  handler
+
+
+incrementRouteEKG :: YesodRequest -> Route App -> Handler ()
+incrementRouteEKG req = MM.increment . (\r -> "route." <> r <> "." <> method) . routeToConstr
+  where method = decodeUtf8 $ NW.requestMethod $ reqWaiRequest req
+
+routeToConstr :: Route App -> Text
+routeToConstr = \case
+  StaticR _ -> "StaticR"
+  FaviconR -> "FaviconR"
+  RobotsR -> "RobotsR"
+  AuthR _ -> "AuthR"
+  HomeR -> "HomeR"
+  UserR _ -> "UserR"
+  UserSharedR _ _ -> "UserSharedR"
+  UserFilterR _ _ -> "UserFilterR"
+  UserTagsR _ _ -> "UserTagsR"
+  AddViewR -> "AddViewR"
+  AddR -> "AddR"
+  DeleteR _ -> "DeleteR"
+  ReadR _ -> "ReadR"
+  StarR _ -> "StarR"
+  UnstarR _ -> "UnstarR"
+  NotesR _ -> "NotesR"
+  NoteR _ _ -> "NoteR"
+  DeleteNoteR _ -> "DeleteNoteR"
+  AddNoteR -> "AddNoteR"
+  AddNoteViewR _ -> "AddNoteViewR"
+  UserSettingsR _ -> "UserSettingsR"
+
+
 -- YesodAuth
 
 instance YesodAuth App where
@@ -138,6 +191,9 @@
 
 instance YesodAuthPersist App
 
+instance MM.MonadMetrics Handler where
+  getMetrics = asks appMetrics
+
 -- session keys
 
 maybeAuthUsername :: Handler (Maybe Text)
@@ -177,7 +233,7 @@
                     <$> ireq textField "username"
                     <*> ireq textField "password")
   case mresult of
-    FormSuccess creds -> lift $ setCredsRedirect creds
+    FormSuccess creds -> lift (setCredsRedirect creds)
     _ -> loginErrorMessageI LoginR InvalidUsernamePass
 
 
@@ -191,13 +247,13 @@
 
 authenticateCreds
   :: (AuthId master ~ UserId)
-  => Creds master -> Handler (AuthenticationResult App)
-authenticateCreds creds =
-  runDB $
-  authenticatePW
-    (credsIdent creds)
-    (fromMaybe "" (lookup "password" (credsExtra creds))) >>=
-  \case
+  => Creds master
+  -> Handler (AuthenticationResult App)
+authenticateCreds creds = do
+  muser <- runDB (authenticatePassword
+                   (credsIdent creds)
+                   (fromMaybe "" (lookup "password" (credsExtra creds))))
+  case muser of
     Nothing -> pure (UserError InvalidUsernamePass)
     Just (Entity uid _) -> pure (Authenticated uid)
 
diff --git a/src/Handler/Add.hs b/src/Handler/Add.hs
--- a/src/Handler/Add.hs
+++ b/src/Handler/Add.hs
@@ -13,25 +13,24 @@
   userId <- requireAuthId
 
   murl <- lookupGetParam "url"
-  mexisting <- runDB (fetchBookmarkByUrl userId murl)
-  let mexisting' = fmap _toBookmarkDefs mexisting
-  mgetdefs <- mGetBookmarkForm
-
-  let bmarkJson = preEscapedToMarkup (toJsonText (fromMaybe mgetdefs mexisting'))
+  mformdb <- runDB (pure . fmap _toBookmarkForm =<< fetchBookmarkByUrl userId murl)
+  formurl <- bookmarkFormUrl
 
   let renderEl = "addForm" :: Text
 
   popupLayout $ do
     toWidget [whamlet|
       <div id="#{ renderEl }">
-      <script>app.dat.bmark = #{ bmarkJson }; 
     |]
+    toWidgetBody [julius|
+      app.dat.bmark = #{ toJSON (fromMaybe formurl mformdb) }; 
+    |]
     toWidget [julius|
       PS['User'].renderAddForm('##{rawJS renderEl}')(app.dat.bmark)();
     |]
 
-mGetBookmarkForm :: Handler BookmarkForm
-mGetBookmarkForm =
+bookmarkFormUrl :: Handler BookmarkForm
+bookmarkFormUrl =
   BookmarkForm
     <$> (lookupGetParam "url" >>= pure . fromMaybe "")
     <*> (lookupGetParam "title")
@@ -59,7 +58,7 @@
   cpprint bookmarkForm
   userId <- requireAuthId
   time <- liftIO getCurrentTime
-  runDB $ upsertBookmark kbid (_toBookmark userId time bookmarkForm) tags
+  runDB (upsertBookmark kbid (_toBookmark userId time bookmarkForm) tags)
   where
     kbid = toSqlKey <$> _bid bookmarkForm
     tags = maybe [] (nub . words) (_tags bookmarkForm)
diff --git a/src/Handler/Common.hs b/src/Handler/Common.hs
--- a/src/Handler/Common.hs
+++ b/src/Handler/Common.hs
@@ -1,9 +1,11 @@
 -- | Common handler functions.
 module Handler.Common where
 
-import Data.FileEmbed (embedFile)
 import Import
 
+import Data.FileEmbed (embedFile)
+import Text.Read
+
 -- These handlers embed files in the executable at compile time to avoid a
 -- runtime dependency, and for efficiency.
 
@@ -16,3 +18,14 @@
 getRobotsR :: Handler TypedContent
 getRobotsR = return $ TypedContent typePlain
                     $ toContent $(embedFile "config/robots.txt")
+
+
+lookupPagingParams :: Handler (Maybe Int64, Maybe Int64)
+lookupPagingParams = do
+  cq <- fmap parseMaybe (lookupGetParam "count")
+  cs <- fmap parseMaybe (lookupSession "count")
+  mapM_ (setSession "count" . (pack . show)) cq
+  pq <- fmap parseMaybe (lookupGetParam "page")
+  pure (cq <|> cs, pq)
+  where
+    parseMaybe x = readMaybe . unpack =<< x
diff --git a/src/Handler/Edit.hs b/src/Handler/Edit.hs
--- a/src/Handler/Edit.hs
+++ b/src/Handler/Edit.hs
@@ -13,18 +13,18 @@
   userId <- requireAuthId
   runDB $ do
     let k_bid = toSqlKey bid
-    void $ requireResource userId k_bid
+    _ <- requireResource userId k_bid
     deleteCascade k_bid
-  pure ""
+  return ""
 
 postReadR :: Int64 -> Handler Html
 postReadR bid = do
   userId <- requireAuthId
   runDB $ do
     let k_bid = toSqlKey bid
-    bm <- requireResource userId k_bid
+    _ <- requireResource userId k_bid
     update k_bid [BookmarkToRead =. False]
-  pure ""
+  return ""
 
 postStarR :: Int64 -> Handler Html
 postStarR bid = _setSelected bid True
@@ -44,19 +44,8 @@
   pure ""
 
 requireResource :: UserId -> Key Bookmark -> DBM Handler Bookmark
-requireResource userId k_bid =
-  get404 k_bid >>= \case
-    bmark | bookmarkUserId bmark == userId -> pure bmark
-    _ -> notFound
-
--- EditForm
-
-data EditForm = EditForm {} deriving (Show, Eq, Read, Generic)
-
-instance FromJSON EditForm
-
-mkEditIForm
-  :: MonadHandlerForm m
-  => FormInput m EditForm
-mkEditIForm = do
-  pure EditForm
+requireResource userId k_bid = do
+  bmark <- get404 k_bid
+  if userId == bookmarkUserId bmark
+    then return bmark
+    else notFound
diff --git a/src/Handler/Home.hs b/src/Handler/Home.hs
--- a/src/Handler/Home.hs
+++ b/src/Handler/Home.hs
@@ -5,8 +5,8 @@
 import Import
 
 getHomeR :: Handler Html
-getHomeR =
-  maybeAuthUsername >>=
-  \case
-    Nothing -> redirect $ AuthR LoginR
-    Just uname -> redirect $ UserR (UserNameP uname)
+getHomeR = do 
+  musername <- maybeAuthUsername
+  case musername of
+    Nothing -> redirect (AuthR LoginR)
+    Just username -> redirect (UserR (UserNameP username))
diff --git a/src/Handler/Notes.hs b/src/Handler/Notes.hs
new file mode 100644
--- /dev/null
+++ b/src/Handler/Notes.hs
@@ -0,0 +1,121 @@
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+module Handler.Notes where
+
+import Import
+import Handler.Common (lookupPagingParams)
+import Database.Persist.Sql
+import qualified Data.Aeson as A
+
+getNotesR :: UserNameP -> Handler Html
+getNotesR unamep@(UserNameP uname) = do
+  void requireAuthId
+  (limit', page') <- lookupPagingParams
+  let limit = maybe 20 fromIntegral limit'
+      page  = maybe 1   fromIntegral page'
+      renderEl = "notes" :: Text
+  (bcount, notes) <- 
+    runDB $
+    do Entity userId _ <- getBy404 (UniqueUserName uname)
+       getNoteList userId limit page
+  req <- getRequest
+  mroute <- getCurrentRoute 
+  let pager = $(widgetFile "pager")
+  defaultLayout $ do
+    $(widgetFile "notes")
+    toWidgetBody [julius|
+        app.userR = "@{UserR unamep}";
+        app.dat.notes = #{ toJSON notes } || []; 
+    |]
+    toWidget [julius|
+      PS['User'].renderNotes('##{rawJS renderEl}')(app.dat.notes)();
+    |]
+
+getNoteR :: UserNameP -> Int64 -> Handler Html
+getNoteR unamep@(UserNameP uname) nid = do
+  void requireAuthId
+  let renderEl = "note" :: Text
+  note <-
+    runDB $
+    do Entity userId _ <- getBy404 (UniqueUserName uname)
+       mnote <- getNote userId nid
+       maybe notFound pure mnote
+  defaultLayout $ do
+    $(widgetFile "note")
+    toWidgetBody [julius|
+        app.userR = "@{UserR unamep}";
+        app.dat.note = #{ toJSON note } || []; 
+    |]
+    toWidget [julius|
+      PS['User'].renderNote('##{rawJS renderEl}')(app.dat.note)();
+    |]
+
+getAddNoteViewR :: UserNameP -> Handler Html
+getAddNoteViewR unamep@(UserNameP uname) = do
+  userId <- requireAuthId
+  time <- liftIO getCurrentTime
+  let renderEl = "note" :: Text
+  let note = Entity (toSqlKey 0) $ _toNote userId time (NoteForm Nothing Nothing Nothing Nothing Nothing)
+  defaultLayout $ do
+    $(widgetFile "note")
+    toWidgetBody [julius|
+        app.userR = "@{UserR unamep}";
+        app.dat.note = #{ toJSON note } || []; 
+    |]
+    toWidget [julius|
+      PS['User'].renderNote('##{rawJS renderEl}')(app.dat.note)();
+    |]
+
+deleteDeleteNoteR :: Int64 -> Handler Html
+deleteDeleteNoteR bid = do
+  userId <- requireAuthId
+  runDB $ do
+    let k_bid = toSqlKey bid
+    _ <- requireResource userId k_bid
+    deleteCascade k_bid
+  return ""
+
+postAddNoteR :: Handler ()
+postAddNoteR = do
+  noteForm <- requireCheckJsonBody
+  _handleFormSuccess noteForm >>= \case
+    (Created, bid) -> sendStatusJSON created201 bid
+    (Updated, _) -> sendResponseStatus noContent204 ()
+
+requireResource :: UserId -> Key Note -> DBM Handler Note
+requireResource userId k_nid = do
+  nnote <- get404 k_nid
+  if userId == noteUserId nnote
+    then return nnote
+    else notFound
+
+_handleFormSuccess :: NoteForm -> Handler (UpsertResult, Key Note)
+_handleFormSuccess noteForm = do
+  cpprint noteForm
+  userId <- requireAuthId
+  time <- liftIO getCurrentTime
+  runDB (upsertNote kbid (_toNote userId time noteForm))
+  where
+    kbid = toSqlKey <$> (_id noteForm >>= \i -> if i > 0 then Just i else Nothing)
+
+data NoteForm = NoteForm
+  { _id :: Maybe Int64
+  , _title :: Maybe Text
+  , _text :: Maybe Textarea
+  , _created :: Maybe UTCTimeStr
+  , _updated :: Maybe UTCTimeStr
+  } deriving (Show, Eq, Read, Generic)
+
+instance FromJSON NoteForm where parseJSON = A.genericParseJSON gNoteFormOptions
+instance ToJSON NoteForm where toJSON = A.genericToJSON gNoteFormOptions
+
+gNoteFormOptions :: A.Options
+gNoteFormOptions = A.defaultOptions { A.fieldLabelModifier = drop 1 } 
+
+_toNote :: UserId -> UTCTime -> NoteForm -> Note
+_toNote userId time NoteForm {..} =
+  Note userId 
+    (length _text)
+    (fromMaybe "" _title)
+    (maybe "" unTextarea _text)
+    (fromMaybe time (fmap unUTCTimeStr _created))
+    (fromMaybe time (fmap unUTCTimeStr _updated))
diff --git a/src/Handler/User.hs b/src/Handler/User.hs
--- a/src/Handler/User.hs
+++ b/src/Handler/User.hs
@@ -2,8 +2,14 @@
 module Handler.User where
 
 import Import
-import Text.Read
+import Handler.Common (lookupPagingParams)
 
+getUserSettingsR :: UserNameP -> Handler Html
+getUserSettingsR uname@(UserNameP name) = do
+  void requireAuthId
+  defaultLayout $ do
+    $(widgetFile "user-settings")
+
 getUserR :: UserNameP -> Handler Html
 getUserR uname@(UserNameP name) = do
   _getUser uname SharedAll FilterAll (TagsP [])
@@ -23,7 +29,7 @@
 _getUser :: UserNameP -> SharedP -> FilterP -> TagsP -> Handler Html
 _getUser unamep@(UserNameP uname) sharedp' filterp' (TagsP pathtags) = do
   mauthuname <- maybeAuthUsername
-  (limit', page') <- _lookupPagingParams
+  (limit', page') <- lookupPagingParams
   let limit = maybe 120 fromIntegral limit'
       page  = maybe 1   fromIntegral page'
       isowner = maybe False (== uname) mauthuname
@@ -31,6 +37,7 @@
       filterp = case filterp' of
         FilterSingle _ -> filterp'
         _ -> if isowner then filterp' else FilterAll
+      isAll = filterp == FilterAll && sharedp == SharedAll && pathtags == []
   (bcount, bmarks, alltags) <-
     runDB $
     do Entity userId _ <- getBy404 (UniqueUserName uname)
@@ -43,19 +50,12 @@
   req <- getRequest
   defaultLayout $ do
     $(widgetFile "user")
+    toWidgetBody [julius|
+        app.dat.bmarks = #{ toJSON $ toBookmarkFormList bmarks alltags } || []; 
+        app.dat.isowner = #{ isowner };
+        app.userR = "@{UserR unamep}";
+    |]
     toWidget [julius|
-      app.dat.isowner = #{ isowner };
-      app.userR = "@{UserR unamep}";
       PS['User'].renderBookmarks('##{rawJS renderEl}')(app.dat.bmarks)();
     |]
   where
-
-_lookupPagingParams :: Handler (Maybe Int64, Maybe Int64)
-_lookupPagingParams = do
-  cq <- fmap parseMaybe (lookupGetParam "count")
-  cs <- fmap parseMaybe (lookupSession "count")
-  mapM_ (setSession "count" . (pack . show)) cq
-  pq <- fmap parseMaybe (lookupGetParam "page")
-  pure (cq <|> cs, pq)
-  where
-    parseMaybe x = readMaybe . unpack =<< x
diff --git a/src/Import.hs b/src/Import.hs
--- a/src/Import.hs
+++ b/src/Import.hs
@@ -10,7 +10,6 @@
 
 import qualified Data.ByteString.Char8 as B8
 import qualified Data.Aeson as A
-import qualified Data.Text.Encoding as TE
 
 -- Forms
 
diff --git a/src/Model.hs b/src/Model.hs
--- a/src/Model.hs
+++ b/src/Model.hs
@@ -10,11 +10,13 @@
 import ModelCrypto
 import Pretty
 import ClassyPrelude.Yesod
+import System.Directory
 
 import Control.Monad.Trans.Maybe
 import Database.Esqueleto hiding ((==.))
 import qualified Database.Esqueleto as E
 import qualified Data.Time.ISO8601 as TI
+import qualified Pinboard as PB
 
 -- Physical model
 
@@ -46,6 +48,15 @@
   UniqueUserTagBookmarkId userId tag bookmarkId
   UniqueUserBookmarkIdTagSeq userId bookmarkId tag seq
   deriving Show Eq Typeable Ord
+
+Note json
+  userId UserId
+  length Int
+  title Text
+  text Text
+  created UTCTime
+  updated UTCTime
+  deriving Show Eq Typeable Ord
 |]
 
 -- UTCTimeStr
@@ -109,28 +120,32 @@
   toMigration
     [ "CREATE INDEX IF NOT EXISTS idx_bookmark_time ON bookmark (user_id, time DESC)"
     , "CREATE INDEX IF NOT EXISTS idx_bookmark_tag_bookmark_id ON bookmark_tag (bookmark_id, id, tag, seq)"
+    , "CREATE INDEX IF NOT EXISTS idx_note_user_created ON note (user_id, created DESC)"
     ]
 
 
+
+  
+
 -- User
 
-authenticatePW :: Text -> Text -> DB (Maybe (Entity User))
-authenticatePW username password = do
-   muser <- getBy (UniqueUserName username)
-   case muser of
-     Nothing -> pure Nothing
-     Just e@(Entity _ user) -> 
-        if passwordMatches (userPasswordHash user) (password)
-          then pure $ Just e
-          else pure $ Nothing
+authenticatePassword :: Text -> Text -> DB (Maybe (Entity User))
+authenticatePassword username password = do
+  muser <- getBy (UniqueUserName username)
+  case muser of
+    Nothing -> return Nothing
+    Just dbuser ->
+      if validatePasswordHash (userPasswordHash (entityVal dbuser)) password
+        then return (Just dbuser)
+        else return Nothing
 
+
+
+
+  
 getUserByName :: UserNameP -> DB (Maybe (Entity User))
-getUserByName (UserNameP uname) =
-  return . headMay =<<
-  (select $
-   from $ \u -> do
-   where_ (u ^. UserName E.==. val uname)
-   pure u)
+getUserByName (UserNameP uname) = do
+  selectFirst [UserName ==. uname] []
 
 -- bookmarks
 
@@ -147,18 +162,18 @@
   <$> fmap (sum . fmap E.unValue)
       (select $
       from $ \b -> do
-      _inner b
+      _whereClause b
       pure $ E.countRows)
       -- paged data
   <*> (select $
        from $ \b -> do
-       _inner b
+       _whereClause b
        orderBy [desc (b ^. BookmarkTime)]
        limit limit'
        offset ((page - 1) * limit')
        pure b)
   where
-    _inner b = do
+    _whereClause b = do
       where_ $
         foldMap (\tag -> Endo $ (&&.) 
           (exists $   -- each tag becomes an exists constraint
@@ -188,6 +203,29 @@
 withTags :: Key Bookmark -> DB [Entity BookmarkTag]
 withTags key = selectList [BookmarkTagBookmarkId ==. key] [Asc BookmarkTagSeq]
 
+-- Note List Query
+
+  
+getNote :: Key User -> Int64 -> DB (Maybe (Entity Note))
+getNote userKey nid =
+  selectFirst [NoteUserId ==. userKey, NoteId ==. toSqlKey nid] []
+
+getNoteList :: Key User -> Limit -> Page -> DB (Int, [Entity Note])
+getNoteList key limit' page =
+  (,) -- total count
+  <$> fmap (sum . fmap E.unValue)
+      (select $
+      from $ \b -> do
+      where_ (b ^. NoteUserId E.==. val key)
+      pure $ E.countRows)
+  <*> (select $
+       from $ \b -> do
+       where_ (b ^. NoteUserId E.==. val key)
+       orderBy [desc (b ^. NoteCreated)]
+       limit limit'
+       offset ((page - 1) * limit')
+       pure b)
+
 -- Bookmark Files
 
 bookmarkEntityToTags :: Entity Bookmark -> [Tag] -> [BookmarkTag]
@@ -198,73 +236,54 @@
     (zip [1 ..] tags)
 
 
-postToBookmark :: UserId -> Post -> Bookmark
-postToBookmark user Post {..} =
+pbPostToBookmark :: UserId -> PB.Post -> Bookmark
+pbPostToBookmark user PB.Post {..} =
   Bookmark user postHref postDescription postExtended postTime postShared postToRead False
 
 
-insertFileBookmarks :: Key User -> FilePath -> DB ()
-insertFileBookmarks userId bookmarkFile = do
-  posts' <- liftIO $ readBookmarkFileJson bookmarkFile
+insertFilePbPosts :: Key User -> FilePath -> DB ()
+insertFilePbPosts userId bookmarkFile = do
+  posts' <- liftIO $ readPbPostFileJson bookmarkFile
   case posts' of
       Left e -> print e
       Right posts -> do
-        let bookmarks = fmap (postToBookmark userId) posts
+        let bookmarks = fmap (pbPostToBookmark userId) posts
         mbookmarkIds <- mapM insertUnique bookmarks 
 
         let bookmarkTags =
               concatMap (uncurry bookmarkEntityToTags) $
               catMaybes $
-              zipWith3 (\mk v p -> map (\k -> (Entity k v, postTags p)) mk)
+              zipWith3 (\mk v p -> map (\k -> (Entity k v, PB.postTags p)) mk)
                 mbookmarkIds
                 bookmarks
                 posts
         void $ mapM insertUnique bookmarkTags
   where
-    readBookmarkFileJson :: MonadIO m => FilePath -> m (Either String [Post])
-    readBookmarkFileJson fpath = pure . A.eitherDecode' . fromStrict =<< readFile fpath
+    readPbPostFileJson :: MonadIO m => FilePath -> m (Either String [PB.Post])
+    readPbPostFileJson fpath = pure . A.eitherDecode' . fromStrict =<< readFile fpath
 
 type Tag = Text
 
-data Post = Post
-  { postHref :: !Text
-  , postDescription :: !Text
-  , postExtended :: !Text
-  , postTime :: !UTCTime
-  , postShared :: !Bool
-  , postToRead :: !Bool
-  , postTags :: [Tag]
-  } deriving (Show, Eq, Ord, Typeable)
-
-instance FromJSON Post where
-  parseJSON (Object o) =
-    Post <$> o .: "href" <*> o .: "description" <*> o .: "extended" <*>
-    o .: "time" <*>
-    (boolFromYesNo <$> o .: "shared") <*>
-    (boolFromYesNo <$> o .: "toread") <*>
-    (words <$> o .: "tags")
-  parseJSON _ = fail "bad parse"
-
-instance ToJSON Post where
-  toJSON Post {..} =
-    object
-      [ "href" .= toJSON postHref
-      , "description" .= toJSON postDescription
-      , "extended" .= toJSON postExtended
-      , "time" .= toJSON postTime
-      , "shared" .= boolToYesNo postShared
-      , "toread" .= boolToYesNo postToRead
-      , "tags" .= unwords postTags
-      ]
-
-boolFromYesNo :: Text -> Bool
-boolFromYesNo "yes" = True
-boolFromYesNo _ = False
+-- Notes
 
-boolToYesNo :: Bool -> Text
-boolToYesNo True = "yes"
-boolToYesNo _ = "no"
+pbNoteToNote :: UserId -> PB.Note -> Note
+pbNoteToNote user PB.Note {..} =
+  Note user noteLength noteTitle noteText noteCreatedAt noteUpdatedAt
 
+insertDirPbNotes :: Key User -> FilePath -> DB ()
+insertDirPbNotes userId noteDirectory = do
+  pbnotes' <- liftIO $ readPbNoteFileJson noteDirectory
+  case pbnotes' of
+      Left e -> print e
+      Right pbnotes -> do
+        let notes = fmap (pbNoteToNote userId) pbnotes
+        void $ mapM insertUnique notes 
+  where
+    readPbNoteFileJson :: MonadIO m => FilePath -> m (Either String [PB.Note])
+    readPbNoteFileJson fdir = do
+      files <- liftIO (listDirectory fdir)
+      noteBSS <- mapM (readFile . (fdir </>)) files 
+      pure (mapM (A.eitherDecode' . fromStrict) noteBSS) 
 
 -- BookmarkForm
 
@@ -290,25 +309,11 @@
 toBookmarkFormList bs as = do
   b <- bs
   let bid = E.entityKey b
-  let btags = fmap bookmarkTagTag $ filter ((==) bid . bookmarkTagBookmarkId) (fmap E.entityVal as)
-  pure $ toBookmarkForm b btags
+  let btags = filter ((==) bid . bookmarkTagBookmarkId . E.entityVal) as
+  pure $ _toBookmarkForm (b, btags)
 
-toBookmarkForm :: Entity Bookmark -> [Text] -> BookmarkForm
-toBookmarkForm (Entity bid Bookmark {..}) tags =
-  BookmarkForm
-  { _url = bookmarkHref
-  , _title = Just bookmarkDescription
-  , _description = Just $ Textarea $ bookmarkExtended
-  , _tags = Just $ unwords $ tags
-  , _private = Just $ not bookmarkShared
-  , _toread = Just $ bookmarkToRead
-  , _bid = Just $ fromSqlKey bid
-  , _selected = Just bookmarkSelected
-  , _time = Just $ UTCTimeStr $ bookmarkTime
-  }
-  
-_toBookmarkDefs :: (Entity Bookmark, [Entity BookmarkTag]) -> BookmarkForm
-_toBookmarkDefs (Entity bid Bookmark {..}, tags) =
+_toBookmarkForm :: (Entity Bookmark, [Entity BookmarkTag]) -> BookmarkForm
+_toBookmarkForm (Entity bid Bookmark {..}, tags) =
   BookmarkForm
   { _url = bookmarkHref
   , _title = Just bookmarkDescription
@@ -362,3 +367,16 @@
     insertTags userId bid' =
       forM_ (zip [1 ..] tags) $
       \(i, tag) -> void $ insert $ BookmarkTag userId tag bid' i
+
+
+upsertNote:: Maybe (Key Note) -> Note -> DB (UpsertResult, Key Note)
+upsertNote mnid bmark@Note{..} = do
+  case mnid of
+    Just nid -> do
+      get nid >>= \case 
+        Just _ -> do
+          replace nid bmark
+          pure (Updated, nid)
+        _ -> fail "not found"
+    Nothing -> do
+      (Created,) <$> insert bmark
diff --git a/src/ModelCrypto.hs b/src/ModelCrypto.hs
--- a/src/ModelCrypto.hs
+++ b/src/ModelCrypto.hs
@@ -23,9 +23,10 @@
 
 hashPassword :: T.Text -> IO BCrypt
 hashPassword rawPassword = do
-  mPassword <- hashPasswordUsingPolicy policy $ TE.encodeUtf8 rawPassword
-  return $ BCrypt $ TE.decodeUtf8 $ fromJustNote "Invalid hashing policy" mPassword
+  mPassword <- hashPasswordUsingPolicy policy (TE.encodeUtf8 rawPassword)
+  return
+    (BCrypt (TE.decodeUtf8 (fromJustNote "Invalid hashing policy" mPassword)))
 
-passwordMatches :: BCrypt -> T.Text -> Bool
-passwordMatches hash' pass =
-  validatePassword (TE.encodeUtf8 $ unBCrypt hash') (TE.encodeUtf8 pass)
+validatePasswordHash :: BCrypt -> T.Text -> Bool
+validatePasswordHash hash' pass = do
+  validatePassword (TE.encodeUtf8 (unBCrypt hash')) (TE.encodeUtf8 pass)
diff --git a/static/css/main.css b/static/css/main.css
--- a/static/css/main.css
+++ b/static/css/main.css
@@ -1,18 +1,10 @@
 html {
-  box-sizing: border-box;
-  height: 102%;
-}
-*, *:before, *:after {
-  box-sizing: inherit;
+    height: 102%;
 }
-body
-{
-  color:#333;
-  margin-left:20px;
-  font-size:13px;
-  font-family: helvetica, sans-serif;
-  word-wrap:break-word;
-  text-align:center;
+
+body {
+    height: 102%;
+    word-wrap: break-word;
 }
 
 button {
@@ -21,6 +13,7 @@
     padding:0;
     cursor:pointer;
 }
+
 button:focus {
     outline: none;
 }
@@ -33,965 +26,82 @@
 label {
     cursor: pointer;
 }
-blockquote 
-{ 
-    margin-left:20px;
-    margin-bottom:0px;
-    color:#247;
-}
 
-#content
-{ 
-    width: 100%;
-    max-width:1050px;
-    margin-left:auto;
-    margin-right:auto 
-
-}
-
-/* basic elements */
-td { font-size:13px; }
-p  { margin-top:2px;margin-bottom:12px }
-li { margin-bottom:10px }
-
-
-/* global link styling */
-a
-{ 
-    text-decoration:none;
-    color:#11a;
-}
-/* a:visited { color:inherit } */
-.edit { font-size:1em; }
-
-h1 
-{ 
-    font-size:2em;
-    font-family:helvetica;
-    font-weight:normal;
-    margin-top:10px;
-} 
-h2 { 
-    font-size:1.3em;
-    font-family:helvetica;
-    font-weight:normal;
-} 
-h3 { font-size:110%;background:#eaefff;} 
-h4 { font-size:100%;background:#dfc;} 
-
-code
-{
-  margin-left:20px;
-  color:#22a;
-  font-family:monaco;
-}
-
-
-/* BOOKMARK STYLING */
-.fetch_err
-{ 
-    font-size:80%;
-    color:red;
-    font-weight:bold;
-}
-.cached 
-{
-    color:#aaa;
+.star {
+    margin-left:-20px;
     font-size:1.2em;
-}
-.cached:visited {color:#aaa}
-.description
- {
-    line-height:120%;
-    margin-top:2px;
-    color:#555;
-}
-.star
-{
-  color:#ccc;
-  margin-left:-20px;
-  font-size:1.3em;
-  cursor:pointer;
-  float:left; 
-}
-.star button { color: #ccc } 
-.selected_star { color:#22a; }
-.selected_star button { color:#22a; }
-.confirm 
-{ 
-    color:red;
-}
-.delete_link { display:inline; }
-.when {
-    font-size:90%;
-    width: 90px;
-    color:#777 !important;
-    display: inline-block;
-}
-.js-moment {
-    width: 105px;
+    position:relative;
+    top:-2px;
 }
-.url_display:hover { color:#44d; }
 
-.source { color:#77c;}
-.tag {color:#a51;line-height:190%;}
-.bundle { color:#b40;font-weight:bold }
-.bundle { color:#a21;font-weight:bold }
-
-.tags { display: block; }
-.tags .tag {
-    margin-right: 5px;
+.star button { 
+    transition: color .1s;
 }
-
-#bundle_names a
-{
-    line-height:180%;
+.star.selected button { 
+    color:#22a; 
 }
-
-#bundle_names 
-{
-    margin-top:20px;
+.edit_links button {
+    transition: color .1s ease-in;
 }
 
-.delete { color:#aaa; display: inline; }
-.delete:visited { color:#aaa }
-.delete:hover { color:#44d; }
-
-.edit { color: #aaa }
-.edit:hover { color:#44d; }
-.edit:visited { color:#ccc }
-
-.destroy { color:red; }
-.destroy:visited { color:red; }
-
-.copy_link { color: #bbb }
-.copy_link:hover { color:#44d; }
-.copy_confirm { color:#aaa; }
-.faint {color:#aaa}
-
-.edit_links {
-    display:inline;
-}
-.read {
-    display:inline;
+.tag {
+    color:#a51;
+    line-height:190%;
 }
 
-
-
-
-.url_link
-{
-    font-size:90%;color:#888;
-}
-.bookmark
-{ 
-  margin-bottom:1.3em;
-  padding:3px;
-  width:100%;
-  max-width:600px;
-  margin-left:0px;
-  border:0px solid red;
-  float:left;
- }
-.bookmark_title { line-height:130%;font-size:110%; }
-.url_display
-{
-    color:#888;
-    font-size:0.9em;
-}
-.private a { padding:1px;border:0px;}
 .private { background:#ddd;border:1px solid #d1d1d1; }
 .unread { color:#b41 }
-.unread { color:#b41 }
-.has_bmark { color:#aaa }
-
-/* BOOKMARK LISTS */
-.list { color:#163; }
-.lists { color:#163; }
-
-/* ?? */
+.mark_read {color: #a81;}
 .flash { color:green;background:#efe }
 
-/* MAIN BANNER AND NAV */
-#banner
-{
-  background:white;
-  color:black;
-  border-bottom:1px dotted #aaa;
-  margin-bottom:0.7em;
-  width:100%;
-  max-width:980px;
-  padding-bottom:9px;
-  text-align:left;
-}
-
-
-#banner a { color:#aaa; }
-#banner .admin { color:#e00 }
-#banner .banner_username { color:blue; }
-#espial_name { font-size:18px; }
-
-
-#logo { float:left;color:#aaa;}
-.logo {
-    margin-right: 1px;
-    font-size: 19px;
-    color: #402;
-}
-#top_menu 
-{ 
+.top_menu { 
     margin-top:6px;
-    float:right; 
 }
-#top_menu a { color:blue }
-
-
-/* user alert */
-.alert 
-{ 
-    color:#333;
-    background:#ced;
-    padding:10px;
-    width: 100%;
-    max-width:550px;
-    border:1px solid #acc; 
-}
-
-
-#login_box
-{
-  float:right;
-}
-
-
-/* BASIC PAGE STRUCTURE */
-#main_column
-{
-    width: 100%;
-    max-width:700px;
-    min-height:700px;
-    text-align:left;
-    float:left;
-    position:relative;
-    #border:1px solid #fa8;
-
-}
-
-#right_bar 
-{
-    float:left;
-    margin-left:10px;
-    text-align:left;
-    width:330px;
-    #border:1px solid #cfd;
-}
-
-
-.rss_linkbox
-{
-    float:right;
-    margin-right:30px;
-}
-
-.rss_link
-{
-    color:#ee9922;
-    font-size:0.8em;
-}
-
-.bookmark_count_box
-{
-    float:left;
-    min-width:50px;
-    padding-right:1.1em;
-}
-
-
-/* USER HOME PAGE */
-.user_navbar
-{
-    margin-bottom:0.7em;
-}
-
-.subscribe_link
-{
-    margin-left:30px;
-    float:left;
-    margin-right:8px;
-    color:#aac;
-}
-
-.unsubscribe_link
-{
-    margin-left:30px;float:left;
-    color:#caa;
-}
-
-.source_filter
-{
-    background:#ddf;
-    color:#555;
-}
-
-.edit_checkbox
-{
-  display:none;
-  float:left;
-  margin-left:-40px;
-  width:40px;
-}
-
-.tag_table
-{
-    float:left;
-    margin-right:10px;
+.top_menu a {
+    color: blue;
 }
-
-
-/* howto page */
-.bookmarklet
-{ 
-    background:#ffe; 
-    border:1px dotted #aaa;
-    color:#444;
+.bookmarklet { 
     padding:1px 2px 0px 2px;
-    font-size:90%;
 }
-.heading { color:#555;}
-.homepage_heading { 
-    margin-top:25px;
-    margin-bottom:5px;
-    color:#338;
-    font-size:1em;
-}
 
-
-.error { color:red }
-
-.systag { color:#c41 }
-.next_prev { color:#777 }
-
-#bottom_next_prev { float:left; }
-
- 
- #star_operations
- {
-  border:0px solid blue;width:300px;float:left;
- }
- 
-
-.selected_star
-{
-  color:#559;
-}
-
-
-
-.display { float:left }
-.unimplemented { color:#aaa }
-
-
-/* bulk and single edit form */
-#bulk_links p { line-height:0.7em; }
-
-.edit_bookmark_form
-{
-  border: 0px solid #aaa;
-  background:#fff;
-  width:500px;
-  padding:4px;
-  padding-left:10px;
-  float:left;
-  color:#888;
-}
-
-.edit_bookmark_form p
-{
-  line-height:100%;
-  margin-bottom:0px;
-  color:#888;
-}
-
-.edit_bookmark_form input
-{
-  font-size:90%;
-  border:1px solid #ddd;
-  margin-bottom:3px;
-}
-
-.edit_bookmark_form textarea
-{
-  font-size:90%;
-  border:1px solid #ddd;
-  margin-bottom:3px;
-}
-
-.edit_form_input 
-{
-    width:490px;
-    margin-top:10px;
-    font-size:12px;
-    background:#fff;
-    padding-top:3px;
-}
-#edit_form_checkboxes
-{
-    margin-top:10px;
-    margin-bottom:10px;
-}
-#edit_form_checkboxes label {
-    display: inline;
-}
-#edit_form_checkboxes input {
-    cursor: pointer;
-}
-#edit_form_suggested_tags
-{
-    margin-top:10px;
-    margin-bottom:18px;
-}
-
-.edit_bookmark_form .edit-button
-{
-    background-color: #eee;
-    cursor: pointer;
-}
-
-#tag_cloud
-{
-  float:left;
-  width:350px;
-  text-align:justify;
-  line-height:110%;
-  margin-top:20px;
-} 
-
-.bookmark_count { 
-  font-size:80%;
-  color:#aaa;
- }
- 
- .tag_count {  font-size:90%;color: #aaa; }
- 
-
-#years 
-{
-    border:1px solid orange;
-    float:left;
-}
-#years a
-{
-    color:#aaa;
-    font-size:8pt;
-
-}
-
-#bulk_links
-{
-  margin-bottom:20px;
-}
- .mark_read { color:#a81}
- 
-
-
-#active_users
-{
-  float:left;
-  margin-left:40px;
-}
-
-#related_tags
-{
-  width:250px;border:0px solid red;
-  }
-  
-#timer
-{
-  color:#bbb;float:right;font-size:10px;font-family:helvetica;margin-top:4px;
-}
-
-#footer
-{
-  margin-top:3em;color:#888;
- }
- 
-.help
-{
-  color:#2a2;background:#ffc}
-  
-  
-.tabs { background:#fff;padding:0px;margin-bottom:0px; }
-.tab_select
-{
-  float:left;
-  margin-right:10px;
-}
-
-
-.filter { color:#999}
-
-
-.disabled { color:#888;background:#ccc}
-
-.upgrade_header { 
-    font-size:1.4em;color:#666;
-    font-weight:bold;margin-top:30px;
-    margin-bottom:10px;background:#fff}
-    
-    
-    
-
-
-.twitter_user { color:#000099; }
-#em { font-weight:bold;color:#555;font-style:normal}
-
-
-
-.tweet_date { color:#aaa;font-size:90%;}
-.twitter_name { font-weight:bold; }
-.twitter_account { color:#66c}
-.outside_resource { color:blue;text-decoration:underline; }
-
- 
-.selected {color:blue}
-
-.selected { background:#fafafa; }
-
-/* pagination and sort order links */
-#per_page_picker {color:#888;float:left;margin-left:90px;text-align:center; }
-#per_page_picker a {color:#aaa; }
-#per_page_picker .per_page_selected { background:#ff8;color:blue; }
-
-.pagination_select
-{
-    display:inline;
-   /* margin-right:30px; */
-}
-#sort_order_picker { display:inline; }
-#sort_order_picker .sort_order_selected { color:#888;}
-#sort_order_picker a { color:#ccc; }
-#sort_order_picker { color:#aaa; }
-.sort_arrow { font-size:15px;font-family:monaco }
-@-moz-document url-prefix() {
-   .sort_arrow { font-size:20px;}
-}
-
-
-#tag_cloud .tag_heading_selected { font-weight:bold;color:#333 }
-#tag_cloud table{ line-height:100%;}
-#tag_cloud_header a { color:#aaa; }
-
-ul.clean { list-style-type:none;padding-left:0px;}
-
-.small_username
-{
-    float:left;
-    padding-right:1em;
-}
-
-
-.twitter_account_title /* used on settings page */
-{
-    font-size:1.3em;color:#59d
-}
-
-.twitter_account_title /* used on settings page */
-{
-    color:#59d
-}
-
-/* tabs stuff */
-.help_box
-{
-    line-height:120%;
-    background:#ffe;
-    padding:10px;
-    border:1px solid #dba;
-}
-
-.window_title 
-{ 
-    font-weight:bold;
-    font-size:1.2em;
-    color:#555;
-    margin:0px;
-    margin-top:20px;
-    padding:0px; 
-    cursor:pointer;
-}
-/* tour page */
-h1.tour_heading
-{
-    font-size:2em;
-    font-family:helvetica;
-    font-weight:normal;
-    margin-top:10px;
-}
-h2.tour_heading
-{
-    font-size:1.5em;
-    font-family:helvetica;
-    font-weight:normal;
-    background:#fff;
-    margin-top:37px;
-    margin-bottom:20px;
-}
-
-
-/* SETTINGS PAGE */
-h2.settings_heading
-{
-    font-size:1.3em;
-    font-family:helvetica;
-    font-weight:normal;
-    background:#fff;
-    margin-top:7px;
-    margin-bottom:15px;
-}
-
-.email_secret
-{
-    color:#05a;
-    font-weight:bold;
-}
-
-#import_history_table
-{
-    float:left;
-    padding:5px;
-    border:1px solid #ccc;
-}
-
-.tab { 
-  float:left;
-  text-align:center;
-  padding-bottom:0.2em;
-  width:100px;
-  height:15px;
-   border-top:1px solid #ffc;
-   border-bottom:1px solid #aaa;
-}
-
-.tab_spacer
-{
-    float:left;
-    height:15px;
-    padding-bottom:0.2em;
-    width:98px;
-    border-top:1px solid  #fff;
-    border-bottom:1px solid #aaa;
-    color:#ffc;
-}
-
-.tab_selected { 
-    border:1px solid #aaa;
-    border-bottom:1px solid #eee ;
-    background:#eee }
-#tab_panes
-{
-  border:1px solid #aaa;
-  border-top:0px solid #fff;
-  padding:2em;
-  margin:0px;
-}
-
-
-/* UPGRADE PAGE */
-#upgrade_left_column
-{
-    width:400px;
-    float:left;
-}
-
-#upgrade_right_column
-{
-    margin-left:40px;
-    width:250px;
-    float:left;
-}
-.account_status_box
-{
-    padding:10px;border:1px solid #abd;
-}
-        
-/* USER ACCOUNT PAGE */
-#profile_main_column
-{
-    width:1200px;
-    float:left;
-    text-align:left;
-}
-
-#profile_left_column
-{
-    width:350px;
-    float:left;
-}
-
-#profile_right_column
-{
-    float:left;
-    margin-left:40px;
-    width:450px;
-}
-
-#profile_admin_column
-{
-    float:left;
-    width:300px;
-    font-size:11px;
-    text-align:left;
-    padding:5px;
-    height:800px;
-    background:#efe
-}
-
-.service_box
-{
-    float:left;
-    width:350px;
-    margin-bottom:20px;
-}
-   
-#name_string
-{
-    font-size:140%
-}
-
-#archival_column
-{
-    float:left;
-    width:300px;
-}
-
-
-.upgrade_link
-{
-    text-decoration:underline;
-    font-weight:bold;
-}
-
-
-
-
-
-/* signup */
-.signup_button
-{
-    text-align:center;
-    font-size:1.2em;
-    font-weight:bold;
-    color:#444;
-    background:#dfa;
-    border:1px solid #888;
-    border-radius:15px;
-    -moz-box-shadow: 1px 1px 1px #555;
-    -webkit-box-shadow: 1px 1px 1px #888;
-    box-shadow: 1px 1px 2px #888;
-    padding-left:0px;
-    padding-top:5px;
-    padding-bottom:2px;
-    width:230px;
-    height:20px;
-    margin-left:30px;
-    margin-top:50px;
-}
-
-
-/* NOTES */
-#note_tagbox
-{
-    margin-bottom:15px;
-    width:500px;
-    padding:4px;
-    background:#ffc;
-    border:1px dotted orange;
-}
-#note_right_column
-{
-    text-align:left;
-    width:250px;
-    float:left;
-}
-blockquote.note
-{
-    margin-left:0px;
-    width:490px;
-    line-height:130%;
-    font-family:verdana
-}
-.note_last_updated
-{
-    color:#ca4;
-    font-size:0.9em
-}
-
-.notes_pagination
-{
-    margin-bottom:20px;
-    margin-top:10px;
-}
-
-
-/* PUBLIC PROFILE */
-input.profile_input
-{
-    width:350px;
-}
-textarea.profile_input
-{
-    width:350px;
-    height:140px;
-}
-
-#public_edit_right_column
-{
-    margin-top:20px;
-    text-align:left;
+.alert { 
+    background:#ced;
+    border:1px solid #acc; 
 }
 
-.public_name_value
-{
-    font-size:18pt;
-    color:#555;
-}
+.edit_bookmark_form {color:#888;}
+.edit_bookmark_form input {border:1px solid #ddd;}
+.edit_bookmark_form textarea {border:1px solid #ddd;}
 
-#public_profile_left_column
-{
-    float:left;
-    text-align:left;
-    min-height:700px;
-    width:380px;
-    margin-right:20px;
-}
-#public_profile_left_column h2
-{
-    margin-top:10px;
-}
-#public_profile_left_column .username
-{
+.nav-active {
+    background:#ff8;
     color:blue;
 }
-#public_profile_subscribe_div
-{
-    margin-bottom:10px;
-    color:#888;
-}
-#public_profile_attributes td
-{
-    vertical-align:top;
-}
-#public_profile_tag_cloud
-{
-    float:left;
-    width:300px;
-    text-align:left;
-}
 
-#public_profile_searchbox
-{
-    margin-left:30px;
-    margin-top:10px;
-    text-align:left;
-    float:left;
-}
-
-/* SEARCH PAGE */
-#search_right_bar 
-{
-    float:left;
-    margin-left:10px;
-    text-align:left;
-    width:300px;
-}
-.search_button
-{
-    margin-top:10px;
-}
-
-#tweet_searchbox
-{
-    margin-top:20px;
-    float:left;
-    margin-left:10px;
-}
-
-/* stuff for import/export instructions */
-.pprofile_heading
-{
-    color:#888;
-}
-
-ol.howto { list-style-type:decimal;margin-top:10px; margin-bottom:20px;}
-li.howto { list-style-type:decimal;margin-top:20px; }
-tt { background:#ffa;font-family:verdana;color:#37d; }
-li.import_instructons
-{
-    line-height:150%;
-}
-ol.download_instructions
-{
-    margin-top:10px;
-}
-    
-/* ADMIN STUFF */
-#searchbox fieldset
-{   
-    opacity:0.5;
-    border:1px solid #ff4444;
-    background:#ffccbb;
-}
-   
-   
-/* bulk edit box */
-#bulk_edit_options
-{
-    display:none;
-    margin-top:9px;
-    width:650px;
-}
-
- #bulk_edit_box 
- {
-    display:block;
-    color:#777;
-    border:1px solid #aaa;
-    background:#eee;
-    padding:0px;
-    margin:0px;
- }
- 
- #confirm
- {
-    display:none;
-    background:#35a;
-    padding:3px;
-    color:white;width:650px;
-    
-}
- #bulk_top_bar
- {
-    background:#ddd;
-    height:20px;
-    padding:3px 10px 0px 10px;
-    border-bottom:1px solid #ccc
-}
-
 /* mobile device */
 @media only screen and (max-width : 750px) {
     body { 
         -webkit-text-size-adjust: none; 
-        font-size: 14px;
     }
     .display {
-      float: none
+        float: none
     }
 }
 
 @media only screen and (max-width : 500px) {
     .filters {
-      clear: both;
-      position: relative;
-      top: 2px;
+        clear: both;
+        position: relative;
+        top: 2px;
     }
+}
+
+.rdim {
+  opacity: .8;
+  transition: all .15s ease-in;
+}
+.rdim:hover,
+.rdim:focus {
+  opacity: 1;
+  transition: all .15s ease-in;
 }
diff --git a/static/css/popup.css b/static/css/popup.css
--- a/static/css/popup.css
+++ b/static/css/popup.css
@@ -1,17 +1,6 @@
 html {
   box-sizing: border-box;
 }
-body
-{
-  color:#333;
-  font-family:helvetica;
-  font-size:12px;
-  margin-left:20px;
-}
-
-*, *:before, *:after {
-  box-sizing: inherit;
-}
 [hidden] {
     display: none !important
 }
@@ -24,49 +13,23 @@
 button:focus {
     outline: none;
 }
-#popup_header {
-  color:#aaa;
-  height:25px;
-}
-.error { color:red}
-.login { color:blue }
-#logout { float:right; }
-.alert { color:#333;background:#ced;float:left;padding:3px;padding-top:1px;width:433px;border:1px solid #acc; }
-#title { float:left ;padding-top:2px; }
-form label { display: block; margin-bottom: 10px; }
-li { list-style-type: none; margin: 0; padding: 0; display: block;} 
-section,footer,header { display: block; }
-fieldset { border: none; }
-legend { display: none; }
-
-
-a { text-decoration:none; }
-
-a.suggested_tag { 
-    text-decoration:none;
+.alert { 
+    background:#ced;
+    border:1px solid #acc; 
 }
-
-a.navlink 
-{
-    text-decoration:none;
+form label { 
+    margin: 0;
+    vertical-align: middle;
+    display: table-cell;
+    padding: 2px 0;
 }
+li { list-style-type: none; margin: 0; padding: 0; display: block;} 
 
-.count { color:#aaa }
 .when { color:#999}
-
 .unread { color:#b41 }
 a.unread { color:#b41 }
 a.bookmark_title { font-size:120%;}
-.disabled { color:#bbb }
 
-input[type='checkbox'] {
-    margin: 0;
-    margin-bottom: 8px;
-}
-
 label {
     cursor: pointer;
 }
-
-.destroy { color:red; }
-.destroy:visited { color:red; }
diff --git a/static/js/app.js b/static/js/app.js
--- a/static/js/app.js
+++ b/static/js/app.js
@@ -1167,12287 +1167,12739 @@
           return Nothing.value;
       };
   });
-  var fromJust = function (dictPartial) {
-      return function (v) {
-          var $__unused = function (dictPartial1) {
-              return function ($dollar35) {
-                  return $dollar35;
-              };
-          };
-          return $__unused(dictPartial)((function () {
-              if (v instanceof Just) {
-                  return v.value0;
-              };
-              throw new Error("Failed pattern match at Data.Maybe line 269, column 1 - line 269, column 46: " + [ v.constructor.name ]);
-          })());
-      };
-  };
-  var applyMaybe = new Control_Apply.Apply(function () {
-      return functorMaybe;
-  }, function (v) {
-      return function (v1) {
-          if (v instanceof Just) {
-              return Data_Functor.map(functorMaybe)(v.value0)(v1);
-          };
-          if (v instanceof Nothing) {
-              return Nothing.value;
-          };
-          throw new Error("Failed pattern match at Data.Maybe line 67, column 1 - line 67, column 35: " + [ v.constructor.name, v1.constructor.name ]);
-      };
-  });
-  var bindMaybe = new Control_Bind.Bind(function () {
-      return applyMaybe;
-  }, function (v) {
-      return function (v1) {
-          if (v instanceof Just) {
-              return v1(v.value0);
-          };
-          if (v instanceof Nothing) {
-              return Nothing.value;
-          };
-          throw new Error("Failed pattern match at Data.Maybe line 126, column 1 - line 126, column 33: " + [ v.constructor.name, v1.constructor.name ]);
-      };
-  });
-  exports["Nothing"] = Nothing;
-  exports["Just"] = Just;
-  exports["maybe"] = maybe;
-  exports["isJust"] = isJust;
-  exports["isNothing"] = isNothing;
-  exports["fromJust"] = fromJust;
-  exports["functorMaybe"] = functorMaybe;
-  exports["applyMaybe"] = applyMaybe;
-  exports["bindMaybe"] = bindMaybe;
-})(PS["Data.Maybe"] = PS["Data.Maybe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad = PS["Control.Monad"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Prelude = PS["Prelude"];                 
-  var Disj = function (x) {
-      return x;
-  };
-  var semigroupDisj = function (dictHeytingAlgebra) {
-      return new Data_Semigroup.Semigroup(function (v) {
-          return function (v1) {
-              return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);
-          };
-      });
-  };
-  var monoidDisj = function (dictHeytingAlgebra) {
-      return new Data_Monoid.Monoid(function () {
-          return semigroupDisj(dictHeytingAlgebra);
-      }, Data_HeytingAlgebra.ff(dictHeytingAlgebra));
-  };
-  exports["Disj"] = Disj;
-  exports["semigroupDisj"] = semigroupDisj;
-  exports["monoidDisj"] = monoidDisj;
-})(PS["Data.Monoid.Disj"] = PS["Data.Monoid.Disj"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Monoid_Additive = PS["Data.Monoid.Additive"];
-  var Data_Monoid_Conj = PS["Data.Monoid.Conj"];
-  var Data_Monoid_Disj = PS["Data.Monoid.Disj"];
-  var Data_Monoid_Dual = PS["Data.Monoid.Dual"];
-  var Data_Monoid_Endo = PS["Data.Monoid.Endo"];
-  var Data_Monoid_Multiplicative = PS["Data.Monoid.Multiplicative"];
-  var Data_Semigroup_First = PS["Data.Semigroup.First"];
-  var Data_Semigroup_Last = PS["Data.Semigroup.Last"];
-  var Prelude = PS["Prelude"];                 
-  var Newtype = function (unwrap, wrap) {
-      this.unwrap = unwrap;
-      this.wrap = wrap;
-  };
-  var wrap = function (dict) {
-      return dict.wrap;
-  };
-  var unwrap = function (dict) {
-      return dict.unwrap;
-  };                        
-  var newtypeDisj = new Newtype(function (v) {
-      return v;
-  }, Data_Monoid_Disj.Disj);
-  var alaF = function (dictFunctor) {
-      return function (dictFunctor1) {
-          return function (dictNewtype) {
-              return function (dictNewtype1) {
-                  return function (v) {
-                      return function (f) {
-                          return function ($80) {
-                              return Data_Functor.map(dictFunctor1)(unwrap(dictNewtype1))(f(Data_Functor.map(dictFunctor)(wrap(dictNewtype))($80)));
-                          };
-                      };
-                  };
-              };
-          };
-      };
-  };
-  exports["unwrap"] = unwrap;
-  exports["wrap"] = wrap;
-  exports["Newtype"] = Newtype;
-  exports["alaF"] = alaF;
-  exports["newtypeDisj"] = newtypeDisj;
-})(PS["Data.Newtype"] = PS["Data.Newtype"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.Foldable"];
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Maybe_First = PS["Data.Maybe.First"];
-  var Data_Maybe_Last = PS["Data.Maybe.Last"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Monoid_Additive = PS["Data.Monoid.Additive"];
-  var Data_Monoid_Conj = PS["Data.Monoid.Conj"];
-  var Data_Monoid_Disj = PS["Data.Monoid.Disj"];
-  var Data_Monoid_Dual = PS["Data.Monoid.Dual"];
-  var Data_Monoid_Endo = PS["Data.Monoid.Endo"];
-  var Data_Monoid_Multiplicative = PS["Data.Monoid.Multiplicative"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];                 
-  var Foldable = function (foldMap, foldl, foldr) {
-      this.foldMap = foldMap;
-      this.foldl = foldl;
-      this.foldr = foldr;
-  };
-  var foldr = function (dict) {
-      return dict.foldr;
-  };
-  var traverse_ = function (dictApplicative) {
-      return function (dictFoldable) {
-          return function (f) {
-              return foldr(dictFoldable)(function ($195) {
-                  return Control_Apply.applySecond(dictApplicative.Apply0())(f($195));
-              })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
-          };
-      };
-  };
-  var for_ = function (dictApplicative) {
-      return function (dictFoldable) {
-          return Data_Function.flip(traverse_(dictApplicative)(dictFoldable));
-      };
-  };
-  var sequence_ = function (dictApplicative) {
-      return function (dictFoldable) {
-          return traverse_(dictApplicative)(dictFoldable)(Control_Category.identity(Control_Category.categoryFn));
-      };
-  };
-  var foldl = function (dict) {
-      return dict.foldl;
-  };
-  var intercalate = function (dictFoldable) {
-      return function (dictMonoid) {
-          return function (sep) {
-              return function (xs) {
-                  var go = function (v) {
-                      return function (x) {
-                          if (v.init) {
-                              return {
-                                  init: false,
-                                  acc: x
-                              };
-                          };
-                          return {
-                              init: false,
-                              acc: Data_Semigroup.append(dictMonoid.Semigroup0())(v.acc)(Data_Semigroup.append(dictMonoid.Semigroup0())(sep)(x))
-                          };
-                      };
-                  };
-                  return (foldl(dictFoldable)(go)({
-                      init: true,
-                      acc: Data_Monoid.mempty(dictMonoid)
-                  })(xs)).acc;
-              };
-          };
-      };
-  }; 
-  var foldableMaybe = new Foldable(function (dictMonoid) {
-      return function (f) {
-          return function (v) {
-              if (v instanceof Data_Maybe.Nothing) {
-                  return Data_Monoid.mempty(dictMonoid);
-              };
-              if (v instanceof Data_Maybe.Just) {
-                  return f(v.value0);
-              };
-              throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: " + [ f.constructor.name, v.constructor.name ]);
-          };
-      };
-  }, function (v) {
-      return function (z) {
-          return function (v1) {
-              if (v1 instanceof Data_Maybe.Nothing) {
-                  return z;
-              };
-              if (v1 instanceof Data_Maybe.Just) {
-                  return v(z)(v1.value0);
-              };
-              throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
-          };
-      };
-  }, function (v) {
-      return function (z) {
-          return function (v1) {
-              if (v1 instanceof Data_Maybe.Nothing) {
-                  return z;
-              };
-              if (v1 instanceof Data_Maybe.Just) {
-                  return v(v1.value0)(z);
-              };
-              throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
-          };
-      };
-  });
-  var foldMapDefaultR = function (dictFoldable) {
-      return function (dictMonoid) {
-          return function (f) {
-              return foldr(dictFoldable)(function (x) {
-                  return function (acc) {
-                      return Data_Semigroup.append(dictMonoid.Semigroup0())(f(x))(acc);
-                  };
-              })(Data_Monoid.mempty(dictMonoid));
-          };
-      };
-  };
-  var foldableArray = new Foldable(function (dictMonoid) {
-      return foldMapDefaultR(foldableArray)(dictMonoid);
-  }, $foreign.foldlArray, $foreign.foldrArray);
-  var foldMap = function (dict) {
-      return dict.foldMap;
-  };
-  var find = function (dictFoldable) {
-      return function (p) {
-          var go = function (v) {
-              return function (v1) {
-                  if (v instanceof Data_Maybe.Nothing && p(v1)) {
-                      return new Data_Maybe.Just(v1);
-                  };
-                  return v;
-              };
-          };
-          return foldl(dictFoldable)(go)(Data_Maybe.Nothing.value);
-      };
-  };
-  var any = function (dictFoldable) {
-      return function (dictHeytingAlgebra) {
-          return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Newtype.newtypeDisj)(Data_Newtype.newtypeDisj)(Data_Monoid_Disj.Disj)(foldMap(dictFoldable)(Data_Monoid_Disj.monoidDisj(dictHeytingAlgebra)));
-      };
-  };
-  exports["Foldable"] = Foldable;
-  exports["foldr"] = foldr;
-  exports["foldl"] = foldl;
-  exports["foldMap"] = foldMap;
-  exports["foldMapDefaultR"] = foldMapDefaultR;
-  exports["traverse_"] = traverse_;
-  exports["for_"] = for_;
-  exports["sequence_"] = sequence_;
-  exports["intercalate"] = intercalate;
-  exports["any"] = any;
-  exports["find"] = find;
-  exports["foldableArray"] = foldableArray;
-  exports["foldableMaybe"] = foldableMaybe;
-})(PS["Data.Foldable"] = PS["Data.Foldable"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifoldable = PS["Data.Bifoldable"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Bitraversable = PS["Data.Bitraversable"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Prelude = PS["Prelude"];                 
-  var Left = (function () {
-      function Left(value0) {
-          this.value0 = value0;
-      };
-      Left.create = function (value0) {
-          return new Left(value0);
-      };
-      return Left;
-  })();
-  var Right = (function () {
-      function Right(value0) {
-          this.value0 = value0;
-      };
-      Right.create = function (value0) {
-          return new Right(value0);
-      };
-      return Right;
-  })();
-  var functorEither = new Data_Functor.Functor(function (f) {
-      return function (m) {
-          if (m instanceof Left) {
-              return new Left(m.value0);
-          };
-          if (m instanceof Right) {
-              return new Right(f(m.value0));
-          };
-          throw new Error("Failed pattern match at Data.Either line 35, column 8 - line 35, column 52: " + [ m.constructor.name ]);
-      };
-  });
-  var either = function (v) {
-      return function (v1) {
-          return function (v2) {
-              if (v2 instanceof Left) {
-                  return v(v2.value0);
-              };
-              if (v2 instanceof Right) {
-                  return v1(v2.value0);
-              };
-              throw new Error("Failed pattern match at Data.Either line 220, column 1 - line 220, column 64: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-          };
-      };
-  };
-  var bifunctorEither = new Data_Bifunctor.Bifunctor(function (v) {
-      return function (v1) {
-          return function (v2) {
-              if (v2 instanceof Left) {
-                  return new Left(v(v2.value0));
-              };
-              if (v2 instanceof Right) {
-                  return new Right(v1(v2.value0));
-              };
-              throw new Error("Failed pattern match at Data.Either line 40, column 1 - line 40, column 45: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
-          };
-      };
-  });
-  var applyEither = new Control_Apply.Apply(function () {
-      return functorEither;
-  }, function (v) {
-      return function (v1) {
-          if (v instanceof Left) {
-              return new Left(v.value0);
-          };
-          if (v instanceof Right) {
-              return Data_Functor.map(functorEither)(v.value0)(v1);
-          };
-          throw new Error("Failed pattern match at Data.Either line 76, column 1 - line 76, column 41: " + [ v.constructor.name, v1.constructor.name ]);
-      };
-  });
-  exports["Left"] = Left;
-  exports["Right"] = Right;
-  exports["either"] = either;
-  exports["functorEither"] = functorEither;
-  exports["bifunctorEither"] = bifunctorEither;
-  exports["applyEither"] = applyEither;
-})(PS["Data.Either"] = PS["Data.Either"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Comonad = PS["Control.Comonad"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Lazy = PS["Control.Lazy"];
-  var Control_Monad = PS["Control.Monad"];
-  var Data_BooleanAlgebra = PS["Data.BooleanAlgebra"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_CommutativeRing = PS["Data.CommutativeRing"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_EuclideanRing = PS["Data.EuclideanRing"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Prelude = PS["Prelude"];                 
-  var Identity = function (x) {
-      return x;
-  };
-  var newtypeIdentity = new Data_Newtype.Newtype(function (n) {
-      return n;
-  }, Identity);
-  var functorIdentity = new Data_Functor.Functor(function (f) {
-      return function (m) {
-          return f(m);
-      };
-  });
-  var applyIdentity = new Control_Apply.Apply(function () {
-      return functorIdentity;
-  }, function (v) {
-      return function (v1) {
-          return v(v1);
-      };
-  });
-  var bindIdentity = new Control_Bind.Bind(function () {
-      return applyIdentity;
-  }, function (v) {
-      return function (f) {
-          return f(v);
-      };
-  });
-  var applicativeIdentity = new Control_Applicative.Applicative(function () {
-      return applyIdentity;
-  }, Identity);
-  var monadIdentity = new Control_Monad.Monad(function () {
-      return applicativeIdentity;
-  }, function () {
-      return bindIdentity;
-  });
-  exports["Identity"] = Identity;
-  exports["newtypeIdentity"] = newtypeIdentity;
-  exports["functorIdentity"] = functorIdentity;
-  exports["applyIdentity"] = applyIdentity;
-  exports["applicativeIdentity"] = applicativeIdentity;
-  exports["bindIdentity"] = bindIdentity;
-  exports["monadIdentity"] = monadIdentity;
-})(PS["Data.Identity"] = PS["Data.Identity"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.pureE = function (a) {
-    return function () {
-      return a;
-    };
-  };
-
-  exports.bindE = function (a) {
-    return function (f) {
-      return function () {
-        return f(a())();
-      };
-    };
-  };
-
-  exports.foreachE = function (as) {
-    return function (f) {
-      return function () {
-        for (var i = 0, l = as.length; i < l; i++) {
-          f(as[i])();
-        }
-      };
-    };
-  };
-})(PS["Effect"] = PS["Effect"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Effect"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad = PS["Control.Monad"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Prelude = PS["Prelude"];                 
-  var monadEffect = new Control_Monad.Monad(function () {
-      return applicativeEffect;
-  }, function () {
-      return bindEffect;
-  });
-  var bindEffect = new Control_Bind.Bind(function () {
-      return applyEffect;
-  }, $foreign.bindE);
-  var applyEffect = new Control_Apply.Apply(function () {
-      return functorEffect;
-  }, Control_Monad.ap(monadEffect));
-  var applicativeEffect = new Control_Applicative.Applicative(function () {
-      return applyEffect;
-  }, $foreign.pureE);
-  var functorEffect = new Data_Functor.Functor(Control_Applicative.liftA1(applicativeEffect));
-  exports["functorEffect"] = functorEffect;
-  exports["applyEffect"] = applyEffect;
-  exports["applicativeEffect"] = applicativeEffect;
-  exports["bindEffect"] = bindEffect;
-  exports["monadEffect"] = monadEffect;
-  exports["foreachE"] = $foreign.foreachE;
-})(PS["Effect"] = PS["Effect"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.new = function (val) {
-    return function () {
-      return { value: val };
-    };
-  };
-
-  exports.read = function (ref) {
-    return function () {
-      return ref.value;
-    };
-  };
-
-  exports["modify'"] = function (f) {
-    return function (ref) {
-      return function () {
-        var t = f(ref.value);
-        ref.value = t.state;
-        return t.value;
-      };
-    };
-  };
-
-  exports.write = function (val) {
-    return function (ref) {
-      return function () {
-        ref.value = val;
-        return {};
-      };
-    };
-  };
-})(PS["Effect.Ref"] = PS["Effect.Ref"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Effect.Ref"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];                 
-  var modify = function (f) {
-      return $foreign["modify'"](function (s) {
-          var s$prime = f(s);
-          return {
-              state: s$prime,
-              value: s$prime
-          };
-      });
-  };
-  var modify_ = function (f) {
-      return function (s) {
-          return Data_Functor["void"](Effect.functorEffect)(modify(f)(s));
-      };
-  };
-  exports["modify"] = modify;
-  exports["modify_"] = modify_;
-  exports["new"] = $foreign["new"];
-  exports["read"] = $foreign.read;
-  exports["modify'"] = $foreign["modify'"];
-  exports["write"] = $foreign.write;
-})(PS["Effect.Ref"] = PS["Effect.Ref"] || {});
-(function(exports) {
-    "use strict";
-
-  // module Partial.Unsafe
-
-  exports.unsafePartial = function (f) {
-    return f();
-  };
-})(PS["Partial.Unsafe"] = PS["Partial.Unsafe"] || {});
-(function(exports) {
-    "use strict";
-
-  // module Partial
-
-  exports.crashWith = function () {
-    return function (msg) {
-      throw new Error(msg);
-    };
-  };
-})(PS["Partial"] = PS["Partial"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Partial"];
-  exports["crashWith"] = $foreign.crashWith;
-})(PS["Partial"] = PS["Partial"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Partial.Unsafe"];
-  var Partial = PS["Partial"];
-  var unsafeCrashWith = function (msg) {
-      return $foreign.unsafePartial(function (dictPartial) {
-          return Partial.crashWith(dictPartial)(msg);
-      });
-  };
-  exports["unsafeCrashWith"] = unsafeCrashWith;
-})(PS["Partial.Unsafe"] = PS["Partial.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];                 
-  var Loop = (function () {
-      function Loop(value0) {
-          this.value0 = value0;
-      };
-      Loop.create = function (value0) {
-          return new Loop(value0);
-      };
-      return Loop;
-  })();
-  var Done = (function () {
-      function Done(value0) {
-          this.value0 = value0;
-      };
-      Done.create = function (value0) {
-          return new Done(value0);
-      };
-      return Done;
-  })();
-  var MonadRec = function (Monad0, tailRecM) {
-      this.Monad0 = Monad0;
-      this.tailRecM = tailRecM;
-  };
-  var tailRecM = function (dict) {
-      return dict.tailRecM;
-  }; 
-  var monadRecEffect = new MonadRec(function () {
-      return Effect.monadEffect;
-  }, function (f) {
-      return function (a) {
-          var fromDone = function (v) {
-              var $__unused = function (dictPartial1) {
-                  return function ($dollar19) {
-                      return $dollar19;
-                  };
-              };
-              return $__unused()((function () {
-                  if (v instanceof Done) {
-                      return v.value0;
-                  };
-                  throw new Error("Failed pattern match at Control.Monad.Rec.Class line 111, column 30 - line 111, column 44: " + [ v.constructor.name ]);
-              })());
-          };
-          return function __do() {
-              var v = Control_Bind.bindFlipped(Effect.bindEffect)(Effect_Ref["new"])(f(a))();
-              (function () {
-                  while (!(function __do() {
-                      var v1 = Effect_Ref.read(v)();
-                      if (v1 instanceof Loop) {
-                          var v2 = f(v1.value0)();
-                          var v3 = Effect_Ref.write(v2)(v)();
-                          return false;
-                      };
-                      if (v1 instanceof Done) {
-                          return true;
-                      };
-                      throw new Error("Failed pattern match at Control.Monad.Rec.Class line 102, column 22 - line 107, column 28: " + [ v1.constructor.name ]);
-                  })()) {
-
-                  };
-                  return {};
-              })();
-              return Data_Functor.map(Effect.functorEffect)(fromDone)(Effect_Ref.read(v))();
-          };
-      };
-  });
-  exports["Loop"] = Loop;
-  exports["Done"] = Done;
-  exports["MonadRec"] = MonadRec;
-  exports["tailRecM"] = tailRecM;
-  exports["monadRecEffect"] = monadRecEffect;
-})(PS["Control.Monad.Rec.Class"] = PS["Control.Monad.Rec.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Biapplicative = PS["Control.Biapplicative"];
-  var Control_Biapply = PS["Control.Biapply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Comonad = PS["Control.Comonad"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Lazy = PS["Control.Lazy"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifoldable = PS["Data.Bifoldable"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Bitraversable = PS["Data.Bitraversable"];
-  var Data_BooleanAlgebra = PS["Data.BooleanAlgebra"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_CommutativeRing = PS["Data.CommutativeRing"];
-  var Data_Distributive = PS["Data.Distributive"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Maybe_First = PS["Data.Maybe.First"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];
-  var Type_Equality = PS["Type.Equality"];                 
-  var Tuple = (function () {
-      function Tuple(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Tuple.create = function (value0) {
-          return function (value1) {
-              return new Tuple(value0, value1);
-          };
-      };
-      return Tuple;
-  })();
-  var snd = function (v) {
-      return v.value1;
-  };
-  var functorTuple = new Data_Functor.Functor(function (f) {
-      return function (m) {
-          return new Tuple(m.value0, f(m.value1));
-      };
-  });                                                                                                   
-  var fst = function (v) {
-      return v.value0;
-  };
-  exports["Tuple"] = Tuple;
-  exports["fst"] = fst;
-  exports["snd"] = snd;
-  exports["functorTuple"] = functorTuple;
-})(PS["Data.Tuple"] = PS["Data.Tuple"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unfoldrArrayImpl = function (isNothing) {
-    return function (fromJust) {
-      return function (fst) {
-        return function (snd) {
-          return function (f) {
-            return function (b) {
-              var result = [];
-              var value = b;
-              while (true) { // eslint-disable-line no-constant-condition
-                var maybe = f(value);
-                if (isNothing(maybe)) return result;
-                var tuple = fromJust(maybe);
-                result.push(fst(tuple));
-                value = snd(tuple);
-              }
-            };
-          };
-        };
-      };
-    };
-  };
-})(PS["Data.Unfoldable"] = PS["Data.Unfoldable"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unfoldr1ArrayImpl = function (isNothing) {
-    return function (fromJust) {
-      return function (fst) {
-        return function (snd) {
-          return function (f) {
-            return function (b) {
-              var result = [];
-              var value = b;
-              while (true) { // eslint-disable-line no-constant-condition
-                var tuple = f(value);
-                result.push(fst(tuple));
-                var maybe = snd(tuple);
-                if (isNothing(maybe)) return result;
-                value = fromJust(maybe);
-              }
-            };
-          };
-        };
-      };
-    };
-  };
-})(PS["Data.Unfoldable1"] = PS["Data.Unfoldable1"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.Unfoldable1"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];                 
-  var Unfoldable1 = function (unfoldr1) {
-      this.unfoldr1 = unfoldr1;
-  };
-  var unfoldr1 = function (dict) {
-      return dict.unfoldr1;
-  };
-  var unfoldable1Array = new Unfoldable1($foreign.unfoldr1ArrayImpl(Data_Maybe.isNothing)(Data_Maybe.fromJust())(Data_Tuple.fst)(Data_Tuple.snd));
-  exports["Unfoldable1"] = Unfoldable1;
-  exports["unfoldr1"] = unfoldr1;
-  exports["unfoldable1Array"] = unfoldable1Array;
-})(PS["Data.Unfoldable1"] = PS["Data.Unfoldable1"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.Unfoldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Data_Unit = PS["Data.Unit"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];                 
-  var Unfoldable = function (Unfoldable10, unfoldr) {
-      this.Unfoldable10 = Unfoldable10;
-      this.unfoldr = unfoldr;
-  };
-  var unfoldr = function (dict) {
-      return dict.unfoldr;
-  };
-  var unfoldableArray = new Unfoldable(function () {
-      return Data_Unfoldable1.unfoldable1Array;
-  }, $foreign.unfoldrArrayImpl(Data_Maybe.isNothing)(Data_Maybe.fromJust())(Data_Tuple.fst)(Data_Tuple.snd));
-  exports["Unfoldable"] = Unfoldable;
-  exports["unfoldr"] = unfoldr;
-  exports["unfoldableArray"] = unfoldableArray;
-})(PS["Data.Unfoldable"] = PS["Data.Unfoldable"] || {});
-(function(exports) {
-    "use strict";
-
-  // module Unsafe.Coerce
-
-  exports.unsafeCoerce = function (x) {
-    return x;
-  };
-})(PS["Unsafe.Coerce"] = PS["Unsafe.Coerce"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Unsafe.Coerce"];
-  exports["unsafeCoerce"] = $foreign.unsafeCoerce;
-})(PS["Unsafe.Coerce"] = PS["Unsafe.Coerce"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.Array"];
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Lazy = PS["Control.Lazy"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_ST = PS["Control.Monad.ST"];
-  var Control_Monad_ST_Internal = PS["Control.Monad.ST.Internal"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array_NonEmpty_Internal = PS["Data.Array.NonEmpty.Internal"];
-  var Data_Array_ST = PS["Data.Array.ST"];
-  var Data_Array_ST_Iterator = PS["Data.Array.ST.Iterator"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var singleton = function (a) {
-      return [ a ];
-  };
-  var concatMap = Data_Function.flip(Control_Bind.bind(Control_Bind.bindArray));
-  var mapMaybe = function (f) {
-      return concatMap(function ($114) {
-          return Data_Maybe.maybe([  ])(singleton)(f($114));
-      });
-  };
-  exports["singleton"] = singleton;
-  exports["concatMap"] = concatMap;
-  exports["mapMaybe"] = mapMaybe;
-  exports["length"] = $foreign.length;
-  exports["cons"] = $foreign.cons;
-  exports["snoc"] = $foreign.snoc;
-  exports["filter"] = $foreign.filter;
-  exports["drop"] = $foreign.drop;
-})(PS["Data.Array"] = PS["Data.Array"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.replace = function (s1) {
-    return function (s2) {
-      return function (s3) {
-        return s3.replace(s1, s2);
-      };
-    };
-  };
-
-  exports.replaceAll = function (s1) {
-    return function (s2) {
-      return function (s3) {
-        return s3.replace(new RegExp(s1.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"), "g"), s2); // eslint-disable-line no-useless-escape
-      };
-    };
-  };
-
-  exports.split = function (sep) {
-    return function (s) {
-      return s.split(sep);
-    };
-  };
-
-  exports.joinWith = function (s) {
-    return function (xs) {
-      return xs.join(s);
-    };
-  };
-})(PS["Data.String.Common"] = PS["Data.String.Common"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.String.Common"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Prelude = PS["Prelude"];                 
-  var $$null = function (s) {
-      return s === "";
-  };
-  exports["null"] = $$null;
-  exports["replaceAll"] = $foreign.replaceAll;
-  exports["split"] = $foreign.split;
-  exports["joinWith"] = $foreign.joinWith;
-})(PS["Data.String.Common"] = PS["Data.String.Common"] || {});
-(function(exports) {
-  /* globals exports, JSON */
-  "use strict";
-
-  exports.unsafeStringify = function (x) {
-    return JSON.stringify(x);
-  };                                  
-  exports.unsafeDecodeURIComponent = decodeURIComponent;
-  exports.unsafeEncodeURIComponent = encodeURIComponent;
-})(PS["Global.Unsafe"] = PS["Global.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Global.Unsafe"];
-  exports["unsafeStringify"] = $foreign.unsafeStringify;
-  exports["unsafeDecodeURIComponent"] = $foreign.unsafeDecodeURIComponent;
-  exports["unsafeEncodeURIComponent"] = $foreign.unsafeEncodeURIComponent;
-})(PS["Global.Unsafe"] = PS["Global.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String = PS["Data.String"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Global_Unsafe = PS["Global.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var toArray = function (v) {
-      return v;
-  };                                                                                                                 
-  var encode = (function () {
-      var encodePart = function (v) {
-          if (v.value1 instanceof Data_Maybe.Nothing) {
-              return Global_Unsafe.unsafeEncodeURIComponent(v.value0);
-          };
-          if (v.value1 instanceof Data_Maybe.Just) {
-              return Global_Unsafe.unsafeEncodeURIComponent(v.value0) + ("=" + Global_Unsafe.unsafeEncodeURIComponent(v.value1.value0));
-          };
-          throw new Error("Failed pattern match at Data.FormURLEncoded line 35, column 18 - line 37, column 89: " + [ v.constructor.name ]);
-      };
-      return function ($14) {
-          return Data_String_Common.joinWith("&")(Data_Functor.map(Data_Functor.functorArray)(encodePart)(toArray($14)));
-      };
-  })();
-  exports["toArray"] = toArray;
-  exports["encode"] = encode;
-})(PS["Data.FormURLEncoded"] = PS["Data.FormURLEncoded"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String = PS["Data.String"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Prelude = PS["Prelude"];                 
-  var OPTIONS = (function () {
-      function OPTIONS() {
-
-      };
-      OPTIONS.value = new OPTIONS();
-      return OPTIONS;
-  })();
-  var GET = (function () {
-      function GET() {
-
-      };
-      GET.value = new GET();
-      return GET;
-  })();
-  var HEAD = (function () {
-      function HEAD() {
-
-      };
-      HEAD.value = new HEAD();
-      return HEAD;
-  })();
-  var POST = (function () {
-      function POST() {
-
-      };
-      POST.value = new POST();
-      return POST;
-  })();
-  var PUT = (function () {
-      function PUT() {
-
-      };
-      PUT.value = new PUT();
-      return PUT;
-  })();
-  var DELETE = (function () {
-      function DELETE() {
-
-      };
-      DELETE.value = new DELETE();
-      return DELETE;
-  })();
-  var TRACE = (function () {
-      function TRACE() {
-
-      };
-      TRACE.value = new TRACE();
-      return TRACE;
-  })();
-  var CONNECT = (function () {
-      function CONNECT() {
-
-      };
-      CONNECT.value = new CONNECT();
-      return CONNECT;
-  })();
-  var PROPFIND = (function () {
-      function PROPFIND() {
-
-      };
-      PROPFIND.value = new PROPFIND();
-      return PROPFIND;
-  })();
-  var PROPPATCH = (function () {
-      function PROPPATCH() {
-
-      };
-      PROPPATCH.value = new PROPPATCH();
-      return PROPPATCH;
-  })();
-  var MKCOL = (function () {
-      function MKCOL() {
-
-      };
-      MKCOL.value = new MKCOL();
-      return MKCOL;
-  })();
-  var COPY = (function () {
-      function COPY() {
-
-      };
-      COPY.value = new COPY();
-      return COPY;
-  })();
-  var MOVE = (function () {
-      function MOVE() {
-
-      };
-      MOVE.value = new MOVE();
-      return MOVE;
-  })();
-  var LOCK = (function () {
-      function LOCK() {
-
-      };
-      LOCK.value = new LOCK();
-      return LOCK;
-  })();
-  var UNLOCK = (function () {
-      function UNLOCK() {
-
-      };
-      UNLOCK.value = new UNLOCK();
-      return UNLOCK;
-  })();
-  var PATCH = (function () {
-      function PATCH() {
-
-      };
-      PATCH.value = new PATCH();
-      return PATCH;
-  })();
-  var unCustomMethod = function (v) {
-      return v;
-  };
-  var showMethod = new Data_Show.Show(function (v) {
-      if (v instanceof OPTIONS) {
-          return "OPTIONS";
-      };
-      if (v instanceof GET) {
-          return "GET";
-      };
-      if (v instanceof HEAD) {
-          return "HEAD";
-      };
-      if (v instanceof POST) {
-          return "POST";
-      };
-      if (v instanceof PUT) {
-          return "PUT";
-      };
-      if (v instanceof DELETE) {
-          return "DELETE";
-      };
-      if (v instanceof TRACE) {
-          return "TRACE";
-      };
-      if (v instanceof CONNECT) {
-          return "CONNECT";
-      };
-      if (v instanceof PROPFIND) {
-          return "PROPFIND";
-      };
-      if (v instanceof PROPPATCH) {
-          return "PROPPATCH";
-      };
-      if (v instanceof MKCOL) {
-          return "MKCOL";
-      };
-      if (v instanceof COPY) {
-          return "COPY";
-      };
-      if (v instanceof MOVE) {
-          return "MOVE";
-      };
-      if (v instanceof LOCK) {
-          return "LOCK";
-      };
-      if (v instanceof UNLOCK) {
-          return "UNLOCK";
-      };
-      if (v instanceof PATCH) {
-          return "PATCH";
-      };
-      throw new Error("Failed pattern match at Data.HTTP.Method line 40, column 1 - line 40, column 35: " + [ v.constructor.name ]);
-  });
-  var print = Data_Either.either(Data_Show.show(showMethod))(unCustomMethod);
-  exports["OPTIONS"] = OPTIONS;
-  exports["GET"] = GET;
-  exports["HEAD"] = HEAD;
-  exports["POST"] = POST;
-  exports["PUT"] = PUT;
-  exports["DELETE"] = DELETE;
-  exports["TRACE"] = TRACE;
-  exports["CONNECT"] = CONNECT;
-  exports["PROPFIND"] = PROPFIND;
-  exports["PROPPATCH"] = PROPPATCH;
-  exports["MKCOL"] = MKCOL;
-  exports["COPY"] = COPY;
-  exports["MOVE"] = MOVE;
-  exports["LOCK"] = LOCK;
-  exports["UNLOCK"] = UNLOCK;
-  exports["PATCH"] = PATCH;
-  exports["unCustomMethod"] = unCustomMethod;
-  exports["print"] = print;
-  exports["showMethod"] = showMethod;
-})(PS["Data.HTTP.Method"] = PS["Data.HTTP.Method"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Prelude = PS["Prelude"];                 
-  var MediaType = function (x) {
-      return x;
-  }; 
-  var newtypeMediaType = new Data_Newtype.Newtype(function (n) {
-      return n;
-  }, MediaType);
-  exports["MediaType"] = MediaType;
-  exports["newtypeMediaType"] = newtypeMediaType;
-})(PS["Data.MediaType"] = PS["Data.MediaType"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_MediaType = PS["Data.MediaType"];           
-  var applicationJSON = "application/json";
-  var applicationFormURLEncoded = "application/x-www-form-urlencoded";
-  exports["applicationFormURLEncoded"] = applicationFormURLEncoded;
-  exports["applicationJSON"] = applicationJSON;
-})(PS["Data.MediaType.Common"] = PS["Data.MediaType.Common"] || {});
-(function(exports) {
-  /* globals setImmediate, clearImmediate, setTimeout, clearTimeout */
-  /* jshint -W083, -W098, -W003 */
-  "use strict";
-
-  var Aff = function () {
-    // A unique value for empty.
-    var EMPTY = {};
-
-    /*
-
-  An awkward approximation. We elide evidence we would otherwise need in PS for
-  efficiency sake.
-
-  data Aff eff a
-    = Pure a
-    | Throw Error
-    | Catch (Aff eff a) (Error -> Aff eff a)
-    | Sync (Eff eff a)
-    | Async ((Either Error a -> Eff eff Unit) -> Eff eff (Canceler eff))
-    | forall b. Bind (Aff eff b) (b -> Aff eff a)
-    | forall b. Bracket (Aff eff b) (BracketConditions eff b) (b -> Aff eff a)
-    | forall b. Fork Boolean (Aff eff b) ?(Fiber eff b -> a)
-    | Sequential (ParAff aff a)
-
-  */  
-    var PURE    = "Pure";
-    var THROW   = "Throw";
-    var CATCH   = "Catch";
-    var SYNC    = "Sync";
-    var ASYNC   = "Async";
-    var BIND    = "Bind";
-    var BRACKET = "Bracket";
-    var FORK    = "Fork";
-    var SEQ     = "Sequential";
-
-    /*
-
-  data ParAff eff a
-    = forall b. Map (b -> a) (ParAff eff b)
-    | forall b. Apply (ParAff eff (b -> a)) (ParAff eff b)
-    | Alt (ParAff eff a) (ParAff eff a)
-    | ?Par (Aff eff a)
-
-  */  
-    var MAP   = "Map";
-    var APPLY = "Apply";
-    var ALT   = "Alt";
-
-    // Various constructors used in interpretation
-    var CONS      = "Cons";      // Cons-list, for stacks
-    var RESUME    = "Resume";    // Continue indiscriminately
-    var RELEASE   = "Release";   // Continue with bracket finalizers
-    var FINALIZER = "Finalizer"; // A non-interruptible effect
-    var FINALIZED = "Finalized"; // Marker for finalization
-    var FORKED    = "Forked";    // Reference to a forked fiber, with resumption stack
-    var FIBER     = "Fiber";     // Actual fiber reference
-    var THUNK     = "Thunk";     // Primed effect, ready to invoke
-
-    function Aff(tag, _1, _2, _3) {
-      this.tag = tag;
-      this._1  = _1;
-      this._2  = _2;
-      this._3  = _3;
-    }
-
-    function AffCtr(tag) {
-      var fn = function (_1, _2, _3) {
-        return new Aff(tag, _1, _2, _3);
-      };
-      fn.tag = tag;
-      return fn;
-    }
-
-    function nonCanceler(error) {
-      return new Aff(PURE, void 0);
-    }
-
-    function runEff(eff) {
-      try {
-        eff();
-      } catch (error) {
-        setTimeout(function () {
-          throw error;
-        }, 0);
-      }
-    }
-
-    function runSync(left, right, eff) {
-      try {
-        return right(eff());
-      } catch (error) {
-        return left(error);
-      }
-    }
-
-    function runAsync(left, eff, k) {
-      try {
-        return eff(k)();
-      } catch (error) {
-        k(left(error))();
-        return nonCanceler;
-      }
-    }
-
-    var Scheduler = function () {
-      var limit    = 1024;
-      var size     = 0;
-      var ix       = 0;
-      var queue    = new Array(limit);
-      var draining = false;
-
-      function drain() {
-        var thunk;
-        draining = true;
-        while (size !== 0) {
-          size--;
-          thunk     = queue[ix];
-          queue[ix] = void 0;
-          ix        = (ix + 1) % limit;
-          thunk();
-        }
-        draining = false;
-      }
-
-      return {
-        isDraining: function () {
-          return draining;
-        },
-        enqueue: function (cb) {
-          var i, tmp;
-          if (size === limit) {
-            tmp = draining;
-            drain();
-            draining = tmp;
-          }
-
-          queue[(ix + size) % limit] = cb;
-          size++;
-
-          if (!draining) {
-            drain();
-          }
-        }
-      };
-    }();
-
-    function Supervisor(util) {
-      var fibers  = {};
-      var fiberId = 0;
-      var count   = 0;
-
-      return {
-        register: function (fiber) {
-          var fid = fiberId++;
-          fiber.onComplete({
-            rethrow: true,
-            handler: function (result) {
-              return function () {
-                count--;
-                delete fibers[fid];
-              };
-            }
-          });
-          fibers[fid] = fiber;
-          count++;
-        },
-        isEmpty: function () {
-          return count === 0;
-        },
-        killAll: function (killError, cb) {
-          return function () {
-            var killCount = 0;
-            var kills     = {};
-
-            function kill(fid) {
-              kills[fid] = fibers[fid].kill(killError, function (result) {
-                return function () {
-                  delete kills[fid];
-                  killCount--;
-                  if (util.isLeft(result) && util.fromLeft(result)) {
-                    setTimeout(function () {
-                      throw util.fromLeft(result);
-                    }, 0);
-                  }
-                  if (killCount === 0) {
-                    cb();
-                  }
-                };
-              })();
-            }
-
-            for (var k in fibers) {
-              if (fibers.hasOwnProperty(k)) {
-                killCount++;
-                kill(k);
-              }
-            }
-
-            fibers  = {};
-            fiberId = 0;
-            count   = 0;
-
-            return function (error) {
-              return new Aff(SYNC, function () {
-                for (var k in kills) {
-                  if (kills.hasOwnProperty(k)) {
-                    kills[k]();
-                  }
-                }
-              });
-            };
-          };
-        }
-      };
-    }
-
-    // Fiber state machine
-    var SUSPENDED   = 0; // Suspended, pending a join.
-    var CONTINUE    = 1; // Interpret the next instruction.
-    var STEP_BIND   = 2; // Apply the next bind.
-    var STEP_RESULT = 3; // Handle potential failure from a result.
-    var PENDING     = 4; // An async effect is running.
-    var RETURN      = 5; // The current stack has returned.
-    var COMPLETED   = 6; // The entire fiber has completed.
-
-    function Fiber(util, supervisor, aff) {
-      // Monotonically increasing tick, increased on each asynchronous turn.
-      var runTick = 0;
-
-      // The current branch of the state machine.
-      var status = SUSPENDED;
-
-      // The current point of interest for the state machine branch.
-      var step      = aff;  // Successful step
-      var fail      = null; // Failure step
-      var interrupt = null; // Asynchronous interrupt
-
-      // Stack of continuations for the current fiber.
-      var bhead = null;
-      var btail = null;
-
-      // Stack of attempts and finalizers for error recovery. Every `Cons` is also
-      // tagged with current `interrupt` state. We use this to track which items
-      // should be ignored or evaluated as a result of a kill.
-      var attempts = null;
-
-      // A special state is needed for Bracket, because it cannot be killed. When
-      // we enter a bracket acquisition or finalizer, we increment the counter,
-      // and then decrement once complete.
-      var bracketCount = 0;
-
-      // Each join gets a new id so they can be revoked.
-      var joinId  = 0;
-      var joins   = null;
-      var rethrow = true;
-
-      // Each invocation of `run` requires a tick. When an asynchronous effect is
-      // resolved, we must check that the local tick coincides with the fiber
-      // tick before resuming. This prevents multiple async continuations from
-      // accidentally resuming the same fiber. A common example may be invoking
-      // the provided callback in `makeAff` more than once, but it may also be an
-      // async effect resuming after the fiber was already cancelled.
-      function run(localRunTick) {
-        var tmp, result, attempt, canceler;
-        while (true) {
-          tmp       = null;
-          result    = null;
-          attempt   = null;
-          canceler  = null;
-
-          switch (status) {
-          case STEP_BIND:
-            status = CONTINUE;
-            step   = bhead(step);
-            if (btail === null) {
-              bhead = null;
-            } else {
-              bhead = btail._1;
-              btail = btail._2;
-            }
-            break;
-
-          case STEP_RESULT:
-            if (util.isLeft(step)) {
-              status = RETURN;
-              fail   = step;
-              step   = null;
-            } else if (bhead === null) {
-              status = RETURN;
-            } else {
-              status = STEP_BIND;
-              step   = util.fromRight(step);
-            }
-            break;
-
-          case CONTINUE:
-            switch (step.tag) {
-            case BIND:
-              if (bhead) {
-                btail = new Aff(CONS, bhead, btail);
-              }
-              bhead  = step._2;
-              status = CONTINUE;
-              step   = step._1;
-              break;
-
-            case PURE:
-              if (bhead === null) {
-                status = RETURN;
-                step   = util.right(step._1);
-              } else {
-                status = STEP_BIND;
-                step   = step._1;
-              }
-              break;
-
-            case SYNC:
-              status = STEP_RESULT;
-              step   = runSync(util.left, util.right, step._1);
-              break;
-
-            case ASYNC:
-              status = PENDING;
-              step   = runAsync(util.left, step._1, function (result) {
-                return function () {
-                  if (runTick !== localRunTick) {
-                    return;
-                  }
-                  runTick++;
-                  Scheduler.enqueue(function () {
-                    status = STEP_RESULT;
-                    step   = result;
-                    run(runTick);
-                  });
-                };
-              });
-              return;
-
-            case THROW:
-              status = RETURN;
-              fail   = util.left(step._1);
-              step   = null;
-              break;
-
-            // Enqueue the Catch so that we can call the error handler later on
-            // in case of an exception.
-            case CATCH:
-              if (bhead === null) {
-                attempts = new Aff(CONS, step, attempts, interrupt);
-              } else {
-                attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);
-              }
-              bhead    = null;
-              btail    = null;
-              status   = CONTINUE;
-              step     = step._1;
-              break;
-
-            // Enqueue the Bracket so that we can call the appropriate handlers
-            // after resource acquisition.
-            case BRACKET:
-              bracketCount++;
-              if (bhead === null) {
-                attempts = new Aff(CONS, step, attempts, interrupt);
-              } else {
-                attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);
-              }
-              bhead  = null;
-              btail  = null;
-              status = CONTINUE;
-              step   = step._1;
-              break;
-
-            case FORK:
-              status = STEP_RESULT;
-              tmp    = Fiber(util, supervisor, step._2);
-              if (supervisor) {
-                supervisor.register(tmp);
-              }
-              if (step._1) {
-                tmp.run();
-              }
-              step = util.right(tmp);
-              break;
-
-            case SEQ:
-              status = CONTINUE;
-              step   = sequential(util, supervisor, step._1);
-              break;
-            }
-            break;
-
-          case RETURN:
-            bhead = null;
-            btail = null;
-            // If the current stack has returned, and we have no other stacks to
-            // resume or finalizers to run, the fiber has halted and we can
-            // invoke all join callbacks. Otherwise we need to resume.
-            if (attempts === null) {
-              status = COMPLETED;
-              step   = interrupt || fail || step;
-            } else {
-              // The interrupt status for the enqueued item.
-              tmp      = attempts._3;
-              attempt  = attempts._1;
-              attempts = attempts._2;
-
-              switch (attempt.tag) {
-              // We cannot recover from an interrupt. Otherwise we should
-              // continue stepping, or run the exception handler if an exception
-              // was raised.
-              case CATCH:
-                // We should compare the interrupt status as well because we
-                // only want it to apply if there has been an interrupt since
-                // enqueuing the catch.
-                if (interrupt && interrupt !== tmp) {
-                  status = RETURN;
-                } else if (fail) {
-                  status = CONTINUE;
-                  step   = attempt._2(util.fromLeft(fail));
-                  fail   = null;
-                }
-                break;
-
-              // We cannot resume from an interrupt or exception.
-              case RESUME:
-                // As with Catch, we only want to ignore in the case of an
-                // interrupt since enqueing the item.
-                if (interrupt && interrupt !== tmp || fail) {
-                  status = RETURN;
-                } else {
-                  bhead  = attempt._1;
-                  btail  = attempt._2;
-                  status = STEP_BIND;
-                  step   = util.fromRight(step);
-                }
-                break;
-
-              // If we have a bracket, we should enqueue the handlers,
-              // and continue with the success branch only if the fiber has
-              // not been interrupted. If the bracket acquisition failed, we
-              // should not run either.
-              case BRACKET:
-                bracketCount--;
-                if (fail === null) {
-                  result   = util.fromRight(step);
-                  // We need to enqueue the Release with the same interrupt
-                  // status as the Bracket that is initiating it.
-                  attempts = new Aff(CONS, new Aff(RELEASE, attempt._2, result), attempts, tmp);
-                  // We should only coninue as long as the interrupt status has not changed or
-                  // we are currently within a non-interruptable finalizer.
-                  if (interrupt === tmp || bracketCount > 0) {
-                    status = CONTINUE;
-                    step   = attempt._3(result);
-                  }
-                }
-                break;
-
-              // Enqueue the appropriate handler. We increase the bracket count
-              // because it should not be cancelled.
-              case RELEASE:
-                bracketCount++;
-                attempts = new Aff(CONS, new Aff(FINALIZED, step), attempts, interrupt);
-                status   = CONTINUE;
-                // It has only been killed if the interrupt status has changed
-                // since we enqueued the item.
-                if (interrupt && interrupt !== tmp) {
-                  step = attempt._1.killed(util.fromLeft(interrupt))(attempt._2);
-                } else if (fail) {
-                  step = attempt._1.failed(util.fromLeft(fail))(attempt._2);
-                } else {
-                  step = attempt._1.completed(util.fromRight(step))(attempt._2);
-                }
-                break;
-
-              case FINALIZER:
-                bracketCount++;
-                attempts = new Aff(CONS, new Aff(FINALIZED, step), attempts, interrupt);
-                status   = CONTINUE;
-                step     = attempt._1;
-                break;
-
-              case FINALIZED:
-                bracketCount--;
-                status = RETURN;
-                step   = attempt._1;
-                break;
-              }
-            }
-            break;
-
-          case COMPLETED:
-            for (var k in joins) {
-              if (joins.hasOwnProperty(k)) {
-                rethrow = rethrow && joins[k].rethrow;
-                runEff(joins[k].handler(step));
-              }
-            }
-            joins = null;
-            // If we have an interrupt and a fail, then the thread threw while
-            // running finalizers. This should always rethrow in a fresh stack.
-            if (interrupt && fail) {
-              setTimeout(function () {
-                throw util.fromLeft(fail);
-              }, 0);
-            // If we have an unhandled exception, and no other fiber has joined
-            // then we need to throw the exception in a fresh stack.
-            } else if (util.isLeft(step) && rethrow) {
-              setTimeout(function () {
-                // Guard on reathrow because a completely synchronous fiber can
-                // still have an observer which was added after-the-fact.
-                if (rethrow) {
-                  throw util.fromLeft(step);
-                }
-              }, 0);
-            }
-            return;
-          case SUSPENDED:
-            status = CONTINUE;
-            break;
-          case PENDING: return;
-          }
-        }
-      }
-
-      function onComplete(join) {
-        return function () {
-          if (status === COMPLETED) {
-            rethrow = rethrow && join.rethrow;
-            join.handler(step)();
-            return function () {};
-          }
-
-          var jid    = joinId++;
-          joins      = joins || {};
-          joins[jid] = join;
-
-          return function() {
-            if (joins !== null) {
-              delete joins[jid];
-            }
-          };
-        };
-      }
-
-      function kill(error, cb) {
-        return function () {
-          if (status === COMPLETED) {
-            cb(util.right(void 0))();
-            return function () {};
-          }
-
-          var canceler = onComplete({
-            rethrow: false,
-            handler: function (/* unused */) {
-              return cb(util.right(void 0));
-            }
-          })();
-
-          switch (status) {
-          case SUSPENDED:
-            interrupt = util.left(error);
-            status    = COMPLETED;
-            step      = interrupt;
-            run(runTick);
-            break;
-          case PENDING:
-            if (interrupt === null) {
-              interrupt = util.left(error);
-            }
-            if (bracketCount === 0) {
-              if (status === PENDING) {
-                attempts = new Aff(CONS, new Aff(FINALIZER, step(error)), attempts, interrupt);
-              }
-              status   = RETURN;
-              step     = null;
-              fail     = null;
-              run(++runTick);
-            }
-            break;
-          default:
-            if (interrupt === null) {
-              interrupt = util.left(error);
-            }
-            if (bracketCount === 0) {
-              status = RETURN;
-              step   = null;
-              fail   = null;
-            }
-          }
-
-          return canceler;
-        };
-      }
-
-      function join(cb) {
-        return function () {
-          var canceler = onComplete({
-            rethrow: false,
-            handler: cb
-          })();
-          if (status === SUSPENDED) {
-            run(runTick);
-          }
-          return canceler;
-        };
-      }
-
-      return {
-        kill: kill,
-        join: join,
-        onComplete: onComplete,
-        isSuspended: function () {
-          return status === SUSPENDED;
-        },
-        run: function () {
-          if (status === SUSPENDED) {
-            if (!Scheduler.isDraining()) {
-              Scheduler.enqueue(function () {
-                run(runTick);
-              });
-            } else {
-              run(runTick);
-            }
-          }
-        }
-      };
-    }
-
-    function runPar(util, supervisor, par, cb) {
-      // Table of all forked fibers.
-      var fiberId   = 0;
-      var fibers    = {};
-
-      // Table of currently running cancelers, as a product of `Alt` behavior.
-      var killId    = 0;
-      var kills     = {};
-
-      // Error used for early cancelation on Alt branches.
-      var early     = new Error("[ParAff] Early exit");
-
-      // Error used to kill the entire tree.
-      var interrupt = null;
-
-      // The root pointer of the tree.
-      var root      = EMPTY;
-
-      // Walks a tree, invoking all the cancelers. Returns the table of pending
-      // cancellation fibers.
-      function kill(error, par, cb) {
-        var step  = par;
-        var head  = null;
-        var tail  = null;
-        var count = 0;
-        var kills = {};
-        var tmp, kid;
-
-        loop: while (true) {
-          tmp = null;
-
-          switch (step.tag) {
-          case FORKED:
-            if (step._3 === EMPTY) {
-              tmp = fibers[step._1];
-              kills[count++] = tmp.kill(error, function (result) {
-                return function () {
-                  count--;
-                  if (count === 0) {
-                    cb(result)();
-                  }
-                };
-              });
-            }
-            // Terminal case.
-            if (head === null) {
-              break loop;
-            }
-            // Go down the right side of the tree.
-            step = head._2;
-            if (tail === null) {
-              head = null;
-            } else {
-              head = tail._1;
-              tail = tail._2;
-            }
-            break;
-          case MAP:
-            step = step._2;
-            break;
-          case APPLY:
-          case ALT:
-            if (head) {
-              tail = new Aff(CONS, head, tail);
-            }
-            head = step;
-            step = step._1;
-            break;
-          }
-        }
-
-        if (count === 0) {
-          cb(util.right(void 0))();
-        } else {
-          // Run the cancelation effects. We alias `count` because it's mutable.
-          kid = 0;
-          tmp = count;
-          for (; kid < tmp; kid++) {
-            kills[kid] = kills[kid]();
-          }
-        }
-
-        return kills;
-      }
-
-      // When a fiber resolves, we need to bubble back up the tree with the
-      // result, computing the applicative nodes.
-      function join(result, head, tail) {
-        var fail, step, lhs, rhs, tmp, kid;
-
-        if (util.isLeft(result)) {
-          fail = result;
-          step = null;
-        } else {
-          step = result;
-          fail = null;
-        }
-
-        loop: while (true) {
-          lhs = null;
-          rhs = null;
-          tmp = null;
-          kid = null;
-
-          // We should never continue if the entire tree has been interrupted.
-          if (interrupt !== null) {
-            return;
-          }
-
-          // We've made it all the way to the root of the tree, which means
-          // the tree has fully evaluated.
-          if (head === null) {
-            cb(fail || step)();
-            return;
-          }
-
-          // The tree has already been computed, so we shouldn't try to do it
-          // again. This should never happen.
-          // TODO: Remove this?
-          if (head._3 !== EMPTY) {
-            return;
-          }
-
-          switch (head.tag) {
-          case MAP:
-            if (fail === null) {
-              head._3 = util.right(head._1(util.fromRight(step)));
-              step    = head._3;
-            } else {
-              head._3 = fail;
-            }
-            break;
-          case APPLY:
-            lhs = head._1._3;
-            rhs = head._2._3;
-            // If we have a failure we should kill the other side because we
-            // can't possible yield a result anymore.
-            if (fail) {
-              head._3 = fail;
-              tmp     = true;
-              kid     = killId++;
-
-              kills[kid] = kill(early, fail === lhs ? head._2 : head._1, function (/* unused */) {
-                return function () {
-                  delete kills[kid];
-                  if (tmp) {
-                    tmp = false;
-                  } else if (tail === null) {
-                    join(step, null, null);
-                  } else {
-                    join(step, tail._1, tail._2);
-                  }
-                };
-              });
-
-              if (tmp) {
-                tmp = false;
-                return;
-              }
-            } else if (lhs === EMPTY || rhs === EMPTY) {
-              // We can only proceed if both sides have resolved.
-              return;
-            } else {
-              step    = util.right(util.fromRight(lhs)(util.fromRight(rhs)));
-              head._3 = step;
-            }
-            break;
-          case ALT:
-            lhs = head._1._3;
-            rhs = head._2._3;
-            // We can only proceed if both have resolved or we have a success
-            if (lhs === EMPTY && util.isLeft(rhs) || rhs === EMPTY && util.isLeft(lhs)) {
-              return;
-            }
-            // If both sides resolve with an error, we should continue with the
-            // first error
-            if (lhs !== EMPTY && util.isLeft(lhs) && rhs !== EMPTY && util.isLeft(rhs)) {
-              fail    = step === lhs ? rhs : lhs;
-              step    = null;
-              head._3 = fail;
-            } else {
-              head._3 = step;
-              tmp     = true;
-              kid     = killId++;
-              // Once a side has resolved, we need to cancel the side that is still
-              // pending before we can continue.
-              kills[kid] = kill(early, step === lhs ? head._2 : head._1, function (/* unused */) {
-                return function () {
-                  delete kills[kid];
-                  if (tmp) {
-                    tmp = false;
-                  } else if (tail === null) {
-                    join(step, null, null);
-                  } else {
-                    join(step, tail._1, tail._2);
-                  }
-                };
-              });
-
-              if (tmp) {
-                tmp = false;
-                return;
-              }
-            }
-            break;
-          }
-
-          if (tail === null) {
-            head = null;
-          } else {
-            head = tail._1;
-            tail = tail._2;
-          }
-        }
-      }
-
-      function resolve(fiber) {
-        return function (result) {
-          return function () {
-            delete fibers[fiber._1];
-            fiber._3 = result;
-            join(result, fiber._2._1, fiber._2._2);
-          };
-        };
-      }
-
-      // Walks the applicative tree, substituting non-applicative nodes with
-      // `FORKED` nodes. In this tree, all applicative nodes use the `_3` slot
-      // as a mutable slot for memoization. In an unresolved state, the `_3`
-      // slot is `EMPTY`. In the cases of `ALT` and `APPLY`, we always walk
-      // the left side first, because both operations are left-associative. As
-      // we `RETURN` from those branches, we then walk the right side.
-      function run() {
-        var status = CONTINUE;
-        var step   = par;
-        var head   = null;
-        var tail   = null;
-        var tmp, fid;
-
-        loop: while (true) {
-          tmp = null;
-          fid = null;
-
-          switch (status) {
-          case CONTINUE:
-            switch (step.tag) {
-            case MAP:
-              if (head) {
-                tail = new Aff(CONS, head, tail);
-              }
-              head = new Aff(MAP, step._1, EMPTY, EMPTY);
-              step = step._2;
-              break;
-            case APPLY:
-              if (head) {
-                tail = new Aff(CONS, head, tail);
-              }
-              head = new Aff(APPLY, EMPTY, step._2, EMPTY);
-              step = step._1;
-              break;
-            case ALT:
-              if (head) {
-                tail = new Aff(CONS, head, tail);
-              }
-              head = new Aff(ALT, EMPTY, step._2, EMPTY);
-              step = step._1;
-              break;
-            default:
-              // When we hit a leaf value, we suspend the stack in the `FORKED`.
-              // When the fiber resolves, it can bubble back up the tree.
-              fid    = fiberId++;
-              status = RETURN;
-              tmp    = step;
-              step   = new Aff(FORKED, fid, new Aff(CONS, head, tail), EMPTY);
-              tmp    = Fiber(util, supervisor, tmp);
-              tmp.onComplete({
-                rethrow: false,
-                handler: resolve(step)
-              })();
-              fibers[fid] = tmp;
-              if (supervisor) {
-                supervisor.register(tmp);
-              }
-            }
-            break;
-          case RETURN:
-            // Terminal case, we are back at the root.
-            if (head === null) {
-              break loop;
-            }
-            // If we are done with the right side, we need to continue down the
-            // left. Otherwise we should continue up the stack.
-            if (head._1 === EMPTY) {
-              head._1 = step;
-              status  = CONTINUE;
-              step    = head._2;
-              head._2 = EMPTY;
-            } else {
-              head._2 = step;
-              step    = head;
-              if (tail === null) {
-                head  = null;
-              } else {
-                head  = tail._1;
-                tail  = tail._2;
-              }
-            }
-          }
-        }
-
-        // Keep a reference to the tree root so it can be cancelled.
-        root = step;
-
-        for (fid = 0; fid < fiberId; fid++) {
-          fibers[fid].run();
-        }
-      }
-
-      // Cancels the entire tree. If there are already subtrees being canceled,
-      // we need to first cancel those joins. We will then add fresh joins for
-      // all pending branches including those that were in the process of being
-      // canceled.
-      function cancel(error, cb) {
-        interrupt = util.left(error);
-        var innerKills;
-        for (var kid in kills) {
-          if (kills.hasOwnProperty(kid)) {
-            innerKills = kills[kid];
-            for (kid in innerKills) {
-              if (innerKills.hasOwnProperty(kid)) {
-                innerKills[kid]();
-              }
-            }
-          }
-        }
-
-        kills = null;
-        var newKills = kill(error, root, cb);
-
-        return function (killError) {
-          return new Aff(ASYNC, function (killCb) {
-            return function () {
-              for (var kid in newKills) {
-                if (newKills.hasOwnProperty(kid)) {
-                  newKills[kid]();
-                }
-              }
-              return nonCanceler;
-            };
-          });
-        };
-      }
-
-      run();
-
-      return function (killError) {
-        return new Aff(ASYNC, function (killCb) {
-          return function () {
-            return cancel(killError, killCb);
-          };
-        });
-      };
-    }
-
-    function sequential(util, supervisor, par) {
-      return new Aff(ASYNC, function (cb) {
-        return function () {
-          return runPar(util, supervisor, par, cb);
-        };
-      });
-    }
-
-    Aff.EMPTY       = EMPTY;
-    Aff.Pure        = AffCtr(PURE);
-    Aff.Throw       = AffCtr(THROW);
-    Aff.Catch       = AffCtr(CATCH);
-    Aff.Sync        = AffCtr(SYNC);
-    Aff.Async       = AffCtr(ASYNC);
-    Aff.Bind        = AffCtr(BIND);
-    Aff.Bracket     = AffCtr(BRACKET);
-    Aff.Fork        = AffCtr(FORK);
-    Aff.Seq         = AffCtr(SEQ);
-    Aff.ParMap      = AffCtr(MAP);
-    Aff.ParApply    = AffCtr(APPLY);
-    Aff.ParAlt      = AffCtr(ALT);
-    Aff.Fiber       = Fiber;
-    Aff.Supervisor  = Supervisor;
-    Aff.Scheduler   = Scheduler;
-    Aff.nonCanceler = nonCanceler;
-
-    return Aff;
-  }();
-
-  exports._pure = Aff.Pure;
-
-  exports._throwError = Aff.Throw;
-
-  exports._catchError = function (aff) {
-    return function (k) {
-      return Aff.Catch(aff, k);
-    };
-  };
-
-  exports._map = function (f) {
-    return function (aff) {
-      if (aff.tag === Aff.Pure.tag) {
-        return Aff.Pure(f(aff._1));
-      } else {
-        return Aff.Bind(aff, function (value) {
-          return Aff.Pure(f(value));
-        });
-      }
-    };
-  };
-
-  exports._bind = function (aff) {
-    return function (k) {
-      return Aff.Bind(aff, k);
-    };
-  };
-
-  exports._fork = function (immediate) {
-    return function (aff) {
-      return Aff.Fork(immediate, aff);
-    };
-  };
-
-  exports._liftEffect = Aff.Sync;
-
-  exports._parAffMap = function (f) {
-    return function (aff) {
-      return Aff.ParMap(f, aff);
-    };
-  };
-
-  exports._parAffApply = function (aff1) {
-    return function (aff2) {
-      return Aff.ParApply(aff1, aff2);
-    };
-  };
-
-  exports.makeAff = Aff.Async;
-
-  exports._makeFiber = function (util, aff) {
-    return function () {
-      return Aff.Fiber(util, null, aff);
-    };
-  };  
-
-  exports._sequential = Aff.Seq;
-})(PS["Effect.Aff"] = PS["Effect.Aff"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];                 
-  var MonadThrow = function (Monad0, throwError) {
-      this.Monad0 = Monad0;
-      this.throwError = throwError;
-  };
-  var MonadError = function (MonadThrow0, catchError) {
-      this.MonadThrow0 = MonadThrow0;
-      this.catchError = catchError;
-  };
-  var throwError = function (dict) {
-      return dict.throwError;
-  }; 
-  var catchError = function (dict) {
-      return dict.catchError;
-  };
-  var $$try = function (dictMonadError) {
-      return function (a) {
-          return catchError(dictMonadError)(Data_Functor.map(((((dictMonadError.MonadThrow0()).Monad0()).Bind1()).Apply0()).Functor0())(Data_Either.Right.create)(a))(function ($21) {
-              return Control_Applicative.pure(((dictMonadError.MonadThrow0()).Monad0()).Applicative0())(Data_Either.Left.create($21));
-          });
-      };
-  };
-  exports["catchError"] = catchError;
-  exports["throwError"] = throwError;
-  exports["MonadThrow"] = MonadThrow;
-  exports["MonadError"] = MonadError;
-  exports["try"] = $$try;
-})(PS["Control.Monad.Error.Class"] = PS["Control.Monad.Error.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];                 
-  var MonadState = function (Monad0, state) {
-      this.Monad0 = Monad0;
-      this.state = state;
-  };
-  var state = function (dict) {
-      return dict.state;
-  };
-  var put = function (dictMonadState) {
-      return function (s) {
-          return state(dictMonadState)(function (v) {
-              return new Data_Tuple.Tuple(Data_Unit.unit, s);
-          });
-      };
-  };
-  var modify_ = function (dictMonadState) {
-      return function (f) {
-          return state(dictMonadState)(function (s) {
-              return new Data_Tuple.Tuple(Data_Unit.unit, f(s));
-          });
-      };
-  };
-  var gets = function (dictMonadState) {
-      return function (f) {
-          return state(dictMonadState)(function (s) {
-              return new Data_Tuple.Tuple(f(s), s);
-          });
-      };
-  };
-  var get = function (dictMonadState) {
-      return state(dictMonadState)(function (s) {
-          return new Data_Tuple.Tuple(s, s);
-      });
-  };
-  exports["state"] = state;
-  exports["MonadState"] = MonadState;
-  exports["get"] = get;
-  exports["gets"] = gets;
-  exports["put"] = put;
-  exports["modify_"] = modify_;
-})(PS["Control.Monad.State.Class"] = PS["Control.Monad.State.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Prelude = PS["Prelude"];                 
-  var MonadTrans = function (lift) {
-      this.lift = lift;
-  };
-  var lift = function (dict) {
-      return dict.lift;
-  };
-  exports["lift"] = lift;
-  exports["MonadTrans"] = MonadTrans;
-})(PS["Control.Monad.Trans.Class"] = PS["Control.Monad.Trans.Class"] || {});
-(function(exports) {
-    "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Effect = PS["Effect"];                 
-
-  // | The `MonadEffect` class captures those monads which support native effects.
-  // |
-  // | Instances are provided for `Effect` itself, and the standard monad
-  // | transformers.
-  // |
-  // | `liftEffect` can be used in any appropriate monad transformer stack to lift an
-  // | action of type `Effect a` into the monad.
-  // |
-  var MonadEffect = function (Monad0, liftEffect) {
-      this.Monad0 = Monad0;
-      this.liftEffect = liftEffect;
-  };                                                         
-  var liftEffect = function (dict) {
-      return dict.liftEffect;
-  };
-  exports["liftEffect"] = liftEffect;
-  exports["MonadEffect"] = MonadEffect;
-})(PS["Effect.Class"] = PS["Effect.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Cont_Class = PS["Control.Monad.Cont.Class"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Effect_Class = PS["Effect.Class"];
-  var Prelude = PS["Prelude"];                 
-  var ExceptT = function (x) {
-      return x;
-  };
-  var runExceptT = function (v) {
-      return v;
-  }; 
-  var mapExceptT = function (f) {
-      return function (v) {
-          return f(v);
-      };
-  };
-  var functorExceptT = function (dictFunctor) {
-      return new Data_Functor.Functor(function (f) {
-          return mapExceptT(Data_Functor.map(dictFunctor)(Data_Functor.map(Data_Either.functorEither)(f)));
-      });
-  };
-  var monadExceptT = function (dictMonad) {
-      return new Control_Monad.Monad(function () {
-          return applicativeExceptT(dictMonad);
-      }, function () {
-          return bindExceptT(dictMonad);
-      });
-  };
-  var bindExceptT = function (dictMonad) {
-      return new Control_Bind.Bind(function () {
-          return applyExceptT(dictMonad);
-      }, function (v) {
-          return function (k) {
-              return Control_Bind.bind(dictMonad.Bind1())(v)(Data_Either.either(function ($97) {
-                  return Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Left.create($97));
-              })(function (a) {
-                  var v1 = k(a);
-                  return v1;
-              }));
-          };
-      });
-  };
-  var applyExceptT = function (dictMonad) {
-      return new Control_Apply.Apply(function () {
-          return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0());
-      }, Control_Monad.ap(monadExceptT(dictMonad)));
-  };
-  var applicativeExceptT = function (dictMonad) {
-      return new Control_Applicative.Applicative(function () {
-          return applyExceptT(dictMonad);
-      }, function ($98) {
-          return ExceptT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Right.create($98)));
-      });
-  };
-  var monadThrowExceptT = function (dictMonad) {
-      return new Control_Monad_Error_Class.MonadThrow(function () {
-          return monadExceptT(dictMonad);
-      }, function ($102) {
-          return ExceptT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Left.create($102)));
-      });
-  };
-  exports["ExceptT"] = ExceptT;
-  exports["runExceptT"] = runExceptT;
-  exports["mapExceptT"] = mapExceptT;
-  exports["functorExceptT"] = functorExceptT;
-  exports["applyExceptT"] = applyExceptT;
-  exports["applicativeExceptT"] = applicativeExceptT;
-  exports["bindExceptT"] = bindExceptT;
-  exports["monadExceptT"] = monadExceptT;
-  exports["monadThrowExceptT"] = monadThrowExceptT;
-})(PS["Control.Monad.Except.Trans"] = PS["Control.Monad.Except.Trans"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Cont_Class = PS["Control.Monad.Cont.Class"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Effect_Class = PS["Effect.Class"];
-  var Prelude = PS["Prelude"];                 
-  var MaybeT = function (x) {
-      return x;
-  };
-  exports["MaybeT"] = MaybeT;
-})(PS["Control.Monad.Maybe.Trans"] = PS["Control.Monad.Maybe.Trans"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Cont_Trans = PS["Control.Monad.Cont.Trans"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Monad_Maybe_Trans = PS["Control.Monad.Maybe.Trans"];
-  var Control_Monad_Reader_Trans = PS["Control.Monad.Reader.Trans"];
-  var Control_Monad_Writer_Trans = PS["Control.Monad.Writer.Trans"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Compose = PS["Data.Functor.Compose"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Prelude = PS["Prelude"];
-  var Parallel = function (Applicative1, Monad0, parallel, sequential) {
-      this.Applicative1 = Applicative1;
-      this.Monad0 = Monad0;
-      this.parallel = parallel;
-      this.sequential = sequential;
-  };
-  var sequential = function (dict) {
-      return dict.sequential;
-  };
-  var parallel = function (dict) {
-      return dict.parallel;
-  };
-  exports["parallel"] = parallel;
-  exports["sequential"] = sequential;
-  exports["Parallel"] = Parallel;
-})(PS["Control.Parallel.Class"] = PS["Control.Parallel.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Parallel_Class = PS["Control.Parallel.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Prelude = PS["Prelude"];                 
-  var parTraverse_ = function (dictParallel) {
-      return function (dictFoldable) {
-          return function (f) {
-              return function ($17) {
-                  return Control_Parallel_Class.sequential(dictParallel)(Data_Foldable.traverse_(dictParallel.Applicative1())(dictFoldable)(function ($18) {
-                      return Control_Parallel_Class.parallel(dictParallel)(f($18));
-                  })($17));
-              };
-          };
-      };
-  };
-  var parSequence_ = function (dictParallel) {
-      return function (dictFoldable) {
-          return parTraverse_(dictParallel)(dictFoldable)(Control_Category.identity(Control_Category.categoryFn));
-      };
-  };
-  exports["parTraverse_"] = parTraverse_;
-  exports["parSequence_"] = parSequence_;
-})(PS["Control.Parallel"] = PS["Control.Parallel"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.runFn4 = function (fn) {
-    return function (a) {
-      return function (b) {
-        return function (c) {
-          return function (d) {
-            return fn(a, b, c, d);
-          };
-        };
-      };
-    };
-  };
-})(PS["Data.Function.Uncurried"] = PS["Data.Function.Uncurried"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.Function.Uncurried"];
-  var Data_Unit = PS["Data.Unit"];
-  exports["runFn4"] = $foreign.runFn4;
-})(PS["Data.Function.Uncurried"] = PS["Data.Function.Uncurried"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.error = function (msg) {
-    return new Error(msg);
-  };
-
-  exports.throwException = function (e) {
-    return function () {
-      throw e;
-    };
-  };
-})(PS["Effect.Exception"] = PS["Effect.Exception"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Effect.Exception"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Show = PS["Data.Show"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var $$throw = function ($1) {
-      return $foreign.throwException($foreign.error($1));
-  };
-  exports["throw"] = $$throw;
-  exports["error"] = $foreign.error;
-  exports["throwException"] = $foreign.throwException;
-})(PS["Effect.Exception"] = PS["Effect.Exception"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unsafePerformEffect = function (f) {
-    return f();
-  };
-})(PS["Effect.Unsafe"] = PS["Effect.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Effect.Unsafe"];
-  var Effect = PS["Effect"];
-  exports["unsafePerformEffect"] = $foreign.unsafePerformEffect;
-})(PS["Effect.Unsafe"] = PS["Effect.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Effect.Aff"];
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Lazy = PS["Control.Lazy"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Parallel_Class = PS["Control.Parallel.Class"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Time_Duration = PS["Data.Time.Duration"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Unsafe = PS["Effect.Unsafe"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Canceler = function (x) {
-      return x;
-  };
-  var suspendAff = $foreign._fork(false);
-  var functorParAff = new Data_Functor.Functor($foreign._parAffMap);
-  var functorAff = new Data_Functor.Functor($foreign._map);
-  var forkAff = $foreign._fork(true);
-  var ffiUtil = (function () {
-      var unsafeFromRight = function (v) {
-          if (v instanceof Data_Either.Right) {
-              return v.value0;
-          };
-          if (v instanceof Data_Either.Left) {
-              return Partial_Unsafe.unsafeCrashWith("unsafeFromRight: Left");
-          };
-          throw new Error("Failed pattern match at Effect.Aff line 395, column 21 - line 397, column 31: " + [ v.constructor.name ]);
-      };
-      var unsafeFromLeft = function (v) {
-          if (v instanceof Data_Either.Left) {
-              return v.value0;
-          };
-          if (v instanceof Data_Either.Right) {
-              return Partial_Unsafe.unsafeCrashWith("unsafeFromLeft: Right");
-          };
-          throw new Error("Failed pattern match at Effect.Aff line 390, column 20 - line 394, column 3: " + [ v.constructor.name ]);
-      };
-      var isLeft = function (v) {
-          if (v instanceof Data_Either.Left) {
-              return true;
-          };
-          if (v instanceof Data_Either.Right) {
-              return false;
-          };
-          throw new Error("Failed pattern match at Effect.Aff line 385, column 12 - line 387, column 20: " + [ v.constructor.name ]);
-      };
-      return {
-          isLeft: isLeft,
-          fromLeft: unsafeFromLeft,
-          fromRight: unsafeFromRight,
-          left: Data_Either.Left.create,
-          right: Data_Either.Right.create
-      };
-  })();
-  var makeFiber = function (aff) {
-      return $foreign._makeFiber(ffiUtil, aff);
-  };
-  var launchAff = function (aff) {
-      return function __do() {
-          var v = makeFiber(aff)();
-          v.run();
-          return v;
-      };
-  };
-  var applyParAff = new Control_Apply.Apply(function () {
-      return functorParAff;
-  }, $foreign._parAffApply);
-  var monadAff = new Control_Monad.Monad(function () {
-      return applicativeAff;
-  }, function () {
-      return bindAff;
-  });
-  var bindAff = new Control_Bind.Bind(function () {
-      return applyAff;
-  }, $foreign._bind);
-  var applyAff = new Control_Apply.Apply(function () {
-      return functorAff;
-  }, Control_Monad.ap(monadAff));
-  var applicativeAff = new Control_Applicative.Applicative(function () {
-      return applyAff;
-  }, $foreign._pure);
-  var monadEffectAff = new Effect_Class.MonadEffect(function () {
-      return monadAff;
-  }, $foreign._liftEffect);
-  var effectCanceler = function ($50) {
-      return Canceler(Data_Function["const"](Effect_Class.liftEffect(monadEffectAff)($50)));
-  };
-  var joinFiber = function (v) {
-      return $foreign.makeAff(function (k) {
-          return Data_Functor.map(Effect.functorEffect)(effectCanceler)(v.join(k));
-      });
-  };
-  var functorFiber = new Data_Functor.Functor(function (f) {
-      return function (t) {
-          return Effect_Unsafe.unsafePerformEffect(makeFiber(Data_Functor.map(functorAff)(f)(joinFiber(t))));
-      };
-  });
-  var killFiber = function (e) {
-      return function (v) {
-          return Control_Bind.bind(bindAff)(Effect_Class.liftEffect(monadEffectAff)(v.isSuspended))(function (v1) {
-              if (v1) {
-                  return Effect_Class.liftEffect(monadEffectAff)(Data_Functor["void"](Effect.functorEffect)(v.kill(e, Data_Function["const"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit)))));
-              };
-              return $foreign.makeAff(function (k) {
-                  return Data_Functor.map(Effect.functorEffect)(effectCanceler)(v.kill(e, k));
-              });
-          });
-      };
-  };
-  var monadThrowAff = new Control_Monad_Error_Class.MonadThrow(function () {
-      return monadAff;
-  }, $foreign._throwError);
-  var monadErrorAff = new Control_Monad_Error_Class.MonadError(function () {
-      return monadThrowAff;
-  }, $foreign._catchError);                                     
-  var runAff = function (k) {
-      return function (aff) {
-          return launchAff(Control_Bind.bindFlipped(bindAff)(function ($51) {
-              return Effect_Class.liftEffect(monadEffectAff)(k($51));
-          })(Control_Monad_Error_Class["try"](monadErrorAff)(aff)));
-      };
-  };
-  var runAff_ = function (k) {
-      return function (aff) {
-          return Data_Functor["void"](Effect.functorEffect)(runAff(k)(aff));
-      };
-  };
-  var parallelAff = new Control_Parallel_Class.Parallel(function () {
-      return applicativeParAff;
-  }, function () {
-      return monadAff;
-  }, Unsafe_Coerce.unsafeCoerce, $foreign._sequential);
-  var applicativeParAff = new Control_Applicative.Applicative(function () {
-      return applyParAff;
-  }, function ($53) {
-      return Control_Parallel_Class.parallel(parallelAff)(Control_Applicative.pure(applicativeAff)($53));
-  });
-  var monadRecAff = new Control_Monad_Rec_Class.MonadRec(function () {
-      return monadAff;
-  }, function (k) {
-      var go = function (a) {
-          return Control_Bind.bind(bindAff)(k(a))(function (v) {
-              if (v instanceof Control_Monad_Rec_Class.Done) {
-                  return Control_Applicative.pure(applicativeAff)(v.value0);
-              };
-              if (v instanceof Control_Monad_Rec_Class.Loop) {
-                  return go(v.value0);
-              };
-              throw new Error("Failed pattern match at Effect.Aff line 99, column 7 - line 101, column 22: " + [ v.constructor.name ]);
-          });
-      };
-      return go;
-  });
-  var nonCanceler = Data_Function["const"](Control_Applicative.pure(applicativeAff)(Data_Unit.unit));
-  exports["Canceler"] = Canceler;
-  exports["launchAff"] = launchAff;
-  exports["runAff"] = runAff;
-  exports["runAff_"] = runAff_;
-  exports["forkAff"] = forkAff;
-  exports["suspendAff"] = suspendAff;
-  exports["killFiber"] = killFiber;
-  exports["joinFiber"] = joinFiber;
-  exports["nonCanceler"] = nonCanceler;
-  exports["effectCanceler"] = effectCanceler;
-  exports["functorAff"] = functorAff;
-  exports["applyAff"] = applyAff;
-  exports["applicativeAff"] = applicativeAff;
-  exports["bindAff"] = bindAff;
-  exports["monadAff"] = monadAff;
-  exports["monadRecAff"] = monadRecAff;
-  exports["monadThrowAff"] = monadThrowAff;
-  exports["monadErrorAff"] = monadErrorAff;
-  exports["monadEffectAff"] = monadEffectAff;
-  exports["functorParAff"] = functorParAff;
-  exports["applyParAff"] = applyParAff;
-  exports["applicativeParAff"] = applicativeParAff;
-  exports["parallelAff"] = parallelAff;
-  exports["functorFiber"] = functorFiber;
-  exports["makeAff"] = $foreign.makeAff;
-})(PS["Effect.Aff"] = PS["Effect.Aff"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._app = function() {
-    return app;
-  }
-
-  exports._closest = function(just, nothing, selector, el) {
-    var node = el.closest(selector);
-    if(node) {
-      return just(node);
-    } else {
-      return nothing;
-    }
-  }
-
-  exports._innerHtml = function(el) {
-    return el.innerHTML;
-  }
-
-  exports._setInnerHtml = function(content, el) {
-    el.innerHTML = content;
-    return el;
-  }
-
-  exports._createFormData = function(formElement) {
-    return new FormData(formElement);
-  }
-
-  exports._createFormString = function(formElement) {
-    return new URLSearchParams(new FormData(formElement)).toString()
-  }
-
-  exports._createFormArray = function(formElement) {
-    return Array.from(new FormData(formElement));
-  }
-
-  exports._getDataAttribute = function(name, el) {
-    return el.dataset[name];
-  }
-
-  exports._setDataAttribute = function(name, value, el) {
-    return el.dataset[name] = value;
-  }
-
-  exports._moment8601 = function(tuple, s) {
-    var m = moment(s, moment.ISO_8601);
-    var s1 = m.fromNow();
-    var s2 = m.format('MMMM D YYYY, h:mm a') + " (" + m.format() + ") ";
-    return tuple(s1)(s2);
-  }
-
-  exports._mmoment8601 = function(just, nothing, tuple, s) {
-    try {
-      var m = moment(s, moment.ISO_8601);
-      var s1 = m.fromNow();
-      var s2 = m.format('MMMM D YYYY, h:mm a') + " (" + m.format() + ") ";
-      return just(tuple(s1)(s2));
-    } catch (error) {
-      return nothing
-    }
-  }
-
-  exports._closeWindow = function (window) {
-    window.close();
-  };
-})(PS["Globals"] = PS["Globals"] || {});
-(function(exports) {
-    "use strict";
-
-  exports["null"] = null;
-
-  exports.nullable = function (a, r, f) {
-    return a == null ? r : f(a);
-  };
-
-  exports.notNull = function (x) {
-    return x;
-  };
-})(PS["Data.Nullable"] = PS["Data.Nullable"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.Nullable"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Show = PS["Data.Show"];
-  var Prelude = PS["Prelude"];                 
-  var toNullable = Data_Maybe.maybe($foreign["null"])($foreign.notNull);
-  var toMaybe = function (n) {
-      return $foreign.nullable(n, Data_Maybe.Nothing.value, Data_Maybe.Just.create);
-  };
-  exports["toMaybe"] = toMaybe;
-  exports["toNullable"] = toNullable;
-})(PS["Data.Nullable"] = PS["Data.Nullable"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Prelude = PS["Prelude"];                                                           
-  var runExcept = function ($0) {
-      return Data_Newtype.unwrap(Data_Identity.newtypeIdentity)(Control_Monad_Except_Trans.runExceptT($0));
-  };
-  exports["runExcept"] = runExcept;
-})(PS["Control.Monad.Except"] = PS["Control.Monad.Except"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Prelude = PS["Prelude"];                 
-  var NonEmpty = (function () {
-      function NonEmpty(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      NonEmpty.create = function (value0) {
-          return function (value1) {
-              return new NonEmpty(value0, value1);
-          };
-      };
-      return NonEmpty;
-  })();
-  var singleton = function (dictPlus) {
-      return function (a) {
-          return new NonEmpty(a, Control_Plus.empty(dictPlus));
-      };
-  };
-  var functorNonEmpty = function (dictFunctor) {
-      return new Data_Functor.Functor(function (f) {
-          return function (m) {
-              return new NonEmpty(f(m.value0), Data_Functor.map(dictFunctor)(f)(m.value1));
-          };
-      });
-  };
-  var foldableNonEmpty = function (dictFoldable) {
-      return new Data_Foldable.Foldable(function (dictMonoid) {
-          return function (f) {
-              return function (v) {
-                  return Data_Semigroup.append(dictMonoid.Semigroup0())(f(v.value0))(Data_Foldable.foldMap(dictFoldable)(dictMonoid)(f)(v.value1));
-              };
-          };
-      }, function (f) {
-          return function (b) {
-              return function (v) {
-                  return Data_Foldable.foldl(dictFoldable)(f)(f(b)(v.value0))(v.value1);
-              };
-          };
-      }, function (f) {
-          return function (b) {
-              return function (v) {
-                  return f(v.value0)(Data_Foldable.foldr(dictFoldable)(f)(b)(v.value1));
-              };
-          };
-      });
-  };
-  exports["NonEmpty"] = NonEmpty;
-  exports["singleton"] = singleton;
-  exports["functorNonEmpty"] = functorNonEmpty;
-  exports["foldableNonEmpty"] = foldableNonEmpty;
-})(PS["Data.NonEmpty"] = PS["Data.NonEmpty"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Comonad = PS["Control.Comonad"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_NonEmpty = PS["Data.NonEmpty"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
-  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Prelude = PS["Prelude"];                 
-  var Nil = (function () {
-      function Nil() {
-
-      };
-      Nil.value = new Nil();
-      return Nil;
-  })();
-  var Cons = (function () {
-      function Cons(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Cons.create = function (value0) {
-          return function (value1) {
-              return new Cons(value0, value1);
-          };
-      };
-      return Cons;
-  })();
-  var NonEmptyList = function (x) {
-      return x;
-  };
-  var foldableList = new Data_Foldable.Foldable(function (dictMonoid) {
-      return function (f) {
-          return Data_Foldable.foldl(foldableList)(function (acc) {
-              return function ($155) {
-                  return Data_Semigroup.append(dictMonoid.Semigroup0())(acc)(f($155));
-              };
-          })(Data_Monoid.mempty(dictMonoid));
-      };
-  }, function (f) {
-      var go = function ($copy_b) {
-          return function ($copy_v) {
-              var $tco_var_b = $copy_b;
-              var $tco_done = false;
-              var $tco_result;
-              function $tco_loop(b, v) {
-                  if (v instanceof Nil) {
-                      $tco_done = true;
-                      return b;
-                  };
-                  if (v instanceof Cons) {
-                      $tco_var_b = f(b)(v.value0);
-                      $copy_v = v.value1;
-                      return;
-                  };
-                  throw new Error("Failed pattern match at Data.List.Types line 81, column 12 - line 83, column 30: " + [ v.constructor.name ]);
-              };
-              while (!$tco_done) {
-                  $tco_result = $tco_loop($tco_var_b, $copy_v);
-              };
-              return $tco_result;
-          };
-      };
-      return go;
-  }, function (f) {
-      return function (b) {
-          var rev = Data_Foldable.foldl(foldableList)(Data_Function.flip(Cons.create))(Nil.value);
-          return function ($156) {
-              return Data_Foldable.foldl(foldableList)(Data_Function.flip(f))(b)(rev($156));
-          };
-      };
-  });
-  var foldableNonEmptyList = Data_NonEmpty.foldableNonEmpty(foldableList);
-  var functorList = new Data_Functor.Functor(function (f) {
-      return Data_Foldable.foldr(foldableList)(function (x) {
-          return function (acc) {
-              return new Cons(f(x), acc);
-          };
-      })(Nil.value);
-  });
-  var functorNonEmptyList = Data_NonEmpty.functorNonEmpty(functorList);
-  var semigroupList = new Data_Semigroup.Semigroup(function (xs) {
-      return function (ys) {
-          return Data_Foldable.foldr(foldableList)(Cons.create)(ys)(xs);
-      };
-  });
-  var applyList = new Control_Apply.Apply(function () {
-      return functorList;
-  }, function (v) {
-      return function (v1) {
-          if (v instanceof Nil) {
-              return Nil.value;
-          };
-          if (v instanceof Cons) {
-              return Data_Semigroup.append(semigroupList)(Data_Functor.map(functorList)(v.value0)(v1))(Control_Apply.apply(applyList)(v.value1)(v1));
-          };
-          throw new Error("Failed pattern match at Data.List.Types line 127, column 1 - line 127, column 33: " + [ v.constructor.name, v1.constructor.name ]);
-      };
-  });
-  var applicativeList = new Control_Applicative.Applicative(function () {
-      return applyList;
-  }, function (a) {
-      return new Cons(a, Nil.value);
-  });                                              
-  var altList = new Control_Alt.Alt(function () {
-      return functorList;
-  }, Data_Semigroup.append(semigroupList));
-  var plusList = new Control_Plus.Plus(function () {
-      return altList;
-  }, Nil.value);
-  exports["Nil"] = Nil;
-  exports["Cons"] = Cons;
-  exports["NonEmptyList"] = NonEmptyList;
-  exports["semigroupList"] = semigroupList;
-  exports["functorList"] = functorList;
-  exports["foldableList"] = foldableList;
-  exports["applyList"] = applyList;
-  exports["applicativeList"] = applicativeList;
-  exports["altList"] = altList;
-  exports["plusList"] = plusList;
-  exports["functorNonEmptyList"] = functorNonEmptyList;
-  exports["foldableNonEmptyList"] = foldableNonEmptyList;
-})(PS["Data.List.Types"] = PS["Data.List.Types"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unsafeToForeign = function (value) {
-    return value;
-  };
-
-  exports.unsafeFromForeign = function (value) {
-    return value;
-  };
-
-  exports.typeOf = function (value) {
-    return typeof value;
-  };
-
-  exports.tagOf = function (value) {
-    return Object.prototype.toString.call(value).slice(8, -1);
-  };
-})(PS["Foreign"] = PS["Foreign"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Lazy = PS["Control.Lazy"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_NonEmpty = PS["Data.NonEmpty"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];
-  var reverse = (function () {
-      var go = function ($copy_acc) {
-          return function ($copy_v) {
-              var $tco_var_acc = $copy_acc;
-              var $tco_done = false;
-              var $tco_result;
-              function $tco_loop(acc, v) {
-                  if (v instanceof Data_List_Types.Nil) {
-                      $tco_done = true;
-                      return acc;
-                  };
-                  if (v instanceof Data_List_Types.Cons) {
-                      $tco_var_acc = new Data_List_Types.Cons(v.value0, acc);
-                      $copy_v = v.value1;
-                      return;
-                  };
-                  throw new Error("Failed pattern match at Data.List line 368, column 3 - line 368, column 19: " + [ acc.constructor.name, v.constructor.name ]);
-              };
-              while (!$tco_done) {
-                  $tco_result = $tco_loop($tco_var_acc, $copy_v);
-              };
-              return $tco_result;
-          };
-      };
-      return go(Data_List_Types.Nil.value);
-  })();
-  var $$null = function (v) {
-      if (v instanceof Data_List_Types.Nil) {
-          return true;
-      };
-      return false;
-  };
-  var fromFoldable = function (dictFoldable) {
-      return Data_Foldable.foldr(dictFoldable)(Data_List_Types.Cons.create)(Data_List_Types.Nil.value);
-  };
-  exports["fromFoldable"] = fromFoldable;
-  exports["null"] = $$null;
-  exports["reverse"] = reverse;
-})(PS["Data.List"] = PS["Data.List"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_NonEmpty = PS["Data.NonEmpty"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
-  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var singleton = function ($160) {
-      return Data_List_Types.NonEmptyList(Data_NonEmpty.singleton(Data_List_Types.plusList)($160));
-  };
-  var cons = function (y) {
-      return function (v) {
-          return new Data_NonEmpty.NonEmpty(y, new Data_List_Types.Cons(v.value0, v.value1));
-      };
-  };
-  exports["singleton"] = singleton;
-  exports["cons"] = cons;
-})(PS["Data.List.NonEmpty"] = PS["Data.List.NonEmpty"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.singleton = function (c) {
-    return c;
-  };
-
-  exports.length = function (s) {
-    return s.length;
-  };
-
-  exports.drop = function (n) {
-    return function (s) {
-      return s.substring(n);
-    };
-  };
-})(PS["Data.String.CodeUnits"] = PS["Data.String.CodeUnits"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.charAt = function (i) {
-    return function (s) {
-      if (i >= 0 && i < s.length) return s.charAt(i);
-      throw new Error("Data.String.Unsafe.charAt: Invalid index.");
-    };
-  };
-})(PS["Data.String.Unsafe"] = PS["Data.String.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.String.Unsafe"];
-  exports["charAt"] = $foreign.charAt;
-})(PS["Data.String.Unsafe"] = PS["Data.String.Unsafe"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.String.CodeUnits"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_String_Unsafe = PS["Data.String.Unsafe"];
-  var Prelude = PS["Prelude"];
-  exports["singleton"] = $foreign.singleton;
-  exports["length"] = $foreign.length;
-  exports["drop"] = $foreign.drop;
-})(PS["Data.String.CodeUnits"] = PS["Data.String.CodeUnits"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Foreign"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Except = PS["Control.Monad.Except"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Int = PS["Data.Int"];
-  var Data_List_NonEmpty = PS["Data.List.NonEmpty"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String_CodeUnits = PS["Data.String.CodeUnits"];
-  var Prelude = PS["Prelude"];                 
-  var ForeignError = (function () {
-      function ForeignError(value0) {
-          this.value0 = value0;
-      };
-      ForeignError.create = function (value0) {
-          return new ForeignError(value0);
-      };
-      return ForeignError;
-  })();
-  var TypeMismatch = (function () {
-      function TypeMismatch(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      TypeMismatch.create = function (value0) {
-          return function (value1) {
-              return new TypeMismatch(value0, value1);
-          };
-      };
-      return TypeMismatch;
-  })();
-  var ErrorAtIndex = (function () {
-      function ErrorAtIndex(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      ErrorAtIndex.create = function (value0) {
-          return function (value1) {
-              return new ErrorAtIndex(value0, value1);
-          };
-      };
-      return ErrorAtIndex;
-  })();
-  var ErrorAtProperty = (function () {
-      function ErrorAtProperty(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      ErrorAtProperty.create = function (value0) {
-          return function (value1) {
-              return new ErrorAtProperty(value0, value1);
-          };
-      };
-      return ErrorAtProperty;
-  })();
-  var renderForeignError = function (v) {
-      if (v instanceof ForeignError) {
-          return v.value0;
-      };
-      if (v instanceof ErrorAtIndex) {
-          return "Error at array index " + (Data_Show.show(Data_Show.showInt)(v.value0) + (": " + renderForeignError(v.value1)));
-      };
-      if (v instanceof ErrorAtProperty) {
-          return "Error at property " + (Data_Show.show(Data_Show.showString)(v.value0) + (": " + renderForeignError(v.value1)));
-      };
-      if (v instanceof TypeMismatch) {
-          return "Type mismatch: expected " + (v.value0 + (", found " + v.value1));
-      };
-      throw new Error("Failed pattern match at Foreign line 72, column 1 - line 72, column 45: " + [ v.constructor.name ]);
-  };
-  var fail = function ($107) {
-      return Control_Monad_Error_Class.throwError(Control_Monad_Except_Trans.monadThrowExceptT(Data_Identity.monadIdentity))(Data_List_NonEmpty.singleton($107));
-  };
-  var unsafeReadTagged = function (tag) {
-      return function (value) {
-          if ($foreign.tagOf(value) === tag) {
-              return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))($foreign.unsafeFromForeign(value));
-          };
-          if (Data_Boolean.otherwise) {
-              return fail(new TypeMismatch(tag, $foreign.tagOf(value)));
-          };
-          throw new Error("Failed pattern match at Foreign line 106, column 1 - line 106, column 55: " + [ tag.constructor.name, value.constructor.name ]);
-      };
-  };
-  var readBoolean = unsafeReadTagged("Boolean");
-  var readString = unsafeReadTagged("String");
-  exports["ForeignError"] = ForeignError;
-  exports["TypeMismatch"] = TypeMismatch;
-  exports["ErrorAtIndex"] = ErrorAtIndex;
-  exports["ErrorAtProperty"] = ErrorAtProperty;
-  exports["renderForeignError"] = renderForeignError;
-  exports["unsafeReadTagged"] = unsafeReadTagged;
-  exports["readString"] = readString;
-  exports["readBoolean"] = readBoolean;
-  exports["fail"] = fail;
-  exports["unsafeToForeign"] = $foreign.unsafeToForeign;
-  exports["typeOf"] = $foreign.typeOf;
-})(PS["Foreign"] = PS["Foreign"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unsafeReadPropImpl = function (f, s, key, value) {
-    return value == null ? f : s(value[key]);
-  };
-})(PS["Foreign.Index"] = PS["Foreign.Index"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Foreign.Index"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_List_NonEmpty = PS["Data.List.NonEmpty"];
-  var Foreign = PS["Foreign"];
-  var Prelude = PS["Prelude"];
-  var unsafeReadProp = function (k) {
-      return function (value) {
-          return $foreign.unsafeReadPropImpl(Foreign.fail(new Foreign.TypeMismatch("object", Foreign.typeOf(value))), Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity)), k, value);
-      };
-  };
-  var readProp = unsafeReadProp;
-  exports["readProp"] = readProp;
-})(PS["Foreign.Index"] = PS["Foreign.Index"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.empty = {};
-
-  exports._lookup = function (no, yes, k, m) {
-    return k in m ? yes(m[k]) : no;
-  };
-
-  function toArrayWithKey(f) {
-    return function (m) {
-      var r = [];
-      for (var k in m) {
-        if (hasOwnProperty.call(m, k)) {
-          r.push(f(k)(m[k]));
-        }
-      }
-      return r;
-    };
-  }
-})(PS["Foreign.Object"] = PS["Foreign.Object"] || {});
-(function(exports) {
-    "use strict";
-
-  exports["new"] = function () {
-    return {};
-  };
-})(PS["Foreign.Object.ST"] = PS["Foreign.Object.ST"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Foreign.Object.ST"];
-  var Control_Monad_ST = PS["Control.Monad.ST"];
-  var Data_Maybe = PS["Data.Maybe"];
-  exports["new"] = $foreign["new"];
-})(PS["Foreign.Object.ST"] = PS["Foreign.Object.ST"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Foreign.Object"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_ST = PS["Control.Monad.ST"];
-  var Control_Monad_ST_Internal = PS["Control.Monad.ST.Internal"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Foreign_Object_ST = PS["Foreign.Object.ST"];
-  var Prelude = PS["Prelude"];
-  var lookup = Data_Function_Uncurried.runFn4($foreign._lookup)(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);
-  exports["lookup"] = lookup;
-  exports["empty"] = $foreign.empty;
-})(PS["Foreign.Object"] = PS["Foreign.Object"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Type_Data_Boolean = PS["Type.Data.Boolean"];
-  var Type_Data_Symbol = PS["Type.Data.Symbol"];
-  var Type_Equality = PS["Type.Equality"];
-  var RLProxy = (function () {
-      function RLProxy() {
-
-      };
-      RLProxy.value = new RLProxy();
-      return RLProxy;
-  })();
-  exports["RLProxy"] = RLProxy;
-})(PS["Type.Row"] = PS["Type.Row"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Prelude = PS["Prelude"];
-  var Record_Unsafe = PS["Record.Unsafe"];
-  var Record_Unsafe_Union = PS["Record.Unsafe.Union"];
-  var Type_Row = PS["Type.Row"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var get = function (dictIsSymbol) {
-      return function (dictCons) {
-          return function (l) {
-              return function (r) {
-                  return Record_Unsafe.unsafeGet(Data_Symbol.reflectSymbol(dictIsSymbol)(l))(r);
-              };
-          };
-      };
-  };
-  exports["get"] = get;
-})(PS["Record"] = PS["Record"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.copyRecord = function(rec) {
-    var copy = {};
-    for (var key in rec) {
-      if ({}.hasOwnProperty.call(rec, key)) {
-        copy[key] = rec[key];
-      }
-    }
-    return copy;
-  };
-
-  exports.unsafeInsert = function(l) {
-    return function(a) {
-      return function(rec) {
-        rec[l] = a;
-        return rec;
-      };
-    };
-  };
-})(PS["Record.Builder"] = PS["Record.Builder"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Record.Builder"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Prelude = PS["Prelude"];
-  var Record_Unsafe_Union = PS["Record.Unsafe.Union"];
-  var Type_Row = PS["Type.Row"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var semigroupoidBuilder = Control_Semigroupoid.semigroupoidFn;
-  var insert = function (dictCons) {
-      return function (dictLacks) {
-          return function (dictIsSymbol) {
-              return function (l) {
-                  return function (a) {
-                      return function (r1) {
-                          return $foreign.unsafeInsert(Data_Symbol.reflectSymbol(dictIsSymbol)(l))(a)(r1);
-                      };
-                  };
-              };
-          };
-      };
-  };
-  var categoryBuilder = Control_Category.categoryFn;
-  var build = function (v) {
-      return function (r1) {
-          return v($foreign.copyRecord(r1));
-      };
-  };
-  exports["build"] = build;
-  exports["insert"] = insert;
-  exports["semigroupoidBuilder"] = semigroupoidBuilder;
-  exports["categoryBuilder"] = categoryBuilder;
-})(PS["Record.Builder"] = PS["Record.Builder"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Simple.JSON"];
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_Except = PS["Control.Monad.Except"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Symbol = PS["Data.Symbol"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Variant = PS["Data.Variant"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Effect_Unsafe = PS["Effect.Unsafe"];
-  var Foreign = PS["Foreign"];
-  var Foreign_Index = PS["Foreign.Index"];
-  var Foreign_Object = PS["Foreign.Object"];
-  var Global_Unsafe = PS["Global.Unsafe"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var Record = PS["Record"];
-  var Record_Builder = PS["Record.Builder"];
-  var Type_Prelude = PS["Type.Prelude"];
-  var Type_Row = PS["Type.Row"];
-  var WriteForeign = function (writeImpl) {
-      this.writeImpl = writeImpl;
-  };
-  var WriteForeignFields = function (writeImplFields) {
-      this.writeImplFields = writeImplFields;
-  };
-  var writeImplFields = function (dict) {
-      return dict.writeImplFields;
-  };
-  var writeImpl = function (dict) {
-      return dict.writeImpl;
-  };
-  var writeJSON = function (dictWriteForeign) {
-      return function ($71) {
-          return Global_Unsafe.unsafeStringify(writeImpl(dictWriteForeign)($71));
-      };
-  };
-  var writeForeignString = new WriteForeign(Foreign.unsafeToForeign);
-  var writeForeignInt = new WriteForeign(Foreign.unsafeToForeign); 
-  var writeForeignBoolean = new WriteForeign(Foreign.unsafeToForeign);
-  var recordWriteForeign = function (dictRowToList) {
-      return function (dictWriteForeignFields) {
-          return new WriteForeign(function (rec) {
-              var steps = writeImplFields(dictWriteForeignFields)(Type_Row.RLProxy.value)(rec);
-              return Foreign.unsafeToForeign(Record_Builder.build(steps)({}));
-          });
-      };
-  }; 
-  var nilWriteForeignFields = new WriteForeignFields(function (v) {
-      return function (v1) {
-          return Control_Category.identity(Record_Builder.categoryBuilder);
-      };
-  });
-  var consWriteForeignFields = function (dictIsSymbol) {
-      return function (dictWriteForeign) {
-          return function (dictWriteForeignFields) {
-              return function (dictCons) {
-                  return function (dictLacks) {
-                      return function (dictCons1) {
-                          return new WriteForeignFields(function (v) {
-                              return function (rec) {
-                                  var rest = writeImplFields(dictWriteForeignFields)(Type_Row.RLProxy.value)(rec);
-                                  var value = writeImpl(dictWriteForeign)(Record.get(dictIsSymbol)(dictCons)(Data_Symbol.SProxy.value)(rec));
-                                  var result = Control_Semigroupoid.compose(Record_Builder.semigroupoidBuilder)(Record_Builder.insert(dictCons1)(dictLacks)(dictIsSymbol)(Data_Symbol.SProxy.value)(value))(rest);
-                                  return result;
-                              };
-                          });
-                      };
-                  };
-              };
-          };
-      };
-  };
-  exports["writeJSON"] = writeJSON;
-  exports["WriteForeign"] = WriteForeign;
-  exports["writeImpl"] = writeImpl;
-  exports["WriteForeignFields"] = WriteForeignFields;
-  exports["writeImplFields"] = writeImplFields;
-  exports["writeForeignString"] = writeForeignString;
-  exports["writeForeignInt"] = writeForeignInt;
-  exports["writeForeignBoolean"] = writeForeignBoolean;
-  exports["recordWriteForeign"] = recordWriteForeign;
-  exports["consWriteForeignFields"] = consWriteForeignFields;
-  exports["nilWriteForeignFields"] = nilWriteForeignFields;
-})(PS["Simple.JSON"] = PS["Simple.JSON"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_Symbol = PS["Data.Symbol"];
-  var Simple_JSON = PS["Simple.JSON"];
-  var wfI = Simple_JSON.recordWriteForeign()(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "bid";
-  }))(Simple_JSON.writeForeignInt)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "description";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "private";
-  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "selected";
-  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "tags";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "time";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "title";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "toread";
-  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
-      return "url";
-  }))(Simple_JSON.writeForeignString)(Simple_JSON.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()());
-  exports["wfI"] = wfI;
-})(PS["Model"] = PS["Model"] || {});
-(function(exports) {
-  /* global window */
-  "use strict";
-
-  exports.window = function () {
-    return window;
-  };
-})(PS["Web.HTML"] = PS["Web.HTML"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._body = function (doc) {
-    return function () {
-      return doc.body;
-    };
-  };
-})(PS["Web.HTML.HTMLDocument"] = PS["Web.HTML.HTMLDocument"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.removeAttribute = function (name) {
-    return function (element) {
-      return function () {
-        element.removeAttribute(name);
-        return {};
-      };
-    };
-  };
-})(PS["Web.DOM.Element"] = PS["Web.DOM.Element"] || {});
-(function(exports) {
-    "use strict";                                             
-
-  exports._querySelector = function (selector) {
-    return function (node) {
-      return function () {
-        return node.querySelector(selector);
-      };
-    };
-  };
-
-  exports.querySelectorAll = function (selector) {
-    return function (node) {
-      return function () {
-        return node.querySelectorAll(selector);
-      };
-    };
-  };
-})(PS["Web.DOM.ParentNode"] = PS["Web.DOM.ParentNode"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.toArray = function (list) {
-    return function () {
-      return [].slice.call(list);
-    };
-  };
-})(PS["Web.DOM.NodeList"] = PS["Web.DOM.NodeList"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.DOM.NodeList"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  exports["toArray"] = $foreign.toArray;
-})(PS["Web.DOM.NodeList"] = PS["Web.DOM.NodeList"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.DOM.ParentNode"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Ord = PS["Data.Ord"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_HTMLCollection = PS["Web.DOM.HTMLCollection"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NodeList = PS["Web.DOM.NodeList"];
-  var querySelector = function (qs) {
-      return function ($3) {
-          return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign._querySelector(qs)($3));
-      };
-  };
-  exports["querySelector"] = querySelector;
-  exports["querySelectorAll"] = $foreign.querySelectorAll;
-})(PS["Web.DOM.ParentNode"] = PS["Web.DOM.ParentNode"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.eventListener = function (fn) {
-    return function () {
-      return function (event) {
-        return fn(event)();
-      };
-    };
-  };
-})(PS["Web.Event.EventTarget"] = PS["Web.Event.EventTarget"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._currentTarget = function (e) {
-    return e.currentTarget;
-  };
-
-  exports.preventDefault = function (e) {
-    return function () {
-      return e.preventDefault();
-    };
-  };
-})(PS["Web.Event.Event"] = PS["Web.Event.Event"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.toCharCode = function (c) {
-    return c.charCodeAt(0);
-  };
-
-  exports.fromCharCode = function (c) {
-    return String.fromCharCode(c);
-  };
-})(PS["Data.Enum"] = PS["Data.Enum"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.Enum"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Data_Unit = PS["Data.Unit"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var Enum = function (Ord0, pred, succ) {
-      this.Ord0 = Ord0;
-      this.pred = pred;
-      this.succ = succ;
-  };
-  var BoundedEnum = function (Bounded0, Enum1, cardinality, fromEnum, toEnum) {
-      this.Bounded0 = Bounded0;
-      this.Enum1 = Enum1;
-      this.cardinality = cardinality;
-      this.fromEnum = fromEnum;
-      this.toEnum = toEnum;
-  };
-  var toEnum = function (dict) {
-      return dict.toEnum;
-  };
-  var succ = function (dict) {
-      return dict.succ;
-  }; 
-  var pred = function (dict) {
-      return dict.pred;
-  };              
-  var fromEnum = function (dict) {
-      return dict.fromEnum;
-  };
-  var toEnumWithDefaults = function (dictBoundedEnum) {
-      return function (low) {
-          return function (high) {
-              return function (x) {
-                  var v = toEnum(dictBoundedEnum)(x);
-                  if (v instanceof Data_Maybe.Just) {
-                      return v.value0;
-                  };
-                  if (v instanceof Data_Maybe.Nothing) {
-                      var $51 = x < fromEnum(dictBoundedEnum)(Data_Bounded.bottom(dictBoundedEnum.Bounded0()));
-                      if ($51) {
-                          return low;
-                      };
-                      return high;
-                  };
-                  throw new Error("Failed pattern match at Data.Enum line 158, column 33 - line 160, column 62: " + [ v.constructor.name ]);
-              };
-          };
-      };
-  };
-  var defaultSucc = function (toEnum$prime) {
-      return function (fromEnum$prime) {
-          return function (a) {
-              return toEnum$prime(fromEnum$prime(a) + 1 | 0);
-          };
-      };
-  };
-  var defaultPred = function (toEnum$prime) {
-      return function (fromEnum$prime) {
-          return function (a) {
-              return toEnum$prime(fromEnum$prime(a) - 1 | 0);
-          };
-      };
-  };
-  var charToEnum = function (v) {
-      if (v >= Data_Bounded.bottom(Data_Bounded.boundedInt) && v <= Data_Bounded.top(Data_Bounded.boundedInt)) {
-          return new Data_Maybe.Just($foreign.fromCharCode(v));
-      };
-      return Data_Maybe.Nothing.value;
-  };
-  var enumChar = new Enum(function () {
-      return Data_Ord.ordChar;
-  }, defaultPred(charToEnum)($foreign.toCharCode), defaultSucc(charToEnum)($foreign.toCharCode));
-  var cardinality = function (dict) {
-      return dict.cardinality;
-  }; 
-  var boundedEnumChar = new BoundedEnum(function () {
-      return Data_Bounded.boundedChar;
-  }, function () {
-      return enumChar;
-  }, $foreign.toCharCode(Data_Bounded.top(Data_Bounded.boundedChar)) - $foreign.toCharCode(Data_Bounded.bottom(Data_Bounded.boundedChar)) | 0, $foreign.toCharCode, charToEnum);
-  exports["Enum"] = Enum;
-  exports["succ"] = succ;
-  exports["pred"] = pred;
-  exports["BoundedEnum"] = BoundedEnum;
-  exports["cardinality"] = cardinality;
-  exports["toEnum"] = toEnum;
-  exports["fromEnum"] = fromEnum;
-  exports["toEnumWithDefaults"] = toEnumWithDefaults;
-  exports["defaultSucc"] = defaultSucc;
-  exports["defaultPred"] = defaultPred;
-  exports["enumChar"] = enumChar;
-  exports["boundedEnumChar"] = boundedEnumChar;
-})(PS["Data.Enum"] = PS["Data.Enum"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.Event.Event"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_DateTime_Instant = PS["Data.DateTime.Instant"];
-  var Data_Enum = PS["Data.Enum"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Ord = PS["Data.Ord"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Web_Event_EventPhase = PS["Web.Event.EventPhase"];
-  var Web_Event_Internal_Types = PS["Web.Event.Internal.Types"];
-  var currentTarget = function ($6) {
-      return Data_Nullable.toMaybe($foreign._currentTarget($6));
-  };
-  exports["currentTarget"] = currentTarget;
-  exports["preventDefault"] = $foreign.preventDefault;
-})(PS["Web.Event.Event"] = PS["Web.Event.Event"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.Event.EventTarget"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_Event_Internal_Types = PS["Web.Event.Internal.Types"];
-  exports["eventListener"] = $foreign.eventListener;
-})(PS["Web.Event.EventTarget"] = PS["Web.Event.EventTarget"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._unsafeReadProtoTagged = function (nothing, just, name, value) {
-    var obj = value;
-    while (obj != null) {
-      var proto = Object.getPrototypeOf(obj);
-      var ctor = proto.constructor.name;
-      if (ctor === name) {
-        return just(value);
-      } else if (ctor === "Object") {
-        return nothing;
-      }
-      obj = proto;
-    }
-    return nothing;
-  };
-})(PS["Web.Internal.FFI"] = PS["Web.Internal.FFI"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.Internal.FFI"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];                 
-  var unsafeReadProtoTagged = function (name) {
-      return function (value) {
-          return $foreign._unsafeReadProtoTagged(Data_Maybe.Nothing.value, Data_Maybe.Just.create, name, value);
-      };
-  };
-  exports["unsafeReadProtoTagged"] = unsafeReadProtoTagged;
-})(PS["Web.Internal.FFI"] = PS["Web.Internal.FFI"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.DOM.Element"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_ChildNode = PS["Web.DOM.ChildNode"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NonDocumentTypeChildNode = PS["Web.DOM.NonDocumentTypeChildNode"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_Internal_FFI = PS["Web.Internal.FFI"];                 
-  var toParentNode = Unsafe_Coerce.unsafeCoerce;              
-  var toNode = Unsafe_Coerce.unsafeCoerce;                                             
-  var fromNode = Web_Internal_FFI.unsafeReadProtoTagged("Element");
-  exports["fromNode"] = fromNode;
-  exports["toNode"] = toNode;
-  exports["toParentNode"] = toParentNode;
-  exports["removeAttribute"] = $foreign.removeAttribute;
-})(PS["Web.DOM.Element"] = PS["Web.DOM.Element"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._getElementById = function (id) {
-    return function (node) {
-      return function () {
-        return node.getElementById(id);
-      };
-    };
-  };
-})(PS["Web.DOM.NonElementParentNode"] = PS["Web.DOM.NonElementParentNode"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.DOM.NonElementParentNode"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];                 
-  var getElementById = function (eid) {
-      return function ($0) {
-          return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign._getElementById(eid)($0));
-      };
-  };
-  exports["getElementById"] = getElementById;
-})(PS["Web.DOM.NonElementParentNode"] = PS["Web.DOM.NonElementParentNode"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.DOM.Document"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Comment = PS["Web.DOM.Comment"];
-  var Web_DOM_DocumentFragment = PS["Web.DOM.DocumentFragment"];
-  var Web_DOM_DocumentType = PS["Web.DOM.DocumentType"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_HTMLCollection = PS["Web.DOM.HTMLCollection"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NonElementParentNode = PS["Web.DOM.NonElementParentNode"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_DOM_ProcessingInstruction = PS["Web.DOM.ProcessingInstruction"];
-  var Web_DOM_Text = PS["Web.DOM.Text"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_Internal_FFI = PS["Web.Internal.FFI"];
-  var toNonElementParentNode = Unsafe_Coerce.unsafeCoerce;
-  exports["toNonElementParentNode"] = toNonElementParentNode;
-})(PS["Web.DOM.Document"] = PS["Web.DOM.Document"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._read = function (nothing, just, value) {
-    var tag = Object.prototype.toString.call(value);
-    if (tag.indexOf("[object HTML") === 0 && tag.indexOf("Element]") === tag.length - 8) {
-      return just(value);
-    } else {
-      return nothing;
-    }
-  };
-})(PS["Web.HTML.HTMLElement"] = PS["Web.HTML.HTMLElement"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.HTML.HTMLElement"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM = PS["Web.DOM"];
-  var Web_DOM_DOMTokenList = PS["Web.DOM.DOMTokenList"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NonDocumentTypeChildNode = PS["Web.DOM.NonDocumentTypeChildNode"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];    
-  var toNode = Unsafe_Coerce.unsafeCoerce;       
-  var toElement = Unsafe_Coerce.unsafeCoerce;
-  var fromElement = function (x) {
-      return $foreign._read(Data_Maybe.Nothing.value, Data_Maybe.Just.create, x);
-  };
-  exports["fromElement"] = fromElement;
-  exports["toElement"] = toElement;
-  exports["toNode"] = toNode;
-})(PS["Web.HTML.HTMLElement"] = PS["Web.HTML.HTMLElement"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.HTML.HTMLDocument"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NonElementParentNode = PS["Web.DOM.NonElementParentNode"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_HTML_HTMLDocument_ReadyState = PS["Web.HTML.HTMLDocument.ReadyState"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var Web_Internal_FFI = PS["Web.Internal.FFI"];                 
-  var toParentNode = Unsafe_Coerce.unsafeCoerce; 
-  var toDocument = Unsafe_Coerce.unsafeCoerce;                              
-  var body = function ($2) {
-      return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign._body($2));
-  };
-  exports["toDocument"] = toDocument;
-  exports["toParentNode"] = toParentNode;
-  exports["body"] = body;
-})(PS["Web.HTML.HTMLDocument"] = PS["Web.HTML.HTMLDocument"] || {});
-(function(exports) {
-    "use strict";
-
-  // ----------------------------------------------------------------------------
-
-  exports.href = function (location) {
-    return function () {
-      return location.href;
-    };
-  };
-
-  exports.setHref = function (href) {
-    return function (location) {
-      return function () {
-        location.href = href;
-      };
-    };
-  };
-
-  // ----------------------------------------------------------------------------
-
-  exports.search = function (location) {
-    return function () {
-      return location.search;
-    };
-  };
-
-  // ----------------------------------------------------------------------------
-
-  exports.reload = function (location) {
-    return function () {
-      location.reload();
-    };
-  };
-})(PS["Web.HTML.Location"] = PS["Web.HTML.Location"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.HTML.Location"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  exports["setHref"] = $foreign.setHref;
-  exports["search"] = $foreign.search;
-  exports["reload"] = $foreign.reload;
-})(PS["Web.HTML.Location"] = PS["Web.HTML.Location"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.document = function (window) {
-    return function () {
-      return window.document;
-    };
-  };
-
-  exports.location = function (window) {
-    return function () {
-      return window.location;
-    };
-  };
-})(PS["Web.HTML.Window"] = PS["Web.HTML.Window"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.HTML.Window"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Ord = PS["Data.Ord"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
-  var Web_HTML_History = PS["Web.HTML.History"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];
-  var Web_HTML_Navigator = PS["Web.HTML.Navigator"];
-  var Web_Storage_Storage = PS["Web.Storage.Storage"];
-  exports["document"] = $foreign.document;
-  exports["location"] = $foreign.location;
-})(PS["Web.HTML.Window"] = PS["Web.HTML.Window"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.HTML"];
-  var Effect = PS["Effect"];
-  var Web_HTML_HTMLAnchorElement = PS["Web.HTML.HTMLAnchorElement"];
-  var Web_HTML_HTMLAreaElement = PS["Web.HTML.HTMLAreaElement"];
-  var Web_HTML_HTMLAudioElement = PS["Web.HTML.HTMLAudioElement"];
-  var Web_HTML_HTMLBRElement = PS["Web.HTML.HTMLBRElement"];
-  var Web_HTML_HTMLBaseElement = PS["Web.HTML.HTMLBaseElement"];
-  var Web_HTML_HTMLBodyElement = PS["Web.HTML.HTMLBodyElement"];
-  var Web_HTML_HTMLButtonElement = PS["Web.HTML.HTMLButtonElement"];
-  var Web_HTML_HTMLCanvasElement = PS["Web.HTML.HTMLCanvasElement"];
-  var Web_HTML_HTMLDListElement = PS["Web.HTML.HTMLDListElement"];
-  var Web_HTML_HTMLDataElement = PS["Web.HTML.HTMLDataElement"];
-  var Web_HTML_HTMLDataListElement = PS["Web.HTML.HTMLDataListElement"];
-  var Web_HTML_HTMLDivElement = PS["Web.HTML.HTMLDivElement"];
-  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var Web_HTML_HTMLEmbedElement = PS["Web.HTML.HTMLEmbedElement"];
-  var Web_HTML_HTMLFieldSetElement = PS["Web.HTML.HTMLFieldSetElement"];
-  var Web_HTML_HTMLFormElement = PS["Web.HTML.HTMLFormElement"];
-  var Web_HTML_HTMLHRElement = PS["Web.HTML.HTMLHRElement"];
-  var Web_HTML_HTMLHeadElement = PS["Web.HTML.HTMLHeadElement"];
-  var Web_HTML_HTMLHeadingElement = PS["Web.HTML.HTMLHeadingElement"];
-  var Web_HTML_HTMLIFrameElement = PS["Web.HTML.HTMLIFrameElement"];
-  var Web_HTML_HTMLImageElement = PS["Web.HTML.HTMLImageElement"];
-  var Web_HTML_HTMLInputElement = PS["Web.HTML.HTMLInputElement"];
-  var Web_HTML_HTMLKeygenElement = PS["Web.HTML.HTMLKeygenElement"];
-  var Web_HTML_HTMLLIElement = PS["Web.HTML.HTMLLIElement"];
-  var Web_HTML_HTMLLabelElement = PS["Web.HTML.HTMLLabelElement"];
-  var Web_HTML_HTMLLegendElement = PS["Web.HTML.HTMLLegendElement"];
-  var Web_HTML_HTMLLinkElement = PS["Web.HTML.HTMLLinkElement"];
-  var Web_HTML_HTMLMapElement = PS["Web.HTML.HTMLMapElement"];
-  var Web_HTML_HTMLMediaElement = PS["Web.HTML.HTMLMediaElement"];
-  var Web_HTML_HTMLMetaElement = PS["Web.HTML.HTMLMetaElement"];
-  var Web_HTML_HTMLMeterElement = PS["Web.HTML.HTMLMeterElement"];
-  var Web_HTML_HTMLModElement = PS["Web.HTML.HTMLModElement"];
-  var Web_HTML_HTMLOListElement = PS["Web.HTML.HTMLOListElement"];
-  var Web_HTML_HTMLObjectElement = PS["Web.HTML.HTMLObjectElement"];
-  var Web_HTML_HTMLOptGroupElement = PS["Web.HTML.HTMLOptGroupElement"];
-  var Web_HTML_HTMLOptionElement = PS["Web.HTML.HTMLOptionElement"];
-  var Web_HTML_HTMLOutputElement = PS["Web.HTML.HTMLOutputElement"];
-  var Web_HTML_HTMLParagraphElement = PS["Web.HTML.HTMLParagraphElement"];
-  var Web_HTML_HTMLParamElement = PS["Web.HTML.HTMLParamElement"];
-  var Web_HTML_HTMLPreElement = PS["Web.HTML.HTMLPreElement"];
-  var Web_HTML_HTMLProgressElement = PS["Web.HTML.HTMLProgressElement"];
-  var Web_HTML_HTMLQuoteElement = PS["Web.HTML.HTMLQuoteElement"];
-  var Web_HTML_HTMLScriptElement = PS["Web.HTML.HTMLScriptElement"];
-  var Web_HTML_HTMLSelectElement = PS["Web.HTML.HTMLSelectElement"];
-  var Web_HTML_HTMLSourceElement = PS["Web.HTML.HTMLSourceElement"];
-  var Web_HTML_HTMLSpanElement = PS["Web.HTML.HTMLSpanElement"];
-  var Web_HTML_HTMLStyleElement = PS["Web.HTML.HTMLStyleElement"];
-  var Web_HTML_HTMLTableCaptionElement = PS["Web.HTML.HTMLTableCaptionElement"];
-  var Web_HTML_HTMLTableCellElement = PS["Web.HTML.HTMLTableCellElement"];
-  var Web_HTML_HTMLTableColElement = PS["Web.HTML.HTMLTableColElement"];
-  var Web_HTML_HTMLTableDataCellElement = PS["Web.HTML.HTMLTableDataCellElement"];
-  var Web_HTML_HTMLTableElement = PS["Web.HTML.HTMLTableElement"];
-  var Web_HTML_HTMLTableHeaderCellElement = PS["Web.HTML.HTMLTableHeaderCellElement"];
-  var Web_HTML_HTMLTableRowElement = PS["Web.HTML.HTMLTableRowElement"];
-  var Web_HTML_HTMLTableSectionElement = PS["Web.HTML.HTMLTableSectionElement"];
-  var Web_HTML_HTMLTemplateElement = PS["Web.HTML.HTMLTemplateElement"];
-  var Web_HTML_HTMLTextAreaElement = PS["Web.HTML.HTMLTextAreaElement"];
-  var Web_HTML_HTMLTimeElement = PS["Web.HTML.HTMLTimeElement"];
-  var Web_HTML_HTMLTitleElement = PS["Web.HTML.HTMLTitleElement"];
-  var Web_HTML_HTMLTrackElement = PS["Web.HTML.HTMLTrackElement"];
-  var Web_HTML_HTMLUListElement = PS["Web.HTML.HTMLUListElement"];
-  var Web_HTML_HTMLVideoElement = PS["Web.HTML.HTMLVideoElement"];
-  var Web_HTML_History = PS["Web.HTML.History"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];
-  var Web_HTML_Navigator = PS["Web.HTML.Navigator"];
-  var Web_HTML_Window = PS["Web.HTML.Window"];
-  exports["window"] = $foreign.window;
-})(PS["Web.HTML"] = PS["Web.HTML"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Globals"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Effect = PS["Effect"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM = PS["Web.DOM"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_XHR_FormData = PS["Web.XHR.FormData"];                 
-  var setInnerHtml = function (c) {
-      return function (n) {
-          return Control_Applicative.pure(Effect.applicativeEffect)($foreign._setInnerHtml(c, n));
-      };
-  };
-  var setDataAttribute = function (k) {
-      return function (v) {
-          return function (n) {
-              return Control_Applicative.pure(Effect.applicativeEffect)($foreign._setDataAttribute(k, v, n));
-          };
-      };
-  };
-  var moment8601 = function (s) {
-      return Control_Applicative.pure(Effect.applicativeEffect)($foreign._moment8601(Data_Tuple.Tuple.create, s));
-  };
-  var mmoment8601 = function (s) {
-      return $foreign._mmoment8601(Data_Maybe.Just.create, Data_Maybe.Nothing.value, Data_Tuple.Tuple.create, s);
-  };
-  var innerHtml = function (n) {
-      return Control_Applicative.pure(Effect.applicativeEffect)($foreign._innerHtml(n));
-  };
-  var getDataAttribute = function (k) {
-      return function (n) {
-          return Control_Applicative.pure(Effect.applicativeEffect)(Data_Nullable.toMaybe($foreign._getDataAttribute(k, n)));
-      };
-  };
-  var createFormString = function (f) {
-      return $foreign._createFormString(f);
-  };
-  var createFormData = function (f) {
-      return $foreign._createFormData(f);
-  };
-  var createFormArray = function (f) {
-      return $foreign._createFormArray(f);
-  };
-  var closest = function (selector) {
-      return function (node) {
-          return Control_Applicative.pure(Effect.applicativeEffect)($foreign._closest(Data_Maybe.Just.create, Data_Maybe.Nothing.value, selector, node));
-      };
-  };
-  var closeWindow = function (win) {
-      return Control_Applicative.pure(Effect.applicativeEffect)($foreign._closeWindow(win));
-  };
-  var app$prime = function (v) {
-      return $foreign._app();
-  };
-  exports["app'"] = app$prime;
-  exports["closest"] = closest;
-  exports["moment8601"] = moment8601;
-  exports["mmoment8601"] = mmoment8601;
-  exports["innerHtml"] = innerHtml;
-  exports["setInnerHtml"] = setInnerHtml;
-  exports["createFormData"] = createFormData;
-  exports["createFormString"] = createFormString;
-  exports["createFormArray"] = createFormArray;
-  exports["getDataAttribute"] = getDataAttribute;
-  exports["setDataAttribute"] = setDataAttribute;
-  exports["closeWindow"] = closeWindow;
-  exports["_app"] = $foreign._app;
-  exports["_closest"] = $foreign._closest;
-  exports["_moment8601"] = $foreign._moment8601;
-  exports["_mmoment8601"] = $foreign._mmoment8601;
-  exports["_innerHtml"] = $foreign._innerHtml;
-  exports["_setInnerHtml"] = $foreign._setInnerHtml;
-  exports["_createFormData"] = $foreign._createFormData;
-  exports["_createFormString"] = $foreign._createFormString;
-  exports["_createFormArray"] = $foreign._createFormArray;
-  exports["_getDataAttribute"] = $foreign._getDataAttribute;
-  exports["_setDataAttribute"] = $foreign._setDataAttribute;
-  exports["_closeWindow"] = $foreign._closeWindow;
-})(PS["Globals"] = PS["Globals"] || {});
-(function(exports) {
-  /* global exports */
-  /* global XMLHttpRequest */
-  /* global module */
-  /* global process */
-  "use strict";
-
-  exports._ajax = function () {
-    var platformSpecific = { };
-    if (typeof module !== "undefined" && module.require && !(typeof process !== "undefined" && process.versions["electron"])) {
-      // We are on node.js
-      platformSpecific.newXHR = function () {
-        var XHR = module.require("xhr2");
-        return new XHR();
-      };
-
-      platformSpecific.fixupUrl = function (url) {
-        var urllib = module.require("url");
-        var u = urllib.parse(url);
-        u.protocol = u.protocol || "http:";
-        u.hostname = u.hostname || "localhost";
-        return urllib.format(u);
-      };
-
-      platformSpecific.getResponse = function (xhr) {
-        return xhr.response;
-      };
-    } else {
-      // We are in the browser
-      platformSpecific.newXHR = function () {
-        return new XMLHttpRequest();
-      };
-
-      platformSpecific.fixupUrl = function (url) {
-        return url || "/";
-      };
-
-      platformSpecific.getResponse = function (xhr) {
-        return xhr.response;
-      };
-    }
-
-    return function (mkHeader, options) {
-      return function (errback, callback) {
-        var xhr = platformSpecific.newXHR();
-        var fixedUrl = platformSpecific.fixupUrl(options.url);
-        xhr.open(options.method || "GET", fixedUrl, true, options.username, options.password);
-        if (options.headers) {
-          try {
-            for (var i = 0, header; (header = options.headers[i]) != null; i++) {
-              xhr.setRequestHeader(header.field, header.value);
-            }
-          } catch (e) {
-            errback(e);
-          }
-        }
-        xhr.onerror = function () {
-          errback(new Error("AJAX request failed: " + options.method + " " + options.url));
-        };
-        xhr.onload = function () {
-          callback({
-            status: xhr.status,
-            statusText: xhr.statusText,
-            headers: xhr.getAllResponseHeaders().split("\r\n")
-              .filter(function (header) {
-                return header.length > 0;
-              })
-              .map(function (header) {
-                var i = header.indexOf(":");
-                return mkHeader(header.substring(0, i))(header.substring(i + 2));
-              }),
-            response: platformSpecific.getResponse(xhr)
-          });
-        };
-        xhr.responseType = options.responseType;
-        xhr.withCredentials = options.withCredentials;
-        xhr.send(options.content);
-
-        return function (error, cancelErrback, cancelCallback) {
-          try {
-            xhr.abort();
-          } catch (e) {
-            return cancelErrback(e);
-          }
-          return cancelCallback();
-        };
-      };
-    };
-  }();
-})(PS["Network.HTTP.Affjax"] = PS["Network.HTTP.Affjax"] || {});
-(function(exports) {
-    "use strict";
-
-  function id(x) {
-    return x;
-  }                      
-  exports.fromObject = id;
-
-  exports.stringify = function (j) {
-    return JSON.stringify(j);
-  };                        
-
-  function isArray(a) {
-    return objToString.call(a) === "[object Array]";
-  }
-})(PS["Data.Argonaut.Core"] = PS["Data.Argonaut.Core"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.Argonaut.Core"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Foreign_Object = PS["Foreign.Object"];
-  var Prelude = PS["Prelude"];                  
-  var jsonEmptyObject = $foreign.fromObject(Foreign_Object.empty);
-  exports["jsonEmptyObject"] = jsonEmptyObject;
-  exports["stringify"] = $foreign.stringify;
-})(PS["Data.Argonaut.Core"] = PS["Data.Argonaut.Core"] || {});
-(function(exports) {
-    "use strict";
-
-  exports._jsonParser = function (fail, succ, s) {
-    try {
-      return succ(JSON.parse(s));
-    }
-    catch (e) {
-      return fail(e.message);
-    }
-  };
-})(PS["Data.Argonaut.Parser"] = PS["Data.Argonaut.Parser"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.Argonaut.Parser"];
-  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];                 
-  var jsonParser = function (j) {
-      return $foreign._jsonParser(Data_Either.Left.create, Data_Either.Right.create, j);
-  };
-  exports["jsonParser"] = jsonParser;
-})(PS["Data.Argonaut.Parser"] = PS["Data.Argonaut.Parser"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Prelude = PS["Prelude"];
-  var fromEffectFnAff = function (v) {
-      return Effect_Aff.makeAff(function (k) {
-          return function __do() {
-              var v1 = v(function ($4) {
-                  return k(Data_Either.Left.create($4))();
-              }, function ($5) {
-                  return k(Data_Either.Right.create($5))();
-              });
-              return function (e) {
-                  return Effect_Aff.makeAff(function (k2) {
-                      return function __do() {
-                          v1(e, function ($6) {
-                              return k2(Data_Either.Left.create($6))();
-                          }, function ($7) {
-                              return k2(Data_Either.Right.create($7))();
-                          });
-                          return Effect_Aff.nonCanceler;
-                      };
-                  });
-              };
-          };
-      });
-  };
-  exports["fromEffectFnAff"] = fromEffectFnAff;
-})(PS["Effect.Aff.Compat"] = PS["Effect.Aff.Compat"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
-  var Data_ArrayBuffer_Types = PS["Data.ArrayBuffer.Types"];
-  var Data_FormURLEncoded = PS["Data.FormURLEncoded"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_MediaType = PS["Data.MediaType"];
-  var Data_MediaType_Common = PS["Data.MediaType.Common"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_File_Blob = PS["Web.File.Blob"];
-  var Web_XHR_FormData = PS["Web.XHR.FormData"];                 
-  var ArrayView = (function () {
-      function ArrayView(value0) {
-          this.value0 = value0;
-      };
-      ArrayView.create = function (value0) {
-          return new ArrayView(value0);
-      };
-      return ArrayView;
-  })();
-  var Blob = (function () {
-      function Blob(value0) {
-          this.value0 = value0;
-      };
-      Blob.create = function (value0) {
-          return new Blob(value0);
-      };
-      return Blob;
-  })();
-  var Document = (function () {
-      function Document(value0) {
-          this.value0 = value0;
-      };
-      Document.create = function (value0) {
-          return new Document(value0);
-      };
-      return Document;
-  })();
-  var $$String = (function () {
-      function $$String(value0) {
-          this.value0 = value0;
-      };
-      $$String.create = function (value0) {
-          return new $$String(value0);
-      };
-      return $$String;
-  })();
-  var FormData = (function () {
-      function FormData(value0) {
-          this.value0 = value0;
-      };
-      FormData.create = function (value0) {
-          return new FormData(value0);
-      };
-      return FormData;
-  })();
-  var FormURLEncoded = (function () {
-      function FormURLEncoded(value0) {
-          this.value0 = value0;
-      };
-      FormURLEncoded.create = function (value0) {
-          return new FormURLEncoded(value0);
-      };
-      return FormURLEncoded;
-  })();
-  var Json = (function () {
-      function Json(value0) {
-          this.value0 = value0;
-      };
-      Json.create = function (value0) {
-          return new Json(value0);
-      };
-      return Json;
-  })();
-  var toMediaType = function (v) {
-      if (v instanceof FormURLEncoded) {
-          return new Data_Maybe.Just(Data_MediaType_Common.applicationFormURLEncoded);
-      };
-      if (v instanceof Json) {
-          return new Data_Maybe.Just(Data_MediaType_Common.applicationJSON);
-      };
-      return Data_Maybe.Nothing.value;
-  };
-  var string = $$String.create;
-  exports["ArrayView"] = ArrayView;
-  exports["Blob"] = Blob;
-  exports["Document"] = Document;
-  exports["String"] = $$String;
-  exports["FormData"] = FormData;
-  exports["FormURLEncoded"] = FormURLEncoded;
-  exports["Json"] = Json;
-  exports["string"] = string;
-  exports["toMediaType"] = toMediaType;
-})(PS["Network.HTTP.Affjax.Request"] = PS["Network.HTTP.Affjax.Request"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
-  var Data_ArrayBuffer_Types = PS["Data.ArrayBuffer.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_MediaType = PS["Data.MediaType"];
-  var Data_MediaType_Common = PS["Data.MediaType.Common"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_File_Blob = PS["Web.File.Blob"];                 
-  var $$ArrayBuffer = (function () {
-      function $$ArrayBuffer(value0) {
-          this.value0 = value0;
-      };
-      $$ArrayBuffer.create = function (value0) {
-          return new $$ArrayBuffer(value0);
-      };
-      return $$ArrayBuffer;
-  })();
-  var Blob = (function () {
-      function Blob(value0) {
-          this.value0 = value0;
-      };
-      Blob.create = function (value0) {
-          return new Blob(value0);
-      };
-      return Blob;
-  })();
-  var Document = (function () {
-      function Document(value0) {
-          this.value0 = value0;
-      };
-      Document.create = function (value0) {
-          return new Document(value0);
-      };
-      return Document;
-  })();
-  var Json = (function () {
-      function Json(value0) {
-          this.value0 = value0;
-      };
-      Json.create = function (value0) {
-          return new Json(value0);
-      };
-      return Json;
-  })();
-  var $$String = (function () {
-      function $$String(value0) {
-          this.value0 = value0;
-      };
-      $$String.create = function (value0) {
-          return new $$String(value0);
-      };
-      return $$String;
-  })();
-  var Ignore = (function () {
-      function Ignore(value0) {
-          this.value0 = value0;
-      };
-      Ignore.create = function (value0) {
-          return new Ignore(value0);
-      };
-      return Ignore;
-  })();
-  var toResponseType = function (v) {
-      if (v instanceof $$ArrayBuffer) {
-          return "arraybuffer";
-      };
-      if (v instanceof Blob) {
-          return "blob";
-      };
-      if (v instanceof Document) {
-          return "document";
-      };
-      if (v instanceof Json) {
-          return "text";
-      };
-      if (v instanceof $$String) {
-          return "text";
-      };
-      if (v instanceof Ignore) {
-          return "";
-      };
-      throw new Error("Failed pattern match at Network.HTTP.Affjax.Response line 41, column 3 - line 49, column 1: " + [ v.constructor.name ]);
-  };
-  var toMediaType = function (v) {
-      if (v instanceof Json) {
-          return new Data_Maybe.Just(Data_MediaType_Common.applicationJSON);
-      };
-      return Data_Maybe.Nothing.value;
-  };                                                                          
-  var ignore = new Ignore(Control_Category.identity(Control_Category.categoryFn));
-  exports["ArrayBuffer"] = $$ArrayBuffer;
-  exports["Blob"] = Blob;
-  exports["Document"] = Document;
-  exports["Json"] = Json;
-  exports["String"] = $$String;
-  exports["Ignore"] = Ignore;
-  exports["ignore"] = ignore;
-  exports["toResponseType"] = toResponseType;
-  exports["toMediaType"] = toMediaType;
-})(PS["Network.HTTP.Affjax.Response"] = PS["Network.HTTP.Affjax.Response"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_MediaType = PS["Data.MediaType"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Prelude = PS["Prelude"];                 
-  var Accept = (function () {
-      function Accept(value0) {
-          this.value0 = value0;
-      };
-      Accept.create = function (value0) {
-          return new Accept(value0);
-      };
-      return Accept;
-  })();
-  var ContentType = (function () {
-      function ContentType(value0) {
-          this.value0 = value0;
-      };
-      ContentType.create = function (value0) {
-          return new ContentType(value0);
-      };
-      return ContentType;
-  })();
-  var RequestHeader = (function () {
-      function RequestHeader(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      RequestHeader.create = function (value0) {
-          return function (value1) {
-              return new RequestHeader(value0, value1);
-          };
-      };
-      return RequestHeader;
-  })();
-  var requestHeaderValue = function (v) {
-      if (v instanceof Accept) {
-          return Data_Newtype.unwrap(Data_MediaType.newtypeMediaType)(v.value0);
-      };
-      if (v instanceof ContentType) {
-          return Data_Newtype.unwrap(Data_MediaType.newtypeMediaType)(v.value0);
-      };
-      if (v instanceof RequestHeader) {
-          return v.value1;
-      };
-      throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 29, column 1 - line 29, column 46: " + [ v.constructor.name ]);
-  };
-  var requestHeaderName = function (v) {
-      if (v instanceof Accept) {
-          return "Accept";
-      };
-      if (v instanceof ContentType) {
-          return "Content-Type";
-      };
-      if (v instanceof RequestHeader) {
-          return v.value0;
-      };
-      throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 24, column 1 - line 24, column 45: " + [ v.constructor.name ]);
-  };
-  exports["Accept"] = Accept;
-  exports["ContentType"] = ContentType;
-  exports["RequestHeader"] = RequestHeader;
-  exports["requestHeaderName"] = requestHeaderName;
-  exports["requestHeaderValue"] = requestHeaderValue;
-})(PS["Network.HTTP.RequestHeader"] = PS["Network.HTTP.RequestHeader"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Prelude = PS["Prelude"];                 
-  var ResponseHeader = (function () {
-      function ResponseHeader(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      ResponseHeader.create = function (value0) {
-          return function (value1) {
-              return new ResponseHeader(value0, value1);
-          };
-      };
-      return ResponseHeader;
-  })();
-  var responseHeader = function (field) {
-      return function (value) {
-          return new ResponseHeader(field, value);
-      };
-  };
-  exports["responseHeader"] = responseHeader;
-})(PS["Network.HTTP.ResponseHeader"] = PS["Network.HTTP.ResponseHeader"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Network.HTTP.Affjax"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Except = PS["Control.Monad.Except"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
-  var Data_Argonaut_Parser = PS["Data.Argonaut.Parser"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FormURLEncoded = PS["Data.FormURLEncoded"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HTTP_Method = PS["Data.HTTP.Method"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Int = PS["Data.Int"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Time_Duration = PS["Data.Time.Duration"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_Compat = PS["Effect.Aff.Compat"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Foreign = PS["Foreign"];
-  var $$Math = PS["Math"];
-  var Network_HTTP_Affjax_Request = PS["Network.HTTP.Affjax.Request"];
-  var Network_HTTP_Affjax_Response = PS["Network.HTTP.Affjax.Response"];
-  var Network_HTTP_RequestHeader = PS["Network.HTTP.RequestHeader"];
-  var Network_HTTP_ResponseHeader = PS["Network.HTTP.ResponseHeader"];
-  var Network_HTTP_StatusCode = PS["Network.HTTP.StatusCode"];
-  var Prelude = PS["Prelude"];
-  var defaultRequest = {
-      method: new Data_Either.Left(Data_HTTP_Method.GET.value),
-      url: "/",
-      headers: [  ],
-      content: Data_Maybe.Nothing.value,
-      username: Data_Maybe.Nothing.value,
-      password: Data_Maybe.Nothing.value,
-      withCredentials: false
-  };
-  var affjax = function (rt) {
-      return function (req) {
-          var parseJSON = function (v) {
-              if (v === "") {
-                  return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Argonaut_Core.jsonEmptyObject);
-              };
-              return Data_Either.either(function ($58) {
-                  return Foreign.fail(Foreign.ForeignError.create($58));
-              })(Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity)))(Data_Argonaut_Parser.jsonParser(v));
-          };
-          var fromResponse$prime = (function () {
-              if (rt instanceof Network_HTTP_Affjax_Response["ArrayBuffer"]) {
-                  return Foreign.unsafeReadTagged("ArrayBuffer");
-              };
-              if (rt instanceof Network_HTTP_Affjax_Response.Blob) {
-                  return Foreign.unsafeReadTagged("Blob");
-              };
-              if (rt instanceof Network_HTTP_Affjax_Response.Document) {
-                  return Foreign.unsafeReadTagged("Document");
-              };
-              if (rt instanceof Network_HTTP_Affjax_Response.Json) {
-                  return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(function ($59) {
-                      return rt.value0(parseJSON($59));
-                  })(Foreign.unsafeReadTagged("String"));
-              };
-              if (rt instanceof Network_HTTP_Affjax_Response["String"]) {
-                  return Foreign.unsafeReadTagged("String");
-              };
-              if (rt instanceof Network_HTTP_Affjax_Response.Ignore) {
-                  return Data_Function["const"](rt.value0(Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Unit.unit)));
-              };
-              throw new Error("Failed pattern match at Network.HTTP.Affjax line 261, column 19 - line 267, column 51: " + [ rt.constructor.name ]);
-          })();
-          var extractContent = function (v) {
-              if (v instanceof Network_HTTP_Affjax_Request.ArrayView) {
-                  return v.value0(Foreign.unsafeToForeign);
-              };
-              if (v instanceof Network_HTTP_Affjax_Request.Blob) {
-                  return Foreign.unsafeToForeign(v.value0);
-              };
-              if (v instanceof Network_HTTP_Affjax_Request.Document) {
-                  return Foreign.unsafeToForeign(v.value0);
-              };
-              if (v instanceof Network_HTTP_Affjax_Request["String"]) {
-                  return Foreign.unsafeToForeign(v.value0);
-              };
-              if (v instanceof Network_HTTP_Affjax_Request.FormData) {
-                  return Foreign.unsafeToForeign(v.value0);
-              };
-              if (v instanceof Network_HTTP_Affjax_Request.FormURLEncoded) {
-                  return Foreign.unsafeToForeign(Data_FormURLEncoded.encode(v.value0));
-              };
-              if (v instanceof Network_HTTP_Affjax_Request.Json) {
-                  return Foreign.unsafeToForeign(Data_Argonaut_Core.stringify(v.value0));
-              };
-              throw new Error("Failed pattern match at Network.HTTP.Affjax line 235, column 20 - line 242, column 53: " + [ v.constructor.name ]);
-          };
-          var addHeader = function (mh) {
-              return function (hs) {
-                  if (mh instanceof Data_Maybe.Just && !Data_Foldable.any(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Function.on(Data_Eq.eq(Data_Eq.eqString))(Network_HTTP_RequestHeader.requestHeaderName)(mh.value0))(hs)) {
-                      return Data_Array.snoc(hs)(mh.value0);
-                  };
-                  return hs;
-              };
-          };
-          var headers = function (reqContent) {
-              return addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_RequestHeader.ContentType.create)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Network_HTTP_Affjax_Request.toMediaType)(reqContent)))(addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_RequestHeader.Accept.create)(Network_HTTP_Affjax_Response.toMediaType(rt)))(req.headers));
-          };
-          var req$prime = {
-              method: Data_HTTP_Method.print(req.method),
-              url: req.url,
-              headers: Data_Functor.map(Data_Functor.functorArray)(function (h) {
-                  return {
-                      field: Network_HTTP_RequestHeader.requestHeaderName(h),
-                      value: Network_HTTP_RequestHeader.requestHeaderValue(h)
-                  };
-              })(headers(req.content)),
-              content: Data_Nullable.toNullable(Data_Functor.map(Data_Maybe.functorMaybe)(extractContent)(req.content)),
-              responseType: Network_HTTP_Affjax_Response.toResponseType(rt),
-              username: Data_Nullable.toNullable(req.username),
-              password: Data_Nullable.toNullable(req.password),
-              withCredentials: req.withCredentials
-          };
-          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Aff_Compat.fromEffectFnAff($foreign._ajax(Network_HTTP_ResponseHeader.responseHeader, req$prime)))(function (v) {
-              var v1 = Control_Monad_Except.runExcept(fromResponse$prime(v.response));
-              if (v1 instanceof Data_Either.Left) {
-                  return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error(Data_Foldable.intercalate(Data_List_Types.foldableNonEmptyList)(Data_Monoid.monoidString)("\x0a")(Data_Functor.map(Data_List_Types.functorNonEmptyList)(Foreign.renderForeignError)(v1.value0))));
-              };
-              if (v1 instanceof Data_Either.Right) {
-                  return Control_Applicative.pure(Effect_Aff.applicativeAff)({
-                      response: v1.value0,
-                      headers: v.headers,
-                      status: v.status,
-                      statusText: v.statusText
-                  });
-              };
-              throw new Error("Failed pattern match at Network.HTTP.Affjax line 217, column 3 - line 219, column 49: " + [ v1.constructor.name ]);
-          });
-      };
-  };
-  exports["defaultRequest"] = defaultRequest;
-  exports["affjax"] = affjax;
-})(PS["Network.HTTP.Affjax"] = PS["Network.HTTP.Affjax"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Either = PS["Data.Either"];
-  var Data_FormURLEncoded = PS["Data.FormURLEncoded"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HTTP_Method = PS["Data.HTTP.Method"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_MediaType_Common = PS["Data.MediaType.Common"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Globals = PS["Globals"];
-  var Model = PS["Model"];
-  var Network_HTTP_Affjax = PS["Network.HTTP.Affjax"];
-  var Network_HTTP_Affjax_Request = PS["Network.HTTP.Affjax.Request"];
-  var Network_HTTP_Affjax_Response = PS["Network.HTTP.Affjax.Response"];
-  var Network_HTTP_RequestHeader = PS["Network.HTTP.RequestHeader"];
-  var Prelude = PS["Prelude"];
-  var Simple_JSON = PS["Simple.JSON"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];
-  var Web_HTML_Window = PS["Web.HTML.Window"];                 
-  var Star = (function () {
-      function Star() {
-
-      };
-      Star.value = new Star();
-      return Star;
-  })();
-  var UnStar = (function () {
-      function UnStar() {
-
-      };
-      UnStar.value = new UnStar();
-      return UnStar;
-  })();
-  var showStar = new Data_Show.Show(function (v) {
-      if (v instanceof Star) {
-          return "star";
-      };
-      if (v instanceof UnStar) {
-          return "unstar";
-      };
-      throw new Error("Failed pattern match at App line 28, column 1 - line 28, column 37: " + [ v.constructor.name ]);
-  });
-  var fetchUrl = function (method) {
-      return function (url) {
-          return function (headers) {
-              return function (content) {
-                  return function (rt) {
-                      var app = Globals["app'"](Data_Unit.unit);
-                      return Network_HTTP_Affjax.affjax(rt)({
-                          method: new Data_Either.Left(method),
-                          url: url,
-                          headers: Data_Array.cons(new Network_HTTP_RequestHeader.RequestHeader(app.csrfHeaderName, app.csrfToken))(headers),
-                          content: content,
-                          username: Network_HTTP_Affjax.defaultRequest.username,
-                          password: Network_HTTP_Affjax.defaultRequest.password,
-                          withCredentials: Network_HTTP_Affjax.defaultRequest.withCredentials
-                      });
-                  };
-              };
-          };
-      };
-  };
-  var logout = function (u) {
-      var app = Globals["app'"](u);
-      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor["void"](Effect_Aff.functorAff)(fetchUrl(Data_HTTP_Method.POST.value)(app.authRlogoutR)([  ])(Data_Maybe.Nothing.value)(Network_HTTP_Affjax_Response.ignore)))(function () {
-          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Control_Bind.bind(Effect.bindEffect)(Control_Bind.bind(Effect.bindEffect)(Web_HTML.window)(Web_HTML_Window.location))(Web_HTML_Location.reload));
-      });
-  };
-  var logoutE = function (e) {
-      return Control_Bind.bindFlipped(Effect.bindEffect)(function ($4) {
-          return Data_Functor["void"](Effect.functorEffect)(Effect_Aff.launchAff(logout($4)));
-      })(Web_Event_Event.preventDefault(e));
-  };
-  var fetchPath = function (method) {
-      return function (path) {
-          return function (headers) {
-              return function (content) {
-                  return function (rt) {
-                      return fetchUrl(method)((Globals["app'"](Data_Unit.unit)).homeR + path)(headers)(content)(rt);
-                  };
-              };
-          };
-      };
-  };
-  var fetchUrlEnc = function (method) {
-      return function (path) {
-          return function (content) {
-              return function (rt) {
-                  return fetchPath(method)(path)([ new Network_HTTP_RequestHeader.ContentType(Data_MediaType_Common.applicationFormURLEncoded) ])(Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_Affjax_Request.FormURLEncoded.create)(content))(rt);
-              };
-          };
-      };
-  };
-  var markRead = function (bid) {
-      var path = "bm/" + (Data_Show.show(Data_Show.showInt)(bid) + "/read");
-      return fetchUrlEnc(Data_HTTP_Method.POST.value)(path)(Data_Maybe.Nothing.value)(Network_HTTP_Affjax_Response.ignore);
-  };
-  var toggleStar = function (bid) {
-      return function (action) {
-          var path = "bm/" + (Data_Show.show(Data_Show.showInt)(bid) + ("/" + Data_Show.show(showStar)(action)));
-          return Data_Functor["void"](Effect_Aff.functorAff)(fetchUrlEnc(Data_HTTP_Method.POST.value)(path)(Data_Maybe.Nothing.value)(Network_HTTP_Affjax_Response.ignore));
-      };
-  };
-  var fetchJson = function (dictWriteForeign) {
-      return function (method) {
-          return function (path) {
-              return function (content) {
-                  return function (rt) {
-                      return fetchPath(method)(path)([ new Network_HTTP_RequestHeader.ContentType(Data_MediaType_Common.applicationJSON) ])(Data_Functor.map(Data_Maybe.functorMaybe)(function ($5) {
-                          return Network_HTTP_Affjax_Request.string(Simple_JSON.writeJSON(dictWriteForeign)($5));
-                      })(content))(rt);
-                  };
-              };
-          };
-      };
-  };
-  var editBookmark = function (bm) {
-      return fetchJson(Model.wfI)(Data_HTTP_Method.POST.value)("api/add")(Data_Maybe.Just.create(bm))(Network_HTTP_Affjax_Response.ignore);
-  };
-  var destroy = function (bid) {
-      return fetchUrlEnc(Data_HTTP_Method.DELETE.value)("bm/" + Data_Show.show(Data_Show.showInt)(bid))(Data_Maybe.Nothing.value)(Network_HTTP_Affjax_Response.ignore);
-  };
-  exports["Star"] = Star;
-  exports["UnStar"] = UnStar;
-  exports["toggleStar"] = toggleStar;
-  exports["destroy"] = destroy;
-  exports["markRead"] = markRead;
-  exports["editBookmark"] = editBookmark;
-  exports["logoutE"] = logoutE;
-  exports["logout"] = logout;
-  exports["fetchJson"] = fetchJson;
-  exports["fetchUrlEnc"] = fetchUrlEnc;
-  exports["fetchPath"] = fetchPath;
-  exports["fetchUrl"] = fetchUrl;
-  exports["showStar"] = showStar;
-})(PS["App"] = PS["App"] || {});
-(function(exports) {
-    "use strict";
-  var ButtonButton = (function () {
-      function ButtonButton() {
-
-      };
-      ButtonButton.value = new ButtonButton();
-      return ButtonButton;
-  })();
-  var ButtonSubmit = (function () {
-      function ButtonSubmit() {
-
-      };
-      ButtonSubmit.value = new ButtonSubmit();
-      return ButtonSubmit;
-  })();
-  var ButtonReset = (function () {
-      function ButtonReset() {
-
-      };
-      ButtonReset.value = new ButtonReset();
-      return ButtonReset;
-  })();
-  var renderButtonType = function (v) {
-      if (v instanceof ButtonButton) {
-          return "button";
-      };
-      if (v instanceof ButtonSubmit) {
-          return "submit";
-      };
-      if (v instanceof ButtonReset) {
-          return "reset";
-      };
-      throw new Error("Failed pattern match at DOM.HTML.Indexed.ButtonType line 9, column 20 - line 12, column 18: " + [ v.constructor.name ]);
-  };
-  exports["ButtonButton"] = ButtonButton;
-  exports["ButtonSubmit"] = ButtonSubmit;
-  exports["ButtonReset"] = ButtonReset;
-  exports["renderButtonType"] = renderButtonType;
-})(PS["DOM.HTML.Indexed.ButtonType"] = PS["DOM.HTML.Indexed.ButtonType"] || {});
-(function(exports) {
-    "use strict";
-  var InputButton = (function () {
-      function InputButton() {
-
-      };
-      InputButton.value = new InputButton();
-      return InputButton;
-  })();
-  var InputCheckbox = (function () {
-      function InputCheckbox() {
-
-      };
-      InputCheckbox.value = new InputCheckbox();
-      return InputCheckbox;
-  })();
-  var InputColor = (function () {
-      function InputColor() {
-
-      };
-      InputColor.value = new InputColor();
-      return InputColor;
-  })();
-  var InputDate = (function () {
-      function InputDate() {
-
-      };
-      InputDate.value = new InputDate();
-      return InputDate;
-  })();
-  var InputDatetimeLocal = (function () {
-      function InputDatetimeLocal() {
-
-      };
-      InputDatetimeLocal.value = new InputDatetimeLocal();
-      return InputDatetimeLocal;
-  })();
-  var InputEmail = (function () {
-      function InputEmail() {
-
-      };
-      InputEmail.value = new InputEmail();
-      return InputEmail;
-  })();
-  var InputFile = (function () {
-      function InputFile() {
-
-      };
-      InputFile.value = new InputFile();
-      return InputFile;
-  })();
-  var InputHidden = (function () {
-      function InputHidden() {
-
-      };
-      InputHidden.value = new InputHidden();
-      return InputHidden;
-  })();
-  var InputImage = (function () {
-      function InputImage() {
-
-      };
-      InputImage.value = new InputImage();
-      return InputImage;
-  })();
-  var InputMonth = (function () {
-      function InputMonth() {
-
-      };
-      InputMonth.value = new InputMonth();
-      return InputMonth;
-  })();
-  var InputNumber = (function () {
-      function InputNumber() {
-
-      };
-      InputNumber.value = new InputNumber();
-      return InputNumber;
-  })();
-  var InputPassword = (function () {
-      function InputPassword() {
-
-      };
-      InputPassword.value = new InputPassword();
-      return InputPassword;
-  })();
-  var InputRadio = (function () {
-      function InputRadio() {
-
-      };
-      InputRadio.value = new InputRadio();
-      return InputRadio;
-  })();
-  var InputRange = (function () {
-      function InputRange() {
-
-      };
-      InputRange.value = new InputRange();
-      return InputRange;
-  })();
-  var InputReset = (function () {
-      function InputReset() {
-
-      };
-      InputReset.value = new InputReset();
-      return InputReset;
-  })();
-  var InputSearch = (function () {
-      function InputSearch() {
-
-      };
-      InputSearch.value = new InputSearch();
-      return InputSearch;
-  })();
-  var InputSubmit = (function () {
-      function InputSubmit() {
-
-      };
-      InputSubmit.value = new InputSubmit();
-      return InputSubmit;
-  })();
-  var InputTel = (function () {
-      function InputTel() {
-
-      };
-      InputTel.value = new InputTel();
-      return InputTel;
-  })();
-  var InputText = (function () {
-      function InputText() {
-
-      };
-      InputText.value = new InputText();
-      return InputText;
-  })();
-  var InputTime = (function () {
-      function InputTime() {
-
-      };
-      InputTime.value = new InputTime();
-      return InputTime;
-  })();
-  var InputUrl = (function () {
-      function InputUrl() {
-
-      };
-      InputUrl.value = new InputUrl();
-      return InputUrl;
-  })();
-  var InputWeek = (function () {
-      function InputWeek() {
-
-      };
-      InputWeek.value = new InputWeek();
-      return InputWeek;
-  })();
-  var renderInputType = function (v) {
-      if (v instanceof InputButton) {
-          return "button";
-      };
-      if (v instanceof InputCheckbox) {
-          return "checkbox";
-      };
-      if (v instanceof InputColor) {
-          return "color";
-      };
-      if (v instanceof InputDate) {
-          return "date";
-      };
-      if (v instanceof InputDatetimeLocal) {
-          return "datetime-local";
-      };
-      if (v instanceof InputEmail) {
-          return "email";
-      };
-      if (v instanceof InputFile) {
-          return "file";
-      };
-      if (v instanceof InputHidden) {
-          return "hidden";
-      };
-      if (v instanceof InputImage) {
-          return "image";
-      };
-      if (v instanceof InputMonth) {
-          return "month";
-      };
-      if (v instanceof InputNumber) {
-          return "number";
-      };
-      if (v instanceof InputPassword) {
-          return "password";
-      };
-      if (v instanceof InputRadio) {
-          return "radio";
-      };
-      if (v instanceof InputRange) {
-          return "range";
-      };
-      if (v instanceof InputReset) {
-          return "reset";
-      };
-      if (v instanceof InputSearch) {
-          return "search";
-      };
-      if (v instanceof InputSubmit) {
-          return "submit";
-      };
-      if (v instanceof InputTel) {
-          return "tel";
-      };
-      if (v instanceof InputText) {
-          return "text";
-      };
-      if (v instanceof InputTime) {
-          return "time";
-      };
-      if (v instanceof InputUrl) {
-          return "url";
-      };
-      if (v instanceof InputWeek) {
-          return "week";
-      };
-      throw new Error("Failed pattern match at DOM.HTML.Indexed.InputType line 28, column 19 - line 50, column 16: " + [ v.constructor.name ]);
-  };
-  exports["InputButton"] = InputButton;
-  exports["InputCheckbox"] = InputCheckbox;
-  exports["InputColor"] = InputColor;
-  exports["InputDate"] = InputDate;
-  exports["InputDatetimeLocal"] = InputDatetimeLocal;
-  exports["InputEmail"] = InputEmail;
-  exports["InputFile"] = InputFile;
-  exports["InputHidden"] = InputHidden;
-  exports["InputImage"] = InputImage;
-  exports["InputMonth"] = InputMonth;
-  exports["InputNumber"] = InputNumber;
-  exports["InputPassword"] = InputPassword;
-  exports["InputRadio"] = InputRadio;
-  exports["InputRange"] = InputRange;
-  exports["InputReset"] = InputReset;
-  exports["InputSearch"] = InputSearch;
-  exports["InputSubmit"] = InputSubmit;
-  exports["InputTel"] = InputTel;
-  exports["InputText"] = InputText;
-  exports["InputTime"] = InputTime;
-  exports["InputUrl"] = InputUrl;
-  exports["InputWeek"] = InputWeek;
-  exports["renderInputType"] = renderInputType;
-})(PS["DOM.HTML.Indexed.InputType"] = PS["DOM.HTML.Indexed.InputType"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_Cont_Trans = PS["Control.Monad.Cont.Trans"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Monad_List_Trans = PS["Control.Monad.List.Trans"];
-  var Control_Monad_Maybe_Trans = PS["Control.Monad.Maybe.Trans"];
-  var Control_Monad_RWS_Trans = PS["Control.Monad.RWS.Trans"];
-  var Control_Monad_Reader_Trans = PS["Control.Monad.Reader.Trans"];
-  var Control_Monad_State_Trans = PS["Control.Monad.State.Trans"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Monad_Writer_Trans = PS["Control.Monad.Writer.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Prelude = PS["Prelude"];                 
-  var MonadAff = function (MonadEffect0, liftAff) {
-      this.MonadEffect0 = MonadEffect0;
-      this.liftAff = liftAff;
-  };
-  var monadAffAff = new MonadAff(function () {
-      return Effect_Aff.monadEffectAff;
-  }, Control_Category.identity(Control_Category.categoryFn));
-  var liftAff = function (dict) {
-      return dict.liftAff;
-  };
-  exports["liftAff"] = liftAff;
-  exports["MonadAff"] = MonadAff;
-  exports["monadAffAff"] = monadAffAff;
-})(PS["Effect.Aff.Class"] = PS["Effect.Aff.Class"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Ord = PS["Data.Ord"];
-  var Prelude = PS["Prelude"];                 
-  var OrdBox = (function () {
-      function OrdBox(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      OrdBox.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new OrdBox(value0, value1, value2);
-              };
-          };
-      };
-      return OrdBox;
-  })();
-  var unOrdBox = function (v) {
-      return v.value2;
-  };
-  var mkOrdBox = function (dictOrd) {
-      return OrdBox.create(Data_Eq.eq(dictOrd.Eq0()))(Data_Ord.compare(dictOrd));
-  };
-  var eqOrdBox = new Data_Eq.Eq(function (v) {
-      return function (v1) {
-          return v.value0(v.value2)(v1.value2);
-      };
-  });
-  var ordOrdBox = new Data_Ord.Ord(function () {
-      return eqOrdBox;
-  }, function (v) {
-      return function (v1) {
-          return v.value1(v.value2)(v1.value2);
-      };
-  });
-  exports["mkOrdBox"] = mkOrdBox;
-  exports["unOrdBox"] = unOrdBox;
-  exports["eqOrdBox"] = eqOrdBox;
-  exports["ordOrdBox"] = ordOrdBox;
-})(PS["Halogen.Data.OrdBox"] = PS["Halogen.Data.OrdBox"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var On = (function () {
-      function On() {
-
-      };
-      On.value = new On();
-      return On;
-  })();
-  var Off = (function () {
-      function Off() {
-
-      };
-      Off.value = new Off();
-      return Off;
-  })();
-  var renderOnOff = function (v) {
-      if (v instanceof On) {
-          return "on";
-      };
-      if (v instanceof Off) {
-          return "off";
-      };
-      throw new Error("Failed pattern match at DOM.HTML.Indexed.OnOff line 8, column 15 - line 10, column 10: " + [ v.constructor.name ]);
-  };
-  exports["On"] = On;
-  exports["Off"] = Off;
-  exports["renderOnOff"] = renderOnOff;
-})(PS["DOM.HTML.Indexed.OnOff"] = PS["DOM.HTML.Indexed.OnOff"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM = PS["Web.DOM"];
-  var RefUpdate = (function () {
-      function RefUpdate(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      RefUpdate.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new RefUpdate(value0, value1, value2);
-              };
-          };
-      };
-      return RefUpdate;
-  })();
-  var Query = (function () {
-      function Query(value0) {
-          this.value0 = value0;
-      };
-      Query.create = function (value0) {
-          return new Query(value0);
-      };
-      return Query;
-  })();                             
-  var bifunctorInputF = new Data_Bifunctor.Bifunctor(function (f) {
-      return function (g) {
-          return function (v) {
-              if (v instanceof RefUpdate) {
-                  return new RefUpdate(v.value0, v.value1, f(v.value2));
-              };
-              if (v instanceof Query) {
-                  return new Query(g(v.value0));
-              };
-              throw new Error("Failed pattern match at Halogen.Query.InputF line 21, column 15 - line 23, column 27: " + [ v.constructor.name ]);
-          };
-      };
-  });
-  var functorInputF = new Data_Functor.Functor(Data_Bifunctor.rmap(bifunctorInputF));
-  exports["RefUpdate"] = RefUpdate;
-  exports["Query"] = Query;
-  exports["bifunctorInputF"] = bifunctorInputF;
-  exports["functorInputF"] = functorInputF;
-})(PS["Halogen.Query.InputF"] = PS["Halogen.Query.InputF"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Effect = PS["Effect"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Prelude = PS["Prelude"];                 
-  var Step = (function () {
-      function Step(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      Step.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new Step(value0, value1, value2);
-              };
-          };
-      };
-      return Step;
-  })();
-  var step = function (v) {
-      return v.value1;
-  };
-  var halt = function (v) {
-      return v.value2;
-  };
-  var extract = function (v) {
-      return v.value0;
-  };
-  exports["Step"] = Step;
-  exports["extract"] = extract;
-  exports["step"] = step;
-  exports["halt"] = halt;
-})(PS["Halogen.VDom.Machine"] = PS["Halogen.VDom.Machine"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var ElemSpec = (function () {
-      function ElemSpec(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      ElemSpec.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new ElemSpec(value0, value1, value2);
-              };
-          };
-      };
-      return ElemSpec;
-  })();
-  var Text = (function () {
-      function Text(value0) {
-          this.value0 = value0;
-      };
-      Text.create = function (value0) {
-          return new Text(value0);
-      };
-      return Text;
-  })();
-  var Elem = (function () {
-      function Elem(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Elem.create = function (value0) {
-          return function (value1) {
-              return new Elem(value0, value1);
-          };
-      };
-      return Elem;
-  })();
-  var Keyed = (function () {
-      function Keyed(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Keyed.create = function (value0) {
-          return function (value1) {
-              return new Keyed(value0, value1);
-          };
-      };
-      return Keyed;
-  })();
-  var Widget = (function () {
-      function Widget(value0) {
-          this.value0 = value0;
-      };
-      Widget.create = function (value0) {
-          return new Widget(value0);
-      };
-      return Widget;
-  })();
-  var Grafted = (function () {
-      function Grafted(value0) {
-          this.value0 = value0;
-      };
-      Grafted.create = function (value0) {
-          return new Grafted(value0);
-      };
-      return Grafted;
-  })();
-  var Graft = (function () {
-      function Graft(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      Graft.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new Graft(value0, value1, value2);
-              };
-          };
-      };
-      return Graft;
-  })();
-  var unGraft = function (f) {
-      return function ($90) {
-          return f($90);
-      };
-  };           
-  var graft = Unsafe_Coerce.unsafeCoerce;
-  var functorElemSpec = new Data_Functor.Functor(function (f) {
-      return function (m) {
-          return new ElemSpec(m.value0, m.value1, f(m.value2));
-      };
-  });
-  var bifunctorGraft = new Data_Bifunctor.Bifunctor(function (f) {
-      return function (g) {
-          return unGraft(function (v) {
-              return graft(new Graft(function ($92) {
-                  return f(v.value0($92));
-              }, function ($93) {
-                  return g(v.value1($93));
-              }, v.value2));
-          });
-      };
-  });
-  var bifunctorVDom = new Data_Bifunctor.Bifunctor(function (f) {
-      return function (g) {
-          return function (v) {
-              if (v instanceof Text) {
-                  return new Text(v.value0);
-              };
-              if (v instanceof Grafted) {
-                  return new Grafted(Data_Bifunctor.bimap(bifunctorGraft)(f)(g)(v.value0));
-              };
-              return new Grafted(graft(new Graft(f, g, v)));
-          };
-      };
-  });
-  var runGraft = unGraft(function (v) {
-      var go = function (v2) {
-          if (v2 instanceof Text) {
-              return new Text(v2.value0);
-          };
-          if (v2 instanceof Elem) {
-              return new Elem(Data_Functor.map(functorElemSpec)(v.value0)(v2.value0), Data_Functor.map(Data_Functor.functorArray)(go)(v2.value1));
-          };
-          if (v2 instanceof Keyed) {
-              return new Keyed(Data_Functor.map(functorElemSpec)(v.value0)(v2.value0), Data_Functor.map(Data_Functor.functorArray)(Data_Functor.map(Data_Tuple.functorTuple)(go))(v2.value1));
-          };
-          if (v2 instanceof Widget) {
-              return new Widget(v.value1(v2.value0));
-          };
-          if (v2 instanceof Grafted) {
-              return new Grafted(Data_Bifunctor.bimap(bifunctorGraft)(v.value0)(v.value1)(v2.value0));
-          };
-          throw new Error("Failed pattern match at Halogen.VDom.Types line 74, column 7 - line 74, column 27: " + [ v2.constructor.name ]);
-      };
-      return go(v.value2);
-  });
-  exports["Text"] = Text;
-  exports["Elem"] = Elem;
-  exports["Keyed"] = Keyed;
-  exports["Widget"] = Widget;
-  exports["Grafted"] = Grafted;
-  exports["Graft"] = Graft;
-  exports["graft"] = graft;
-  exports["unGraft"] = unGraft;
-  exports["runGraft"] = runGraft;
-  exports["ElemSpec"] = ElemSpec;
-  exports["bifunctorVDom"] = bifunctorVDom;
-  exports["bifunctorGraft"] = bifunctorGraft;
-  exports["functorElemSpec"] = functorElemSpec;
-})(PS["Halogen.VDom.Types"] = PS["Halogen.VDom.Types"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.unsafeGetAny = function (key, obj) {
-    return obj[key];
-  };
-
-  exports.unsafeHasAny = function (key, obj) {
-    return obj.hasOwnProperty(key);
-  };
-
-  exports.unsafeSetAny = function (key, val, obj) {
-      obj[key] = val;
-  };
-
-  exports.forE = function (a, f) {
-      var b = [];
-      for (var i = 0; i < a.length; i++) {
-        b.push(f(i, a[i]));
-      }
-      return b;
-  };
-
-  exports.forInE = function (o, f) {
-    var ks = Object.keys(o);
-    for (var i = 0; i < ks.length; i++) {
-      var k = ks[i];
-      f(k, o[k]);
-    }
-  };
-
-  exports.diffWithIxE = function (a1, a2, f1, f2, f3) {
-    var a3 = [];
-    var l1 = a1.length;
-    var l2 = a2.length;
-    var i  = 0;
-    while (1) {
-      if (i < l1) {
-        if (i < l2) {
-          a3.push(f1(i, a1[i], a2[i]));
-        } else {
-          f2(i, a1[i]);
-        }
-      } else if (i < l2) {
-        a3.push(f3(i, a2[i]));
-      } else {
-        break;
-      }
-      i++;
-    }
-    return a3;
-  };
-
-  exports.strMapWithIxE = function (as, fk, f) {
-    var o = {};
-    for (var i = 0; i < as.length; i++) {
-      var a = as[i];
-      var k = fk(a);
-      o[k] = f(k, i, a);
-    }
-    return o;
-  };
-
-  exports.diffWithKeyAndIxE = function (o1, as, fk, f1, f2, f3) {
-    var o2 = {};
-    for (var i = 0; i < as.length; i++) {
-      var a = as[i];
-      var k = fk(a);
-      if (o1.hasOwnProperty(k)) {
-        o2[k] = f1(k, i, o1[k], a);
-      } else {
-        o2[k] = f3(k, i, a);
-      }
-    }
-    for (var k in o1) {
-      if (k in o2) {
-        continue;
-      }
-      f2(k, o1[k]);
-    }
-    return o2;
-  };
-
-  exports.refEq = function (a, b) {
-    return a === b;
-  };
-
-  exports.createTextNode = function (s, doc) {
-    return doc.createTextNode(s);
-  };
-
-  exports.setTextContent = function (s, n) {
-    n.textContent = s;
-  };
-
-  exports.createElement = function (ns, name, doc) {
-    if (ns != null) {
-      return doc.createElementNS(ns, name);
-    } else {
-      return doc.createElement(name)
-    }
-  };
-
-  exports.insertChildIx = function (i, a, b) {
-    var n = b.childNodes.item(i) || null;
-    if (n !== a) {
-      b.insertBefore(a, n);
-    }
-  };
-
-  exports.removeChild = function (a, b) {
-    if (b && a.parentNode === b) {
-      b.removeChild(a);
-    }
-  };
-
-  exports.parentNode = function (a) {
-    return a.parentNode;
-  };
-
-  exports.setAttribute = function (ns, attr, val, el) {
-    if (ns != null) {
-      el.setAttributeNS(ns, attr, val);
-    } else {
-      el.setAttribute(attr, val);
-    }
-  };
-
-  exports.removeAttribute = function (ns, attr, el) {
-    if (ns != null) {
-      el.removeAttributeNS(ns, attr);
-    } else {
-      el.removeAttribute(attr);
-    }
-  };
-
-  exports.addEventListener = function (ev, listener, el) {
-    el.addEventListener(ev, listener, false);
-  };
-
-  exports.removeEventListener = function (ev, listener, el) {
-    el.removeEventListener(ev, listener, false);
-  };
-
-  exports.jsUndefined = void 0;
-})(PS["Halogen.VDom.Util"] = PS["Halogen.VDom.Util"] || {});
-(function(exports) {
-    "use strict";
-
-  var getEffProp = function (name) {
-    return function (node) {
-      return function () {
-        return node[name];
-      };
-    };
-  };                                                   
-
-  exports._parentNode = getEffProp("parentNode");          
-
-  exports._nextSibling = getEffProp("nextSibling");
-
-  exports.insertBefore = function (node1) {
-    return function (node2) {
-      return function (parent) {
-        return function () {
-          return parent.insertBefore(node1, node2);
-        };
-      };
-    };
-  };
-
-  exports.appendChild = function (node) {
-    return function (parent) {
-      return function () {
-        return parent.appendChild(node);
-      };
-    };
-  };
-
-  exports.removeChild = function (node) {
-    return function (parent) {
-      return function () {
-        return parent.removeChild(node);
-      };
-    };
-  };
-})(PS["Web.DOM.Node"] = PS["Web.DOM.Node"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Web.DOM.Node"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Enum = PS["Data.Enum"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
-  var Web_DOM_NodeType = PS["Web.DOM.NodeType"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_Internal_FFI = PS["Web.Internal.FFI"];
-  var parentNode = function ($2) {
-      return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign._parentNode($2));
-  };
-  var nextSibling = function ($6) {
-      return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign._nextSibling($6));
-  };
-  exports["parentNode"] = parentNode;
-  exports["nextSibling"] = nextSibling;
-  exports["insertBefore"] = $foreign.insertBefore;
-  exports["appendChild"] = $foreign.appendChild;
-  exports["removeChild"] = $foreign.removeChild;
-})(PS["Web.DOM.Node"] = PS["Web.DOM.Node"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Halogen.VDom.Util"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Foreign_Object = PS["Foreign.Object"];
-  var Foreign_Object_ST = PS["Foreign.Object.ST"];
-  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_Node = PS["Web.DOM.Node"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];                 
-  var unsafeLookup = $foreign.unsafeGetAny;
-  var unsafeFreeze = Unsafe_Coerce.unsafeCoerce;
-  var pokeMutMap = $foreign.unsafeSetAny;
-  var newMutMap = Foreign_Object_ST["new"];
-  var effectUnit = Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
-  exports["effectUnit"] = effectUnit;
-  exports["newMutMap"] = newMutMap;
-  exports["pokeMutMap"] = pokeMutMap;
-  exports["unsafeFreeze"] = unsafeFreeze;
-  exports["unsafeLookup"] = unsafeLookup;
-  exports["unsafeGetAny"] = $foreign.unsafeGetAny;
-  exports["unsafeHasAny"] = $foreign.unsafeHasAny;
-  exports["unsafeSetAny"] = $foreign.unsafeSetAny;
-  exports["forE"] = $foreign.forE;
-  exports["forInE"] = $foreign.forInE;
-  exports["diffWithIxE"] = $foreign.diffWithIxE;
-  exports["diffWithKeyAndIxE"] = $foreign.diffWithKeyAndIxE;
-  exports["strMapWithIxE"] = $foreign.strMapWithIxE;
-  exports["refEq"] = $foreign.refEq;
-  exports["createTextNode"] = $foreign.createTextNode;
-  exports["setTextContent"] = $foreign.setTextContent;
-  exports["createElement"] = $foreign.createElement;
-  exports["insertChildIx"] = $foreign.insertChildIx;
-  exports["removeChild"] = $foreign.removeChild;
-  exports["parentNode"] = $foreign.parentNode;
-  exports["setAttribute"] = $foreign.setAttribute;
-  exports["removeAttribute"] = $foreign.removeAttribute;
-  exports["addEventListener"] = $foreign.addEventListener;
-  exports["removeEventListener"] = $foreign.removeEventListener;
-  exports["jsUndefined"] = $foreign.jsUndefined;
-})(PS["Halogen.VDom.Util"] = PS["Halogen.VDom.Util"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Foreign = PS["Foreign"];
-  var Foreign_Object = PS["Foreign.Object"];
-  var Halogen_VDom = PS["Halogen.VDom"];
-  var Halogen_VDom_Machine = PS["Halogen.VDom.Machine"];
-  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
-  var Halogen_VDom_Util = PS["Halogen.VDom.Util"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];                 
-  var Created = (function () {
-      function Created(value0) {
-          this.value0 = value0;
-      };
-      Created.create = function (value0) {
-          return new Created(value0);
-      };
-      return Created;
-  })();
-  var Removed = (function () {
-      function Removed(value0) {
-          this.value0 = value0;
-      };
-      Removed.create = function (value0) {
-          return new Removed(value0);
-      };
-      return Removed;
-  })();
-  var Attribute = (function () {
-      function Attribute(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      Attribute.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new Attribute(value0, value1, value2);
-              };
-          };
-      };
-      return Attribute;
-  })();
-  var Property = (function () {
-      function Property(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Property.create = function (value0) {
-          return function (value1) {
-              return new Property(value0, value1);
-          };
-      };
-      return Property;
-  })();
-  var Handler = (function () {
-      function Handler(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Handler.create = function (value0) {
-          return function (value1) {
-              return new Handler(value0, value1);
-          };
-      };
-      return Handler;
-  })();
-  var Ref = (function () {
-      function Ref(value0) {
-          this.value0 = value0;
-      };
-      Ref.create = function (value0) {
-          return new Ref(value0);
-      };
-      return Ref;
-  })();
-  var unsafeGetProperty = Halogen_VDom_Util.unsafeGetAny;
-  var setProperty = Halogen_VDom_Util.unsafeSetAny;
-  var removeProperty = function (key, el) {
-      var v = Foreign.typeOf(Halogen_VDom_Util.unsafeGetAny(key, el));
-      if (v === "string") {
-          return Halogen_VDom_Util.unsafeSetAny(key, "", el);
-      };
-      if (key === "rowSpan") {
-          return Halogen_VDom_Util.unsafeSetAny(key, 1, el);
-      };
-      if (key === "colSpan") {
-          return Halogen_VDom_Util.unsafeSetAny(key, 1, el);
-      };
-      return Halogen_VDom_Util.unsafeSetAny(key, Halogen_VDom_Util.jsUndefined, el);
-  };
-  var propToStrKey = function (v) {
-      if (v instanceof Attribute && v.value0 instanceof Data_Maybe.Just) {
-          return "attr/" + (v.value0.value0 + (":" + v.value1));
-      };
-      if (v instanceof Attribute) {
-          return "attr/:" + v.value1;
-      };
-      if (v instanceof Property) {
-          return "prop/" + v.value0;
-      };
-      if (v instanceof Handler) {
-          return "handler/" + v.value0;
-      };
-      if (v instanceof Ref) {
-          return "ref";
-      };
-      throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 178, column 16 - line 185, column 1: " + [ v.constructor.name ]);
-  };
-  var propFromString = Unsafe_Coerce.unsafeCoerce;
-  var propFromInt = Unsafe_Coerce.unsafeCoerce;
-  var propFromBoolean = Unsafe_Coerce.unsafeCoerce;
-  var functorProp = new Data_Functor.Functor(function (f) {
-      return function (v) {
-          if (v instanceof Handler) {
-              return new Handler(v.value0, Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Maybe.functorMaybe)(f))(v.value1));
-          };
-          if (v instanceof Ref) {
-              return new Ref(Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Maybe.functorMaybe)(f))(v.value0));
-          };
-          return v;
-      };
-  });
-  var buildProp = function (emit) {
-      return function (el) {
-          var removeProp = function (prevEvents) {
-              return function (v, v1) {
-                  if (v1 instanceof Attribute) {
-                      return Halogen_VDom_Util.removeAttribute(Data_Nullable.toNullable(v1.value0), v1.value1, el);
-                  };
-                  if (v1 instanceof Property) {
-                      return removeProperty(v1.value0, el);
-                  };
-                  if (v1 instanceof Handler) {
-                      var handler = Halogen_VDom_Util.unsafeLookup(v1.value0, prevEvents);
-                      return Halogen_VDom_Util.removeEventListener(v1.value0, Data_Tuple.fst(handler), el);
-                  };
-                  if (v1 instanceof Ref) {
-                      return Data_Unit.unit;
-                  };
-                  throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 165, column 5 - line 175, column 18: " + [ v1.constructor.name ]);
-              };
-          };
-          var mbEmit = function (v) {
-              if (v instanceof Data_Maybe.Just) {
-                  return emit(v.value0)();
-              };
-              return Data_Unit.unit;
-          };
-          var done = function (ps) {
-              var v = Foreign_Object.lookup("ref")(ps);
-              if (v instanceof Data_Maybe.Just && v.value0 instanceof Ref) {
-                  return function () {
-                      return mbEmit(v.value0.value0(new Removed(el)));
-                  };
-              };
-              return Halogen_VDom_Util.effectUnit;
-          };
-          var diffProp = function (prevEvents, events) {
-              return function (v, v1, v11, v2) {
-                  if (v11 instanceof Attribute && v2 instanceof Attribute) {
-                      var $61 = v11.value2 === v2.value2;
-                      if ($61) {
-                          return v2;
-                      };
-                      Halogen_VDom_Util.setAttribute(Data_Nullable.toNullable(v2.value0), v2.value1, v2.value2, el);
-                      return v2;
-                  };
-                  if (v11 instanceof Property && v2 instanceof Property) {
-                      var v4 = Halogen_VDom_Util.refEq(v11.value1, v2.value1);
-                      if (v4) {
-                          return v2;
-                      };
-                      if (v2.value0 === "value") {
-                          var elVal = unsafeGetProperty("value", el);
-                          var $70 = Halogen_VDom_Util.refEq(elVal, v2.value1);
-                          if ($70) {
-                              return v2;
-                          };
-                          setProperty(v2.value0, v2.value1, el);
-                          return v2;
-                      };
-                      setProperty(v2.value0, v2.value1, el);
-                      return v2;
-                  };
-                  if (v11 instanceof Handler && v2 instanceof Handler) {
-                      var handler = Halogen_VDom_Util.unsafeLookup(v2.value0, prevEvents);
-                      Effect_Ref.write(v2.value1)(Data_Tuple.snd(handler))();
-                      Halogen_VDom_Util.pokeMutMap(v2.value0, handler, events);
-                      return v2;
-                  };
-                  return v2;
-              };
-          };
-          var applyProp = function (events) {
-              return function (v, v1, v2) {
-                  if (v2 instanceof Attribute) {
-                      Halogen_VDom_Util.setAttribute(Data_Nullable.toNullable(v2.value0), v2.value1, v2.value2, el);
-                      return v2;
-                  };
-                  if (v2 instanceof Property) {
-                      setProperty(v2.value0, v2.value1, el);
-                      return v2;
-                  };
-                  if (v2 instanceof Handler) {
-                      var v3 = Halogen_VDom_Util.unsafeGetAny(v2.value0, events);
-                      if (Halogen_VDom_Util.unsafeHasAny(v2.value0, events)) {
-                          Effect_Ref.write(v2.value1)(Data_Tuple.snd(v3))();
-                          return v2;
-                      };
-                      var v4 = Effect_Ref["new"](v2.value1)();
-                      var v5 = Web_Event_EventTarget.eventListener(function (ev) {
-                          return function __do() {
-                              var v5 = Effect_Ref.read(v4)();
-                              return mbEmit(v5(ev));
-                          };
-                      })();
-                      Halogen_VDom_Util.pokeMutMap(v2.value0, new Data_Tuple.Tuple(v5, v4), events);
-                      Halogen_VDom_Util.addEventListener(v2.value0, v5, el);
-                      return v2;
-                  };
-                  if (v2 instanceof Ref) {
-                      mbEmit(v2.value0(new Created(el)));
-                      return v2;
-                  };
-                  throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 109, column 5 - line 131, column 15: " + [ v2.constructor.name ]);
-              };
-          };
-          var patch = function (prevEvents, ps1) {
-              return function (ps2) {
-                  var v = Halogen_VDom_Util.newMutMap();
-                  var onThis = removeProp(prevEvents);
-                  var onThese = diffProp(prevEvents, v);
-                  var onThat = applyProp(v);
-                  var v1 = Halogen_VDom_Util.diffWithKeyAndIxE(ps1, ps2, propToStrKey, onThese, onThis, onThat);
-                  return new Halogen_VDom_Machine.Step(Data_Unit.unit, patch(Halogen_VDom_Util.unsafeFreeze(v), v1), done(v1));
-              };
-          };
-          var render = function (ps1) {
-              var v = Halogen_VDom_Util.newMutMap();
-              var v1 = Halogen_VDom_Util.strMapWithIxE(ps1, propToStrKey, applyProp(v));
-              return new Halogen_VDom_Machine.Step(Data_Unit.unit, patch(Halogen_VDom_Util.unsafeFreeze(v), v1), done(v1));
-          };
-          return render;
-      };
-  };
-  exports["Attribute"] = Attribute;
-  exports["Property"] = Property;
-  exports["Handler"] = Handler;
-  exports["Ref"] = Ref;
-  exports["Created"] = Created;
-  exports["Removed"] = Removed;
-  exports["propFromString"] = propFromString;
-  exports["propFromBoolean"] = propFromBoolean;
-  exports["propFromInt"] = propFromInt;
-  exports["buildProp"] = buildProp;
-  exports["functorProp"] = functorProp;
-})(PS["Halogen.VDom.DOM.Prop"] = PS["Halogen.VDom.DOM.Prop"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
-  var DOM_HTML_Indexed_CrossOriginValue = PS["DOM.HTML.Indexed.CrossOriginValue"];
-  var DOM_HTML_Indexed_DirValue = PS["DOM.HTML.Indexed.DirValue"];
-  var DOM_HTML_Indexed_FormMethod = PS["DOM.HTML.Indexed.FormMethod"];
-  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
-  var DOM_HTML_Indexed_KindValue = PS["DOM.HTML.Indexed.KindValue"];
-  var DOM_HTML_Indexed_MenuType = PS["DOM.HTML.Indexed.MenuType"];
-  var DOM_HTML_Indexed_MenuitemType = PS["DOM.HTML.Indexed.MenuitemType"];
-  var DOM_HTML_Indexed_OnOff = PS["DOM.HTML.Indexed.OnOff"];
-  var DOM_HTML_Indexed_OrderedListType = PS["DOM.HTML.Indexed.OrderedListType"];
-  var DOM_HTML_Indexed_PreloadValue = PS["DOM.HTML.Indexed.PreloadValue"];
-  var DOM_HTML_Indexed_ScopeValue = PS["DOM.HTML.Indexed.ScopeValue"];
-  var DOM_HTML_Indexed_StepValue = PS["DOM.HTML.Indexed.StepValue"];
-  var DOM_HTML_Indexed_WrapValue = PS["DOM.HTML.Indexed.WrapValue"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_MediaType = PS["Data.MediaType"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Halogen_VDom = PS["Halogen.VDom"];
-  var Halogen_VDom_DOM_Prop = PS["Halogen.VDom.DOM.Prop"];
-  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var HTML = function (x) {
-      return x;
-  };
-  var ClassName = function (x) {
-      return x;
-  };
-  var IsProp = function (toPropValue) {
-      this.toPropValue = toPropValue;
-  }; 
-  var toPropValue = function (dict) {
-      return dict.toPropValue;
-  };
-  var text = function ($27) {
-      return HTML(Halogen_VDom_Types.Text.create($27));
-  };
-  var stringIsProp = new IsProp(Halogen_VDom_DOM_Prop.propFromString);
-  var slot = function ($29) {
-      return HTML(Halogen_VDom_Types.Widget.create($29));
-  };
-  var prop = function (dictIsProp) {
-      return function (v) {
-          return function ($32) {
-              return Halogen_VDom_DOM_Prop.Property.create(v)(toPropValue(dictIsProp)($32));
-          };
-      };
-  };                                   
-  var onOffIsProp = new IsProp(function ($35) {
-      return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_OnOff.renderOnOff($35));
-  });      
-  var newtypeClassName = new Data_Newtype.Newtype(function (n) {
-      return n;
-  }, ClassName);
-  var intIsProp = new IsProp(Halogen_VDom_DOM_Prop.propFromInt);
-  var inputTypeIsProp = new IsProp(function ($40) {
-      return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_InputType.renderInputType($40));
-  });
-  var handler = Halogen_VDom_DOM_Prop.Handler.create;
-  var element = function (ns) {
-      return function (name) {
-          return function (props) {
-              return function (children) {
-                  return new Halogen_VDom_Types.Elem(new Halogen_VDom_Types.ElemSpec(ns, name, props), children);
-              };
-          };
-      };
-  }; 
-  var buttonTypeIsProp = new IsProp(function ($44) {
-      return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_ButtonType.renderButtonType($44));
-  });
-  var booleanIsProp = new IsProp(Halogen_VDom_DOM_Prop.propFromBoolean);
-  var bifunctorHTML = new Data_Bifunctor.Bifunctor(function (f) {
-      return function (g) {
-          return function (v) {
-              return Data_Bifunctor.bimap(Halogen_VDom_Types.bifunctorVDom)(Data_Functor.map(Data_Functor.functorArray)(Data_Functor.map(Halogen_VDom_DOM_Prop.functorProp)(Data_Functor.map(Halogen_Query_InputF.functorInputF)(g))))(f)(v);
-          };
-      };
-  });                                                                            
-  var attr = function (ns) {
-      return function (v) {
-          return Halogen_VDom_DOM_Prop.Attribute.create(ns)(v);
-      };
-  };
-  exports["HTML"] = HTML;
-  exports["slot"] = slot;
-  exports["text"] = text;
-  exports["element"] = element;
-  exports["prop"] = prop;
-  exports["attr"] = attr;
-  exports["handler"] = handler;
-  exports["IsProp"] = IsProp;
-  exports["toPropValue"] = toPropValue;
-  exports["ClassName"] = ClassName;
-  exports["bifunctorHTML"] = bifunctorHTML;
-  exports["stringIsProp"] = stringIsProp;
-  exports["intIsProp"] = intIsProp;
-  exports["booleanIsProp"] = booleanIsProp;
-  exports["buttonTypeIsProp"] = buttonTypeIsProp;
-  exports["inputTypeIsProp"] = inputTypeIsProp;
-  exports["onOffIsProp"] = onOffIsProp;
-  exports["newtypeClassName"] = newtypeClassName;
-})(PS["Halogen.HTML.Core"] = PS["Halogen.HTML.Core"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Const = PS["Data.Const"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_NonEmpty = PS["Data.List.NonEmpty"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_NonEmpty = PS["Data.NonEmpty"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
-  var Pure = (function () {
-      function Pure(value0) {
-          this.value0 = value0;
-      };
-      Pure.create = function (value0) {
-          return new Pure(value0);
-      };
-      return Pure;
-  })();
-  var Lift = (function () {
-      function Lift(value0) {
-          this.value0 = value0;
-      };
-      Lift.create = function (value0) {
-          return new Lift(value0);
-      };
-      return Lift;
-  })();
-  var Ap = (function () {
-      function Ap(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Ap.create = function (value0) {
-          return function (value1) {
-              return new Ap(value0, value1);
-          };
-      };
-      return Ap;
-  })();
-  var mkAp = function (fba) {
-      return function (fb) {
-          return new Ap(fba, fb);
-      };
-  };
-  var liftFreeAp = Lift.create;
-  var goLeft = function ($copy_dictApplicative) {
-      return function ($copy_fStack) {
-          return function ($copy_valStack) {
-              return function ($copy_nat) {
-                  return function ($copy_func) {
-                      return function ($copy_count) {
-                          var $tco_var_dictApplicative = $copy_dictApplicative;
-                          var $tco_var_fStack = $copy_fStack;
-                          var $tco_var_valStack = $copy_valStack;
-                          var $tco_var_nat = $copy_nat;
-                          var $tco_var_func = $copy_func;
-                          var $tco_done = false;
-                          var $tco_result;
-                          function $tco_loop(dictApplicative, fStack, valStack, nat, func, count) {
-                              if (func instanceof Pure) {
-                                  $tco_done = true;
-                                  return new Data_Tuple.Tuple(new Data_List_Types.Cons({
-                                      func: Control_Applicative.pure(dictApplicative)(func.value0),
-                                      count: count
-                                  }, fStack), valStack);
-                              };
-                              if (func instanceof Lift) {
-                                  $tco_done = true;
-                                  return new Data_Tuple.Tuple(new Data_List_Types.Cons({
-                                      func: nat(func.value0),
-                                      count: count
-                                  }, fStack), valStack);
-                              };
-                              if (func instanceof Ap) {
-                                  $tco_var_dictApplicative = dictApplicative;
-                                  $tco_var_fStack = fStack;
-                                  $tco_var_valStack = Data_List_NonEmpty.cons(func.value1)(valStack);
-                                  $tco_var_nat = nat;
-                                  $tco_var_func = func.value0;
-                                  $copy_count = count + 1 | 0;
-                                  return;
-                              };
-                              throw new Error("Failed pattern match at Control.Applicative.Free line 102, column 41 - line 105, column 81: " + [ func.constructor.name ]);
-                          };
-                          while (!$tco_done) {
-                              $tco_result = $tco_loop($tco_var_dictApplicative, $tco_var_fStack, $tco_var_valStack, $tco_var_nat, $tco_var_func, $copy_count);
-                          };
-                          return $tco_result;
-                      };
-                  };
-              };
-          };
-      };
-  };
-  var goApply = function ($copy_dictApplicative) {
-      return function ($copy_fStack) {
-          return function ($copy_vals) {
-              return function ($copy_gVal) {
-                  var $tco_var_dictApplicative = $copy_dictApplicative;
-                  var $tco_var_fStack = $copy_fStack;
-                  var $tco_var_vals = $copy_vals;
-                  var $tco_done = false;
-                  var $tco_result;
-                  function $tco_loop(dictApplicative, fStack, vals, gVal) {
-                      if (fStack instanceof Data_List_Types.Nil) {
-                          $tco_done = true;
-                          return new Data_Either.Left(gVal);
-                      };
-                      if (fStack instanceof Data_List_Types.Cons) {
-                          var gRes = Control_Apply.apply(dictApplicative.Apply0())(fStack.value0.func)(gVal);
-                          var $14 = fStack.value0.count === 1;
-                          if ($14) {
-                              if (fStack.value1 instanceof Data_List_Types.Nil) {
-                                  $tco_done = true;
-                                  return new Data_Either.Left(gRes);
-                              };
-                              $tco_var_dictApplicative = dictApplicative;
-                              $tco_var_fStack = fStack.value1;
-                              $tco_var_vals = vals;
-                              $copy_gVal = gRes;
-                              return;
-                          };
-                          if (vals instanceof Data_List_Types.Nil) {
-                              $tco_done = true;
-                              return new Data_Either.Left(gRes);
-                          };
-                          if (vals instanceof Data_List_Types.Cons) {
-                              $tco_done = true;
-                              return Data_Either.Right.create(new Data_Tuple.Tuple(new Data_List_Types.Cons({
-                                  func: gRes,
-                                  count: fStack.value0.count - 1 | 0
-                              }, fStack.value1), new Data_NonEmpty.NonEmpty(vals.value0, vals.value1)));
-                          };
-                          throw new Error("Failed pattern match at Control.Applicative.Free line 83, column 11 - line 88, column 50: " + [ vals.constructor.name ]);
-                      };
-                      throw new Error("Failed pattern match at Control.Applicative.Free line 72, column 3 - line 88, column 50: " + [ fStack.constructor.name ]);
-                  };
-                  while (!$tco_done) {
-                      $tco_result = $tco_loop($tco_var_dictApplicative, $tco_var_fStack, $tco_var_vals, $copy_gVal);
-                  };
-                  return $tco_result;
-              };
-          };
-      };
-  };
-  var functorFreeAp = new Data_Functor.Functor(function (f) {
-      return function (x) {
-          return mkAp(new Pure(f))(x);
-      };
-  });
-  var foldFreeAp = function (dictApplicative) {
-      return function (nat) {
-          return function (z) {
-              var go = function ($copy_v) {
-                  var $tco_done = false;
-                  var $tco_result;
-                  function $tco_loop(v) {
-                      if (v.value1.value0 instanceof Pure) {
-                          var v1 = goApply(dictApplicative)(v.value0)(v.value1.value1)(Control_Applicative.pure(dictApplicative)(v.value1.value0.value0));
-                          if (v1 instanceof Data_Either.Left) {
-                              $tco_done = true;
-                              return v1.value0;
-                          };
-                          if (v1 instanceof Data_Either.Right) {
-                              $copy_v = v1.value0;
-                              return;
-                          };
-                          throw new Error("Failed pattern match at Control.Applicative.Free line 54, column 17 - line 56, column 24: " + [ v1.constructor.name ]);
-                      };
-                      if (v.value1.value0 instanceof Lift) {
-                          var v1 = goApply(dictApplicative)(v.value0)(v.value1.value1)(nat(v.value1.value0.value0));
-                          if (v1 instanceof Data_Either.Left) {
-                              $tco_done = true;
-                              return v1.value0;
-                          };
-                          if (v1 instanceof Data_Either.Right) {
-                              $copy_v = v1.value0;
-                              return;
-                          };
-                          throw new Error("Failed pattern match at Control.Applicative.Free line 57, column 17 - line 59, column 24: " + [ v1.constructor.name ]);
-                      };
-                      if (v.value1.value0 instanceof Ap) {
-                          var nextVals = new Data_NonEmpty.NonEmpty(v.value1.value0.value1, v.value1.value1);
-                          $copy_v = goLeft(dictApplicative)(v.value0)(nextVals)(nat)(v.value1.value0.value0)(1);
-                          return;
-                      };
-                      throw new Error("Failed pattern match at Control.Applicative.Free line 53, column 5 - line 64, column 1: " + [ v.value1.value0.constructor.name ]);
-                  };
-                  while (!$tco_done) {
-                      $tco_result = $tco_loop($copy_v);
-                  };
-                  return $tco_result;
-              };
-              return go(new Data_Tuple.Tuple(Data_List_Types.Nil.value, Data_List_NonEmpty.singleton(z)));
-          };
-      };
-  };
-  var retractFreeAp = function (dictApplicative) {
-      return foldFreeAp(dictApplicative)(Control_Category.identity(Control_Category.categoryFn));
-  };
-  var applyFreeAp = new Control_Apply.Apply(function () {
-      return functorFreeAp;
-  }, function (fba) {
-      return function (fb) {
-          return mkAp(fba)(fb);
-      };
-  });
-  var applicativeFreeAp = new Control_Applicative.Applicative(function () {
-      return applyFreeAp;
-  }, Pure.create);
-  var hoistFreeAp = function (f) {
-      return foldFreeAp(applicativeFreeAp)(function ($37) {
-          return liftFreeAp(f($37));
-      });
-  };
-  exports["liftFreeAp"] = liftFreeAp;
-  exports["retractFreeAp"] = retractFreeAp;
-  exports["foldFreeAp"] = foldFreeAp;
-  exports["hoistFreeAp"] = hoistFreeAp;
-  exports["functorFreeAp"] = functorFreeAp;
-  exports["applyFreeAp"] = applyFreeAp;
-  exports["applicativeFreeAp"] = applicativeFreeAp;
-})(PS["Control.Applicative.Free"] = PS["Control.Applicative.Free"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Prelude = PS["Prelude"];                 
-  var CatQueue = (function () {
-      function CatQueue(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      CatQueue.create = function (value0) {
-          return function (value1) {
-              return new CatQueue(value0, value1);
-          };
-      };
-      return CatQueue;
-  })();
-  var uncons = function ($copy_v) {
-      var $tco_done = false;
-      var $tco_result;
-      function $tco_loop(v) {
-          if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {
-              $tco_done = true;
-              return Data_Maybe.Nothing.value;
-          };
-          if (v.value0 instanceof Data_List_Types.Nil) {
-              $copy_v = new CatQueue(Data_List.reverse(v.value1), Data_List_Types.Nil.value);
-              return;
-          };
-          if (v.value0 instanceof Data_List_Types.Cons) {
-              $tco_done = true;
-              return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value0.value0, new CatQueue(v.value0.value1, v.value1)));
-          };
-          throw new Error("Failed pattern match at Data.CatQueue line 83, column 1 - line 83, column 63: " + [ v.constructor.name ]);
-      };
-      while (!$tco_done) {
-          $tco_result = $tco_loop($copy_v);
-      };
-      return $tco_result;
-  };
-  var snoc = function (v) {
-      return function (a) {
-          return new CatQueue(v.value0, new Data_List_Types.Cons(a, v.value1));
-      };
-  };
-  var $$null = function (v) {
-      if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {
-          return true;
-      };
-      return false;
-  };                                                                                                
-  var empty = new CatQueue(Data_List_Types.Nil.value, Data_List_Types.Nil.value);
-  exports["CatQueue"] = CatQueue;
-  exports["empty"] = empty;
-  exports["null"] = $$null;
-  exports["snoc"] = snoc;
-  exports["uncons"] = uncons;
-})(PS["Data.CatQueue"] = PS["Data.CatQueue"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Data_CatQueue = PS["Data.CatQueue"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
-  var Prelude = PS["Prelude"];                 
-  var CatNil = (function () {
-      function CatNil() {
-
-      };
-      CatNil.value = new CatNil();
-      return CatNil;
-  })();
-  var CatCons = (function () {
-      function CatCons(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      CatCons.create = function (value0) {
-          return function (value1) {
-              return new CatCons(value0, value1);
-          };
-      };
-      return CatCons;
-  })();
-  var link = function (v) {
-      return function (cat) {
-          if (v instanceof CatNil) {
-              return cat;
-          };
-          if (v instanceof CatCons) {
-              return new CatCons(v.value0, Data_CatQueue.snoc(v.value1)(cat));
-          };
-          throw new Error("Failed pattern match at Data.CatList line 111, column 1 - line 111, column 54: " + [ v.constructor.name, cat.constructor.name ]);
-      };
-  };
-  var foldr = function (k) {
-      return function (b) {
-          return function (q) {
-              var foldl = function ($copy_v) {
-                  return function ($copy_c) {
-                      return function ($copy_v1) {
-                          var $tco_var_v = $copy_v;
-                          var $tco_var_c = $copy_c;
-                          var $tco_done = false;
-                          var $tco_result;
-                          function $tco_loop(v, c, v1) {
-                              if (v1 instanceof Data_List_Types.Nil) {
-                                  $tco_done = true;
-                                  return c;
-                              };
-                              if (v1 instanceof Data_List_Types.Cons) {
-                                  $tco_var_v = v;
-                                  $tco_var_c = v(c)(v1.value0);
-                                  $copy_v1 = v1.value1;
-                                  return;
-                              };
-                              throw new Error("Failed pattern match at Data.CatList line 126, column 3 - line 126, column 59: " + [ v.constructor.name, c.constructor.name, v1.constructor.name ]);
-                          };
-                          while (!$tco_done) {
-                              $tco_result = $tco_loop($tco_var_v, $tco_var_c, $copy_v1);
-                          };
-                          return $tco_result;
-                      };
-                  };
-              };
-              var go = function ($copy_xs) {
-                  return function ($copy_ys) {
-                      var $tco_var_xs = $copy_xs;
-                      var $tco_done = false;
-                      var $tco_result;
-                      function $tco_loop(xs, ys) {
-                          var v = Data_CatQueue.uncons(xs);
-                          if (v instanceof Data_Maybe.Nothing) {
-                              $tco_done = true;
-                              return foldl(function (x) {
-                                  return function (i) {
-                                      return i(x);
-                                  };
-                              })(b)(ys);
-                          };
-                          if (v instanceof Data_Maybe.Just) {
-                              $tco_var_xs = v.value0.value1;
-                              $copy_ys = new Data_List_Types.Cons(k(v.value0.value0), ys);
-                              return;
-                          };
-                          throw new Error("Failed pattern match at Data.CatList line 122, column 14 - line 124, column 67: " + [ v.constructor.name ]);
-                      };
-                      while (!$tco_done) {
-                          $tco_result = $tco_loop($tco_var_xs, $copy_ys);
-                      };
-                      return $tco_result;
-                  };
-              };
-              return go(q)(Data_List_Types.Nil.value);
-          };
-      };
-  };
-  var uncons = function (v) {
-      if (v instanceof CatNil) {
-          return Data_Maybe.Nothing.value;
-      };
-      if (v instanceof CatCons) {
-          return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value0, (function () {
-              var $45 = Data_CatQueue["null"](v.value1);
-              if ($45) {
-                  return CatNil.value;
-              };
-              return foldr(link)(CatNil.value)(v.value1);
-          })()));
-      };
-      throw new Error("Failed pattern match at Data.CatList line 102, column 1 - line 102, column 61: " + [ v.constructor.name ]);
-  };
-  var empty = CatNil.value;
-  var append = function (v) {
-      return function (v1) {
-          if (v1 instanceof CatNil) {
-              return v;
-          };
-          if (v instanceof CatNil) {
-              return v1;
-          };
-          return link(v)(v1);
-      };
-  }; 
-  var semigroupCatList = new Data_Semigroup.Semigroup(append);
-  var snoc = function (cat) {
-      return function (a) {
-          return append(cat)(new CatCons(a, Data_CatQueue.empty));
-      };
-  };
-  exports["CatNil"] = CatNil;
-  exports["CatCons"] = CatCons;
-  exports["empty"] = empty;
-  exports["append"] = append;
-  exports["snoc"] = snoc;
-  exports["uncons"] = uncons;
-  exports["semigroupCatList"] = semigroupCatList;
-})(PS["Data.CatList"] = PS["Data.CatList"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_CatList = PS["Data.CatList"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Free = (function () {
-      function Free(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Free.create = function (value0) {
-          return function (value1) {
-              return new Free(value0, value1);
-          };
-      };
-      return Free;
-  })();
-  var Return = (function () {
-      function Return(value0) {
-          this.value0 = value0;
-      };
-      Return.create = function (value0) {
-          return new Return(value0);
-      };
-      return Return;
-  })();
-  var Bind = (function () {
-      function Bind(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Bind.create = function (value0) {
-          return function (value1) {
-              return new Bind(value0, value1);
-          };
-      };
-      return Bind;
-  })();
-  var toView = function ($copy_v) {
-      var $tco_done = false;
-      var $tco_result;
-      function $tco_loop(v) {
-          var runExpF = function (v2) {
-              return v2;
-          };
-          var concatF = function (v2) {
-              return function (r) {
-                  return new Free(v2.value0, Data_Semigroup.append(Data_CatList.semigroupCatList)(v2.value1)(r));
-              };
-          };
-          if (v.value0 instanceof Return) {
-              var v2 = Data_CatList.uncons(v.value1);
-              if (v2 instanceof Data_Maybe.Nothing) {
-                  $tco_done = true;
-                  return new Return(v.value0.value0);
-              };
-              if (v2 instanceof Data_Maybe.Just) {
-                  $copy_v = concatF(runExpF(v2.value0.value0)(v.value0.value0))(v2.value0.value1);
-                  return;
-              };
-              throw new Error("Failed pattern match at Control.Monad.Free line 220, column 7 - line 224, column 64: " + [ v2.constructor.name ]);
-          };
-          if (v.value0 instanceof Bind) {
-              $tco_done = true;
-              return new Bind(v.value0.value0, function (a) {
-                  return concatF(v.value0.value1(a))(v.value1);
-              });
-          };
-          throw new Error("Failed pattern match at Control.Monad.Free line 218, column 3 - line 226, column 56: " + [ v.value0.constructor.name ]);
-      };
-      while (!$tco_done) {
-          $tco_result = $tco_loop($copy_v);
-      };
-      return $tco_result;
-  };
-  var fromView = function (f) {
-      return new Free(f, Data_CatList.empty);
-  };
-  var freeMonad = new Control_Monad.Monad(function () {
-      return freeApplicative;
-  }, function () {
-      return freeBind;
-  });
-  var freeFunctor = new Data_Functor.Functor(function (k) {
-      return function (f) {
-          return Control_Bind.bindFlipped(freeBind)(function ($118) {
-              return Control_Applicative.pure(freeApplicative)(k($118));
-          })(f);
-      };
-  });
-  var freeBind = new Control_Bind.Bind(function () {
-      return freeApply;
-  }, function (v) {
-      return function (k) {
-          return new Free(v.value0, Data_CatList.snoc(v.value1)(k));
-      };
-  });
-  var freeApply = new Control_Apply.Apply(function () {
-      return freeFunctor;
-  }, Control_Monad.ap(freeMonad));
-  var freeApplicative = new Control_Applicative.Applicative(function () {
-      return freeApply;
-  }, function ($119) {
-      return fromView(Return.create($119));
-  });
-  var liftF = function (f) {
-      return fromView(new Bind(f, function ($120) {
-          return Control_Applicative.pure(freeApplicative)($120);
-      }));
-  };
-  var foldFree = function (dictMonadRec) {
-      return function (k) {
-          var go = function (f) {
-              var v = toView(f);
-              if (v instanceof Return) {
-                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_Rec_Class.Done.create)(Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(v.value0));
-              };
-              if (v instanceof Bind) {
-                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(function ($127) {
-                      return Control_Monad_Rec_Class.Loop.create(v.value1($127));
-                  })(k(v.value0));
-              };
-              throw new Error("Failed pattern match at Control.Monad.Free line 151, column 10 - line 153, column 37: " + [ v.constructor.name ]);
-          };
-          return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(go);
-      };
-  };
-  exports["liftF"] = liftF;
-  exports["foldFree"] = foldFree;
-  exports["freeFunctor"] = freeFunctor;
-  exports["freeBind"] = freeBind;
-  exports["freeApplicative"] = freeApplicative;
-  exports["freeApply"] = freeApply;
-  exports["freeMonad"] = freeMonad;
-})(PS["Control.Monad.Free"] = PS["Control.Monad.Free"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
-  var runExists = Unsafe_Coerce.unsafeCoerce;
-  var mkExists = Unsafe_Coerce.unsafeCoerce;
-  exports["mkExists"] = mkExists;
-  exports["runExists"] = runExists;
-})(PS["Data.Exists"] = PS["Data.Exists"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Alt = PS["Control.Alt"];
-  var Control_Alternative = PS["Control.Alternative"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Comonad = PS["Control.Comonad"];
-  var Control_Extend = PS["Control.Extend"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_MonadPlus = PS["Control.MonadPlus"];
-  var Control_MonadZero = PS["Control.MonadZero"];
-  var Control_Plus = PS["Control.Plus"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Distributive = PS["Data.Distributive"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Exists = PS["Data.Exists"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
-  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Prelude = PS["Prelude"];
-  var unCoyoneda = function (f) {
-      return function (v) {
-          return Data_Exists.runExists(function (v1) {
-              return f(v1.value0)(v1.value1);
-          })(v);
-      };
-  };
-  exports["unCoyoneda"] = unCoyoneda;
-})(PS["Data.Coyoneda"] = PS["Data.Coyoneda"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Exists = PS["Data.Exists"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Class = PS["Effect.Class"];
-  var Prelude = PS["Prelude"];                 
-  var Bound = (function () {
-      function Bound(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Bound.create = function (value0) {
-          return function (value1) {
-              return new Bound(value0, value1);
-          };
-      };
-      return Bound;
-  })();
-  var FreeT = (function () {
-      function FreeT(value0) {
-          this.value0 = value0;
-      };
-      FreeT.create = function (value0) {
-          return new FreeT(value0);
-      };
-      return FreeT;
-  })();
-  var Bind = (function () {
-      function Bind(value0) {
-          this.value0 = value0;
-      };
-      Bind.create = function (value0) {
-          return new Bind(value0);
-      };
-      return Bind;
-  })();
-  var monadTransFreeT = function (dictFunctor) {
-      return new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
-          return function (ma) {
-              return new FreeT(function (v) {
-                  return Data_Functor.map(((dictMonad.Bind1()).Apply0()).Functor0())(Data_Either.Left.create)(ma);
-              });
-          };
-      });
-  };
-  var freeT = FreeT.create;
-  var bound = function (m) {
-      return function (f) {
-          return new Bind(Data_Exists.mkExists(new Bound(m, f)));
-      };
-  };
-  var functorFreeT = function (dictFunctor) {
-      return function (dictFunctor1) {
-          return new Data_Functor.Functor(function (f) {
-              return function (v) {
-                  if (v instanceof FreeT) {
-                      return new FreeT(function (v1) {
-                          return Data_Functor.map(dictFunctor1)(Data_Bifunctor.bimap(Data_Either.bifunctorEither)(f)(Data_Functor.map(dictFunctor)(Data_Functor.map(functorFreeT(dictFunctor)(dictFunctor1))(f))))(v.value0(Data_Unit.unit));
-                      });
-                  };
-                  if (v instanceof Bind) {
-                      return Data_Exists.runExists(function (v1) {
-                          return bound(v1.value0)(function ($104) {
-                              return Data_Functor.map(functorFreeT(dictFunctor)(dictFunctor1))(f)(v1.value1($104));
-                          });
-                      })(v.value0);
-                  };
-                  throw new Error("Failed pattern match at Control.Monad.Free.Trans line 57, column 1 - line 57, column 71: " + [ f.constructor.name, v.constructor.name ]);
-              };
-          });
-      };
-  };
-  var monadFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return new Control_Monad.Monad(function () {
-              return applicativeFreeT(dictFunctor)(dictMonad);
-          }, function () {
-              return bindFreeT(dictFunctor)(dictMonad);
-          });
-      };
-  };
-  var bindFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return new Control_Bind.Bind(function () {
-              return applyFreeT(dictFunctor)(dictMonad);
-          }, function (v) {
-              return function (f) {
-                  if (v instanceof Bind) {
-                      return Data_Exists.runExists(function (v1) {
-                          return bound(v1.value0)(function (x) {
-                              return bound(function (v2) {
-                                  return v1.value1(x);
-                              })(f);
-                          });
-                      })(v.value0);
-                  };
-                  return bound(function (v1) {
-                      return v;
-                  })(f);
-              };
-          });
-      };
-  };
-  var applyFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return new Control_Apply.Apply(function () {
-              return functorFreeT(dictFunctor)(((dictMonad.Bind1()).Apply0()).Functor0());
-          }, Control_Monad.ap(monadFreeT(dictFunctor)(dictMonad)));
-      };
-  };
-  var applicativeFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return new Control_Applicative.Applicative(function () {
-              return applyFreeT(dictFunctor)(dictMonad);
-          }, function (a) {
-              return new FreeT(function (v) {
-                  return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Left(a));
-              });
-          });
-      };
-  };
-  var liftFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return function (fa) {
-              return new FreeT(function (v) {
-                  return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(Data_Functor.map(dictFunctor)(Control_Applicative.pure(applicativeFreeT(dictFunctor)(dictMonad)))(fa)));
-              });
-          };
-      };
-  };
-  var resume = function (dictFunctor) {
-      return function (dictMonadRec) {
-          var go = function (v) {
-              if (v instanceof FreeT) {
-                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_Rec_Class.Done.create)(v.value0(Data_Unit.unit));
-              };
-              if (v instanceof Bind) {
-                  return Data_Exists.runExists(function (v1) {
-                      var v2 = v1.value0(Data_Unit.unit);
-                      if (v2 instanceof FreeT) {
-                          return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())(v2.value0(Data_Unit.unit))(function (v3) {
-                              if (v3 instanceof Data_Either.Left) {
-                                  return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Loop(v1.value1(v3.value0)));
-                              };
-                              if (v3 instanceof Data_Either.Right) {
-                                  return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Done(new Data_Either.Right(Data_Functor.map(dictFunctor)(function (h) {
-                                      return Control_Bind.bind(bindFreeT(dictFunctor)(dictMonadRec.Monad0()))(h)(v1.value1);
-                                  })(v3.value0))));
-                              };
-                              throw new Error("Failed pattern match at Control.Monad.Free.Trans line 52, column 20 - line 54, column 67: " + [ v3.constructor.name ]);
-                          });
-                      };
-                      if (v2 instanceof Bind) {
-                          return Data_Exists.runExists(function (v3) {
-                              return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Loop(Control_Bind.bind(bindFreeT(dictFunctor)(dictMonadRec.Monad0()))(v3.value0(Data_Unit.unit))(function (z) {
-                                  return Control_Bind.bind(bindFreeT(dictFunctor)(dictMonadRec.Monad0()))(v3.value1(z))(v1.value1);
-                              })));
-                          })(v2.value0);
-                      };
-                      throw new Error("Failed pattern match at Control.Monad.Free.Trans line 50, column 5 - line 55, column 98: " + [ v2.constructor.name ]);
-                  })(v.value0);
-              };
-              throw new Error("Failed pattern match at Control.Monad.Free.Trans line 47, column 3 - line 47, column 75: " + [ v.constructor.name ]);
-          };
-          return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(go);
-      };
-  };
-  var runFreeT = function (dictFunctor) {
-      return function (dictMonadRec) {
-          return function (interp) {
-              var go = function (v) {
-                  if (v instanceof Data_Either.Left) {
-                      return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Done(v.value0));
-                  };
-                  if (v instanceof Data_Either.Right) {
-                      return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_Rec_Class.Loop.create)(interp(v.value0));
-                  };
-                  throw new Error("Failed pattern match at Control.Monad.Free.Trans line 126, column 3 - line 126, column 63: " + [ v.constructor.name ]);
-              };
-              return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(Control_Bind.composeKleisliFlipped((dictMonadRec.Monad0()).Bind1())(go)(resume(dictFunctor)(dictMonadRec)));
-          };
-      };
-  };
-  var monadRecFreeT = function (dictFunctor) {
-      return function (dictMonad) {
-          return new Control_Monad_Rec_Class.MonadRec(function () {
-              return monadFreeT(dictFunctor)(dictMonad);
-          }, function (f) {
-              var go = function (s) {
-                  return Control_Bind.bind(bindFreeT(dictFunctor)(dictMonad))(f(s))(function (v) {
-                      if (v instanceof Control_Monad_Rec_Class.Loop) {
-                          return go(v.value0);
-                      };
-                      if (v instanceof Control_Monad_Rec_Class.Done) {
-                          return Control_Applicative.pure(applicativeFreeT(dictFunctor)(dictMonad))(v.value0);
-                      };
-                      throw new Error("Failed pattern match at Control.Monad.Free.Trans line 80, column 15 - line 82, column 25: " + [ v.constructor.name ]);
-                  });
-              };
-              return go;
-          });
-      };
-  };
-  exports["freeT"] = freeT;
-  exports["liftFreeT"] = liftFreeT;
-  exports["resume"] = resume;
-  exports["runFreeT"] = runFreeT;
-  exports["functorFreeT"] = functorFreeT;
-  exports["applyFreeT"] = applyFreeT;
-  exports["applicativeFreeT"] = applicativeFreeT;
-  exports["bindFreeT"] = bindFreeT;
-  exports["monadFreeT"] = monadFreeT;
-  exports["monadTransFreeT"] = monadTransFreeT;
-  exports["monadRecFreeT"] = monadRecFreeT;
-})(PS["Control.Monad.Free.Trans"] = PS["Control.Monad.Free.Trans"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Prelude = PS["Prelude"];                 
-  var Profunctor = function (dimap) {
-      this.dimap = dimap;
-  };
-  var profunctorFn = new Profunctor(function (a2b) {
-      return function (c2d) {
-          return function (b2c) {
-              return function ($9) {
-                  return c2d(b2c(a2b($9)));
-              };
-          };
-      };
-  });
-  var dimap = function (dict) {
-      return dict.dimap;
-  };
-  var rmap = function (dictProfunctor) {
-      return function (b2c) {
-          return dimap(dictProfunctor)(Control_Category.identity(Control_Category.categoryFn))(b2c);
-      };
-  };
-  exports["dimap"] = dimap;
-  exports["Profunctor"] = Profunctor;
-  exports["rmap"] = rmap;
-  exports["profunctorFn"] = profunctorFn;
-})(PS["Data.Profunctor"] = PS["Data.Profunctor"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_Except = PS["Control.Monad.Except"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Monad_Free_Trans = PS["Control.Monad.Free.Trans"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Parallel_Class = PS["Control.Parallel.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Profunctor = PS["Data.Profunctor"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Prelude = PS["Prelude"];
-  var Emit = (function () {
-      function Emit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Emit.create = function (value0) {
-          return function (value1) {
-              return new Emit(value0, value1);
-          };
-      };
-      return Emit;
-  })();
-  var runProcess = function (dictMonadRec) {
-      return Control_Monad_Free_Trans.runFreeT(Data_Identity.functorIdentity)(dictMonadRec)(function ($186) {
-          return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(Data_Newtype.unwrap(Data_Identity.newtypeIdentity)($186));
-      });
-  };
-  var profunctorAwait = new Data_Profunctor.Profunctor(function (f) {
-      return function (g) {
-          return function (v) {
-              return Data_Profunctor.dimap(Data_Profunctor.profunctorFn)(f)(g)(v);
-          };
-      };
-  });
-  var loop = function (dictFunctor) {
-      return function (dictMonad) {
-          return function (me) {
-              return Control_Monad_Rec_Class.tailRecM(Control_Monad_Free_Trans.monadRecFreeT(dictFunctor)(dictMonad))(function (v) {
-                  return Data_Functor.map(Control_Monad_Free_Trans.functorFreeT(dictFunctor)(((dictMonad.Bind1()).Apply0()).Functor0()))(Data_Maybe.maybe(new Control_Monad_Rec_Class.Loop(Data_Unit.unit))(Control_Monad_Rec_Class.Done.create))(me);
-              })(Data_Unit.unit);
-          };
-      };
-  };
-  var fuseWithL = function (dictFunctor) {
-      return function (dictFunctor1) {
-          return function (dictFunctor2) {
-              return function (dictMonadRec) {
-                  return function (zap) {
-                      return function (fs) {
-                          return function (gs) {
-                              var go = function (v) {
-                                  return Control_Monad_Except_Trans.runExceptT(Control_Bind.bind(Control_Monad_Except_Trans.bindExceptT(dictMonadRec.Monad0()))(Control_Monad_Except_Trans.ExceptT(Control_Monad_Free_Trans.resume(dictFunctor)(dictMonadRec)(v.value0)))(function (v1) {
-                                      return Control_Bind.bind(Control_Monad_Except_Trans.bindExceptT(dictMonadRec.Monad0()))(Control_Monad_Except_Trans.ExceptT(Control_Monad_Free_Trans.resume(dictFunctor1)(dictMonadRec)(v.value1)))(function (v2) {
-                                          return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonadRec.Monad0()))(Data_Functor.map(dictFunctor2)(function (t) {
-                                              return Control_Monad_Free_Trans.freeT(function (v3) {
-                                                  return go(t);
-                                              });
-                                          })(zap(Data_Tuple.Tuple.create)(v1)(v2)));
-                                      });
-                                  }));
-                              };
-                              return Control_Monad_Free_Trans.freeT(function (v) {
-                                  return go(new Data_Tuple.Tuple(fs, gs));
-                              });
-                          };
-                      };
-                  };
-              };
-          };
-      };
-  };
-  var fuseWith = function (dictFunctor) {
-      return function (dictFunctor1) {
-          return function (dictFunctor2) {
-              return function (dictMonadRec) {
-                  return function (dictParallel) {
-                      return function (zap) {
-                          return function (fs) {
-                              return function (gs) {
-                                  var go = function (v) {
-                                      return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())(Control_Parallel_Class.sequential(dictParallel)(Control_Apply.apply((dictParallel.Applicative1()).Apply0())(Data_Functor.map(((dictParallel.Applicative1()).Apply0()).Functor0())(Control_Apply.lift2(Data_Either.applyEither)(zap(Data_Tuple.Tuple.create)))(Control_Parallel_Class.parallel(dictParallel)(Control_Monad_Free_Trans.resume(dictFunctor)(dictMonadRec)(v.value0))))(Control_Parallel_Class.parallel(dictParallel)(Control_Monad_Free_Trans.resume(dictFunctor1)(dictMonadRec)(v.value1)))))(function (v1) {
-                                          if (v1 instanceof Data_Either.Left) {
-                                              return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Data_Either.Left(v1.value0));
-                                          };
-                                          if (v1 instanceof Data_Either.Right) {
-                                              return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Data_Either.Right(Data_Functor.map(dictFunctor2)(function (t) {
-                                                  return Control_Monad_Free_Trans.freeT(function (v2) {
-                                                      return go(t);
-                                                  });
-                                              })(v1.value0)));
-                                          };
-                                          throw new Error("Failed pattern match at Control.Coroutine line 79, column 5 - line 81, column 63: " + [ v1.constructor.name ]);
-                                      });
-                                  };
-                                  return Control_Monad_Free_Trans.freeT(function (v) {
-                                      return go(new Data_Tuple.Tuple(fs, gs));
-                                  });
-                              };
-                          };
-                      };
-                  };
-              };
-          };
-      };
-  };
-  var functorAwait = new Data_Functor.Functor(Data_Profunctor.rmap(profunctorAwait));
-  var bifunctorEmit = new Data_Bifunctor.Bifunctor(function (f) {
-      return function (g) {
-          return function (v) {
-              return new Emit(f(v.value0), g(v.value1));
-          };
-      };
-  });
-  var functorEmit = new Data_Functor.Functor(Data_Bifunctor.rmap(bifunctorEmit));
-  var connect = function (dictMonadRec) {
-      return function (dictParallel) {
-          return fuseWith(functorEmit)(functorAwait)(Data_Identity.functorIdentity)(dictMonadRec)(dictParallel)(function (f) {
-              return function (v) {
-                  return function (v1) {
-                      return f(v.value1)(v1(v.value0));
-                  };
-              };
-          });
-      };
-  };
-  var emit = function (dictMonad) {
-      return function (o) {
-          return Control_Monad_Free_Trans.liftFreeT(functorEmit)(dictMonad)(new Emit(o, Data_Unit.unit));
-      };
-  };
-  var producer = function (dictMonad) {
-      return function (recv) {
-          return loop(functorEmit)(dictMonad)(Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(functorEmit)(dictMonad))(Control_Monad_Trans_Class.lift(Control_Monad_Free_Trans.monadTransFreeT(functorEmit))(dictMonad)(recv))(function (v) {
-              if (v instanceof Data_Either.Left) {
-                  return Data_Functor.voidLeft(Control_Monad_Free_Trans.functorFreeT(functorEmit)(((dictMonad.Bind1()).Apply0()).Functor0()))(emit(dictMonad)(v.value0))(Data_Maybe.Nothing.value);
-              };
-              if (v instanceof Data_Either.Right) {
-                  return Control_Applicative.pure(Control_Monad_Free_Trans.applicativeFreeT(functorEmit)(dictMonad))(new Data_Maybe.Just(v.value0));
-              };
-              throw new Error("Failed pattern match at Control.Coroutine line 125, column 3 - line 127, column 29: " + [ v.constructor.name ]);
-          }));
-      };
-  };
-  var pullFrom = function (dictMonadRec) {
-      return fuseWithL(functorAwait)(functorEmit)(Data_Identity.functorIdentity)(dictMonadRec)(function (f) {
-          return function (v) {
-              return function (v1) {
-                  return Control_Applicative.pure(Data_Identity.applicativeIdentity)(f(v(v1.value0))(v1.value1));
-              };
-          };
-      });
-  };
-  var $$await = function (dictMonad) {
-      return Control_Monad_Free_Trans.liftFreeT(functorAwait)(dictMonad)(Control_Category.identity(Control_Category.categoryFn));
-  };
-  exports["loop"] = loop;
-  exports["runProcess"] = runProcess;
-  exports["fuseWith"] = fuseWith;
-  exports["fuseWithL"] = fuseWithL;
-  exports["Emit"] = Emit;
-  exports["emit"] = emit;
-  exports["producer"] = producer;
-  exports["await"] = $$await;
-  exports["connect"] = connect;
-  exports["pullFrom"] = pullFrom;
-  exports["bifunctorEmit"] = bifunctorEmit;
-  exports["functorEmit"] = functorEmit;
-  exports["profunctorAwait"] = profunctorAwait;
-  exports["functorAwait"] = functorAwait;
-})(PS["Control.Coroutine"] = PS["Control.Coroutine"] || {});
-(function(exports) {
-  /* globals exports, setTimeout */
-  "use strict";
-
-  var AVar = function () {
-
-    function MutableQueue () {
-      this.head = null;
-      this.last = null;
-      this.size = 0;
-    }
-
-    function MutableCell (queue, value) {
-      this.queue = queue;
-      this.value = value;
-      this.next  = null;
-      this.prev  = null;
-    }
-
-    function AVar (value) {
-      this.draining = false;
-      this.error    = null;
-      this.value    = value;
-      this.takes    = new MutableQueue();
-      this.reads    = new MutableQueue();
-      this.puts     = new MutableQueue();
-    }
-
-    var EMPTY = {};
-
-    function runEff(eff) {
-      try {
-        eff();
-      } catch (error) {
-        setTimeout(function () {
-          throw error;
-        }, 0);
-      }
-    }
-
-    function putLast (queue, value) {
-      var cell = new MutableCell(queue, value);
-      switch (queue.size) {
-      case 0:
-        queue.head = cell;
-        break;
-      case 1:
-        cell.prev = queue.head;
-        queue.head.next = cell;
-        queue.last = cell;
-        break;
-      default:
-        cell.prev = queue.last;
-        queue.last.next = cell;
-        queue.last = cell;
-      }
-      queue.size++;
-      return cell;
-    }
-
-    function takeLast (queue) {
-      var cell;
-      switch (queue.size) {
-      case 0:
-        return null;
-      case 1:
-        cell = queue.head;
-        queue.head = null;
-        break;
-      case 2:
-        cell = queue.last;
-        queue.head.next = null;
-        queue.last = null;
-        break;
-      default:
-        cell = queue.last;
-        queue.last = cell.prev;
-        queue.last.next = null;
-      }
-      cell.prev = null;
-      cell.queue = null;
-      queue.size--;
-      return cell.value;
-    }
-
-    function takeHead (queue) {
-      var cell;
-      switch (queue.size) {
-      case 0:
-        return null;
-      case 1:
-        cell = queue.head;
-        queue.head = null;
-        break;
-      case 2:
-        cell = queue.head;
-        queue.last.prev = null;
-        queue.head = queue.last;
-        queue.last = null;
-        break;
-      default:
-        cell = queue.head;
-        queue.head = cell.next;
-        queue.head.prev = null;
-      }
-      cell.next = null;
-      cell.queue = null;
-      queue.size--;
-      return cell.value;
-    }
-
-    function deleteCell (cell) {
-      if (cell.queue === null) {
-        return;
-      }
-      if (cell.queue.last === cell) {
-        takeLast(cell.queue);
-        return;
-      }
-      if (cell.queue.head === cell) {
-        takeHead(cell.queue);
-        return;
-      }
-      if (cell.prev) {
-        cell.prev.next = cell.next;
-      }
-      if (cell.next) {
-        cell.next.prev = cell.prev;
-      }
-      cell.queue.size--;
-      cell.queue = null;
-      cell.value = null;
-      cell.next  = null;
-      cell.prev  = null;
-    }
-
-    function drainVar (util, avar) {
-      if (avar.draining) {
-        return;
-      }
-
-      var ps = avar.puts;
-      var ts = avar.takes;
-      var rs = avar.reads;
-      var p, r, t, value, rsize;
-
-      avar.draining = true;
-
-      while (1) { // eslint-disable-line no-constant-condition
-        p = null;
-        r = null;
-        t = null;
-        value = avar.value;
-        rsize = rs.size;
-
-        if (avar.error !== null) {
-          value = util.left(avar.error);
-          while (p = takeHead(ps)) { // eslint-disable-line no-cond-assign
-            runEff(p.cb(value));
-          }
-          while (r = takeHead(rs)) { // eslint-disable-line no-cond-assign
-            runEff(r(value));
-          }
-          while (t = takeHead(ts)) { // eslint-disable-line no-cond-assign
-            runEff(t(value));
-          }
-          break;
-        }
-
-        // Process the next put. We do not immediately invoke the callback
-        // because we want to preserve ordering. If there are takes/reads
-        // we want to run those first.
-        if (value === EMPTY && (p = takeHead(ps))) {
-          avar.value = value = p.value;
-        }
-
-        if (value !== EMPTY) {
-          // We go ahead and queue up the next take for the same reasons as
-          // above. Invoking the read callbacks can affect the mutable queue.
-          t = takeHead(ts);
-          // We only want to process the reads queued up before running these
-          // callbacks so we guard on rsize.
-          while (rsize-- && (r = takeHead(rs))) {
-            runEff(r(util.right(value)));
-          }
-          if (t !== null) {
-            avar.value = EMPTY;
-            runEff(t(util.right(value)));
-          }
-        }
-
-        if (p !== null) {
-          runEff(p.cb(util.right(void 0)));
-        }
-
-        // Callbacks could have queued up more items so we need to guard on the
-        // actual mutable properties.
-        if (avar.value === EMPTY && ps.size === 0 || avar.value !== EMPTY && ts.size === 0) {
-          break;
-        }
-      }
-      avar.draining = false;
-    }
-
-    AVar.EMPTY      = EMPTY;
-    AVar.putLast    = putLast;
-    AVar.takeLast   = takeLast;
-    AVar.takeHead   = takeHead;
-    AVar.deleteCell = deleteCell;
-    AVar.drainVar   = drainVar;
-
-    return AVar;
-  }();
-
-  exports.empty = function () {
-    return new AVar(AVar.EMPTY);
-  };
-
-  exports._killVar = function (util, error, avar) {
-    return function () {
-      if (avar.error === null) {
-        avar.error = error;
-        avar.value = AVar.EMPTY;
-        AVar.drainVar(util, avar);
-      }
-    };
-  };
-
-  exports._putVar = function (util, value, avar, cb) {
-    return function () {
-      var cell = AVar.putLast(avar.puts, { cb: cb, value: value });
-      AVar.drainVar(util, avar);
-      return function () {
-        AVar.deleteCell(cell);
-      };
-    };
-  };
-
-  exports._takeVar = function (util, avar, cb) {
-    return function () {
-      var cell = AVar.putLast(avar.takes, cb);
-      AVar.drainVar(util, avar);
-      return function () {
-        AVar.deleteCell(cell);
-      };
-    };
-  };
-})(PS["Effect.AVar"] = PS["Effect.AVar"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Effect.AVar"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Effect = PS["Effect"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Prelude = PS["Prelude"];                 
-  var Killed = (function () {
-      function Killed(value0) {
-          this.value0 = value0;
-      };
-      Killed.create = function (value0) {
-          return new Killed(value0);
-      };
-      return Killed;
-  })();
-  var Filled = (function () {
-      function Filled(value0) {
-          this.value0 = value0;
-      };
-      Filled.create = function (value0) {
-          return new Filled(value0);
-      };
-      return Filled;
-  })();
-  var Empty = (function () {
-      function Empty() {
-
-      };
-      Empty.value = new Empty();
-      return Empty;
-  })();
-  var ffiUtil = {
-      left: Data_Either.Left.create,
-      right: Data_Either.Right.create,
-      nothing: Data_Maybe.Nothing.value,
-      just: Data_Maybe.Just.create,
-      killed: Killed.create,
-      filled: Filled.create,
-      empty: Empty.value
-  };
-  var kill = function (err) {
-      return function (avar) {
-          return $foreign._killVar(ffiUtil, err, avar);
-      };
-  };
-  var put = function (value) {
-      return function (avar) {
-          return function (cb) {
-              return $foreign._putVar(ffiUtil, value, avar, cb);
-          };
-      };
-  };
-  var take = function (avar) {
-      return function (cb) {
-          return $foreign._takeVar(ffiUtil, avar, cb);
-      };
-  };
-  exports["Killed"] = Killed;
-  exports["Filled"] = Filled;
-  exports["Empty"] = Empty;
-  exports["take"] = take;
-  exports["put"] = put;
-  exports["kill"] = kill;
-  exports["empty"] = $foreign.empty;
-})(PS["Effect.AVar"] = PS["Effect.AVar"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Effect = PS["Effect"];
-  var Effect_AVar = PS["Effect.AVar"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Prelude = PS["Prelude"];
-  var take = function (avar) {
-      return Effect_Aff.makeAff(function (k) {
-          return function __do() {
-              var v = Effect_AVar.take(avar)(k)();
-              return Effect_Aff.effectCanceler(v);
-          };
-      });
-  };
-  var put = function (value) {
-      return function (avar) {
-          return Effect_Aff.makeAff(function (k) {
-              return function __do() {
-                  var v = Effect_AVar.put(value)(avar)(k)();
-                  return Effect_Aff.effectCanceler(v);
-              };
-          });
-      };
-  };
-  var kill = function (error) {
-      return function ($11) {
-          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_AVar.kill(error)($11));
-      };
-  };
-  var empty = Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_AVar.empty);
-  exports["empty"] = empty;
-  exports["take"] = take;
-  exports["put"] = put;
-  exports["kill"] = kill;
-})(PS["Effect.Aff.AVar"] = PS["Effect.Aff.AVar"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Coroutine = PS["Control.Coroutine"];
-  var Control_Monad_Free_Trans = PS["Control.Monad.Free.Trans"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_AVar = PS["Effect.Aff.AVar"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Prelude = PS["Prelude"];                 
-  var Listening = (function () {
-      function Listening() {
-
-      };
-      Listening.value = new Listening();
-      return Listening;
-  })();
-  var Done = (function () {
-      function Done() {
-
-      };
-      Done.value = new Done();
-      return Done;
-  })();
-  var unEventSource = function (v) {
-      return v;
-  };
-  var eqSubscribeStatus = new Data_Eq.Eq(function (x) {
-      return function (y) {
-          if (x instanceof Listening && y instanceof Listening) {
-              return true;
-          };
-          if (x instanceof Done && y instanceof Done) {
-              return true;
-          };
-          return false;
-      };
-  });
-  exports["Listening"] = Listening;
-  exports["Done"] = Done;
-  exports["unEventSource"] = unEventSource;
-  exports["eqSubscribeStatus"] = eqSubscribeStatus;
-})(PS["Halogen.Query.EventSource"] = PS["Halogen.Query.EventSource"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Category = PS["Control.Category"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var unFork = Unsafe_Coerce.unsafeCoerce;
-  exports["unFork"] = unFork;
-})(PS["Halogen.Query.ForkF"] = PS["Halogen.Query.ForkF"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Applicative_Free = PS["Control.Applicative.Free"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad = PS["Control.Monad"];
-  var Control_Monad_Free = PS["Control.Monad.Free"];
-  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
-  var Control_Parallel_Class = PS["Control.Parallel.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Coyoneda = PS["Data.Coyoneda"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Halogen_Query_EventSource = PS["Halogen.Query.EventSource"];
-  var Halogen_Query_ForkF = PS["Halogen.Query.ForkF"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM = PS["Web.DOM"];
-  var HalogenM = function (x) {
-      return x;
-  };
-  var State = (function () {
-      function State(value0) {
-          this.value0 = value0;
-      };
-      State.create = function (value0) {
-          return new State(value0);
-      };
-      return State;
-  })();
-  var Subscribe = (function () {
-      function Subscribe(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Subscribe.create = function (value0) {
-          return function (value1) {
-              return new Subscribe(value0, value1);
-          };
-      };
-      return Subscribe;
-  })();
-  var Lift = (function () {
-      function Lift(value0) {
-          this.value0 = value0;
-      };
-      Lift.create = function (value0) {
-          return new Lift(value0);
-      };
-      return Lift;
-  })();
-  var Halt = (function () {
-      function Halt(value0) {
-          this.value0 = value0;
-      };
-      Halt.create = function (value0) {
-          return new Halt(value0);
-      };
-      return Halt;
-  })();
-  var GetSlots = (function () {
-      function GetSlots(value0) {
-          this.value0 = value0;
-      };
-      GetSlots.create = function (value0) {
-          return new GetSlots(value0);
-      };
-      return GetSlots;
-  })();
-  var CheckSlot = (function () {
-      function CheckSlot(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      CheckSlot.create = function (value0) {
-          return function (value1) {
-              return new CheckSlot(value0, value1);
-          };
-      };
-      return CheckSlot;
-  })();
-  var ChildQuery = (function () {
-      function ChildQuery(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      ChildQuery.create = function (value0) {
-          return function (value1) {
-              return new ChildQuery(value0, value1);
-          };
-      };
-      return ChildQuery;
-  })();
-  var Raise = (function () {
-      function Raise(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      Raise.create = function (value0) {
-          return function (value1) {
-              return new Raise(value0, value1);
-          };
-      };
-      return Raise;
-  })();
-  var Par = (function () {
-      function Par(value0) {
-          this.value0 = value0;
-      };
-      Par.create = function (value0) {
-          return new Par(value0);
-      };
-      return Par;
-  })();
-  var Fork = (function () {
-      function Fork(value0) {
-          this.value0 = value0;
-      };
-      Fork.create = function (value0) {
-          return new Fork(value0);
-      };
-      return Fork;
-  })();
-  var GetRef = (function () {
-      function GetRef(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      GetRef.create = function (value0) {
-          return function (value1) {
-              return new GetRef(value0, value1);
-          };
-      };
-      return GetRef;
-  })();
-  var raise = function (o) {
-      return HalogenM(Control_Monad_Free.liftF(new Raise(o, Data_Unit.unit)));
-  };
-  var functorHalogenM = new Data_Functor.Functor(function (f) {
-      return function (v) {
-          return Data_Functor.map(Control_Monad_Free.freeFunctor)(f)(v);
-      };
-  });
-  var applyHalogenM = new Control_Apply.Apply(function () {
-      return functorHalogenM;
-  }, function (v) {
-      return function (v1) {
-          return Control_Apply.apply(Control_Monad_Free.freeApply)(v)(v1);
-      };
-  });
-  var bindHalogenM = new Control_Bind.Bind(function () {
-      return applyHalogenM;
-  }, function (v) {
-      return function (f) {
-          return Control_Bind.bind(Control_Monad_Free.freeBind)(v)(function (x) {
-              var v1 = f(x);
-              return v1;
-          });
-      };
-  });                                                       
-  var applicativeHalogenM = new Control_Applicative.Applicative(function () {
-      return applyHalogenM;
-  }, function (a) {
-      return Control_Applicative.pure(Control_Monad_Free.freeApplicative)(a);
-  });
-  var monadHalogenM = new Control_Monad.Monad(function () {
-      return applicativeHalogenM;
-  }, function () {
-      return bindHalogenM;
-  });
-  var monadEffectHalogenM = function (dictMonadEffect) {
-      return new Effect_Class.MonadEffect(function () {
-          return monadHalogenM;
-      }, function (eff) {
-          return HalogenM(Control_Monad_Free.liftF(Lift.create(Effect_Class.liftEffect(dictMonadEffect)(eff))));
-      });
-  };
-  var monadAffHalogenM = function (dictMonadAff) {
-      return new Effect_Aff_Class.MonadAff(function () {
-          return monadEffectHalogenM(dictMonadAff.MonadEffect0());
-      }, function (aff) {
-          return HalogenM(Control_Monad_Free.liftF(Lift.create(Effect_Aff_Class.liftAff(dictMonadAff)(aff))));
-      });
-  };
-  var monadStateHalogenM = new Control_Monad_State_Class.MonadState(function () {
-      return monadHalogenM;
-  }, function ($180) {
-      return HalogenM(Control_Monad_Free.liftF(State.create($180)));
-  });
-  exports["State"] = State;
-  exports["Subscribe"] = Subscribe;
-  exports["Lift"] = Lift;
-  exports["Halt"] = Halt;
-  exports["GetSlots"] = GetSlots;
-  exports["CheckSlot"] = CheckSlot;
-  exports["ChildQuery"] = ChildQuery;
-  exports["Raise"] = Raise;
-  exports["Par"] = Par;
-  exports["Fork"] = Fork;
-  exports["GetRef"] = GetRef;
-  exports["HalogenM"] = HalogenM;
-  exports["raise"] = raise;
-  exports["functorHalogenM"] = functorHalogenM;
-  exports["applyHalogenM"] = applyHalogenM;
-  exports["applicativeHalogenM"] = applicativeHalogenM;
-  exports["bindHalogenM"] = bindHalogenM;
-  exports["monadHalogenM"] = monadHalogenM;
-  exports["monadEffectHalogenM"] = monadEffectHalogenM;
-  exports["monadAffHalogenM"] = monadAffHalogenM;
-  exports["monadStateHalogenM"] = monadStateHalogenM;
-})(PS["Halogen.Query.HalogenM"] = PS["Halogen.Query.HalogenM"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Bifunctor = PS["Data.Bifunctor"];
-  var Data_Const = PS["Data.Const"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
-  var ComponentSlot = (function () {
-      function ComponentSlot(value0, value1, value2, value3, value4, value5) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-          this.value4 = value4;
-          this.value5 = value5;
-      };
-      ComponentSlot.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return function (value4) {
-                          return function (value5) {
-                              return new ComponentSlot(value0, value1, value2, value3, value4, value5);
-                          };
-                      };
-                  };
-              };
-          };
-      };
-      return ComponentSlot;
-  })();
-  var unComponentSlot = function (f) {
-      return function (cs) {
-          return f(cs.value0)(cs.value1)(cs.value2)(cs.value3)(cs.value4)(cs.value5);
-      };
-  };
-  var unComponent = Unsafe_Coerce.unsafeCoerce;
-  var mkComponentSlot = ComponentSlot.create;
-  var mkComponent = Unsafe_Coerce.unsafeCoerce;
-  var parentComponent = function (dictOrd) {
-      return function (spec) {
-          return mkComponent({
-              initialState: spec.initialState,
-              render: spec.render,
-              "eval": spec["eval"],
-              receiver: spec.receiver,
-              initializer: Data_Maybe.Nothing.value,
-              finalizer: Data_Maybe.Nothing.value,
-              mkOrdBox: Halogen_Data_OrdBox.mkOrdBox(dictOrd)
-          });
-      };
-  };
-  var lifecycleComponent = function (dictBifunctor) {
-      return function (spec) {
-          return mkComponent({
-              initialState: spec.initialState,
-              render: spec.render,
-              "eval": spec["eval"],
-              receiver: spec.receiver,
-              initializer: spec.initializer,
-              finalizer: spec.finalizer,
-              mkOrdBox: Halogen_Data_OrdBox.mkOrdBox(Data_Ord.ordVoid)
-          });
-      };
-  }; 
-  var component = function (dictBifunctor) {
-      return function (spec) {
-          return lifecycleComponent(dictBifunctor)({
-              initialState: spec.initialState,
-              render: spec.render,
-              "eval": spec["eval"],
-              receiver: spec.receiver,
-              initializer: Data_Maybe.Nothing.value,
-              finalizer: Data_Maybe.Nothing.value
-          });
-      };
-  };
-  exports["mkComponent"] = mkComponent;
-  exports["unComponent"] = unComponent;
-  exports["component"] = component;
-  exports["lifecycleComponent"] = lifecycleComponent;
-  exports["parentComponent"] = parentComponent;
-  exports["mkComponentSlot"] = mkComponentSlot;
-  exports["unComponentSlot"] = unComponentSlot;
-})(PS["Halogen.Component"] = PS["Halogen.Component"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed = PS["DOM.HTML.Indexed"];
-  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
-  var DOM_HTML_Indexed_FormMethod = PS["DOM.HTML.Indexed.FormMethod"];
-  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
-  var DOM_HTML_Indexed_MenuType = PS["DOM.HTML.Indexed.MenuType"];
-  var DOM_HTML_Indexed_MenuitemType = PS["DOM.HTML.Indexed.MenuitemType"];
-  var DOM_HTML_Indexed_OnOff = PS["DOM.HTML.Indexed.OnOff"];
-  var DOM_HTML_Indexed_OrderedListType = PS["DOM.HTML.Indexed.OrderedListType"];
-  var DOM_HTML_Indexed_PreloadValue = PS["DOM.HTML.Indexed.PreloadValue"];
-  var DOM_HTML_Indexed_StepValue = PS["DOM.HTML.Indexed.StepValue"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_MediaType = PS["Data.MediaType"];
-  var Data_Newtype = PS["Data.Newtype"];
-  var Data_String = PS["Data.String"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_Unit = PS["Data.Unit"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Halogen_VDom_DOM_Prop = PS["Halogen.VDom.DOM.Prop"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var prop = function (dictIsProp) {
-      return Halogen_HTML_Core.prop(dictIsProp);
-  };                                                    
-  var required = prop(Halogen_HTML_Core.booleanIsProp)("required");
-  var rows = prop(Halogen_HTML_Core.intIsProp)("rows");        
-  var target = prop(Halogen_HTML_Core.stringIsProp)("target");
-  var title = prop(Halogen_HTML_Core.stringIsProp)("title");
-  var type_ = function (dictIsProp) {
-      return prop(dictIsProp)("type");
-  };
-  var value = prop(Halogen_HTML_Core.stringIsProp)("value");
-  var name = prop(Halogen_HTML_Core.stringIsProp)("name"); 
-  var id_ = prop(Halogen_HTML_Core.stringIsProp)("id");
-  var href = prop(Halogen_HTML_Core.stringIsProp)("href");
-  var $$for = prop(Halogen_HTML_Core.stringIsProp)("htmlFor");
-  var class_ = function ($13) {
-      return prop(Halogen_HTML_Core.stringIsProp)("className")(Data_Newtype.unwrap(Halogen_HTML_Core.newtypeClassName)($13));
-  };
-  var checked = prop(Halogen_HTML_Core.booleanIsProp)("checked");    
-  var autocomplete = function ($14) {
-      return prop(Halogen_HTML_Core.onOffIsProp)("autocomplete")((function (b) {
-          if (b) {
-              return DOM_HTML_Indexed_OnOff.On.value;
-          };
-          return DOM_HTML_Indexed_OnOff.Off.value;
-      })($14));
-  };
-  var attr = Halogen_HTML_Core.attr(Data_Maybe.Nothing.value);
-  exports["prop"] = prop;
-  exports["attr"] = attr;
-  exports["class_"] = class_;
-  exports["rows"] = rows;
-  exports["for"] = $$for;
-  exports["href"] = href;
-  exports["id_"] = id_;
-  exports["name"] = name;
-  exports["target"] = target;
-  exports["title"] = title;
-  exports["type_"] = type_;
-  exports["value"] = value;
-  exports["required"] = required;
-  exports["checked"] = checked;
-  exports["autocomplete"] = autocomplete;
-})(PS["Halogen.HTML.Properties"] = PS["Halogen.HTML.Properties"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed = PS["DOM.HTML.Indexed"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Halogen_VDom = PS["Halogen.VDom"];
-  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var element = Halogen_HTML_Core.element(Data_Maybe.Nothing.value);
-  var form = element("form");
-  var input = function (props) {
-      return element("input")(props)([  ]);
-  };                   
-  var label = element("label");
-  var p = element("p");
-  var span = element("span");
-  var table = element("table");
-  var table_ = table([  ]);
-  var tbody = element("tbody");
-  var tbody_ = tbody([  ]);
-  var td = element("td");
-  var td_ = td([  ]);
-  var textarea = function (es) {
-      return element("textarea")(es)([  ]);
-  };                       
-  var tr = element("tr");
-  var tr_ = tr([  ]);
-  var div = element("div");
-  var div_ = div([  ]);
-  var button = element("button");
-  var br = function (props) {
-      return element("br")(props)([  ]);
-  };
-  var br_ = br([  ]);    
-  var a = element("a");
-  exports["element"] = element;
-  exports["a"] = a;
-  exports["br"] = br;
-  exports["br_"] = br_;
-  exports["button"] = button;
-  exports["div"] = div;
-  exports["div_"] = div_;
-  exports["form"] = form;
-  exports["input"] = input;
-  exports["label"] = label;
-  exports["p"] = p;
-  exports["span"] = span;
-  exports["table"] = table;
-  exports["table_"] = table_;
-  exports["tbody"] = tbody;
-  exports["tbody_"] = tbody_;
-  exports["td"] = td;
-  exports["td_"] = td_;
-  exports["textarea"] = textarea;
-  exports["tr"] = tr;
-  exports["tr_"] = tr_;
-})(PS["Halogen.HTML.Elements"] = PS["Halogen.HTML.Elements"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_Component_ChildPath = PS["Halogen.Component.ChildPath"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var slot = function (p) {
-      return function (component) {
-          return function (input) {
-              return function (outputQuery) {
-                  var f = Halogen_Component.unComponent(function (v) {
-                      return v.receiver;
-                  })(component);
-                  return Halogen_HTML_Core.slot(Halogen_Component.mkComponentSlot(p)(component)(input)(f)(outputQuery)(Data_Maybe.Just.create));
-              };
-          };
-      };
-  };
-  exports["slot"] = slot;
-})(PS["Halogen.HTML"] = PS["Halogen.HTML"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Apply = PS["Control.Apply"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Lazy = PS["Data.List.Lazy"];
-  var Data_List_Lazy_Types = PS["Data.List.Lazy.Types"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];                 
-  var Leaf = (function () {
-      function Leaf() {
-
-      };
-      Leaf.value = new Leaf();
-      return Leaf;
-  })();
-  var Two = (function () {
-      function Two(value0, value1, value2, value3) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-      };
-      Two.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return new Two(value0, value1, value2, value3);
-                  };
-              };
-          };
-      };
-      return Two;
-  })();
-  var Three = (function () {
-      function Three(value0, value1, value2, value3, value4, value5, value6) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-          this.value4 = value4;
-          this.value5 = value5;
-          this.value6 = value6;
-      };
-      Three.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return function (value4) {
-                          return function (value5) {
-                              return function (value6) {
-                                  return new Three(value0, value1, value2, value3, value4, value5, value6);
-                              };
-                          };
-                      };
-                  };
-              };
-          };
-      };
-      return Three;
-  })();
-  var TwoLeft = (function () {
-      function TwoLeft(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      TwoLeft.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new TwoLeft(value0, value1, value2);
-              };
-          };
-      };
-      return TwoLeft;
-  })();
-  var TwoRight = (function () {
-      function TwoRight(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      TwoRight.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new TwoRight(value0, value1, value2);
-              };
-          };
-      };
-      return TwoRight;
-  })();
-  var ThreeLeft = (function () {
-      function ThreeLeft(value0, value1, value2, value3, value4, value5) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-          this.value4 = value4;
-          this.value5 = value5;
-      };
-      ThreeLeft.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return function (value4) {
-                          return function (value5) {
-                              return new ThreeLeft(value0, value1, value2, value3, value4, value5);
-                          };
-                      };
-                  };
-              };
-          };
-      };
-      return ThreeLeft;
-  })();
-  var ThreeMiddle = (function () {
-      function ThreeMiddle(value0, value1, value2, value3, value4, value5) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-          this.value4 = value4;
-          this.value5 = value5;
-      };
-      ThreeMiddle.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return function (value4) {
-                          return function (value5) {
-                              return new ThreeMiddle(value0, value1, value2, value3, value4, value5);
-                          };
-                      };
-                  };
-              };
-          };
-      };
-      return ThreeMiddle;
-  })();
-  var ThreeRight = (function () {
-      function ThreeRight(value0, value1, value2, value3, value4, value5) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-          this.value4 = value4;
-          this.value5 = value5;
-      };
-      ThreeRight.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return function (value4) {
-                          return function (value5) {
-                              return new ThreeRight(value0, value1, value2, value3, value4, value5);
-                          };
-                      };
-                  };
-              };
-          };
-      };
-      return ThreeRight;
-  })();
-  var KickUp = (function () {
-      function KickUp(value0, value1, value2, value3) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-          this.value3 = value3;
-      };
-      KickUp.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return function (value3) {
-                      return new KickUp(value0, value1, value2, value3);
-                  };
-              };
-          };
-      };
-      return KickUp;
-  })();
-  var values = function (v) {
-      if (v instanceof Leaf) {
-          return Data_List_Types.Nil.value;
-      };
-      if (v instanceof Two) {
-          return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(values(v.value3)));
-      };
-      if (v instanceof Three) {
-          return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value5))(values(v.value6)))));
-      };
-      throw new Error("Failed pattern match at Data.Map.Internal line 594, column 1 - line 594, column 40: " + [ v.constructor.name ]);
-  };
-  var lookup = function (dictOrd) {
-      return function (k) {
-          var comp = Data_Ord.compare(dictOrd);
-          var go = function ($copy_v) {
-              var $tco_done = false;
-              var $tco_result;
-              function $tco_loop(v) {
-                  if (v instanceof Leaf) {
-                      $tco_done = true;
-                      return Data_Maybe.Nothing.value;
-                  };
-                  if (v instanceof Two) {
-                      var v2 = comp(k)(v.value1);
-                      if (v2 instanceof Data_Ordering.EQ) {
-                          $tco_done = true;
-                          return new Data_Maybe.Just(v.value2);
-                      };
-                      if (v2 instanceof Data_Ordering.LT) {
-                          $copy_v = v.value0;
-                          return;
-                      };
-                      $copy_v = v.value3;
-                      return;
-                  };
-                  if (v instanceof Three) {
-                      var v3 = comp(k)(v.value1);
-                      if (v3 instanceof Data_Ordering.EQ) {
-                          $tco_done = true;
-                          return new Data_Maybe.Just(v.value2);
-                      };
-                      var v4 = comp(k)(v.value4);
-                      if (v4 instanceof Data_Ordering.EQ) {
-                          $tco_done = true;
-                          return new Data_Maybe.Just(v.value5);
-                      };
-                      if (v3 instanceof Data_Ordering.LT) {
-                          $copy_v = v.value0;
-                          return;
-                      };
-                      if (v4 instanceof Data_Ordering.GT) {
-                          $copy_v = v.value6;
-                          return;
-                      };
-                      $copy_v = v.value3;
-                      return;
-                  };
-                  throw new Error("Failed pattern match at Data.Map.Internal line 193, column 5 - line 193, column 22: " + [ v.constructor.name ]);
-              };
-              while (!$tco_done) {
-                  $tco_result = $tco_loop($copy_v);
-              };
-              return $tco_result;
-          };
-          return go;
-      };
-  };
-  var member = function (dictOrd) {
-      return function (k) {
-          return function (m) {
-              return Data_Maybe.isJust(lookup(dictOrd)(k)(m));
-          };
-      };
-  };
-  var keys = function (v) {
-      if (v instanceof Leaf) {
-          return Data_List_Types.Nil.value;
-      };
-      if (v instanceof Two) {
-          return Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value1))(keys(v.value3)));
-      };
-      if (v instanceof Three) {
-          return Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value1))(Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value4))(keys(v.value6)))));
-      };
-      throw new Error("Failed pattern match at Data.Map.Internal line 588, column 1 - line 588, column 38: " + [ v.constructor.name ]);
-  };
-  var functorMap = new Data_Functor.Functor(function (v) {
-      return function (v1) {
-          if (v1 instanceof Leaf) {
-              return Leaf.value;
-          };
-          if (v1 instanceof Two) {
-              return new Two(Data_Functor.map(functorMap)(v)(v1.value0), v1.value1, v(v1.value2), Data_Functor.map(functorMap)(v)(v1.value3));
-          };
-          if (v1 instanceof Three) {
-              return new Three(Data_Functor.map(functorMap)(v)(v1.value0), v1.value1, v(v1.value2), Data_Functor.map(functorMap)(v)(v1.value3), v1.value4, v(v1.value5), Data_Functor.map(functorMap)(v)(v1.value6));
-          };
-          throw new Error("Failed pattern match at Data.Map.Internal line 89, column 1 - line 89, column 39: " + [ v.constructor.name, v1.constructor.name ]);
-      };
-  });
-  var fromZipper = function ($copy_dictOrd) {
-      return function ($copy_v) {
-          return function ($copy_tree) {
-              var $tco_var_dictOrd = $copy_dictOrd;
-              var $tco_var_v = $copy_v;
-              var $tco_done = false;
-              var $tco_result;
-              function $tco_loop(dictOrd, v, tree) {
-                  if (v instanceof Data_List_Types.Nil) {
-                      $tco_done = true;
-                      return tree;
-                  };
-                  if (v instanceof Data_List_Types.Cons) {
-                      if (v.value0 instanceof TwoLeft) {
-                          $tco_var_dictOrd = dictOrd;
-                          $tco_var_v = v.value1;
-                          $copy_tree = new Two(tree, v.value0.value0, v.value0.value1, v.value0.value2);
-                          return;
-                      };
-                      if (v.value0 instanceof TwoRight) {
-                          $tco_var_dictOrd = dictOrd;
-                          $tco_var_v = v.value1;
-                          $copy_tree = new Two(v.value0.value0, v.value0.value1, v.value0.value2, tree);
-                          return;
-                      };
-                      if (v.value0 instanceof ThreeLeft) {
-                          $tco_var_dictOrd = dictOrd;
-                          $tco_var_v = v.value1;
-                          $copy_tree = new Three(tree, v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5);
-                          return;
-                      };
-                      if (v.value0 instanceof ThreeMiddle) {
-                          $tco_var_dictOrd = dictOrd;
-                          $tco_var_v = v.value1;
-                          $copy_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, tree, v.value0.value3, v.value0.value4, v.value0.value5);
-                          return;
-                      };
-                      if (v.value0 instanceof ThreeRight) {
-                          $tco_var_dictOrd = dictOrd;
-                          $tco_var_v = v.value1;
-                          $copy_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5, tree);
-                          return;
-                      };
-                      throw new Error("Failed pattern match at Data.Map.Internal line 411, column 3 - line 416, column 88: " + [ v.value0.constructor.name ]);
-                  };
-                  throw new Error("Failed pattern match at Data.Map.Internal line 408, column 1 - line 408, column 80: " + [ v.constructor.name, tree.constructor.name ]);
-              };
-              while (!$tco_done) {
-                  $tco_result = $tco_loop($tco_var_dictOrd, $tco_var_v, $copy_tree);
-              };
-              return $tco_result;
-          };
-      };
-  };
-  var insert = function (dictOrd) {
-      return function (k) {
-          return function (v) {
-              var up = function ($copy_v1) {
-                  return function ($copy_v2) {
-                      var $tco_var_v1 = $copy_v1;
-                      var $tco_done = false;
-                      var $tco_result;
-                      function $tco_loop(v1, v2) {
-                          if (v1 instanceof Data_List_Types.Nil) {
-                              $tco_done = true;
-                              return new Two(v2.value0, v2.value1, v2.value2, v2.value3);
-                          };
-                          if (v1 instanceof Data_List_Types.Cons) {
-                              if (v1.value0 instanceof TwoLeft) {
-                                  $tco_done = true;
-                                  return fromZipper(dictOrd)(v1.value1)(new Three(v2.value0, v2.value1, v2.value2, v2.value3, v1.value0.value0, v1.value0.value1, v1.value0.value2));
-                              };
-                              if (v1.value0 instanceof TwoRight) {
-                                  $tco_done = true;
-                                  return fromZipper(dictOrd)(v1.value1)(new Three(v1.value0.value0, v1.value0.value1, v1.value0.value2, v2.value0, v2.value1, v2.value2, v2.value3));
-                              };
-                              if (v1.value0 instanceof ThreeLeft) {
-                                  $tco_var_v1 = v1.value1;
-                                  $copy_v2 = new KickUp(new Two(v2.value0, v2.value1, v2.value2, v2.value3), v1.value0.value0, v1.value0.value1, new Two(v1.value0.value2, v1.value0.value3, v1.value0.value4, v1.value0.value5));
-                                  return;
-                              };
-                              if (v1.value0 instanceof ThreeMiddle) {
-                                  $tco_var_v1 = v1.value1;
-                                  $copy_v2 = new KickUp(new Two(v1.value0.value0, v1.value0.value1, v1.value0.value2, v2.value0), v2.value1, v2.value2, new Two(v2.value3, v1.value0.value3, v1.value0.value4, v1.value0.value5));
-                                  return;
-                              };
-                              if (v1.value0 instanceof ThreeRight) {
-                                  $tco_var_v1 = v1.value1;
-                                  $copy_v2 = new KickUp(new Two(v1.value0.value0, v1.value0.value1, v1.value0.value2, v1.value0.value3), v1.value0.value4, v1.value0.value5, new Two(v2.value0, v2.value1, v2.value2, v2.value3));
-                                  return;
-                              };
-                              throw new Error("Failed pattern match at Data.Map.Internal line 447, column 5 - line 452, column 108: " + [ v1.value0.constructor.name, v2.constructor.name ]);
-                          };
-                          throw new Error("Failed pattern match at Data.Map.Internal line 444, column 3 - line 444, column 56: " + [ v1.constructor.name, v2.constructor.name ]);
-                      };
-                      while (!$tco_done) {
-                          $tco_result = $tco_loop($tco_var_v1, $copy_v2);
-                      };
-                      return $tco_result;
-                  };
-              };
-              var comp = Data_Ord.compare(dictOrd);
-              var down = function ($copy_ctx) {
-                  return function ($copy_v1) {
-                      var $tco_var_ctx = $copy_ctx;
-                      var $tco_done = false;
-                      var $tco_result;
-                      function $tco_loop(ctx, v1) {
-                          if (v1 instanceof Leaf) {
-                              $tco_done = true;
-                              return up(ctx)(new KickUp(Leaf.value, k, v, Leaf.value));
-                          };
-                          if (v1 instanceof Two) {
-                              var v2 = comp(k)(v1.value1);
-                              if (v2 instanceof Data_Ordering.EQ) {
-                                  $tco_done = true;
-                                  return fromZipper(dictOrd)(ctx)(new Two(v1.value0, k, v, v1.value3));
-                              };
-                              if (v2 instanceof Data_Ordering.LT) {
-                                  $tco_var_ctx = new Data_List_Types.Cons(new TwoLeft(v1.value1, v1.value2, v1.value3), ctx);
-                                  $copy_v1 = v1.value0;
-                                  return;
-                              };
-                              $tco_var_ctx = new Data_List_Types.Cons(new TwoRight(v1.value0, v1.value1, v1.value2), ctx);
-                              $copy_v1 = v1.value3;
-                              return;
-                          };
-                          if (v1 instanceof Three) {
-                              var v3 = comp(k)(v1.value1);
-                              if (v3 instanceof Data_Ordering.EQ) {
-                                  $tco_done = true;
-                                  return fromZipper(dictOrd)(ctx)(new Three(v1.value0, k, v, v1.value3, v1.value4, v1.value5, v1.value6));
-                              };
-                              var v4 = comp(k)(v1.value4);
-                              if (v4 instanceof Data_Ordering.EQ) {
-                                  $tco_done = true;
-                                  return fromZipper(dictOrd)(ctx)(new Three(v1.value0, v1.value1, v1.value2, v1.value3, k, v, v1.value6));
-                              };
-                              if (v3 instanceof Data_Ordering.LT) {
-                                  $tco_var_ctx = new Data_List_Types.Cons(new ThreeLeft(v1.value1, v1.value2, v1.value3, v1.value4, v1.value5, v1.value6), ctx);
-                                  $copy_v1 = v1.value0;
-                                  return;
-                              };
-                              if (v3 instanceof Data_Ordering.GT && v4 instanceof Data_Ordering.LT) {
-                                  $tco_var_ctx = new Data_List_Types.Cons(new ThreeMiddle(v1.value0, v1.value1, v1.value2, v1.value4, v1.value5, v1.value6), ctx);
-                                  $copy_v1 = v1.value3;
-                                  return;
-                              };
-                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeRight(v1.value0, v1.value1, v1.value2, v1.value3, v1.value4, v1.value5), ctx);
-                              $copy_v1 = v1.value6;
-                              return;
-                          };
-                          throw new Error("Failed pattern match at Data.Map.Internal line 427, column 3 - line 427, column 55: " + [ ctx.constructor.name, v1.constructor.name ]);
-                      };
-                      while (!$tco_done) {
-                          $tco_result = $tco_loop($tco_var_ctx, $copy_v1);
-                      };
-                      return $tco_result;
-                  };
-              };
-              return down(Data_List_Types.Nil.value);
-          };
-      };
-  };
-  var pop = function (dictOrd) {
-      return function (k) {
-          var up = function (ctxs) {
-              return function (tree) {
-                  if (ctxs instanceof Data_List_Types.Nil) {
-                      return tree;
-                  };
-                  if (ctxs instanceof Data_List_Types.Cons) {
-                      var $__unused = function (dictPartial1) {
-                          return function ($dollar55) {
-                              return $dollar55;
-                          };
-                      };
-                      return $__unused()((function () {
-                          if (ctxs.value0 instanceof TwoLeft && (ctxs.value0.value2 instanceof Leaf && tree instanceof Leaf)) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value));
-                          };
-                          if (ctxs.value0 instanceof TwoRight && (ctxs.value0.value0 instanceof Leaf && tree instanceof Leaf)) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value));
-                          };
-                          if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Two) {
-                              return up(ctxs.value1)(new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3));
-                          };
-                          if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Two) {
-                              return up(ctxs.value1)(new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree));
-                          };
-                          if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Three) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6)));
-                          };
-                          if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Three) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree)));
-                          };
-                          if (ctxs.value0 instanceof ThreeLeft && (ctxs.value0.value2 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));
-                          };
-                          if (ctxs.value0 instanceof ThreeMiddle && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));
-                          };
-                          if (ctxs.value0 instanceof ThreeRight && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value3 instanceof Leaf && tree instanceof Leaf))) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value4, ctxs.value0.value5, Leaf.value));
-                          };
-                          if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Two) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                          };
-                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Two) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                          };
-                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Two) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0, ctxs.value0.value5.value1, ctxs.value0.value5.value2, ctxs.value0.value5.value3)));
-                          };
-                          if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Two) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3, ctxs.value0.value4, ctxs.value0.value5, tree)));
-                          };
-                          if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Three) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                          };
-                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Three) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
-                          };
-                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Three) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0), ctxs.value0.value5.value1, ctxs.value0.value5.value2, new Two(ctxs.value0.value5.value3, ctxs.value0.value5.value4, ctxs.value0.value5.value5, ctxs.value0.value5.value6)));
-                          };
-                          if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Three) {
-                              return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3), ctxs.value0.value3.value4, ctxs.value0.value3.value5, new Two(ctxs.value0.value3.value6, ctxs.value0.value4, ctxs.value0.value5, tree)));
-                          };
-                          throw new Error("Failed pattern match at Data.Map.Internal line 497, column 9 - line 514, column 136: " + [ ctxs.value0.constructor.name, tree.constructor.name ]);
-                      })());
-                  };
-                  throw new Error("Failed pattern match at Data.Map.Internal line 494, column 5 - line 514, column 136: " + [ ctxs.constructor.name ]);
-              };
-          };
-          var removeMaxNode = function (ctx) {
-              return function (m) {
-                  var $__unused = function (dictPartial1) {
-                      return function ($dollar57) {
-                          return $dollar57;
-                      };
-                  };
-                  return $__unused()((function () {
-                      if (m instanceof Two && (m.value0 instanceof Leaf && m.value3 instanceof Leaf)) {
-                          return up(ctx)(Leaf.value);
-                      };
-                      if (m instanceof Two) {
-                          return removeMaxNode(new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx))(m.value3);
-                      };
-                      if (m instanceof Three && (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf))) {
-                          return up(new Data_List_Types.Cons(new TwoRight(Leaf.value, m.value1, m.value2), ctx))(Leaf.value);
-                      };
-                      if (m instanceof Three) {
-                          return removeMaxNode(new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx))(m.value6);
-                      };
-                      throw new Error("Failed pattern match at Data.Map.Internal line 526, column 5 - line 530, column 107: " + [ m.constructor.name ]);
-                  })());
-              };
-          };
-          var maxNode = function (m) {
-              var $__unused = function (dictPartial1) {
-                  return function ($dollar59) {
-                      return $dollar59;
-                  };
-              };
-              return $__unused()((function () {
-                  if (m instanceof Two && m.value3 instanceof Leaf) {
-                      return {
-                          key: m.value1,
-                          value: m.value2
-                      };
-                  };
-                  if (m instanceof Two) {
-                      return maxNode(m.value3);
-                  };
-                  if (m instanceof Three && m.value6 instanceof Leaf) {
-                      return {
-                          key: m.value4,
-                          value: m.value5
-                      };
-                  };
-                  if (m instanceof Three) {
-                      return maxNode(m.value6);
-                  };
-                  throw new Error("Failed pattern match at Data.Map.Internal line 517, column 33 - line 521, column 45: " + [ m.constructor.name ]);
-              })());
-          };
-          var comp = Data_Ord.compare(dictOrd);
-          var down = function ($copy_ctx) {
-              return function ($copy_m) {
-                  var $tco_var_ctx = $copy_ctx;
-                  var $tco_done = false;
-                  var $tco_result;
-                  function $tco_loop(ctx, m) {
-                      if (m instanceof Leaf) {
-                          $tco_done = true;
-                          return Data_Maybe.Nothing.value;
-                      };
-                      if (m instanceof Two) {
-                          var v = comp(k)(m.value1);
-                          if (m.value3 instanceof Leaf && v instanceof Data_Ordering.EQ) {
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, up(ctx)(Leaf.value)));
-                          };
-                          if (v instanceof Data_Ordering.EQ) {
-                              var max = maxNode(m.value0);
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new TwoLeft(max.key, max.value, m.value3), ctx))(m.value0)));
-                          };
-                          if (v instanceof Data_Ordering.LT) {
-                              $tco_var_ctx = new Data_List_Types.Cons(new TwoLeft(m.value1, m.value2, m.value3), ctx);
-                              $copy_m = m.value0;
-                              return;
-                          };
-                          $tco_var_ctx = new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx);
-                          $copy_m = m.value3;
-                          return;
-                      };
-                      if (m instanceof Three) {
-                          var leaves = (function () {
-                              if (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf)) {
-                                  return true;
-                              };
-                              return false;
-                          })();
-                          var v = comp(k)(m.value4);
-                          var v3 = comp(k)(m.value1);
-                          if (leaves && v3 instanceof Data_Ordering.EQ) {
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value4, m.value5, Leaf.value))));
-                          };
-                          if (leaves && v instanceof Data_Ordering.EQ) {
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value1, m.value2, Leaf.value))));
-                          };
-                          if (v3 instanceof Data_Ordering.EQ) {
-                              var max = maxNode(m.value0);
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new ThreeLeft(max.key, max.value, m.value3, m.value4, m.value5, m.value6), ctx))(m.value0)));
-                          };
-                          if (v instanceof Data_Ordering.EQ) {
-                              var max = maxNode(m.value3);
-                              $tco_done = true;
-                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, removeMaxNode(new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, max.key, max.value, m.value6), ctx))(m.value3)));
-                          };
-                          if (v3 instanceof Data_Ordering.LT) {
-                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeLeft(m.value1, m.value2, m.value3, m.value4, m.value5, m.value6), ctx);
-                              $copy_m = m.value0;
-                              return;
-                          };
-                          if (v3 instanceof Data_Ordering.GT && v instanceof Data_Ordering.LT) {
-                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, m.value4, m.value5, m.value6), ctx);
-                              $copy_m = m.value3;
-                              return;
-                          };
-                          $tco_var_ctx = new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx);
-                          $copy_m = m.value6;
-                          return;
-                      };
-                      throw new Error("Failed pattern match at Data.Map.Internal line 467, column 34 - line 490, column 80: " + [ m.constructor.name ]);
-                  };
-                  while (!$tco_done) {
-                      $tco_result = $tco_loop($tco_var_ctx, $copy_m);
-                  };
-                  return $tco_result;
-              };
-          };
-          return down(Data_List_Types.Nil.value);
-      };
-  };
-  var foldableMap = new Data_Foldable.Foldable(function (dictMonoid) {
-      return function (f) {
-          return function (m) {
-              return Data_Foldable.foldMap(Data_List_Types.foldableList)(dictMonoid)(f)(values(m));
-          };
-      };
-  }, function (f) {
-      return function (z) {
-          return function (m) {
-              return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(z)(values(m));
-          };
-      };
-  }, function (f) {
-      return function (z) {
-          return function (m) {
-              return Data_Foldable.foldr(Data_List_Types.foldableList)(f)(z)(values(m));
-          };
-      };
-  });
-  var empty = Leaf.value;
-  var $$delete = function (dictOrd) {
-      return function (k) {
-          return function (m) {
-              return Data_Maybe.maybe(m)(Data_Tuple.snd)(pop(dictOrd)(k)(m));
-          };
-      };
-  }; 
-  var alter = function (dictOrd) {
-      return function (f) {
-          return function (k) {
-              return function (m) {
-                  var v = f(lookup(dictOrd)(k)(m));
-                  if (v instanceof Data_Maybe.Nothing) {
-                      return $$delete(dictOrd)(k)(m);
-                  };
-                  if (v instanceof Data_Maybe.Just) {
-                      return insert(dictOrd)(k)(v.value0)(m);
-                  };
-                  throw new Error("Failed pattern match at Data.Map.Internal line 535, column 15 - line 537, column 25: " + [ v.constructor.name ]);
-              };
-          };
-      };
-  };
-  exports["empty"] = empty;
-  exports["insert"] = insert;
-  exports["lookup"] = lookup;
-  exports["delete"] = $$delete;
-  exports["pop"] = pop;
-  exports["member"] = member;
-  exports["alter"] = alter;
-  exports["keys"] = keys;
-  exports["values"] = values;
-  exports["functorMap"] = functorMap;
-  exports["foldableMap"] = foldableMap;
-})(PS["Data.Map.Internal"] = PS["Data.Map.Internal"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Monad_ST = PS["Control.Monad.ST"];
-  var Control_Monad_ST_Internal = PS["Control.Monad.ST.Internal"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Array_ST = PS["Data.Array.ST"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ordering = PS["Data.Ordering"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Data_Unit = PS["Data.Unit"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var toList = function (v) {
-      return Data_Map_Internal.keys(v);
-  };
-  var foldableSet = new Data_Foldable.Foldable(function (dictMonoid) {
-      return function (f) {
-          return function ($59) {
-              return Data_Foldable.foldMap(Data_List_Types.foldableList)(dictMonoid)(f)(toList($59));
-          };
-      };
-  }, function (f) {
-      return function (x) {
-          return function ($60) {
-              return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(x)(toList($60));
-          };
-      };
-  }, function (f) {
-      return function (x) {
-          return function ($61) {
-              return Data_Foldable.foldr(Data_List_Types.foldableList)(f)(x)(toList($61));
-          };
-      };
-  });
-  exports["foldableSet"] = foldableSet;
-})(PS["Data.Set"] = PS["Data.Set"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Set = PS["Data.Set"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
-  var keys = function ($0) {
-      return Data_Functor["void"](Data_Map_Internal.functorMap)($0);
-  };
-  exports["keys"] = keys;
-})(PS["Data.Map"] = PS["Data.Map"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Map = PS["Data.Map"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Halogen_Component_ChildPath = PS["Halogen.Component.ChildPath"];
-  var Halogen_Query_EventSource = PS["Halogen.Query.EventSource"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var action = function (act) {
-      return act(Data_Unit.unit);
-  };
-  exports["action"] = action;
-})(PS["Halogen.Query"] = PS["Halogen.Query"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var change = "change";
-  exports["change"] = change;
-})(PS["Web.HTML.Event.EventTypes"] = PS["Web.HTML.Event.EventTypes"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var click = "click";
-  exports["click"] = click;
-})(PS["Web.UIEvent.MouseEvent.EventTypes"] = PS["Web.UIEvent.MouseEvent.EventTypes"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Except = PS["Control.Monad.Except"];
-  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Identity = PS["Data.Identity"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Foreign = PS["Foreign"];
-  var Foreign_Index = PS["Foreign.Index"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query = PS["Halogen.Query"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_Clipboard_ClipboardEvent = PS["Web.Clipboard.ClipboardEvent"];
-  var Web_Clipboard_ClipboardEvent_EventTypes = PS["Web.Clipboard.ClipboardEvent.EventTypes"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_HTML_Event_DragEvent = PS["Web.HTML.Event.DragEvent"];
-  var Web_HTML_Event_DragEvent_EventTypes = PS["Web.HTML.Event.DragEvent.EventTypes"];
-  var Web_HTML_Event_EventTypes = PS["Web.HTML.Event.EventTypes"];
-  var Web_TouchEvent_TouchEvent = PS["Web.TouchEvent.TouchEvent"];
-  var Web_UIEvent_FocusEvent = PS["Web.UIEvent.FocusEvent"];
-  var Web_UIEvent_FocusEvent_EventTypes = PS["Web.UIEvent.FocusEvent.EventTypes"];
-  var Web_UIEvent_KeyboardEvent = PS["Web.UIEvent.KeyboardEvent"];
-  var Web_UIEvent_KeyboardEvent_EventTypes = PS["Web.UIEvent.KeyboardEvent.EventTypes"];
-  var Web_UIEvent_MouseEvent = PS["Web.UIEvent.MouseEvent"];
-  var Web_UIEvent_MouseEvent_EventTypes = PS["Web.UIEvent.MouseEvent.EventTypes"];
-  var Web_UIEvent_WheelEvent = PS["Web.UIEvent.WheelEvent"];
-  var Web_UIEvent_WheelEvent_EventTypes = PS["Web.UIEvent.WheelEvent.EventTypes"];
-  var mouseHandler = Unsafe_Coerce.unsafeCoerce;
-  var input_ = function (f) {
-      return function (v) {
-          return Data_Maybe.Just.create(Halogen_Query.action(f));
-      };
-  };
-  var input = function (f) {
-      return function (x) {
-          return Data_Maybe.Just.create(Halogen_Query.action(f(x)));
-      };
-  };
-  var handler = function (et) {
-      return function ($1) {
-          return Halogen_HTML_Core.handler(et)(Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Maybe.functorMaybe)(Halogen_Query_InputF.Query.create))($1));
-      };
-  };                                                       
-  var onClick = function ($2) {
-      return handler(Web_UIEvent_MouseEvent_EventTypes.click)(mouseHandler($2));
-  };                                                       
-  var onSubmit = handler("submit");
-  var addForeignPropHandler = function (key) {
-      return function (prop) {
-          return function (reader) {
-              return function (f) {
-                  var go = function (a) {
-                      return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(reader)(Foreign_Index.readProp(prop))(Foreign.unsafeToForeign(a));
-                  };
-                  return handler(key)(Control_Bind.composeKleisli(Data_Maybe.bindMaybe)(Web_Event_Event.currentTarget)(function (e) {
-                      return Data_Either.either(Data_Function["const"](Data_Maybe.Nothing.value))(f)(Control_Monad_Except.runExcept(go(e)));
-                  }));
-              };
-          };
-      };
-  };
-  var onChecked = addForeignPropHandler(Web_HTML_Event_EventTypes.change)("checked")(Foreign.readBoolean);              
-  var onValueChange = addForeignPropHandler(Web_HTML_Event_EventTypes.change)("value")(Foreign.readString);
-  exports["input"] = input;
-  exports["input_"] = input_;
-  exports["handler"] = handler;
-  exports["onSubmit"] = onSubmit;
-  exports["onClick"] = onClick;
-  exports["onValueChange"] = onValueChange;
-  exports["onChecked"] = onChecked;
-})(PS["Halogen.HTML.Events"] = PS["Halogen.HTML.Events"] || {});
-(function(exports) {
-    "use strict";
-  /* global Symbol */
-
-  var hasArrayFrom = typeof Array.from === "function";
-  var hasStringIterator =
-    typeof Symbol !== "undefined" &&
-    Symbol != null &&
-    typeof Symbol.iterator !== "undefined" &&
-    typeof String.prototype[Symbol.iterator] === "function";
-  var hasFromCodePoint = typeof String.prototype.fromCodePoint === "function";
-  var hasCodePointAt = typeof String.prototype.codePointAt === "function";
-
-  exports._unsafeCodePointAt0 = function (fallback) {
-    return hasCodePointAt
-      ? function (str) { return str.codePointAt(0); }
-      : fallback;
-  };
-
-  exports._singleton = function (fallback) {
-    return hasFromCodePoint ? String.fromCodePoint : fallback;
-  };
-
-  exports._take = function (fallback) {
-    return function (n) {
-      if (hasStringIterator) {
-        return function (str) {
-          var accum = "";
-          var iter = str[Symbol.iterator]();
-          for (var i = 0; i < n; ++i) {
-            var o = iter.next();
-            if (o.done) return accum;
-            accum += o.value;
-          }
-          return accum;
-        };
-      }
-      return fallback(n);
-    };
-  };
-
-  exports._toCodePointArray = function (fallback) {
-    return function (unsafeCodePointAt0) {
-      if (hasArrayFrom) {
-        return function (str) {
-          return Array.from(str, unsafeCodePointAt0);
-        };
-      }
-      return fallback;
-    };
-  };
-})(PS["Data.String.CodePoints"] = PS["Data.String.CodePoints"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Data.String.CodePoints"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Bounded = PS["Data.Bounded"];
-  var Data_Enum = PS["Data.Enum"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_EuclideanRing = PS["Data.EuclideanRing"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Int = PS["Data.Int"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Ring = PS["Data.Ring"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String_CodeUnits = PS["Data.String.CodeUnits"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_String_Unsafe = PS["Data.String.Unsafe"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unfoldable = PS["Data.Unfoldable"];
-  var Prelude = PS["Prelude"];
-  var unsurrogate = function (lead) {
-      return function (trail) {
-          return (((lead - 55296 | 0) * 1024 | 0) + (trail - 56320 | 0) | 0) + 65536 | 0;
-      };
-  }; 
-  var isTrail = function (cu) {
-      return 56320 <= cu && cu <= 57343;
-  };
-  var isLead = function (cu) {
-      return 55296 <= cu && cu <= 56319;
-  };
-  var uncons = function (s) {
-      var v = Data_String_CodeUnits.length(s);
-      if (v === 0) {
-          return Data_Maybe.Nothing.value;
-      };
-      if (v === 1) {
-          return new Data_Maybe.Just({
-              head: Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s)),
-              tail: ""
-          });
-      };
-      var cu1 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(1)(s));
-      var cu0 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s));
-      var $21 = isLead(cu0) && isTrail(cu1);
-      if ($21) {
-          return new Data_Maybe.Just({
-              head: unsurrogate(cu0)(cu1),
-              tail: Data_String_CodeUnits.drop(2)(s)
-          });
-      };
-      return new Data_Maybe.Just({
-          head: cu0,
-          tail: Data_String_CodeUnits.drop(1)(s)
-      });
-  };
-  var unconsButWithTuple = function (s) {
-      return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
-          return new Data_Tuple.Tuple(v.head, v.tail);
-      })(uncons(s));
-  };
-  var toCodePointArrayFallback = function (s) {
-      return Data_Unfoldable.unfoldr(Data_Unfoldable.unfoldableArray)(unconsButWithTuple)(s);
-  };
-  var unsafeCodePointAt0Fallback = function (s) {
-      var cu1 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(1)(s));
-      var cu0 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s));
-      var $25 = isLead(cu0) && isTrail(cu1);
-      if ($25) {
-          return unsurrogate(cu0)(cu1);
-      };
-      return cu0;
-  };
-  var unsafeCodePointAt0 = $foreign._unsafeCodePointAt0(unsafeCodePointAt0Fallback);
-  var toCodePointArray = $foreign._toCodePointArray(toCodePointArrayFallback)(unsafeCodePointAt0);
-  var length = function ($51) {
-      return Data_Array.length(toCodePointArray($51));
-  };
-  var fromCharCode = function ($52) {
-      return Data_String_CodeUnits.singleton(Data_Enum.toEnumWithDefaults(Data_Enum.boundedEnumChar)(Data_Bounded.bottom(Data_Bounded.boundedChar))(Data_Bounded.top(Data_Bounded.boundedChar))($52));
-  };
-  var singletonFallback = function (v) {
-      if (v <= 65535) {
-          return fromCharCode(v);
-      };
-      var lead = Data_EuclideanRing.div(Data_EuclideanRing.euclideanRingInt)(v - 65536 | 0)(1024) + 55296 | 0;
-      var trail = Data_EuclideanRing.mod(Data_EuclideanRing.euclideanRingInt)(v - 65536 | 0)(1024) + 56320 | 0;
-      return fromCharCode(lead) + fromCharCode(trail);
-  };                                                                       
-  var singleton = $foreign._singleton(singletonFallback);
-  var takeFallback = function (n) {
-      return function (v) {
-          if (n < 1) {
-              return "";
-          };
-          var v1 = uncons(v);
-          if (v1 instanceof Data_Maybe.Just) {
-              return singleton(v1.value0.head) + takeFallback(n - 1 | 0)(v1.value0.tail);
-          };
-          return v;
-      };
-  };
-  var take = $foreign._take(takeFallback);
-  var drop = function (n) {
-      return function (s) {
-          return Data_String_CodeUnits.drop(Data_String_CodeUnits.length(take(n)(s)))(s);
-      };
-  };
-  exports["singleton"] = singleton;
-  exports["toCodePointArray"] = toCodePointArray;
-  exports["uncons"] = uncons;
-  exports["length"] = length;
-  exports["take"] = take;
-  exports["drop"] = drop;
-})(PS["Data.String.CodePoints"] = PS["Data.String.CodePoints"] || {});
-(function(exports) {
-    "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Maybe_Trans = PS["Control.Monad.Maybe.Trans"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_String = PS["Data.String"];
-  var Data_String_CodePoints = PS["Data.String.CodePoints"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Effect = PS["Effect"];
-  var Global_Unsafe = PS["Global.Unsafe"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Partial_Unsafe = PS["Partial.Unsafe"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM = PS["Web.DOM"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_NodeList = PS["Web.DOM.NodeList"];
-  var Web_DOM_NonElementParentNode = PS["Web.DOM.NonElementParentNode"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];
-  var Web_HTML_Window = PS["Web.HTML.Window"];                 
-
-  // Halogen
-  var class_ = function ($54) {
-      return Halogen_HTML_Properties.class_(Halogen_HTML_Core.ClassName($54));
-  };
-  var attr = function (a) {
-      return Halogen_HTML_Properties.attr(a);
-  };
-  var _querySelectorAll = function (s) {
-      return function (n) {
-          return Control_Bind.bindFlipped(Effect.bindEffect)(Web_DOM_NodeList.toArray)(Web_DOM_ParentNode.querySelectorAll(s)(Web_DOM_Element.toParentNode(n)));
-      };
-  };
-  var _querySelector = function (s) {
-      return function (n) {
-          return Web_DOM_ParentNode.querySelector(s)(Web_DOM_Element.toParentNode(n));
-      };
-  };
-  var _queryBoth$prime$prime = function (v) {
-      return function (v1) {
-          return function (f) {
-              return function __do() {
-                  var v2 = _querySelectorAll(v.value0)(v.value1)();
-                  var v3 = _querySelectorAll(v1.value0)(v1.value1)();
-                  return f(v2)(v3)();
-              };
-          };
-      };
-  };
-  var _queryBoth$prime = function (v) {
-      return function (v1) {
-          return function (f) {
-              return function __do() {
-                  var v2 = _querySelector(v.value0)(v.value1)();
-                  var v3 = _querySelectorAll(v1.value0)(v1.value1)();
-                  return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(v2)(function (a) {
-                      return f(a)(v3);
-                  })();
-              };
-          };
-      };
-  };
-
-  // Util
-  var _queryBoth = function (v) {
-      return function (v1) {
-          return function (f) {
-              return function __do() {
-                  var v2 = _querySelector(v.value0)(v.value1)();
-                  var v3 = _querySelector(v1.value0)(v1.value1)();
-                  return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(v2)(function (a) {
-                      return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(v3)(function (b) {
-                          return f(a)(b);
-                      });
-                  })();
-              };
-          };
-      };
-  };
-  var _parseQueryString = function (srh) {
-      var decode = function ($55) {
-          return Global_Unsafe.unsafeDecodeURIComponent(Data_String_Common.replaceAll("+")(" ")($55));
-      };
-      var go = function (kv) {
-          var v = Data_String_Common.split("=")(kv);
-          if (v.length === 1) {
-              return new Data_Maybe.Just(new Data_Tuple.Tuple(decode(v[0]), Data_Maybe.Nothing.value));
-          };
-          if (v.length === 2) {
-              return new Data_Maybe.Just(new Data_Tuple.Tuple(decode(v[0]), new Data_Maybe.Just(decode(v[1]))));
-          };
-          return Data_Maybe.Nothing.value;
-      };
-      var qs = (function () {
-          var srh$prime = Data_String_CodePoints.take(1)(srh);
-          var $51 = srh$prime === "#" || srh$prime === "?";
-          if ($51) {
-              return Data_String_CodePoints.drop(1)(srh);
-          };
-          return srh;
-      })();
-      return Data_Array.mapMaybe(go)(Data_Array.filter(function (v) {
-          return v !== "";
-      })(Data_String_Common.split("&")(qs)));
-  };
-  var _mt_pure = function ($56) {
-      return Control_Monad_Maybe_Trans.MaybeT(Control_Applicative.pure(Effect.applicativeEffect)($56));
-  };
-  var _mt = Control_Monad_Maybe_Trans.MaybeT;
-  var _lookupQueryStringValue = function (qs) {
-      return function (k) {
-          return Control_Bind.join(Data_Maybe.bindMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Tuple.snd)(Data_Foldable.find(Data_Foldable.foldableArray)(function ($57) {
-              return (function (v) {
-                  return v === k;
-              })(Data_Tuple.fst($57));
-          })(qs)));
-      };
-  };
-  var _loc = Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.location)(Web_HTML.window);
-  var _getElementById = function (s) {
-      return function ($58) {
-          return Web_DOM_NonElementParentNode.getElementById(s)(Web_DOM_Document.toNonElementParentNode(Web_HTML_HTMLDocument.toDocument($58)));
-      };
-  };
-  var _fromNode = function (e) {
-      return Data_Maybe.fromJust()(Web_DOM_Element.fromNode(e));
-  };
-  var _fromElement = function (e) {
-      return Data_Maybe.fromJust()(Web_HTML_HTMLElement.fromElement(e));
-  };
-  var _doc = Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.document)(Web_HTML.window);
-  var _curQuerystring = function __do() {
-      var v = _loc();
-      var v1 = Web_HTML_Location.search(v)();
-      return _parseQueryString(v1);
-  };
-  var _body = Control_Bind.bindFlipped(Effect.bindEffect)(function ($59) {
-      return Control_Applicative.pure(Effect.applicativeEffect)(Data_Maybe.fromJust()($59));
-  })(Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_HTMLDocument.body)(_doc));
-  exports["class_"] = class_;
-  exports["attr"] = attr;
-  exports["_queryBoth"] = _queryBoth;
-  exports["_queryBoth'"] = _queryBoth$prime;
-  exports["_queryBoth''"] = _queryBoth$prime$prime;
-  exports["_querySelector"] = _querySelector;
-  exports["_querySelectorAll"] = _querySelectorAll;
-  exports["_fromNode"] = _fromNode;
-  exports["_fromElement"] = _fromElement;
-  exports["_getElementById"] = _getElementById;
-  exports["_doc"] = _doc;
-  exports["_loc"] = _loc;
-  exports["_curQuerystring"] = _curQuerystring;
-  exports["_parseQueryString"] = _parseQueryString;
-  exports["_lookupQueryStringValue"] = _lookupQueryStringValue;
-  exports["_body"] = _body;
-  exports["_mt"] = _mt;
-  exports["_mt_pure"] = _mt_pure;
-})(PS["Util"] = PS["Util"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var App = PS["App"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
-  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_String = PS["Data.String"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Globals = PS["Globals"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Util = PS["Util"];
-  var Web_Event_Event = PS["Web.Event.Event"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_HTML_Location = PS["Web.HTML.Location"];                 
-  var Eurl = (function () {
-      function Eurl(value0) {
-          this.value0 = value0;
-      };
-      Eurl.create = function (value0) {
-          return new Eurl(value0);
-      };
-      return Eurl;
-  })();
-  var Etitle = (function () {
-      function Etitle(value0) {
-          this.value0 = value0;
-      };
-      Etitle.create = function (value0) {
-          return new Etitle(value0);
-      };
-      return Etitle;
-  })();
-  var Edescription = (function () {
-      function Edescription(value0) {
-          this.value0 = value0;
-      };
-      Edescription.create = function (value0) {
-          return new Edescription(value0);
-      };
-      return Edescription;
-  })();
-  var Etags = (function () {
-      function Etags(value0) {
-          this.value0 = value0;
-      };
-      Etags.create = function (value0) {
-          return new Etags(value0);
-      };
-      return Etags;
-  })();
-  var Eprivate = (function () {
-      function Eprivate(value0) {
-          this.value0 = value0;
-      };
-      Eprivate.create = function (value0) {
-          return new Eprivate(value0);
-      };
-      return Eprivate;
-  })();
-  var Etoread = (function () {
-      function Etoread(value0) {
-          this.value0 = value0;
-      };
-      Etoread.create = function (value0) {
-          return new Etoread(value0);
-      };
-      return Etoread;
-  })();
-  var BEditField = (function () {
-      function BEditField(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BEditField.create = function (value0) {
-          return function (value1) {
-              return new BEditField(value0, value1);
-          };
-      };
-      return BEditField;
-  })();
-  var BEditSubmit = (function () {
-      function BEditSubmit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BEditSubmit.create = function (value0) {
-          return function (value1) {
-              return new BEditSubmit(value0, value1);
-          };
-      };
-      return BEditSubmit;
-  })();
-  var BDeleteAsk = (function () {
-      function BDeleteAsk(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BDeleteAsk.create = function (value0) {
-          return function (value1) {
-              return new BDeleteAsk(value0, value1);
-          };
-      };
-      return BDeleteAsk;
-  })();
-  var BDestroy = (function () {
-      function BDestroy(value0) {
-          this.value0 = value0;
-      };
-      BDestroy.create = function (value0) {
-          return new BDestroy(value0);
-      };
-      return BDestroy;
-  })();
-  var addbmark = function (b$prime) {
-      var render = function (v) {
-          var toTextarea = function ($98) {
-              return Data_Array.drop(1)(Data_Foldable.foldMap(Data_Foldable.foldableArray)(Data_Monoid.monoidArray)(function (x) {
-                  return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];
-              })(Data_String_Common.split("\x0a")($98)));
-          };
-          var mmoment = Globals.mmoment8601(v.bm.time);
-          var display_exists = Halogen_HTML_Elements.div([ Util.class_("alert") ])([ Halogen_HTML_Core.text("previously saved\xa0"), Halogen_HTML_Elements.span([ Util.class_("when js-moment"), Halogen_HTML_Properties.title(Data_Maybe.maybe(v.bm.time)(Data_Tuple.snd)(mmoment)), Util.attr("data-iso8601")(v.bm.time) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe("\xa0")(Data_Tuple.fst)(mmoment)) ]), Halogen_HTML_Elements.div([ Util.class_("edit_links"), Util.attr("style")("display: inline-block; margin-left: 5px;") ])([ Halogen_HTML_Elements.div([ Util.class_("delete_link") ])([ Halogen_HTML_Elements.button(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(true))), Util.class_("delete") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(v.deleteAsk)([ Util.attr("hidden")("hidden") ])))([ Halogen_HTML_Core.text("delete") ]), Halogen_HTML_Elements.span(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Util.class_("confirm") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(!v.deleteAsk)([ Util.attr("hidden")("hidden") ])))([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(false))) ])([ Halogen_HTML_Core.text("cancel\xa0/\xa0") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDestroy.create)), Util.class_("destroy") ])([ Halogen_HTML_Core.text("destroy") ]) ]) ]) ]) ]);
-          var display_edit = Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(Halogen_HTML_Events.input(BEditSubmit.create)) ])([ Halogen_HTML_Elements.table_([ Halogen_HTML_Elements.tbody_([ Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([  ]), Halogen_HTML_Elements.td_(Data_Monoid.guard(Data_Monoid.monoidArray)(v.bm.bid > 0)([ display_exists ])) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("url") ])([ Halogen_HTML_Core.text("URL") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputUrl.value), Halogen_HTML_Properties.id_("url"), Util.class_("url"), Halogen_HTML_Properties.required(true), Halogen_HTML_Properties.name("url"), Util.attr("size")("70"), Halogen_HTML_Properties.value(v.edit_bm.url), Halogen_HTML_Events.onValueChange(function ($99) {
-              return Halogen_HTML_Events.input(BEditField.create)(Eurl.create($99));
-          }) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("title") ])([ Halogen_HTML_Core.text("title") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Halogen_HTML_Properties.id_("title"), Util.class_("title"), Halogen_HTML_Properties.name("title"), Util.attr("size")("70"), Halogen_HTML_Properties.value(v.edit_bm.title), Halogen_HTML_Events.onValueChange(function ($100) {
-              return Halogen_HTML_Events.input(BEditField.create)(Etitle.create($100));
-          }) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("description") ])([ Halogen_HTML_Core.text("description") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.textarea([ Util.class_("description"), Halogen_HTML_Properties.id_("description"), Halogen_HTML_Properties.name("description"), Util.attr("cols")("70"), Halogen_HTML_Properties.rows(4), Halogen_HTML_Properties.value(v.edit_bm.description), Halogen_HTML_Events.onValueChange(function ($101) {
-              return Halogen_HTML_Events.input(BEditField.create)(Edescription.create($101));
-          }) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("tags") ])([ Halogen_HTML_Core.text("tags") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Halogen_HTML_Properties.id_("tags"), Util.class_("tags"), Halogen_HTML_Properties.name("tags"), Util.attr("size")("70"), Halogen_HTML_Properties.autocomplete(false), Util.attr("autocapitalize")("off"), Halogen_HTML_Properties.value(v.edit_bm.tags), Halogen_HTML_Events.onValueChange(function ($102) {
-              return Halogen_HTML_Events.input(BEditField.create)(Etags.create($102));
-          }) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("private") ])([ Halogen_HTML_Core.text("private") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Halogen_HTML_Properties.id_("private"), Util.class_("private"), Halogen_HTML_Properties.name("private"), Halogen_HTML_Properties.checked(v["edit_bm"]["private"]), Halogen_HTML_Events.onChecked(function ($103) {
-              return Halogen_HTML_Events.input(BEditField.create)(Eprivate.create($103));
-          }) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("toread") ])([ Halogen_HTML_Core.text("read later") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Halogen_HTML_Properties.id_("toread"), Util.class_("toread"), Halogen_HTML_Properties.name("toread"), Halogen_HTML_Properties.checked(v.edit_bm.toread), Halogen_HTML_Events.onChecked(function ($104) {
-              return Halogen_HTML_Events.input(BEditField.create)(Etoread.create($104));
-          }) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([  ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_("submit"), Halogen_HTML_Properties.value((function () {
-              var $26 = v.bm.bid > 0;
-              if ($26) {
-                  return "update bookmark";
-              };
-              return "add bookmark";
-          })()) ]) ]) ]) ]) ]) ]);
-          var display_destroyed = Halogen_HTML_Elements.p([ Util.class_("error") ])([ Halogen_HTML_Core.text("you killed this bookmark") ]);
-          return Halogen_HTML_Elements.div_([ (function () {
-              var $27 = !v.destroyed;
-              if ($27) {
-                  return display_edit;
-              };
-              return display_destroyed;
-          })() ]);
-      };
-      var mkState = function (b) {
-          return {
-              bm: b,
-              edit_bm: b,
-              deleteAsk: false,
-              destroyed: false
-          };
-      };
-      var $$eval = function (v) {
-          if (v instanceof BDeleteAsk) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
-                  var $31 = {};
-                  for (var $32 in v1) {
-                      if ({}.hasOwnProperty.call(v1, $32)) {
-                          $31[$32] = v1[$32];
-                      };
-                  };
-                  $31.deleteAsk = v.value0;
-                  return $31;
-              }))(function () {
-                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-              });
-          };
-          if (v instanceof BDestroy) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
-                  return v1.bm.bid;
-              }))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroy(v1))))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v2) {
-                          var $37 = {};
-                          for (var $38 in v2) {
-                              if ({}.hasOwnProperty.call(v2, $38)) {
-                                  $37[$38] = v2[$38];
-                              };
-                          };
-                          $37.destroyed = true;
-                          return $37;
-                      }))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
-                      });
-                  });
-              });
-          };
-          if (v instanceof BEditField) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)((function () {
-                      if (v.value0 instanceof Eurl) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $46 = {};
-                              for (var $47 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $47)) {
-                                      $46[$47] = v1[$47];
-                                  };
-                              };
-                              $46.edit_bm = (function () {
-                                  var $43 = {};
-                                  for (var $44 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $44)) {
-                                          $43[$44] = v1["edit_bm"][$44];
-                                      };
-                                  };
-                                  $43.url = v.value0.value0;
-                                  return $43;
-                              })();
-                              return $46;
-                          })());
-                      };
-                      if (v.value0 instanceof Etitle) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $53 = {};
-                              for (var $54 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $54)) {
-                                      $53[$54] = v1[$54];
-                                  };
-                              };
-                              $53.edit_bm = (function () {
-                                  var $50 = {};
-                                  for (var $51 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $51)) {
-                                          $50[$51] = v1["edit_bm"][$51];
-                                      };
-                                  };
-                                  $50.title = v.value0.value0;
-                                  return $50;
-                              })();
-                              return $53;
-                          })());
-                      };
-                      if (v.value0 instanceof Edescription) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $60 = {};
-                              for (var $61 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $61)) {
-                                      $60[$61] = v1[$61];
-                                  };
-                              };
-                              $60.edit_bm = (function () {
-                                  var $57 = {};
-                                  for (var $58 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $58)) {
-                                          $57[$58] = v1["edit_bm"][$58];
-                                      };
-                                  };
-                                  $57.description = v.value0.value0;
-                                  return $57;
-                              })();
-                              return $60;
-                          })());
-                      };
-                      if (v.value0 instanceof Etags) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $67 = {};
-                              for (var $68 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $68)) {
-                                      $67[$68] = v1[$68];
-                                  };
-                              };
-                              $67.edit_bm = (function () {
-                                  var $64 = {};
-                                  for (var $65 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $65)) {
-                                          $64[$65] = v1["edit_bm"][$65];
-                                      };
-                                  };
-                                  $64.tags = v.value0.value0;
-                                  return $64;
-                              })();
-                              return $67;
-                          })());
-                      };
-                      if (v.value0 instanceof Eprivate) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $74 = {};
-                              for (var $75 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $75)) {
-                                      $74[$75] = v1[$75];
-                                  };
-                              };
-                              $74.edit_bm = (function () {
-                                  var $71 = {};
-                                  for (var $72 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $72)) {
-                                          $71[$72] = v1["edit_bm"][$72];
-                                      };
-                                  };
-                                  $71["private"] = v.value0.value0;
-                                  return $71;
-                              })();
-                              return $74;
-                          })());
-                      };
-                      if (v.value0 instanceof Etoread) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $81 = {};
-                              for (var $82 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $82)) {
-                                      $81[$82] = v1[$82];
-                                  };
-                              };
-                              $81.edit_bm = (function () {
-                                  var $78 = {};
-                                  for (var $79 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $79)) {
-                                          $78[$79] = v1["edit_bm"][$79];
-                                      };
-                                  };
-                                  $78.toread = v.value0.value0;
-                                  return $78;
-                              })();
-                              return $81;
-                          })());
-                      };
-                      throw new Error("Failed pattern match at Component.Add line 153, column 5 - line 159, column 68: " + [ v.value0.constructor.name ]);
-                  })())(function () {
-                      return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                  });
-              });
-          };
-          if (v instanceof BEditSubmit) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {
-                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editBookmark(v1.edit_bm))))(function () {
-                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $88 = {};
-                              for (var $89 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $89)) {
-                                      $88[$89] = v1[$89];
-                                  };
-                              };
-                              $88.bm = v1.edit_bm;
-                              return $88;
-                          })()))(function () {
-                              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util._loc))(function (v2) {
-                                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_HTML.window))(function (v3) {
-                                      return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util._curQuerystring))(function (v4) {
-                                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)((function () {
-                                              var v5 = Util._lookupQueryStringValue(v4)("next");
-                                              if (v5 instanceof Data_Maybe.Just) {
-                                                  return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_HTML_Location.setHref(v5.value0)(v2));
-                                              };
-                                              return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Globals.closeWindow(v3));
-                                          })())(function () {
-                                              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                                          });
-                                      });
-                                  });
-                              });
-                          });
-                      });
-                  });
-              });
-          };
-          throw new Error("Failed pattern match at Component.Add line 142, column 3 - line 142, column 58: " + [ v.constructor.name ]);
-      };
-      var app = Globals["app'"](Data_Unit.unit);
-      return Halogen_Component.component(Halogen_HTML_Core.bifunctorHTML)({
-          initialState: Data_Function["const"](mkState(b$prime)),
-          render: render,
-          "eval": $$eval,
-          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
-      });
-  };
-  exports["BEditField"] = BEditField;
-  exports["BEditSubmit"] = BEditSubmit;
-  exports["BDeleteAsk"] = BDeleteAsk;
-  exports["BDestroy"] = BDestroy;
-  exports["Eurl"] = Eurl;
-  exports["Etitle"] = Etitle;
-  exports["Edescription"] = Edescription;
-  exports["Etags"] = Etags;
-  exports["Eprivate"] = Eprivate;
-  exports["Etoread"] = Etoread;
-  exports["addbmark"] = addbmark;
-})(PS["Component.Add"] = PS["Component.Add"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var App = PS["App"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
-  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Monoid = PS["Data.Monoid"];
-  var Data_Semigroup = PS["Data.Semigroup"];
-  var Data_Show = PS["Data.Show"];
-  var Data_String = PS["Data.String"];
-  var Data_String_CodePoints = PS["Data.String.CodePoints"];
-  var Data_String_Common = PS["Data.String.Common"];
-  var Data_String_Pattern = PS["Data.String.Pattern"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_Class = PS["Effect.Aff.Class"];
-  var Effect_Class = PS["Effect.Class"];
-  var Globals = PS["Globals"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
-  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Util = PS["Util"];
-  var Web_Event_Event = PS["Web.Event.Event"];                 
-  var Eurl = (function () {
-      function Eurl(value0) {
-          this.value0 = value0;
-      };
-      Eurl.create = function (value0) {
-          return new Eurl(value0);
-      };
-      return Eurl;
-  })();
-  var Etitle = (function () {
-      function Etitle(value0) {
-          this.value0 = value0;
-      };
-      Etitle.create = function (value0) {
-          return new Etitle(value0);
-      };
-      return Etitle;
-  })();
-  var Edescription = (function () {
-      function Edescription(value0) {
-          this.value0 = value0;
-      };
-      Edescription.create = function (value0) {
-          return new Edescription(value0);
-      };
-      return Edescription;
-  })();
-  var Etags = (function () {
-      function Etags(value0) {
-          this.value0 = value0;
-      };
-      Etags.create = function (value0) {
-          return new Etags(value0);
-      };
-      return Etags;
-  })();
-  var Eprivate = (function () {
-      function Eprivate(value0) {
-          this.value0 = value0;
-      };
-      Eprivate.create = function (value0) {
-          return new Eprivate(value0);
-      };
-      return Eprivate;
-  })();
-  var Etoread = (function () {
-      function Etoread(value0) {
-          this.value0 = value0;
-      };
-      Etoread.create = function (value0) {
-          return new Etoread(value0);
-      };
-      return Etoread;
-  })();
-  var BStar = (function () {
-      function BStar(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BStar.create = function (value0) {
-          return function (value1) {
-              return new BStar(value0, value1);
-          };
-      };
-      return BStar;
-  })();
-  var BDeleteAsk = (function () {
-      function BDeleteAsk(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BDeleteAsk.create = function (value0) {
-          return function (value1) {
-              return new BDeleteAsk(value0, value1);
-          };
-      };
-      return BDeleteAsk;
-  })();
-  var BDestroy = (function () {
-      function BDestroy(value0) {
-          this.value0 = value0;
-      };
-      BDestroy.create = function (value0) {
-          return new BDestroy(value0);
-      };
-      return BDestroy;
-  })();
-  var BEdit = (function () {
-      function BEdit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BEdit.create = function (value0) {
-          return function (value1) {
-              return new BEdit(value0, value1);
-          };
-      };
-      return BEdit;
-  })();
-  var BEditField = (function () {
-      function BEditField(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BEditField.create = function (value0) {
-          return function (value1) {
-              return new BEditField(value0, value1);
-          };
-      };
-      return BEditField;
-  })();
-  var BEditSubmit = (function () {
-      function BEditSubmit(value0, value1) {
-          this.value0 = value0;
-          this.value1 = value1;
-      };
-      BEditSubmit.create = function (value0) {
-          return function (value1) {
-              return new BEditSubmit(value0, value1);
-          };
-      };
-      return BEditSubmit;
-  })();
-  var BMarkRead = (function () {
-      function BMarkRead(value0) {
-          this.value0 = value0;
-      };
-      BMarkRead.create = function (value0) {
-          return new BMarkRead(value0);
-      };
-      return BMarkRead;
-  })();
-  var BNotifyRemove = (function () {
-      function BNotifyRemove() {
-
-      };
-      BNotifyRemove.value = new BNotifyRemove();
-      return BNotifyRemove;
-  })();
-  var bmark = function (b$prime) {
-      var mkState = function (b) {
-          return {
-              bm: b,
-              edit_bm: b,
-              deleteAsk: false,
-              edit: false
-          };
-      };
-      var $$eval = function (v) {
-          if (v instanceof BStar) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.toggleStar(v1.bm.bid)((function () {
-                      if (v.value0) {
-                          return App.Star.value;
-                      };
-                      return App.UnStar.value;
-                  })())))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                          var $38 = {};
-                          for (var $39 in v1) {
-                              if ({}.hasOwnProperty.call(v1, $39)) {
-                                  $38[$39] = v1[$39];
-                              };
-                          };
-                          $38.bm = (function () {
-                              var $32 = {};
-                              for (var $33 in v1.bm) {
-                                  if ({}.hasOwnProperty.call(v1.bm, $33)) {
-                                      $32[$33] = v1["bm"][$33];
-                                  };
-                              };
-                              $32.selected = v.value0;
-                              return $32;
-                          })();
-                          $38.edit_bm = (function () {
-                              var $35 = {};
-                              for (var $36 in v1.edit_bm) {
-                                  if ({}.hasOwnProperty.call(v1.edit_bm, $36)) {
-                                      $35[$36] = v1["edit_bm"][$36];
-                                  };
-                              };
-                              $35.selected = v.value0;
-                              return $35;
-                          })();
-                          return $38;
-                      })()))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                      });
-                  });
-              });
-          };
-          if (v instanceof BDeleteAsk) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
-                  var $43 = {};
-                  for (var $44 in v1) {
-                      if ({}.hasOwnProperty.call(v1, $44)) {
-                          $43[$44] = v1[$44];
-                      };
-                  };
-                  $43.deleteAsk = v.value0;
-                  return $43;
-              }))(function () {
-                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-              });
-          };
-          if (v instanceof BDestroy) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
-                  return v1.bm.bid;
-              }))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroy(v1))))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Halogen_Query_HalogenM.raise(BNotifyRemove.value))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
-                      });
-                  });
-              });
-          };
-          if (v instanceof BMarkRead) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.markRead(v1.bm.bid))))(function () {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                          var $54 = {};
-                          for (var $55 in v1) {
-                              if ({}.hasOwnProperty.call(v1, $55)) {
-                                  $54[$55] = v1[$55];
-                              };
-                          };
-                          $54.bm = (function () {
-                              var $51 = {};
-                              for (var $52 in v1.bm) {
-                                  if ({}.hasOwnProperty.call(v1.bm, $52)) {
-                                      $51[$52] = v1["bm"][$52];
-                                  };
-                              };
-                              $51.toread = false;
-                              return $51;
-                          })();
-                          return $54;
-                      })()))(function () {
-                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
-                      });
-                  });
-              });
-          };
-          if (v instanceof BEdit) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                      var $59 = {};
-                      for (var $60 in v1) {
-                          if ({}.hasOwnProperty.call(v1, $60)) {
-                              $59[$60] = v1[$60];
-                          };
-                      };
-                      $59.edit = v.value0;
-                      $59.edit_bm = v1.bm;
-                      return $59;
-                  })()))(function () {
-                      return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                  });
-              });
-          };
-          if (v instanceof BEditField) {
-              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)((function () {
-                      if (v.value0 instanceof Eurl) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $69 = {};
-                              for (var $70 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $70)) {
-                                      $69[$70] = v1[$70];
-                                  };
-                              };
-                              $69.edit_bm = (function () {
-                                  var $66 = {};
-                                  for (var $67 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $67)) {
-                                          $66[$67] = v1["edit_bm"][$67];
-                                      };
-                                  };
-                                  $66.url = v.value0.value0;
-                                  return $66;
-                              })();
-                              return $69;
-                          })());
-                      };
-                      if (v.value0 instanceof Etitle) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $76 = {};
-                              for (var $77 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $77)) {
-                                      $76[$77] = v1[$77];
-                                  };
-                              };
-                              $76.edit_bm = (function () {
-                                  var $73 = {};
-                                  for (var $74 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $74)) {
-                                          $73[$74] = v1["edit_bm"][$74];
-                                      };
-                                  };
-                                  $73.title = v.value0.value0;
-                                  return $73;
-                              })();
-                              return $76;
-                          })());
-                      };
-                      if (v.value0 instanceof Edescription) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $83 = {};
-                              for (var $84 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $84)) {
-                                      $83[$84] = v1[$84];
-                                  };
-                              };
-                              $83.edit_bm = (function () {
-                                  var $80 = {};
-                                  for (var $81 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $81)) {
-                                          $80[$81] = v1["edit_bm"][$81];
-                                      };
-                                  };
-                                  $80.description = v.value0.value0;
-                                  return $80;
-                              })();
-                              return $83;
-                          })());
-                      };
-                      if (v.value0 instanceof Etags) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $90 = {};
-                              for (var $91 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $91)) {
-                                      $90[$91] = v1[$91];
-                                  };
-                              };
-                              $90.edit_bm = (function () {
-                                  var $87 = {};
-                                  for (var $88 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $88)) {
-                                          $87[$88] = v1["edit_bm"][$88];
-                                      };
-                                  };
-                                  $87.tags = v.value0.value0;
-                                  return $87;
-                              })();
-                              return $90;
-                          })());
-                      };
-                      if (v.value0 instanceof Eprivate) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $97 = {};
-                              for (var $98 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $98)) {
-                                      $97[$98] = v1[$98];
-                                  };
-                              };
-                              $97.edit_bm = (function () {
-                                  var $94 = {};
-                                  for (var $95 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $95)) {
-                                          $94[$95] = v1["edit_bm"][$95];
-                                      };
-                                  };
-                                  $94["private"] = v.value0.value0;
-                                  return $94;
-                              })();
-                              return $97;
-                          })());
-                      };
-                      if (v.value0 instanceof Etoread) {
-                          return Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $104 = {};
-                              for (var $105 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $105)) {
-                                      $104[$105] = v1[$105];
-                                  };
-                              };
-                              $104.edit_bm = (function () {
-                                  var $101 = {};
-                                  for (var $102 in v1.edit_bm) {
-                                      if ({}.hasOwnProperty.call(v1.edit_bm, $102)) {
-                                          $101[$102] = v1["edit_bm"][$102];
-                                      };
-                                  };
-                                  $101.toread = v.value0.value0;
-                                  return $101;
-                              })();
-                              return $104;
-                          })());
-                      };
-                      throw new Error("Failed pattern match at Component.BMark line 212, column 5 - line 218, column 68: " + [ v.value0.constructor.name ]);
-                  })())(function () {
-                      return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                  });
-              });
-          };
-          if (v instanceof BEditSubmit) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {
-                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editBookmark(v1.edit_bm))))(function () {
-                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
-                              var $111 = {};
-                              for (var $112 in v1) {
-                                  if ({}.hasOwnProperty.call(v1, $112)) {
-                                      $111[$112] = v1[$112];
-                                  };
-                              };
-                              $111.edit = false;
-                              $111.bm = v1.edit_bm;
-                              return $111;
-                          })()))(function () {
-                              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
-                          });
-                      });
-                  });
-              });
-          };
-          throw new Error("Failed pattern match at Component.BMark line 187, column 3 - line 187, column 62: " + [ v.constructor.name ]);
-      };
-      var app = Globals["app'"](Data_Unit.unit);
-      var render = function (v) {
-          var toTextarea = function ($121) {
-              return Data_Array.drop(1)(Data_Foldable.foldMap(Data_Foldable.foldableArray)(Data_Monoid.monoidArray)(function (x) {
-                  return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];
-              })(Data_String_Common.split("\x0a")($121)));
-          };
-          var star = Data_Monoid.guard(Data_Monoid.monoidArray)(app.dat.isowner)([ Halogen_HTML_Elements.div([ Util.class_("star" + Data_Monoid.guard(Data_Monoid.monoidString)(v.bm.selected)(" selected_star")) ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BStar.create(!v.bm.selected))) ])([ Halogen_HTML_Core.text("\u272d") ]) ]) ]);
-          var mmoment = Globals.mmoment8601(v.bm.time);
-          var links = Data_Monoid.guard(Data_Monoid.monoidArray)(app.dat.isowner)([ Halogen_HTML_Elements.div([ Util.class_("edit_links") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BEdit.create(true))), Util.class_("edit") ])([ Halogen_HTML_Core.text("edit\xa0\xa0") ]), Halogen_HTML_Elements.div([ Util.class_("delete_link") ])([ Halogen_HTML_Elements.button(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(true))), Util.class_("delete") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(v.deleteAsk)([ Util.attr("hidden")("hidden") ])))([ Halogen_HTML_Core.text("delete") ]), Halogen_HTML_Elements.span(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Util.class_("confirm") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(!v.deleteAsk)([ Util.attr("hidden")("hidden") ])))([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(false))) ])([ Halogen_HTML_Core.text("cancel\xa0/\xa0") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDestroy.create)), Util.class_("destroy") ])([ Halogen_HTML_Core.text("destroy") ]) ]) ]) ]), Halogen_HTML_Elements.div([ Util.class_("read") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(v.bm.toread)([ Halogen_HTML_Core.text("\xa0\xa0"), Halogen_HTML_Elements.button([ Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BMarkRead.create)), Util.class_("mark_read") ])([ Halogen_HTML_Core.text("mark as read") ]) ])) ]);
-          var linkToFilterTag = function (tag) {
-              return app.userR + ("/t:" + tag);
-          };
-          var linkToFilterSingle = function (bid) {
-              return app.userR + ("/b:" + Data_Show.show(Data_Show.showInt)(bid));
-          };
-          var display_edit = [ Halogen_HTML_Elements.div([ Util.class_("edit_bookmark_form active") ])([ Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(Halogen_HTML_Events.input(BEditSubmit.create)) ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputUrl.value), Util.class_("url edit_form_input"), Halogen_HTML_Properties.required(true), Halogen_HTML_Properties.name("url"), Halogen_HTML_Properties.value(v.edit_bm.url), Halogen_HTML_Events.onValueChange(function ($122) {
-              return Halogen_HTML_Events.input(BEditField.create)(Eurl.create($122));
-          }) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_("title edit_form_input"), Halogen_HTML_Properties.name("title"), Halogen_HTML_Properties.value(v.edit_bm.title), Halogen_HTML_Events.onValueChange(function ($123) {
-              return Halogen_HTML_Events.input(BEditField.create)(Etitle.create($123));
-          }) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.p([ Util.attr("style")("margin-top:10px;margin-bottom:5px;") ])([ Halogen_HTML_Core.text(" description:") ]), Halogen_HTML_Elements.textarea([ Util.class_("description edit_form_input"), Halogen_HTML_Properties.name("description"), Halogen_HTML_Properties.rows(5), Halogen_HTML_Properties.value(v.edit_bm.description), Halogen_HTML_Events.onValueChange(function ($124) {
-              return Halogen_HTML_Events.input(BEditField.create)(Edescription.create($124));
-          }) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_("tags_input_box") ])([ Halogen_HTML_Elements.p([ Util.attr("style")("margin-top:10px") ])([ Halogen_HTML_Core.text(" tags:"), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_("tags edit_form_input"), Halogen_HTML_Properties.name("tags"), Halogen_HTML_Properties.autocomplete(false), Util.attr("autocapitalize")("off"), Halogen_HTML_Properties.value(v.edit_bm.tags), Halogen_HTML_Events.onValueChange(function ($125) {
-              return Halogen_HTML_Events.input(BEditField.create)(Etags.create($125));
-          }) ]), Halogen_HTML_Elements.br_ ]) ]), Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_("edit_form_checkboxes") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_("private"), Halogen_HTML_Properties.id_("edit_private"), Halogen_HTML_Properties.name("private"), Halogen_HTML_Properties.checked(v["edit_bm"]["private"]), Halogen_HTML_Events.onChecked(function ($126) {
-              return Halogen_HTML_Events.input(BEditField.create)(Eprivate.create($126));
-          }) ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("edit_private") ])([ Halogen_HTML_Core.text("private") ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_("toread"), Halogen_HTML_Properties.id_("edit_toread"), Halogen_HTML_Properties.name("toread"), Halogen_HTML_Properties.checked(v.edit_bm.toread), Halogen_HTML_Events.onChecked(function ($127) {
-              return Halogen_HTML_Events.input(BEditField.create)(Etoread.create($127));
-          }) ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("edit_toread") ])([ Halogen_HTML_Core.text("toread") ]), Halogen_HTML_Elements.br_ ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_("submit edit-button"), Halogen_HTML_Properties.value("save") ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputReset.value), Util.class_("reset edit-button"), Halogen_HTML_Properties.value("cancel"), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BEdit.create(false))) ]) ]) ]) ];
-          var display = [ Halogen_HTML_Elements.div([ Util.class_("display") ])(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(v.bm.url), Halogen_HTML_Properties.target("_blank"), Util.class_("bookmark_title" + Data_Monoid.guard(Data_Monoid.monoidString)(v.bm.toread)(" unread")) ])([ Halogen_HTML_Core.text((function () {
-              var $117 = Data_String_Common["null"](v.bm.title);
-              if ($117) {
-                  return "[no title]";
-              };
-              return v.bm.title;
-          })()) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(v.bm.url), Util.class_("url_display") ])([ Halogen_HTML_Core.text(v.bm.url) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Util.class_("description") ])(toTextarea(v.bm.description)), Halogen_HTML_Elements.div([ Util.class_("tags") ])(Data_Monoid.guard(Data_Monoid.monoidFn(Data_Monoid.monoidFn(Data_Monoid.monoidArray)))(!Data_String_Common["null"](v.bm.tags))(Data_Functor.map(Data_Functor.functorArray))(function (tag) {
-              return Halogen_HTML_Elements.a([ Util.class_("tag" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_String_CodePoints.take(1)(tag) === ".")(" private")), Halogen_HTML_Properties.href(linkToFilterTag(tag)) ])([ Halogen_HTML_Core.text(tag) ]);
-          })(Data_String_Common.split(" ")(v.bm.tags))), Halogen_HTML_Elements.a([ Util.class_("when js-moment"), Halogen_HTML_Properties.title(Data_Maybe.maybe(v.bm.time)(Data_Tuple.snd)(mmoment)), Util.attr("data-iso8601")(v.bm.time), Halogen_HTML_Properties.href(linkToFilterSingle(v.bm.bid)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe("\xa0")(Data_Tuple.fst)(mmoment)) ]) ])(links)) ];
-          var clearBoth = [ Halogen_HTML_Elements.div([ Util.attr("style")("clear:both") ])([  ]) ];
-          var bookmark = Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_(Data_Show.show(Data_Show.showInt)(v.bm.bid)), Util.class_("bookmark" + Data_Monoid.guard(Data_Monoid.monoidString)(v["bm"]["private"])(" private")) ])(Data_Semigroup.append(Data_Semigroup.semigroupArray)(star)((function () {
-              if (v.edit) {
-                  return display_edit;
-              };
-              return Data_Semigroup.append(Data_Semigroup.semigroupArray)(display)(clearBoth);
-          })()));
-          return Halogen_HTML_Elements.div_(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ bookmark ])(clearBoth));
-      };
-      return Halogen_Component.component(Halogen_HTML_Core.bifunctorHTML)({
-          initialState: Data_Function["const"](mkState(b$prime)),
-          render: render,
-          "eval": $$eval,
-          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
-      });
-  };
-  exports["BStar"] = BStar;
-  exports["BDeleteAsk"] = BDeleteAsk;
-  exports["BDestroy"] = BDestroy;
-  exports["BEdit"] = BEdit;
-  exports["BEditField"] = BEditField;
-  exports["BEditSubmit"] = BEditSubmit;
-  exports["BMarkRead"] = BMarkRead;
-  exports["Eurl"] = Eurl;
-  exports["Etitle"] = Etitle;
-  exports["Edescription"] = Edescription;
-  exports["Etags"] = Etags;
-  exports["Eprivate"] = Eprivate;
-  exports["Etoread"] = Etoread;
-  exports["BNotifyRemove"] = BNotifyRemove;
-  exports["bmark"] = bmark;
-})(PS["Component.BMark"] = PS["Component.BMark"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Component_BMark = PS["Component.BMark"];
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML = PS["Halogen.HTML"];
-  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
-  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];                 
-  var HandleBMessage = (function () {
-      function HandleBMessage(value0, value1, value2) {
-          this.value0 = value0;
-          this.value1 = value1;
-          this.value2 = value2;
-      };
-      HandleBMessage.create = function (value0) {
-          return function (value1) {
-              return function (value2) {
-                  return new HandleBMessage(value0, value1, value2);
-              };
-          };
-      };
-      return HandleBMessage;
-  })();
-  var removeBookmark = function (bookmarkId) {
-      return function (st) {
-          return Data_Array.filter(function (b) {
-              return b.bid !== bookmarkId;
-          })(st);
-      };
-  };
-  var blist = function (st) {
-      var renderBookmark = function (b) {
-          return Halogen_HTML.slot(b.bid)(Component_BMark.bmark(b))(Data_Unit.unit)(Halogen_HTML_Events.input(HandleBMessage.create(b.bid)));
-      };
-      var render = function (bms) {
-          return Halogen_HTML_Elements.div_(Data_Functor.map(Data_Functor.functorArray)(renderBookmark)(bms));
-      };
-      var $$eval = function (v) {
-          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(removeBookmark(v.value0)))(function () {
-              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value2);
-          });
-      };
-      return Halogen_Component.parentComponent(Data_Ord.ordInt)({
-          initialState: Data_Function["const"](st),
-          render: render,
-          "eval": $$eval,
-          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
-      });
-  };
-  exports["HandleBMessage"] = HandleBMessage;
-  exports["blist"] = blist;
-  exports["removeBookmark"] = removeBookmark;
-})(PS["Component.BList"] = PS["Component.BList"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Reader_Trans = PS["Control.Monad.Reader.Trans"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Prelude = PS["Prelude"];
-  var MonadFork = function (Functor1, Monad0, fork, join, suspend) {
-      this.Functor1 = Functor1;
-      this.Monad0 = Monad0;
-      this.fork = fork;
-      this.join = join;
-      this.suspend = suspend;
-  };
-  var suspend = function (dict) {
-      return dict.suspend;
-  };
-  var monadForkAff = new MonadFork(function () {
-      return Effect_Aff.functorFiber;
-  }, function () {
-      return Effect_Aff.monadAff;
-  }, Effect_Aff.forkAff, Effect_Aff.joinFiber, Effect_Aff.suspendAff);
-  var join = function (dict) {
-      return dict.join;
-  };
-  var fork = function (dict) {
-      return dict.fork;
-  };
-  exports["fork"] = fork;
-  exports["join"] = join;
-  exports["suspend"] = suspend;
-  exports["MonadFork"] = MonadFork;
-  exports["monadForkAff"] = monadForkAff;
-})(PS["Control.Monad.Fork.Class"] = PS["Control.Monad.Fork.Class"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.warn = function (s) {
-    return function () {
-      console.warn(s);
-      return {};
-    };
-  };
-})(PS["Effect.Console"] = PS["Effect.Console"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Effect.Console"];
-  var Data_Show = PS["Data.Show"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  exports["warn"] = $foreign.warn;
-})(PS["Effect.Console"] = PS["Effect.Console"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Map = PS["Data.Map"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Coerce = PS["Unsafe.Coerce"];
-  var Web_DOM = PS["Web.DOM"];
-  var unRenderStateX = Unsafe_Coerce.unsafeCoerce;
-  var unDriverStateX = Unsafe_Coerce.unsafeCoerce;
-  var renderStateX_ = function (dictApplicative) {
-      return function (f) {
-          return unDriverStateX(function (st) {
-              return Data_Foldable.traverse_(dictApplicative)(Data_Foldable.foldableMaybe)(f)(st.rendering);
-          });
-      };
-  };
-  var mkRenderStateX = function (v) {
-      return Unsafe_Coerce.unsafeCoerce;
-  };
-  var renderStateX = function (dictFunctor) {
-      return function (f) {
-          return unDriverStateX(function (st) {
-              return mkRenderStateX(st.prjQuery)(f(st.rendering));
-          });
-      };
-  };
-  var mkDriverStateXRef = Unsafe_Coerce.unsafeCoerce;
-  var initDriverState = function (component) {
-      return function (input) {
-          return function (handler) {
-              return function (prjQuery) {
-                  return function (lchs) {
-                      return function __do() {
-                          var v = Effect_Ref["new"]({})();
-                          var v1 = Effect_Ref["new"](Data_Map_Internal.empty)();
-                          var v2 = Effect_Ref["new"](Data_Map_Internal.empty)();
-                          var v3 = Effect_Ref["new"](Data_Functor.voidLeft(Data_Maybe.functorMaybe)(component.initializer)(Data_List_Types.Nil.value))();
-                          var v4 = Effect_Ref["new"](new Data_Maybe.Just(Data_List_Types.Nil.value))();
-                          var v5 = Effect_Ref["new"](Data_Maybe.Nothing.value)();
-                          var v6 = Effect_Ref["new"](0)();
-                          var v7 = Effect_Ref["new"](new Data_Maybe.Just(Data_Map_Internal.empty))();
-                          var ds = {
-                              component: component,
-                              state: component.initialState(input),
-                              refs: Data_Map_Internal.empty,
-                              children: Data_Map_Internal.empty,
-                              childrenIn: v1,
-                              childrenOut: v2,
-                              selfRef: v,
-                              handler: handler,
-                              pendingQueries: v3,
-                              pendingOuts: v4,
-                              pendingHandlers: v5,
-                              rendering: Data_Maybe.Nothing.value,
-                              prjQuery: prjQuery,
-                              fresh: v6,
-                              subscriptions: v7,
-                              lifecycleHandlers: lchs
-                          };
-                          Effect_Ref.write(ds)(v)();
-                          return mkDriverStateXRef(v);
-                      };
-                  };
-              };
-          };
-      };
-  };
-  exports["unDriverStateX"] = unDriverStateX;
-  exports["mkDriverStateXRef"] = mkDriverStateXRef;
-  exports["renderStateX"] = renderStateX;
-  exports["renderStateX_"] = renderStateX_;
-  exports["unRenderStateX"] = unRenderStateX;
-  exports["initDriverState"] = initDriverState;
-})(PS["Halogen.Aff.Driver.State"] = PS["Halogen.Aff.Driver.State"] || {});
-(function(exports) {
-    "use strict";
-
-  exports.reallyUnsafeRefEq = function (a) {
-    return function (b) {
-      return a === b;
-    };
-  };
-})(PS["Unsafe.Reference"] = PS["Unsafe.Reference"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var $foreign = PS["Unsafe.Reference"]; 
-  var unsafeRefEq = $foreign.reallyUnsafeRefEq;
-  exports["unsafeRefEq"] = unsafeRefEq;
-})(PS["Unsafe.Reference"] = PS["Unsafe.Reference"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Applicative_Free = PS["Control.Applicative.Free"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Coroutine = PS["Control.Coroutine"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Monad_Fork_Class = PS["Control.Monad.Fork.Class"];
-  var Control_Monad_Free = PS["Control.Monad.Free"];
-  var Control_Monad_Free_Trans = PS["Control.Monad.Free.Trans"];
-  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Parallel_Class = PS["Control.Parallel.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Boolean = PS["Data.Boolean"];
-  var Data_Coyoneda = PS["Data.Coyoneda"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Map = PS["Data.Map"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Set = PS["Data.Set"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Halogen_Aff_Driver_State = PS["Halogen.Aff.Driver.State"];
-  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
-  var Halogen_Query_EventSource = PS["Halogen.Query.EventSource"];
-  var Halogen_Query_ForkF = PS["Halogen.Query.ForkF"];
-  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Reference = PS["Unsafe.Reference"];                 
-  var queuingHandler = function (handler) {
-      return function (ref) {
-          return function (message) {
-              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
-                  if (v instanceof Data_Maybe.Nothing) {
-                      return handler(message);
-                  };
-                  if (v instanceof Data_Maybe.Just) {
-                      return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write(new Data_Maybe.Just(new Data_List_Types.Cons(handler(message), v.value0)))(ref));
-                  };
-                  throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 171, column 3 - line 175, column 59: " + [ v.constructor.name ]);
-              });
-          };
-      };
-  };
-  var handleLifecycle = function (lchs) {
-      return function (f) {
-          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write({
-              initializers: Data_List_Types.Nil.value,
-              finalizers: Data_List_Types.Nil.value
-          })(lchs)))(function () {
-              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(f))(function (v) {
-                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(lchs)))(function (v1) {
-                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(v1.finalizers))(function () {
-                          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Parallel.parSequence_(Effect_Aff.parallelAff)(Data_List_Types.foldableList)(v1.initializers))(function () {
-                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v);
-                          });
-                      });
-                  });
-              });
-          });
-      };
-  };
-  var $$eval = function (render) {
-      return function (r) {
-          var go = function (ref) {
-              return function (v) {
-                  if (v instanceof Halogen_Query_HalogenM.State) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          var v2 = v.value0(v1.state);
-                          if (Unsafe_Reference.unsafeRefEq(v1.state)(v2.value1)) {
-                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v2.value0);
-                          };
-                          if (Data_Boolean.otherwise) {
-                              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write({
-                                  component: v1.component,
-                                  state: v2.value1,
-                                  refs: v1.refs,
-                                  children: v1.children,
-                                  childrenIn: v1.childrenIn,
-                                  childrenOut: v1.childrenOut,
-                                  selfRef: v1.selfRef,
-                                  handler: v1.handler,
-                                  pendingQueries: v1.pendingQueries,
-                                  pendingOuts: v1.pendingOuts,
-                                  pendingHandlers: v1.pendingHandlers,
-                                  rendering: v1.rendering,
-                                  prjQuery: v1.prjQuery,
-                                  fresh: v1.fresh,
-                                  subscriptions: v1.subscriptions,
-                                  lifecycleHandlers: v1.lifecycleHandlers
-                              })(ref)))(function () {
-                                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(handleLifecycle(v1.lifecycleHandlers)(render(v1.lifecycleHandlers)(ref)))(function () {
-                                      return Control_Applicative.pure(Effect_Aff.applicativeAff)(v2.value0);
-                                  });
-                              });
-                          };
-                          throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 76, column 7 - line 82, column 21: " + [ v2.constructor.name ]);
-                      });
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Subscribe) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          return Control_Bind.bind(Effect_Aff.bindAff)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff)(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Query_EventSource.unEventSource(v.value0))(function (v2) {
-                              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref["modify'"](function (i) {
-                                  return {
-                                      state: i + 1 | 0,
-                                      value: i
-                                  };
-                              })(v1.fresh)))(function (v3) {
-                                  var done$prime = Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v1.subscriptions)))(function (v4) {
-                                      return Control_Applicative.when(Effect_Aff.applicativeAff)(Data_Maybe.maybe(false)(Data_Map_Internal.member(Data_Ord.ordInt)(v3))(v4))(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Map_Internal["delete"](Data_Ord.ordInt)(v3)))(v1.subscriptions)));
-                                  });
-                                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Map_Internal.insert(Data_Ord.ordInt)(v3)(done$prime)))(v1.subscriptions)))(function () {
-                                      var consumer = Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Control_Coroutine["await"](Effect_Aff.monadAff))(function (v4) {
-                                          return Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Control_Monad_Trans_Class.lift(Control_Monad_Free_Trans.monadTransFreeT(Control_Coroutine.functorAwait))(Effect_Aff.monadAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v1.subscriptions))))(function (v5) {
-                                              return Control_Applicative.when(Control_Monad_Free_Trans.applicativeFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Data_Maybe.isJust(v5))(Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Control_Monad_Trans_Class.lift(Control_Monad_Free_Trans.monadTransFreeT(Control_Coroutine.functorAwait))(Effect_Aff.monadAff)(evalF(ref)(v4)))(function (v6) {
-                                                  return Control_Applicative.when(Control_Monad_Free_Trans.applicativeFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Data_Eq.eq(Halogen_Query_EventSource.eqSubscribeStatus)(v6)(Halogen_Query_EventSource.Listening.value))(consumer);
-                                              }));
-                                          });
-                                      });
-                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Coroutine.runProcess(Effect_Aff.monadRecAff)(Control_Coroutine.pullFrom(Effect_Aff.monadRecAff)(consumer)(v2.producer)))(function () {
-                                          return done$prime;
-                                      });
-                                  });
-                              });
-                          })))(function (v2) {
-                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1);
-                          });
-                      });
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Lift) {
-                      return v.value0;
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Halt) {
-                      return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error(v.value0));
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.GetSlots) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value0(Data_Functor.map(Data_List_Types.functorList)(Halogen_Data_OrdBox.unOrdBox)(Data_List.fromFoldable(Data_Set.foldableSet)(Data_Map.keys(v1.children)))));
-                      });
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.CheckSlot) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1(Data_Map_Internal.member(Halogen_Data_OrdBox.ordOrdBox)(v1.component.mkOrdBox(v.value0))(v1.children)));
-                      });
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.ChildQuery) {
-                      return evalChildQuery(ref)(v.value0)(v.value1);
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Raise) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(queuingHandler(v1.handler)(v1.pendingOuts)(v.value0))(function () {
-                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1);
-                          });
-                      });
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Par) {
-                      return Control_Parallel_Class.sequential(Effect_Aff.parallelAff)(Control_Applicative_Free.retractFreeAp(Effect_Aff.applicativeParAff)(Control_Applicative_Free.hoistFreeAp(function ($103) {
-                          return Control_Parallel_Class.parallel(Effect_Aff.parallelAff)(evalM(ref)($103));
-                      })(v.value0)));
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.Fork) {
-                      return Halogen_Query_ForkF.unFork(function (v1) {
-                          return Control_Bind.bind(Effect_Aff.bindAff)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff)(evalM(ref)(v1.value0)))(function (v2) {
-                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v1.value1(Data_Function.flip(Effect_Aff.killFiber)(v2)));
-                          });
-                      })(v.value0);
-                  };
-                  if (v instanceof Halogen_Query_HalogenM.GetRef) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
-                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1(Data_Map_Internal.lookup(Data_Ord.ordString)(v.value0)(v1.refs)));
-                      });
-                  };
-                  throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 73, column 12 - line 128, column 33: " + [ v.constructor.name ]);
-              };
-          };
-          var evalM = function (ref) {
-              return function (v) {
-                  return Control_Monad_Free.foldFree(Effect_Aff.monadRecAff)(go(ref))(v);
-              };
-          };
-          var evalF = function (ref) {
-              return function (q) {
-                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
-                      var v1 = v["component"]["eval"](q);
-                      return Control_Monad_Free.foldFree(Effect_Aff.monadRecAff)(go(ref))(v1);
-                  });
-              };
-          };
-          var evalChildQuery = function (ref) {
-              return function (p) {
-                  return Data_Coyoneda.unCoyoneda(function (k) {
-                      return function (q) {
-                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
-                              var v1 = Data_Map_Internal.lookup(Halogen_Data_OrdBox.ordOrdBox)(v.component.mkOrdBox(p))(v.children);
-                              if (v1 instanceof Data_Maybe.Just) {
-                                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v1.value0)))(function (v2) {
-                                      return Halogen_Aff_Driver_State.unDriverStateX(function (ds) {
-                                          var v3 = ds.prjQuery(q);
-                                          if (v3 instanceof Data_Maybe.Just) {
-                                              return Data_Functor.map(Effect_Aff.functorAff)(k)(evalF(ds.selfRef)(v3.value0));
-                                          };
-                                          if (v3 instanceof Data_Maybe.Nothing) {
-                                              return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error("Query projection failed for child query"));
-                                          };
-                                          throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 141, column 32 - line 143, column 82: " + [ v3.constructor.name ]);
-                                      })(v2);
-                                  });
-                              };
-                              if (v1 instanceof Data_Maybe.Nothing) {
-                                  return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error("Slot lookup failed for child query"));
-                              };
-                              throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 138, column 5 - line 144, column 73: " + [ v1.constructor.name ]);
-                          });
-                      };
-                  });
-              };
-          };
-          return function (v) {
-              if (v instanceof Halogen_Query_InputF.RefUpdate) {
-                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(function (v1) {
-                      return {
-                          component: v1.component,
-                          state: v1.state,
-                          refs: Data_Map_Internal.alter(Data_Ord.ordString)(Data_Function["const"](v.value1))(v.value0)(v1.refs),
-                          children: v1.children,
-                          childrenIn: v1.childrenIn,
-                          childrenOut: v1.childrenOut,
-                          selfRef: v1.selfRef,
-                          handler: v1.handler,
-                          pendingQueries: v1.pendingQueries,
-                          pendingOuts: v1.pendingOuts,
-                          pendingHandlers: v1.pendingHandlers,
-                          rendering: v1.rendering,
-                          prjQuery: v1.prjQuery,
-                          fresh: v1.fresh,
-                          subscriptions: v1.subscriptions,
-                          lifecycleHandlers: v1.lifecycleHandlers
-                      };
-                  })(r)))(function () {
-                      return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value2);
-                  });
-              };
-              if (v instanceof Halogen_Query_InputF.Query) {
-                  return evalF(r)(v.value0);
-              };
-              throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 59, column 3 - line 64, column 25: " + [ v.constructor.name ]);
-          };
-      };
-  };
-  exports["handleLifecycle"] = handleLifecycle;
-  exports["eval"] = $$eval;
-  exports["queuingHandler"] = queuingHandler;
-})(PS["Halogen.Aff.Driver.Eval"] = PS["Halogen.Aff.Driver.Eval"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Coroutine = PS["Control.Coroutine"];
-  var Control_Monad_Fork_Class = PS["Control.Monad.Fork.Class"];
-  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
-  var Control_Parallel = PS["Control.Parallel"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_List = PS["Data.List"];
-  var Data_List_Types = PS["Data.List.Types"];
-  var Data_Map = PS["Data.Map"];
-  var Data_Map_Internal = PS["Data.Map.Internal"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Ord = PS["Data.Ord"];
-  var Data_Semiring = PS["Data.Semiring"];
-  var Data_Traversable = PS["Data.Traversable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Aff_AVar = PS["Effect.Aff.AVar"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Console = PS["Effect.Console"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Halogen = PS["Halogen"];
-  var Halogen_Aff_Driver_Eval = PS["Halogen.Aff.Driver.Eval"];
-  var Halogen_Aff_Driver_State = PS["Halogen.Aff.Driver.State"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Prelude = PS["Prelude"];                 
-  var newLifecycleHandlers = Effect_Ref["new"]({
-      initializers: Data_List_Types.Nil.value,
-      finalizers: Data_List_Types.Nil.value
-  });
-  var handleAff = Effect_Aff.runAff_(Data_Either.either(Effect_Exception.throwException)(Data_Function["const"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit))));
-  var runUI = function (renderSpec) {
-      return function (component) {
-          return function (i) {
-              var subscribe = function (fresh) {
-                  return function (ref) {
-                      return function (consumer) {
-                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Aff_AVar.empty)(function (v) {
-                              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(function __do() {
-                                  var v1 = Effect_Ref.read(fresh)();
-                                  Effect_Ref.modify_(function (v2) {
-                                      return v2 + 1 | 0;
-                                  })(fresh)();
-                                  Effect_Ref.modify_(Data_Map_Internal.insert(Data_Ord.ordInt)(v1)(v))(ref)();
-                                  return v1;
-                              }))(function (v1) {
-                                  var producer = Control_Coroutine.producer(Effect_Aff.monadAff)(Data_Functor.map(Effect_Aff.functorAff)(Data_Either.Left.create)(Effect_Aff_AVar.take(v)));
-                                  return Data_Functor["void"](Effect_Aff.functorAff)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff)(Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Coroutine.runProcess(Effect_Aff.monadRecAff)(Control_Coroutine.connect(Effect_Aff.monadRecAff)(Effect_Aff.parallelAff)(producer)(consumer)))(function () {
-                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(Data_Map_Internal["delete"](Data_Ord.ordInt)(v1))(ref)))(function () {
-                                          return Effect_Aff_AVar.kill(Effect_Exception.error("ended"))(v);
-                                      });
-                                  })));
-                              });
-                          });
-                      };
-                  };
-              };
-              var rootHandler = function (ref) {
-                  return function (message) {
-                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
-                          return Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Map_Internal.foldableMap)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(Data_Functor.map(Data_Map_Internal.functorMap)(Effect_Aff_AVar.put(message))(v));
-                      });
-                  };
-              };
-              var handlePending = function (ref) {
-                  return function __do() {
-                      var v = Effect_Ref.read(ref)();
-                      Effect_Ref.write(Data_Maybe.Nothing.value)(ref)();
-                      return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(v)(function ($63) {
-                          return handleAff(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(Data_List.reverse($63)));
-                      })();
-                  };
-              };
-              var cleanupSubscriptions = function (v) {
-                  return function __do() {
-                      Control_Bind.bindFlipped(Effect.bindEffect)(Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(function ($64) {
-                          return handleAff(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Map_Internal.foldableMap)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))($64));
-                      }))(Effect_Ref.read(v.subscriptions))();
-                      return Effect_Ref.write(Data_Maybe.Nothing.value)(v.subscriptions)();
-                  };
-              };
-              var squashChildInitializers = function (lchs) {
-                  return function (preInits) {
-                      return Halogen_Aff_Driver_State.unDriverStateX(function (st) {
-                          var parentInitializer = Data_Functor.map(Data_Maybe.functorMaybe)(function ($65) {
-                              return evalF(st.selfRef)(Halogen_Query_InputF.Query.create($65));
-                          })(st.component.initializer);
-                          return Effect_Ref.modify_(function (handlers) {
-                              return {
-                                  initializers: new Data_List_Types.Cons(Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Parallel.parSequence_(Effect_Aff.parallelAff)(Data_List_Types.foldableList)(Data_List.reverse(handlers.initializers)))(function () {
-                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Foldable.sequence_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(parentInitializer))(function () {
-                                          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(function __do() {
-                                              handlePending(st.pendingQueries)();
-                                              return handlePending(st.pendingOuts)();
-                                          });
-                                      });
-                                  }), preInits),
-                                  finalizers: handlers.finalizers
-                              };
-                          })(lchs);
-                      });
-                  };
-              };
-              var runComponent = function (lchs) {
-                  return function (handler) {
-                      return function (j) {
-                          return function (prjQuery) {
-                              return Halogen_Component.unComponent(function (c) {
-                                  return function __do() {
-                                      var v = newLifecycleHandlers();
-                                      var v1 = Halogen_Aff_Driver_State.initDriverState(c)(j)(handler)(prjQuery)(v)();
-                                      var v2 = Effect_Ref.read(lchs)();
-                                      Effect_Ref.write({
-                                          initializers: Data_List_Types.Nil.value,
-                                          finalizers: v2.finalizers
-                                      })(lchs)();
-                                      Control_Bind.bindFlipped(Effect.bindEffect)(Halogen_Aff_Driver_State.unDriverStateX(function ($66) {
-                                          return render(lchs)((function (v3) {
-                                              return v3.selfRef;
-                                          })($66));
-                                      }))(Effect_Ref.read(v1))();
-                                      Control_Bind.bindFlipped(Effect.bindEffect)(squashChildInitializers(lchs)(v2.initializers))(Effect_Ref.read(v1))();
-                                      return v1;
-                                  };
-                              });
-                          };
-                      };
-                  };
-              };
-              var renderChild = function (lchs) {
-                  return function (handler) {
-                      return function (mkOrdBox) {
-                          return function (childrenInRef) {
-                              return function (childrenOutRef) {
-                                  return Halogen_Component.unComponentSlot(function (p) {
-                                      return function (ctor) {
-                                          return function (input) {
-                                              return function (inputQuery) {
-                                                  return function (outputQuery) {
-                                                      return function (prjQuery) {
-                                                          var ordP = mkOrdBox(p);
-                                                          return function __do() {
-                                                              var v = Effect_Ref.read(childrenInRef)();
-                                                              var v1 = (function () {
-                                                                  var v1 = Data_Map_Internal.pop(Halogen_Data_OrdBox.ordOrdBox)(ordP)(v);
-                                                                  if (v1 instanceof Data_Maybe.Just) {
-                                                                      Effect_Ref.write(v1.value0.value1)(childrenInRef)();
-                                                                      Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(inputQuery(input))(function (q) {
-                                                                          return function __do() {
-                                                                              var v2 = Effect_Ref.read(v1.value0.value0)();
-                                                                              return Halogen_Aff_Driver_State.unDriverStateX(function (st) {
-                                                                                  return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(st.prjQuery(q))(function ($67) {
-                                                                                      return handleAff(evalF(st.selfRef)(Halogen_Query_InputF.Query.create($67)));
-                                                                                  });
-                                                                              })(v2)();
-                                                                          };
-                                                                      })();
-                                                                      return v1.value0.value0;
-                                                                  };
-                                                                  if (v1 instanceof Data_Maybe.Nothing) {
-                                                                      return runComponent(lchs)(function ($68) {
-                                                                          return Data_Maybe.maybe(Control_Applicative.pure(Effect_Aff.applicativeAff)(Data_Unit.unit))(handler)(outputQuery($68));
-                                                                      })(input)(prjQuery)(ctor)();
-                                                                  };
-                                                                  throw new Error("Failed pattern match at Halogen.Aff.Driver line 258, column 14 - line 266, column 92: " + [ v1.constructor.name ]);
-                                                              })();
-                                                              var v2 = Data_Functor.map(Effect.functorEffect)(Data_Map_Internal.member(Halogen_Data_OrdBox.ordOrdBox)(ordP))(Effect_Ref.read(childrenOutRef))();
-                                                              Control_Applicative.when(Effect.applicativeEffect)(v2)(Effect_Console.warn("Halogen: Duplicate slot address was detected during rendering, unexpected results may occur"))();
-                                                              Effect_Ref.modify_(Data_Map_Internal.insert(Halogen_Data_OrdBox.ordOrdBox)(ordP)(v1))(childrenOutRef)();
-                                                              return Control_Bind.bind(Effect.bindEffect)(Effect_Ref.read(v1))(Halogen_Aff_Driver_State.renderStateX(Effect.functorEffect)(function (v3) {
-                                                                  if (v3 instanceof Data_Maybe.Nothing) {
-                                                                      return Effect_Exception["throw"]("Halogen internal error: child was not initialized in renderChild");
-                                                                  };
-                                                                  if (v3 instanceof Data_Maybe.Just) {
-                                                                      return Control_Applicative.pure(Effect.applicativeEffect)(renderSpec.renderChild(v3.value0));
-                                                                  };
-                                                                  throw new Error("Failed pattern match at Halogen.Aff.Driver line 271, column 37 - line 273, column 50: " + [ v3.constructor.name ]);
-                                                              }))();
-                                                          };
-                                                      };
-                                                  };
-                                              };
-                                          };
-                                      };
-                                  });
-                              };
-                          };
-                      };
-                  };
-              };
-              var render = function (lchs) {
-                  return function ($$var) {
-                      return function __do() {
-                          var v = Effect_Ref.read($$var)();
-                          var v1 = Data_Functor.map(Effect.functorEffect)(Data_Maybe.isNothing)(Effect_Ref.read(v.pendingHandlers))();
-                          Control_Applicative.when(Effect.applicativeEffect)(v1)(Effect_Ref.write(new Data_Maybe.Just(Data_List_Types.Nil.value))(v.pendingHandlers))();
-                          Effect_Ref.write(Data_Map_Internal.empty)(v.childrenOut)();
-                          Effect_Ref.write(v.children)(v.childrenIn)();
-                          var handler = Halogen_Aff_Driver_Eval.queuingHandler(function ($69) {
-                              return Data_Functor["void"](Effect_Aff.functorAff)(evalF(v.selfRef)($69));
-                          })(v.pendingHandlers);
-                          var childHandler = Halogen_Aff_Driver_Eval.queuingHandler(function ($70) {
-                              return handler(Halogen_Query_InputF.Query.create($70));
-                          })(v.pendingQueries);
-                          var v2 = renderSpec.render(function ($71) {
-                              return handleAff(handler($71));
-                          })(renderChild(lchs)(childHandler)(v.component.mkOrdBox)(v.childrenIn)(v.childrenOut))(v.component.render(v.state))(v.rendering)();
-                          var v3 = Effect_Ref.read(v.childrenOut)();
-                          Control_Bind.bind(Effect.bindEffect)(Effect_Ref.read(v.childrenIn))(Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Map_Internal.foldableMap)(function (childVar) {
-                              return function __do() {
-                                  var v4 = Effect_Ref.read(childVar)();
-                                  Halogen_Aff_Driver_State.renderStateX_(Effect.applicativeEffect)(renderSpec.removeChild)(v4)();
-                                  return finalize(lchs)(v4)();
-                              };
-                          }))();
-                          Effect_Ref.modify_(function (v4) {
-                              return {
-                                  rendering: new Data_Maybe.Just(v2),
-                                  children: v3,
-                                  component: v4.component,
-                                  state: v4.state,
-                                  refs: v4.refs,
-                                  childrenIn: v4.childrenIn,
-                                  childrenOut: v4.childrenOut,
-                                  selfRef: v4.selfRef,
-                                  handler: v4.handler,
-                                  pendingQueries: v4.pendingQueries,
-                                  pendingOuts: v4.pendingOuts,
-                                  pendingHandlers: v4.pendingHandlers,
-                                  prjQuery: v4.prjQuery,
-                                  fresh: v4.fresh,
-                                  subscriptions: v4.subscriptions,
-                                  lifecycleHandlers: v4.lifecycleHandlers
-                              };
-                          })(v.selfRef)();
-                          return Control_Applicative.when(Effect.applicativeEffect)(v1)(Data_Function.flip(Control_Monad_Rec_Class.tailRecM(Control_Monad_Rec_Class.monadRecEffect))(Data_Unit.unit)(function (v4) {
-                              return function __do() {
-                                  var v5 = Effect_Ref.read(v.pendingHandlers)();
-                                  Effect_Ref.write(new Data_Maybe.Just(Data_List_Types.Nil.value))(v.pendingHandlers)();
-                                  Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(function ($72) {
-                                      return handleAff(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(Data_List.reverse($72)));
-                                  })(v5)();
-                                  var v6 = Effect_Ref.read(v.pendingHandlers)();
-                                  var $57 = Data_Maybe.maybe(false)(Data_List["null"])(v6);
-                                  if ($57) {
-                                      return Data_Functor.voidLeft(Effect.functorEffect)(Effect_Ref.write(Data_Maybe.Nothing.value)(v.pendingHandlers))(new Control_Monad_Rec_Class.Done(Data_Unit.unit))();
-                                  };
-                                  return new Control_Monad_Rec_Class.Loop(Data_Unit.unit);
-                              };
-                          }))();
-                      };
-                  };
-              };
-              var finalize = function (lchs) {
-                  return Halogen_Aff_Driver_State.unDriverStateX(function (st) {
-                      return function __do() {
-                          cleanupSubscriptions(st)();
-                          Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(function ($73) {
-                              return evalF(st.selfRef)(Halogen_Query_InputF.Query.create($73));
-                          })(st.component.finalizer))(function (f) {
-                              return Effect_Ref.modify_(function (handlers) {
-                                  return {
-                                      initializers: handlers.initializers,
-                                      finalizers: new Data_List_Types.Cons(f, handlers.finalizers)
-                                  };
-                              })(lchs);
-                          })();
-                          return Data_Foldable.for_(Effect.applicativeEffect)(Data_Map_Internal.foldableMap)(st.children)(Control_Bind.composeKleisliFlipped(Effect.bindEffect)(finalize(lchs))(Effect_Ref.read))();
-                      };
-                  });
-              };
-              var evalF = function (ref) {
-                  return Halogen_Aff_Driver_Eval["eval"](render)(ref);
-              };
-              var evalDriver = function (ref) {
-                  return function (prjQuery) {
-                      return function (q) {
-                          var v = prjQuery(q);
-                          if (v instanceof Data_Maybe.Just) {
-                              return evalF(ref)(new Halogen_Query_InputF.Query(v.value0));
-                          };
-                          if (v instanceof Data_Maybe.Nothing) {
-                              return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Exception.throwException(Effect_Exception.error("Halogen internal error: query projection failed in runUI'")));
-                          };
-                          throw new Error("Failed pattern match at Halogen.Aff.Driver line 136, column 5 - line 138, column 113: " + [ v.constructor.name ]);
-                      };
-                  };
-              };
-              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(newLifecycleHandlers))(function (v) {
-                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref["new"](0)))(function (v1) {
-                      return Halogen_Aff_Driver_Eval.handleLifecycle(v)(function __do() {
-                          var v2 = Effect_Ref["new"](Data_Map_Internal.empty)();
-                          return Control_Bind.bind(Effect.bindEffect)(Control_Bind.bind(Effect.bindEffect)(runComponent(v)(rootHandler(v2))(i)(Data_Maybe.Just.create)(component))(Effect_Ref.read))(Halogen_Aff_Driver_State.unDriverStateX(function (st) {
-                              return Control_Applicative.pure(Effect.applicativeEffect)({
-                                  query: evalDriver(st.selfRef)(st.prjQuery),
-                                  subscribe: subscribe(v1)(v2)
-                              });
-                          }))();
-                      });
-                  });
-              });
-          };
-      };
-  };
-  exports["runUI"] = runUI;
-})(PS["Halogen.Aff.Driver"] = PS["Halogen.Aff.Driver"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
-  var Control_Semigroupoid = PS["Control.Semigroupoid"];
-  var Data_Either = PS["Data.Either"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Exception = PS["Effect.Exception"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_HTML_Event_EventTypes = PS["Web.HTML.Event.EventTypes"];
-  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
-  var Web_HTML_HTMLDocument_ReadyState = PS["Web.HTML.HTMLDocument.ReadyState"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var Web_HTML_Window = PS["Web.HTML.Window"];                 
-  var selectElement = function (query) {
-      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Control_Bind.bindFlipped(Effect.bindEffect)(Control_Bind.composeKleisliFlipped(Effect.bindEffect)(function ($12) {
-          return Web_DOM_ParentNode.querySelector(query)(Web_HTML_HTMLDocument.toParentNode($12));
-      })(Web_HTML_Window.document))(Web_HTML.window)))(function (v) {
-          return Control_Applicative.pure(Effect_Aff.applicativeAff)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Web_HTML_HTMLElement.fromElement)(v));
-      });
-  };
-  var runHalogenAff = Effect_Aff.runAff_(Data_Either.either(Effect_Exception.throwException)(Data_Function["const"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit))));
-  exports["selectElement"] = selectElement;
-  exports["runHalogenAff"] = runHalogenAff;
-})(PS["Halogen.Aff.Util"] = PS["Halogen.Aff.Util"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Data_Array = PS["Data.Array"];
-  var Data_Eq = PS["Data.Eq"];
-  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Nullable = PS["Data.Nullable"];
-  var Data_Tuple = PS["Data.Tuple"];
-  var Effect = PS["Effect"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Halogen_VDom_Machine = PS["Halogen.VDom.Machine"];
-  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
-  var Halogen_VDom_Util = PS["Halogen.VDom.Util"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_Node = PS["Web.DOM.Node"];
-  var eqElemSpec = function (a, b) {
-      if (a.value1 === b.value1) {
-          if (a.value0 instanceof Data_Maybe.Just && (b.value0 instanceof Data_Maybe.Just && a.value0.value0 === b.value0.value0)) {
-              return true;
-          };
-          if (a.value0 instanceof Data_Maybe.Nothing && b.value0 instanceof Data_Maybe.Nothing) {
-              return true;
-          };
-          return false;
-      };
-      return false;
-  };
-  var buildWidget = (function () {
-      var patch = function (build, v) {
-          return function (v1) {
-              if (v1 instanceof Halogen_VDom_Types.Grafted) {
-                  return patch(build, v)(Halogen_VDom_Types.runGraft(v1.value0));
-              };
-              if (v1 instanceof Halogen_VDom_Types.Widget) {
-                  var v2 = v.value1(v1.value0);
-                  return new Halogen_VDom_Machine.Step(v2.value0, patch(build, v2), v2.value2);
-              };
-              v.value2();
-              return build(v1);
-          };
-      };
-      var render = function (v, build, w) {
-          var v1 = v.buildWidget(v)(w);
-          return new Halogen_VDom_Machine.Step(v1.value0, patch(build, v1), v1.value2);
-      };
-      return render;
-  })();
-  var buildText = (function () {
-      var patch = function (build, halt, node, s1) {
-          return function (v) {
-              if (v instanceof Halogen_VDom_Types.Grafted) {
-                  return patch(build, halt, node, s1)(Halogen_VDom_Types.runGraft(v.value0));
-              };
-              if (v instanceof Halogen_VDom_Types.Text) {
-                  var res = new Halogen_VDom_Machine.Step(node, patch(build, halt, node, v.value0), halt);
-                  var $84 = s1 === v.value0;
-                  if ($84) {
-                      return res;
-                  };
-                  Halogen_VDom_Util.setTextContent(v.value0, node);
-                  return res;
-              };
-              halt();
-              return build(v);
-          };
-      };
-      var done = function (node) {
-          return function __do() {
-              var v = Halogen_VDom_Util.parentNode(node);
-              return Halogen_VDom_Util.removeChild(node, v);
-          };
-      };
-      var render = function (v, build, s) {
-          var v1 = Halogen_VDom_Util.createTextNode(s, v.document);
-          var halt = done(v1);
-          return new Halogen_VDom_Machine.Step(v1, patch(build, halt, v1, s), halt);
-      };
-      return render;
-  })();
-  var buildKeyed = (function () {
-      var done = function (node, attrs, steps) {
-          return function __do() {
-              var v = Halogen_VDom_Util.parentNode(node);
-              Halogen_VDom_Util.removeChild(node, v);
-              Halogen_VDom_Util.forInE(steps, function (v1, v2) {
-                  return v2.value2();
-              });
-              return Halogen_VDom_Machine.halt(attrs)();
-          };
-      };
-      var patch = function (build, halt, node, attrs, v, ch1, len1) {
-          return function (v1) {
-              if (v1 instanceof Halogen_VDom_Types.Grafted) {
-                  return patch(build, halt, node, attrs, v, ch1, len1)(Halogen_VDom_Types.runGraft(v1.value0));
-              };
-              if (v1 instanceof Halogen_VDom_Types.Keyed && eqElemSpec(v, v1.value0)) {
-                  var v2 = Data_Array.length(v1.value1);
-                  if (len1 === 0 && v2 === 0) {
-                      var v4 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
-                      var halt$prime = done(node, v4, ch1);
-                      return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v4, v1.value0, ch1, 0), halt$prime);
-                  };
-                  var onThis = function (v4, v5) {
-                      return v5.value2();
-                  };
-                  var onThese = function (v4, ix$prime, v5, v6) {
-                      var v7 = v5.value1(v6.value1);
-                      Halogen_VDom_Util.insertChildIx(ix$prime, v7.value0, node);
-                      return v7;
-                  };
-                  var onThat = function (v4, ix, v5) {
-                      var v6 = build(v5.value1);
-                      Halogen_VDom_Util.insertChildIx(ix, v6.value0, node);
-                      return v6;
-                  };
-                  var v4 = Halogen_VDom_Util.diffWithKeyAndIxE(ch1, v1.value1, Data_Tuple.fst, onThese, onThis, onThat);
-                  var v5 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
-                  var halt$prime = done(node, v5, v4);
-                  return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v5, v1.value0, v4, v2), halt$prime);
-              };
-              halt();
-              return build(v1);
-          };
-      };
-      var render = function (v, build, v1, ch1) {
-          var v2 = Halogen_VDom_Util.createElement(Data_Nullable.toNullable(v1.value0), v1.value1, v.document);
-          var node = Web_DOM_Element.toNode(v2);
-          var onChild = function (k, ix, v3) {
-              var v4 = build(v3.value1);
-              Halogen_VDom_Util.insertChildIx(ix, v4.value0, node);
-              return v4;
-          };
-          var v3 = Halogen_VDom_Util.strMapWithIxE(ch1, Data_Tuple.fst, onChild);
-          var v4 = v.buildAttributes(v2)(v1.value2);
-          var halt = done(node, v4, v3);
-          return new Halogen_VDom_Machine.Step(node, patch(build, halt, node, v4, v1, v3, Data_Array.length(ch1)), halt);
-      };
-      return render;
-  })();
-  var buildElem = (function () {
-      var done = function (node, attrs, steps) {
-          return function __do() {
-              var v = Halogen_VDom_Util.parentNode(node);
-              Halogen_VDom_Util.removeChild(node, v);
-              Effect.foreachE(steps)(Halogen_VDom_Machine.halt)();
-              return Halogen_VDom_Machine.halt(attrs)();
-          };
-      };
-      var patch = function (build, halt, node, attrs, v, ch1) {
-          return function (v1) {
-              if (v1 instanceof Halogen_VDom_Types.Grafted) {
-                  return patch(build, halt, node, attrs, v, ch1)(Halogen_VDom_Types.runGraft(v1.value0));
-              };
-              if (v1 instanceof Halogen_VDom_Types.Elem && eqElemSpec(v, v1.value0)) {
-                  var v2 = Data_Array.length(v1.value1);
-                  var v3 = Data_Array.length(ch1);
-                  if (v3 === 0 && v2 === 0) {
-                      var v4 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
-                      var halt$prime = done(node, v4, ch1);
-                      return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v4, v1.value0, ch1), halt$prime);
-                  };
-                  var onThis = function (ix, v4) {
-                      return v4.value2();
-                  };
-                  var onThese = function (ix, v4, vdom) {
-                      var v5 = v4.value1(vdom);
-                      Halogen_VDom_Util.insertChildIx(ix, v5.value0, node);
-                      return v5;
-                  };
-                  var onThat = function (ix, vdom) {
-                      var v4 = build(vdom);
-                      Halogen_VDom_Util.insertChildIx(ix, v4.value0, node);
-                      return v4;
-                  };
-                  var v4 = Halogen_VDom_Util.diffWithIxE(ch1, v1.value1, onThese, onThis, onThat);
-                  var v5 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
-                  var halt$prime = done(node, v5, v4);
-                  return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v5, v1.value0, v4), halt$prime);
-              };
-              halt();
-              return build(v1);
-          };
-      };
-      var render = function (v, build, v1, ch1) {
-          var v2 = Halogen_VDom_Util.createElement(Data_Nullable.toNullable(v1.value0), v1.value1, v.document);
-          var node = Web_DOM_Element.toNode(v2);
-          var onChild = function (ix, child) {
-              var v3 = build(child);
-              Halogen_VDom_Util.insertChildIx(ix, v3.value0, node);
-              return v3;
-          };
-          var v3 = Halogen_VDom_Util.forE(ch1, onChild);
-          var v4 = v.buildAttributes(v2)(v1.value2);
-          var halt = done(node, v4, v3);
-          return new Halogen_VDom_Machine.Step(node, patch(build, halt, node, v4, v1, v3), halt);
-      };
-      return render;
-  })();
-  var buildVDom = function (spec) {
-      var build = function (v) {
-          if (v instanceof Halogen_VDom_Types.Text) {
-              return buildText(spec, build, v.value0);
-          };
-          if (v instanceof Halogen_VDom_Types.Elem) {
-              return buildElem(spec, build, v.value0, v.value1);
-          };
-          if (v instanceof Halogen_VDom_Types.Keyed) {
-              return buildKeyed(spec, build, v.value0, v.value1);
-          };
-          if (v instanceof Halogen_VDom_Types.Widget) {
-              return buildWidget(spec, build, v.value0);
-          };
-          if (v instanceof Halogen_VDom_Types.Grafted) {
-              return build(Halogen_VDom_Types.runGraft(v.value0));
-          };
-          throw new Error("Failed pattern match at Halogen.VDom.DOM line 58, column 27 - line 63, column 52: " + [ v.constructor.name ]);
-      };
-      return build;
-  };
-  exports["buildVDom"] = buildVDom;
-  exports["buildText"] = buildText;
-  exports["buildElem"] = buildElem;
-  exports["buildKeyed"] = buildKeyed;
-  exports["buildWidget"] = buildWidget;
-})(PS["Halogen.VDom.DOM"] = PS["Halogen.VDom.DOM"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Control_Bind = PS["Control.Bind"];
-  var Control_Category = PS["Control.Category"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
-  var Data_Maybe = PS["Data.Maybe"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Effect_Ref = PS["Effect.Ref"];
-  var Effect_Uncurried = PS["Effect.Uncurried"];
-  var Halogen_Aff_Driver = PS["Halogen.Aff.Driver"];
-  var Halogen_Aff_Driver_State = PS["Halogen.Aff.Driver.State"];
-  var Halogen_Component = PS["Halogen.Component"];
-  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
-  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
-  var Halogen_VDom = PS["Halogen.VDom"];
-  var Halogen_VDom_DOM = PS["Halogen.VDom.DOM"];
-  var Halogen_VDom_DOM_Prop = PS["Halogen.VDom.DOM.Prop"];
-  var Halogen_VDom_Machine = PS["Halogen.VDom.Machine"];
-  var Prelude = PS["Prelude"];
-  var Unsafe_Reference = PS["Unsafe.Reference"];
-  var Web_DOM_Document = PS["Web.DOM.Document"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_Node = PS["Web.DOM.Node"];
-  var Web_HTML = PS["Web.HTML"];
-  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
-  var Web_HTML_Window = PS["Web.HTML.Window"];
-  var substInParent = function (v) {
-      return function (v1) {
-          return function (v2) {
-              if (v1 instanceof Data_Maybe.Just && v2 instanceof Data_Maybe.Just) {
-                  return Data_Functor["void"](Effect.functorEffect)(Web_DOM_Node.insertBefore(v)(v1.value0)(v2.value0));
-              };
-              if (v1 instanceof Data_Maybe.Nothing && v2 instanceof Data_Maybe.Just) {
-                  return Data_Functor["void"](Effect.functorEffect)(Web_DOM_Node.appendChild(v)(v2.value0));
-              };
-              return Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
-          };
-      };
-  };
-  var removeChild = function (v) {
-      return function __do() {
-          var v1 = Web_DOM_Node.parentNode(v.node)();
-          return Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(function (pn) {
-              return Web_DOM_Node.removeChild(v.node)(pn);
-          })(v1)();
-      };
-  };
-  var mkSpec = function (handler) {
-      return function (renderChildRef) {
-          return function (document) {
-              var getNode = Halogen_Aff_Driver_State.unRenderStateX(function (v) {
-                  return v.node;
-              });
-              var done = Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
-              var patch = function (slot) {
-                  var v = Effect_Ref.read(renderChildRef)();
-                  var v1 = v(slot)();
-                  var node = getNode(v1);
-                  return new Halogen_VDom_Machine.Step(node, patch, done);
-              };
-              var buildWidget = function (spec) {
-                  return function (slot) {
-                      var v = Effect_Ref.read(renderChildRef)();
-                      var v1 = v(slot)();
-                      var node = getNode(v1);
-                      return new Halogen_VDom_Machine.Step(node, patch, done);
-                  };
-              };
-              var buildAttributes = Halogen_VDom_DOM_Prop.buildProp(handler);
-              return {
-                  buildWidget: buildWidget,
-                  buildAttributes: buildAttributes,
-                  document: document
-              };
-          };
-      };
-  };
-  var renderSpec = function (document) {
-      return function (container) {
-          var render = function (handler) {
-              return function (child) {
-                  return function (v) {
-                      return function (v1) {
-                          if (v1 instanceof Data_Maybe.Nothing) {
-                              return function __do() {
-                                  var v2 = Effect_Ref["new"](child)();
-                                  var spec = mkSpec(handler)(v2)(document);
-                                  var v3 = Halogen_VDom_DOM.buildVDom(spec)(v);
-                                  var node = Halogen_VDom_Machine.extract(v3);
-                                  Data_Functor["void"](Effect.functorEffect)(Web_DOM_Node.appendChild(node)(Web_HTML_HTMLElement.toNode(container)))();
-                                  return {
-                                      machine: v3,
-                                      node: node,
-                                      renderChildRef: v2
-                                  };
-                              };
-                          };
-                          if (v1 instanceof Data_Maybe.Just) {
-                              return function __do() {
-                                  Effect_Ref.write(child)(v1.value0.renderChildRef)();
-                                  var v2 = Web_DOM_Node.parentNode(v1.value0.node)();
-                                  var v3 = Web_DOM_Node.nextSibling(v1.value0.node)();
-                                  var v4 = Halogen_VDom_Machine.step(v1.value0.machine)(v);
-                                  var newNode = Halogen_VDom_Machine.extract(v4);
-                                  Control_Applicative.when(Effect.applicativeEffect)(Data_HeytingAlgebra.not(Data_HeytingAlgebra.heytingAlgebraFunction(Data_HeytingAlgebra.heytingAlgebraFunction(Data_HeytingAlgebra.heytingAlgebraBoolean)))(Unsafe_Reference.unsafeRefEq)(v1.value0.node)(newNode))(substInParent(newNode)(v3)(v2))();
-                                  return {
-                                      machine: v4,
-                                      node: newNode,
-                                      renderChildRef: v1.value0.renderChildRef
-                                  };
-                              };
-                          };
-                          throw new Error("Failed pattern match at Halogen.VDom.Driver line 118, column 5 - line 134, column 80: " + [ v1.constructor.name ]);
-                      };
-                  };
-              };
-          };
-          return {
-              render: render,
-              renderChild: Control_Category.identity(Control_Category.categoryFn),
-              removeChild: removeChild
-          };
-      };
-  };
-  var runUI = function (component) {
-      return function (i) {
-          return function (element) {
-              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Data_Functor.map(Effect.functorEffect)(Web_HTML_HTMLDocument.toDocument)(Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.document)(Web_HTML.window))))(function (v) {
-                  return Halogen_Aff_Driver.runUI(renderSpec(v)(element))(component)(i);
-              });
-          };
-      };
-  };
-  exports["runUI"] = runUI;
-})(PS["Halogen.VDom.Driver"] = PS["Halogen.VDom.Driver"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Control_Applicative = PS["Control.Applicative"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Prelude = PS["Prelude"];                 
-  var main = Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
-  exports["main"] = main;
-})(PS["Main"] = PS["Main"] || {});
-(function(exports) {
-  // Generated by purs version 0.12.0
-  "use strict";
-  var Component_Add = PS["Component.Add"];
-  var Component_BList = PS["Component.BList"];
-  var Control_Bind = PS["Control.Bind"];
-  var Data_Foldable = PS["Data.Foldable"];
-  var Data_Function = PS["Data.Function"];
-  var Data_Functor = PS["Data.Functor"];
-  var Data_Unit = PS["Data.Unit"];
-  var Effect = PS["Effect"];
-  var Effect_Aff = PS["Effect.Aff"];
-  var Effect_Class = PS["Effect.Class"];
-  var Halogen_Aff = PS["Halogen.Aff"];
-  var Halogen_Aff_Util = PS["Halogen.Aff.Util"];
-  var Halogen_VDom_Driver = PS["Halogen.VDom.Driver"];
-  var Model = PS["Model"];
-  var Prelude = PS["Prelude"];
-  var Web_DOM_Element = PS["Web.DOM.Element"];
-  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
-  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];                 
-  var showFooter = Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(".user_footer"))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
-      return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Web_DOM_Element.removeAttribute("hidden")(Web_HTML_HTMLElement.toElement(el)));
-  }));
-  var renderBookmarks = function (renderElSelector) {
-      return function (bmarks) {
-          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
-              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor["void"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_BList.blist(bmarks))(Data_Unit.unit)(el)))(function () {
-                  return showFooter;
-              });
-          })));
-      };
-  };
-  var renderAddForm = function (renderElSelector) {
-      return function (bmark) {
-          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
-              return Halogen_VDom_Driver.runUI(Component_Add.addbmark(bmark))(Data_Unit.unit)(el);
-          })));
-      };
-  };
-  exports["renderBookmarks"] = renderBookmarks;
-  exports["renderAddForm"] = renderAddForm;
+  var fromMaybe = function (a) {
+      return maybe(a)(Control_Category.identity(Control_Category.categoryFn));
+  };
+  var fromJust = function (dictPartial) {
+      return function (v) {
+          var $__unused = function (dictPartial1) {
+              return function ($dollar35) {
+                  return $dollar35;
+              };
+          };
+          return $__unused(dictPartial)((function () {
+              if (v instanceof Just) {
+                  return v.value0;
+              };
+              throw new Error("Failed pattern match at Data.Maybe line 269, column 1 - line 269, column 46: " + [ v.constructor.name ]);
+          })());
+      };
+  };
+  var applyMaybe = new Control_Apply.Apply(function () {
+      return functorMaybe;
+  }, function (v) {
+      return function (v1) {
+          if (v instanceof Just) {
+              return Data_Functor.map(functorMaybe)(v.value0)(v1);
+          };
+          if (v instanceof Nothing) {
+              return Nothing.value;
+          };
+          throw new Error("Failed pattern match at Data.Maybe line 67, column 1 - line 67, column 35: " + [ v.constructor.name, v1.constructor.name ]);
+      };
+  });
+  var bindMaybe = new Control_Bind.Bind(function () {
+      return applyMaybe;
+  }, function (v) {
+      return function (v1) {
+          if (v instanceof Just) {
+              return v1(v.value0);
+          };
+          if (v instanceof Nothing) {
+              return Nothing.value;
+          };
+          throw new Error("Failed pattern match at Data.Maybe line 126, column 1 - line 126, column 33: " + [ v.constructor.name, v1.constructor.name ]);
+      };
+  });
+  exports["Nothing"] = Nothing;
+  exports["Just"] = Just;
+  exports["maybe"] = maybe;
+  exports["fromMaybe"] = fromMaybe;
+  exports["isJust"] = isJust;
+  exports["isNothing"] = isNothing;
+  exports["fromJust"] = fromJust;
+  exports["functorMaybe"] = functorMaybe;
+  exports["applyMaybe"] = applyMaybe;
+  exports["bindMaybe"] = bindMaybe;
+})(PS["Data.Maybe"] = PS["Data.Maybe"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad = PS["Control.Monad"];
+  var Data_Bounded = PS["Data.Bounded"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Prelude = PS["Prelude"];                 
+  var Disj = function (x) {
+      return x;
+  };
+  var semigroupDisj = function (dictHeytingAlgebra) {
+      return new Data_Semigroup.Semigroup(function (v) {
+          return function (v1) {
+              return Data_HeytingAlgebra.disj(dictHeytingAlgebra)(v)(v1);
+          };
+      });
+  };
+  var monoidDisj = function (dictHeytingAlgebra) {
+      return new Data_Monoid.Monoid(function () {
+          return semigroupDisj(dictHeytingAlgebra);
+      }, Data_HeytingAlgebra.ff(dictHeytingAlgebra));
+  };
+  exports["Disj"] = Disj;
+  exports["semigroupDisj"] = semigroupDisj;
+  exports["monoidDisj"] = monoidDisj;
+})(PS["Data.Monoid.Disj"] = PS["Data.Monoid.Disj"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Monoid_Additive = PS["Data.Monoid.Additive"];
+  var Data_Monoid_Conj = PS["Data.Monoid.Conj"];
+  var Data_Monoid_Disj = PS["Data.Monoid.Disj"];
+  var Data_Monoid_Dual = PS["Data.Monoid.Dual"];
+  var Data_Monoid_Endo = PS["Data.Monoid.Endo"];
+  var Data_Monoid_Multiplicative = PS["Data.Monoid.Multiplicative"];
+  var Data_Semigroup_First = PS["Data.Semigroup.First"];
+  var Data_Semigroup_Last = PS["Data.Semigroup.Last"];
+  var Prelude = PS["Prelude"];                 
+  var Newtype = function (unwrap, wrap) {
+      this.unwrap = unwrap;
+      this.wrap = wrap;
+  };
+  var wrap = function (dict) {
+      return dict.wrap;
+  };
+  var unwrap = function (dict) {
+      return dict.unwrap;
+  };                        
+  var newtypeDisj = new Newtype(function (v) {
+      return v;
+  }, Data_Monoid_Disj.Disj);
+  var alaF = function (dictFunctor) {
+      return function (dictFunctor1) {
+          return function (dictNewtype) {
+              return function (dictNewtype1) {
+                  return function (v) {
+                      return function (f) {
+                          return function ($80) {
+                              return Data_Functor.map(dictFunctor1)(unwrap(dictNewtype1))(f(Data_Functor.map(dictFunctor)(wrap(dictNewtype))($80)));
+                          };
+                      };
+                  };
+              };
+          };
+      };
+  };
+  exports["unwrap"] = unwrap;
+  exports["wrap"] = wrap;
+  exports["Newtype"] = Newtype;
+  exports["alaF"] = alaF;
+  exports["newtypeDisj"] = newtypeDisj;
+})(PS["Data.Newtype"] = PS["Data.Newtype"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.Foldable"];
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Plus = PS["Control.Plus"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Maybe_First = PS["Data.Maybe.First"];
+  var Data_Maybe_Last = PS["Data.Maybe.Last"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Monoid_Additive = PS["Data.Monoid.Additive"];
+  var Data_Monoid_Conj = PS["Data.Monoid.Conj"];
+  var Data_Monoid_Disj = PS["Data.Monoid.Disj"];
+  var Data_Monoid_Dual = PS["Data.Monoid.Dual"];
+  var Data_Monoid_Endo = PS["Data.Monoid.Endo"];
+  var Data_Monoid_Multiplicative = PS["Data.Monoid.Multiplicative"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Unit = PS["Data.Unit"];
+  var Prelude = PS["Prelude"];                 
+  var Foldable = function (foldMap, foldl, foldr) {
+      this.foldMap = foldMap;
+      this.foldl = foldl;
+      this.foldr = foldr;
+  };
+  var foldr = function (dict) {
+      return dict.foldr;
+  };
+  var traverse_ = function (dictApplicative) {
+      return function (dictFoldable) {
+          return function (f) {
+              return foldr(dictFoldable)(function ($195) {
+                  return Control_Apply.applySecond(dictApplicative.Apply0())(f($195));
+              })(Control_Applicative.pure(dictApplicative)(Data_Unit.unit));
+          };
+      };
+  };
+  var for_ = function (dictApplicative) {
+      return function (dictFoldable) {
+          return Data_Function.flip(traverse_(dictApplicative)(dictFoldable));
+      };
+  };
+  var sequence_ = function (dictApplicative) {
+      return function (dictFoldable) {
+          return traverse_(dictApplicative)(dictFoldable)(Control_Category.identity(Control_Category.categoryFn));
+      };
+  };
+  var foldl = function (dict) {
+      return dict.foldl;
+  };
+  var intercalate = function (dictFoldable) {
+      return function (dictMonoid) {
+          return function (sep) {
+              return function (xs) {
+                  var go = function (v) {
+                      return function (x) {
+                          if (v.init) {
+                              return {
+                                  init: false,
+                                  acc: x
+                              };
+                          };
+                          return {
+                              init: false,
+                              acc: Data_Semigroup.append(dictMonoid.Semigroup0())(v.acc)(Data_Semigroup.append(dictMonoid.Semigroup0())(sep)(x))
+                          };
+                      };
+                  };
+                  return (foldl(dictFoldable)(go)({
+                      init: true,
+                      acc: Data_Monoid.mempty(dictMonoid)
+                  })(xs)).acc;
+              };
+          };
+      };
+  }; 
+  var foldableMaybe = new Foldable(function (dictMonoid) {
+      return function (f) {
+          return function (v) {
+              if (v instanceof Data_Maybe.Nothing) {
+                  return Data_Monoid.mempty(dictMonoid);
+              };
+              if (v instanceof Data_Maybe.Just) {
+                  return f(v.value0);
+              };
+              throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: " + [ f.constructor.name, v.constructor.name ]);
+          };
+      };
+  }, function (v) {
+      return function (z) {
+          return function (v1) {
+              if (v1 instanceof Data_Maybe.Nothing) {
+                  return z;
+              };
+              if (v1 instanceof Data_Maybe.Just) {
+                  return v(z)(v1.value0);
+              };
+              throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
+          };
+      };
+  }, function (v) {
+      return function (z) {
+          return function (v1) {
+              if (v1 instanceof Data_Maybe.Nothing) {
+                  return z;
+              };
+              if (v1 instanceof Data_Maybe.Just) {
+                  return v(v1.value0)(z);
+              };
+              throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: " + [ v.constructor.name, z.constructor.name, v1.constructor.name ]);
+          };
+      };
+  });
+  var foldMapDefaultR = function (dictFoldable) {
+      return function (dictMonoid) {
+          return function (f) {
+              return foldr(dictFoldable)(function (x) {
+                  return function (acc) {
+                      return Data_Semigroup.append(dictMonoid.Semigroup0())(f(x))(acc);
+                  };
+              })(Data_Monoid.mempty(dictMonoid));
+          };
+      };
+  };
+  var foldableArray = new Foldable(function (dictMonoid) {
+      return foldMapDefaultR(foldableArray)(dictMonoid);
+  }, $foreign.foldlArray, $foreign.foldrArray);
+  var foldMap = function (dict) {
+      return dict.foldMap;
+  };
+  var find = function (dictFoldable) {
+      return function (p) {
+          var go = function (v) {
+              return function (v1) {
+                  if (v instanceof Data_Maybe.Nothing && p(v1)) {
+                      return new Data_Maybe.Just(v1);
+                  };
+                  return v;
+              };
+          };
+          return foldl(dictFoldable)(go)(Data_Maybe.Nothing.value);
+      };
+  };
+  var any = function (dictFoldable) {
+      return function (dictHeytingAlgebra) {
+          return Data_Newtype.alaF(Data_Functor.functorFn)(Data_Functor.functorFn)(Data_Newtype.newtypeDisj)(Data_Newtype.newtypeDisj)(Data_Monoid_Disj.Disj)(foldMap(dictFoldable)(Data_Monoid_Disj.monoidDisj(dictHeytingAlgebra)));
+      };
+  };
+  exports["Foldable"] = Foldable;
+  exports["foldr"] = foldr;
+  exports["foldl"] = foldl;
+  exports["foldMap"] = foldMap;
+  exports["foldMapDefaultR"] = foldMapDefaultR;
+  exports["traverse_"] = traverse_;
+  exports["for_"] = for_;
+  exports["sequence_"] = sequence_;
+  exports["intercalate"] = intercalate;
+  exports["any"] = any;
+  exports["find"] = find;
+  exports["foldableArray"] = foldableArray;
+  exports["foldableMaybe"] = foldableMaybe;
+})(PS["Data.Foldable"] = PS["Data.Foldable"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Extend = PS["Control.Extend"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifoldable = PS["Data.Bifoldable"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Bitraversable = PS["Data.Bitraversable"];
+  var Data_Bounded = PS["Data.Bounded"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Prelude = PS["Prelude"];                 
+  var Left = (function () {
+      function Left(value0) {
+          this.value0 = value0;
+      };
+      Left.create = function (value0) {
+          return new Left(value0);
+      };
+      return Left;
+  })();
+  var Right = (function () {
+      function Right(value0) {
+          this.value0 = value0;
+      };
+      Right.create = function (value0) {
+          return new Right(value0);
+      };
+      return Right;
+  })();
+  var functorEither = new Data_Functor.Functor(function (f) {
+      return function (m) {
+          if (m instanceof Left) {
+              return new Left(m.value0);
+          };
+          if (m instanceof Right) {
+              return new Right(f(m.value0));
+          };
+          throw new Error("Failed pattern match at Data.Either line 35, column 8 - line 35, column 52: " + [ m.constructor.name ]);
+      };
+  });
+  var either = function (v) {
+      return function (v1) {
+          return function (v2) {
+              if (v2 instanceof Left) {
+                  return v(v2.value0);
+              };
+              if (v2 instanceof Right) {
+                  return v1(v2.value0);
+              };
+              throw new Error("Failed pattern match at Data.Either line 220, column 1 - line 220, column 64: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
+          };
+      };
+  };
+  var bifunctorEither = new Data_Bifunctor.Bifunctor(function (v) {
+      return function (v1) {
+          return function (v2) {
+              if (v2 instanceof Left) {
+                  return new Left(v(v2.value0));
+              };
+              if (v2 instanceof Right) {
+                  return new Right(v1(v2.value0));
+              };
+              throw new Error("Failed pattern match at Data.Either line 40, column 1 - line 40, column 45: " + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);
+          };
+      };
+  });
+  var applyEither = new Control_Apply.Apply(function () {
+      return functorEither;
+  }, function (v) {
+      return function (v1) {
+          if (v instanceof Left) {
+              return new Left(v.value0);
+          };
+          if (v instanceof Right) {
+              return Data_Functor.map(functorEither)(v.value0)(v1);
+          };
+          throw new Error("Failed pattern match at Data.Either line 76, column 1 - line 76, column 41: " + [ v.constructor.name, v1.constructor.name ]);
+      };
+  });
+  exports["Left"] = Left;
+  exports["Right"] = Right;
+  exports["either"] = either;
+  exports["functorEither"] = functorEither;
+  exports["bifunctorEither"] = bifunctorEither;
+  exports["applyEither"] = applyEither;
+})(PS["Data.Either"] = PS["Data.Either"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Comonad = PS["Control.Comonad"];
+  var Control_Extend = PS["Control.Extend"];
+  var Control_Lazy = PS["Control.Lazy"];
+  var Control_Monad = PS["Control.Monad"];
+  var Data_BooleanAlgebra = PS["Data.BooleanAlgebra"];
+  var Data_Bounded = PS["Data.Bounded"];
+  var Data_CommutativeRing = PS["Data.CommutativeRing"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_EuclideanRing = PS["Data.EuclideanRing"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Prelude = PS["Prelude"];                 
+  var Identity = function (x) {
+      return x;
+  };
+  var newtypeIdentity = new Data_Newtype.Newtype(function (n) {
+      return n;
+  }, Identity);
+  var functorIdentity = new Data_Functor.Functor(function (f) {
+      return function (m) {
+          return f(m);
+      };
+  });
+  var applyIdentity = new Control_Apply.Apply(function () {
+      return functorIdentity;
+  }, function (v) {
+      return function (v1) {
+          return v(v1);
+      };
+  });
+  var bindIdentity = new Control_Bind.Bind(function () {
+      return applyIdentity;
+  }, function (v) {
+      return function (f) {
+          return f(v);
+      };
+  });
+  var applicativeIdentity = new Control_Applicative.Applicative(function () {
+      return applyIdentity;
+  }, Identity);
+  var monadIdentity = new Control_Monad.Monad(function () {
+      return applicativeIdentity;
+  }, function () {
+      return bindIdentity;
+  });
+  exports["Identity"] = Identity;
+  exports["newtypeIdentity"] = newtypeIdentity;
+  exports["functorIdentity"] = functorIdentity;
+  exports["applyIdentity"] = applyIdentity;
+  exports["applicativeIdentity"] = applicativeIdentity;
+  exports["bindIdentity"] = bindIdentity;
+  exports["monadIdentity"] = monadIdentity;
+})(PS["Data.Identity"] = PS["Data.Identity"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.pureE = function (a) {
+    return function () {
+      return a;
+    };
+  };
+
+  exports.bindE = function (a) {
+    return function (f) {
+      return function () {
+        return f(a())();
+      };
+    };
+  };
+
+  exports.foreachE = function (as) {
+    return function (f) {
+      return function () {
+        for (var i = 0, l = as.length; i < l; i++) {
+          f(as[i])();
+        }
+      };
+    };
+  };
+})(PS["Effect"] = PS["Effect"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Effect"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad = PS["Control.Monad"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Prelude = PS["Prelude"];                 
+  var monadEffect = new Control_Monad.Monad(function () {
+      return applicativeEffect;
+  }, function () {
+      return bindEffect;
+  });
+  var bindEffect = new Control_Bind.Bind(function () {
+      return applyEffect;
+  }, $foreign.bindE);
+  var applyEffect = new Control_Apply.Apply(function () {
+      return functorEffect;
+  }, Control_Monad.ap(monadEffect));
+  var applicativeEffect = new Control_Applicative.Applicative(function () {
+      return applyEffect;
+  }, $foreign.pureE);
+  var functorEffect = new Data_Functor.Functor(Control_Applicative.liftA1(applicativeEffect));
+  exports["functorEffect"] = functorEffect;
+  exports["applyEffect"] = applyEffect;
+  exports["applicativeEffect"] = applicativeEffect;
+  exports["bindEffect"] = bindEffect;
+  exports["monadEffect"] = monadEffect;
+  exports["foreachE"] = $foreign.foreachE;
+})(PS["Effect"] = PS["Effect"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.new = function (val) {
+    return function () {
+      return { value: val };
+    };
+  };
+
+  exports.read = function (ref) {
+    return function () {
+      return ref.value;
+    };
+  };
+
+  exports["modify'"] = function (f) {
+    return function (ref) {
+      return function () {
+        var t = f(ref.value);
+        ref.value = t.state;
+        return t.value;
+      };
+    };
+  };
+
+  exports.write = function (val) {
+    return function (ref) {
+      return function () {
+        ref.value = val;
+        return {};
+      };
+    };
+  };
+})(PS["Effect.Ref"] = PS["Effect.Ref"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Effect.Ref"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];                 
+  var modify = function (f) {
+      return $foreign["modify'"](function (s) {
+          var s$prime = f(s);
+          return {
+              state: s$prime,
+              value: s$prime
+          };
+      });
+  };
+  var modify_ = function (f) {
+      return function (s) {
+          return Data_Functor["void"](Effect.functorEffect)(modify(f)(s));
+      };
+  };
+  exports["modify"] = modify;
+  exports["modify_"] = modify_;
+  exports["new"] = $foreign["new"];
+  exports["read"] = $foreign.read;
+  exports["modify'"] = $foreign["modify'"];
+  exports["write"] = $foreign.write;
+})(PS["Effect.Ref"] = PS["Effect.Ref"] || {});
+(function(exports) {
+    "use strict";
+
+  // module Partial.Unsafe
+
+  exports.unsafePartial = function (f) {
+    return f();
+  };
+})(PS["Partial.Unsafe"] = PS["Partial.Unsafe"] || {});
+(function(exports) {
+    "use strict";
+
+  // module Partial
+
+  exports.crashWith = function () {
+    return function (msg) {
+      throw new Error(msg);
+    };
+  };
+})(PS["Partial"] = PS["Partial"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Partial"];
+  exports["crashWith"] = $foreign.crashWith;
+})(PS["Partial"] = PS["Partial"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Partial.Unsafe"];
+  var Partial = PS["Partial"];
+  var unsafeCrashWith = function (msg) {
+      return $foreign.unsafePartial(function (dictPartial) {
+          return Partial.crashWith(dictPartial)(msg);
+      });
+  };
+  exports["unsafeCrashWith"] = unsafeCrashWith;
+})(PS["Partial.Unsafe"] = PS["Partial.Unsafe"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Identity = PS["Data.Identity"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Effect_Ref = PS["Effect.Ref"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];                 
+  var Loop = (function () {
+      function Loop(value0) {
+          this.value0 = value0;
+      };
+      Loop.create = function (value0) {
+          return new Loop(value0);
+      };
+      return Loop;
+  })();
+  var Done = (function () {
+      function Done(value0) {
+          this.value0 = value0;
+      };
+      Done.create = function (value0) {
+          return new Done(value0);
+      };
+      return Done;
+  })();
+  var MonadRec = function (Monad0, tailRecM) {
+      this.Monad0 = Monad0;
+      this.tailRecM = tailRecM;
+  };
+  var tailRecM = function (dict) {
+      return dict.tailRecM;
+  }; 
+  var monadRecEffect = new MonadRec(function () {
+      return Effect.monadEffect;
+  }, function (f) {
+      return function (a) {
+          var fromDone = function (v) {
+              var $__unused = function (dictPartial1) {
+                  return function ($dollar19) {
+                      return $dollar19;
+                  };
+              };
+              return $__unused()((function () {
+                  if (v instanceof Done) {
+                      return v.value0;
+                  };
+                  throw new Error("Failed pattern match at Control.Monad.Rec.Class line 111, column 30 - line 111, column 44: " + [ v.constructor.name ]);
+              })());
+          };
+          return function __do() {
+              var v = Control_Bind.bindFlipped(Effect.bindEffect)(Effect_Ref["new"])(f(a))();
+              (function () {
+                  while (!(function __do() {
+                      var v1 = Effect_Ref.read(v)();
+                      if (v1 instanceof Loop) {
+                          var v2 = f(v1.value0)();
+                          var v3 = Effect_Ref.write(v2)(v)();
+                          return false;
+                      };
+                      if (v1 instanceof Done) {
+                          return true;
+                      };
+                      throw new Error("Failed pattern match at Control.Monad.Rec.Class line 102, column 22 - line 107, column 28: " + [ v1.constructor.name ]);
+                  })()) {
+
+                  };
+                  return {};
+              })();
+              return Data_Functor.map(Effect.functorEffect)(fromDone)(Effect_Ref.read(v))();
+          };
+      };
+  });
+  exports["Loop"] = Loop;
+  exports["Done"] = Done;
+  exports["MonadRec"] = MonadRec;
+  exports["tailRecM"] = tailRecM;
+  exports["monadRecEffect"] = monadRecEffect;
+})(PS["Control.Monad.Rec.Class"] = PS["Control.Monad.Rec.Class"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Biapplicative = PS["Control.Biapplicative"];
+  var Control_Biapply = PS["Control.Biapply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Comonad = PS["Control.Comonad"];
+  var Control_Extend = PS["Control.Extend"];
+  var Control_Lazy = PS["Control.Lazy"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifoldable = PS["Data.Bifoldable"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Bitraversable = PS["Data.Bitraversable"];
+  var Data_BooleanAlgebra = PS["Data.BooleanAlgebra"];
+  var Data_Bounded = PS["Data.Bounded"];
+  var Data_CommutativeRing = PS["Data.CommutativeRing"];
+  var Data_Distributive = PS["Data.Distributive"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Maybe_First = PS["Data.Maybe.First"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_Unit = PS["Data.Unit"];
+  var Prelude = PS["Prelude"];
+  var Type_Equality = PS["Type.Equality"];                 
+  var Tuple = (function () {
+      function Tuple(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Tuple.create = function (value0) {
+          return function (value1) {
+              return new Tuple(value0, value1);
+          };
+      };
+      return Tuple;
+  })();
+  var snd = function (v) {
+      return v.value1;
+  };
+  var functorTuple = new Data_Functor.Functor(function (f) {
+      return function (m) {
+          return new Tuple(m.value0, f(m.value1));
+      };
+  });                                                                                                   
+  var fst = function (v) {
+      return v.value0;
+  };
+  exports["Tuple"] = Tuple;
+  exports["fst"] = fst;
+  exports["snd"] = snd;
+  exports["functorTuple"] = functorTuple;
+})(PS["Data.Tuple"] = PS["Data.Tuple"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.unfoldrArrayImpl = function (isNothing) {
+    return function (fromJust) {
+      return function (fst) {
+        return function (snd) {
+          return function (f) {
+            return function (b) {
+              var result = [];
+              var value = b;
+              while (true) { // eslint-disable-line no-constant-condition
+                var maybe = f(value);
+                if (isNothing(maybe)) return result;
+                var tuple = fromJust(maybe);
+                result.push(fst(tuple));
+                value = snd(tuple);
+              }
+            };
+          };
+        };
+      };
+    };
+  };
+})(PS["Data.Unfoldable"] = PS["Data.Unfoldable"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.unfoldr1ArrayImpl = function (isNothing) {
+    return function (fromJust) {
+      return function (fst) {
+        return function (snd) {
+          return function (f) {
+            return function (b) {
+              var result = [];
+              var value = b;
+              while (true) { // eslint-disable-line no-constant-condition
+                var tuple = f(value);
+                result.push(fst(tuple));
+                var maybe = snd(tuple);
+                if (isNothing(maybe)) return result;
+                value = fromJust(maybe);
+              }
+            };
+          };
+        };
+      };
+    };
+  };
+})(PS["Data.Unfoldable1"] = PS["Data.Unfoldable1"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.Unfoldable1"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];                 
+  var Unfoldable1 = function (unfoldr1) {
+      this.unfoldr1 = unfoldr1;
+  };
+  var unfoldr1 = function (dict) {
+      return dict.unfoldr1;
+  };
+  var unfoldable1Array = new Unfoldable1($foreign.unfoldr1ArrayImpl(Data_Maybe.isNothing)(Data_Maybe.fromJust())(Data_Tuple.fst)(Data_Tuple.snd));
+  exports["Unfoldable1"] = Unfoldable1;
+  exports["unfoldr1"] = unfoldr1;
+  exports["unfoldable1Array"] = unfoldable1Array;
+})(PS["Data.Unfoldable1"] = PS["Data.Unfoldable1"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.Unfoldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
+  var Data_Unit = PS["Data.Unit"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];                 
+  var Unfoldable = function (Unfoldable10, unfoldr) {
+      this.Unfoldable10 = Unfoldable10;
+      this.unfoldr = unfoldr;
+  };
+  var unfoldr = function (dict) {
+      return dict.unfoldr;
+  };
+  var unfoldableArray = new Unfoldable(function () {
+      return Data_Unfoldable1.unfoldable1Array;
+  }, $foreign.unfoldrArrayImpl(Data_Maybe.isNothing)(Data_Maybe.fromJust())(Data_Tuple.fst)(Data_Tuple.snd));
+  exports["Unfoldable"] = Unfoldable;
+  exports["unfoldr"] = unfoldr;
+  exports["unfoldableArray"] = unfoldableArray;
+})(PS["Data.Unfoldable"] = PS["Data.Unfoldable"] || {});
+(function(exports) {
+    "use strict";
+
+  // module Unsafe.Coerce
+
+  exports.unsafeCoerce = function (x) {
+    return x;
+  };
+})(PS["Unsafe.Coerce"] = PS["Unsafe.Coerce"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Unsafe.Coerce"];
+  exports["unsafeCoerce"] = $foreign.unsafeCoerce;
+})(PS["Unsafe.Coerce"] = PS["Unsafe.Coerce"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.Array"];
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Lazy = PS["Control.Lazy"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Monad_ST = PS["Control.Monad.ST"];
+  var Control_Monad_ST_Internal = PS["Control.Monad.ST.Internal"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Array_NonEmpty_Internal = PS["Data.Array.NonEmpty.Internal"];
+  var Data_Array_ST = PS["Data.Array.ST"];
+  var Data_Array_ST_Iterator = PS["Data.Array.ST.Iterator"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var singleton = function (a) {
+      return [ a ];
+  };
+  var concatMap = Data_Function.flip(Control_Bind.bind(Control_Bind.bindArray));
+  var mapMaybe = function (f) {
+      return concatMap(function ($114) {
+          return Data_Maybe.maybe([  ])(singleton)(f($114));
+      });
+  };
+  exports["singleton"] = singleton;
+  exports["concatMap"] = concatMap;
+  exports["mapMaybe"] = mapMaybe;
+  exports["length"] = $foreign.length;
+  exports["cons"] = $foreign.cons;
+  exports["snoc"] = $foreign.snoc;
+  exports["filter"] = $foreign.filter;
+  exports["drop"] = $foreign.drop;
+})(PS["Data.Array"] = PS["Data.Array"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.replace = function (s1) {
+    return function (s2) {
+      return function (s3) {
+        return s3.replace(s1, s2);
+      };
+    };
+  };
+
+  exports.replaceAll = function (s1) {
+    return function (s2) {
+      return function (s3) {
+        return s3.replace(new RegExp(s1.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"), "g"), s2); // eslint-disable-line no-useless-escape
+      };
+    };
+  };
+
+  exports.split = function (sep) {
+    return function (s) {
+      return s.split(sep);
+    };
+  };
+
+  exports.joinWith = function (s) {
+    return function (xs) {
+      return xs.join(s);
+    };
+  };
+})(PS["Data.String.Common"] = PS["Data.String.Common"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.String.Common"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_String_Pattern = PS["Data.String.Pattern"];
+  var Prelude = PS["Prelude"];                 
+  var $$null = function (s) {
+      return s === "";
+  };
+  exports["null"] = $$null;
+  exports["replaceAll"] = $foreign.replaceAll;
+  exports["split"] = $foreign.split;
+  exports["joinWith"] = $foreign.joinWith;
+})(PS["Data.String.Common"] = PS["Data.String.Common"] || {});
+(function(exports) {
+  /* globals exports, JSON */
+  "use strict";
+
+  exports.unsafeStringify = function (x) {
+    return JSON.stringify(x);
+  };                                  
+  exports.unsafeDecodeURIComponent = decodeURIComponent;
+  exports.unsafeEncodeURIComponent = encodeURIComponent;
+})(PS["Global.Unsafe"] = PS["Global.Unsafe"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Global.Unsafe"];
+  exports["unsafeStringify"] = $foreign.unsafeStringify;
+  exports["unsafeDecodeURIComponent"] = $foreign.unsafeDecodeURIComponent;
+  exports["unsafeEncodeURIComponent"] = $foreign.unsafeEncodeURIComponent;
+})(PS["Global.Unsafe"] = PS["Global.Unsafe"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Data_String = PS["Data.String"];
+  var Data_String_Common = PS["Data.String.Common"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Global_Unsafe = PS["Global.Unsafe"];
+  var Prelude = PS["Prelude"];
+  var toArray = function (v) {
+      return v;
+  };                                                                                                                 
+  var encode = (function () {
+      var encodePart = function (v) {
+          if (v.value1 instanceof Data_Maybe.Nothing) {
+              return Global_Unsafe.unsafeEncodeURIComponent(v.value0);
+          };
+          if (v.value1 instanceof Data_Maybe.Just) {
+              return Global_Unsafe.unsafeEncodeURIComponent(v.value0) + ("=" + Global_Unsafe.unsafeEncodeURIComponent(v.value1.value0));
+          };
+          throw new Error("Failed pattern match at Data.FormURLEncoded line 35, column 18 - line 37, column 89: " + [ v.constructor.name ]);
+      };
+      return function ($14) {
+          return Data_String_Common.joinWith("&")(Data_Functor.map(Data_Functor.functorArray)(encodePart)(toArray($14)));
+      };
+  })();
+  exports["toArray"] = toArray;
+  exports["encode"] = encode;
+})(PS["Data.FormURLEncoded"] = PS["Data.FormURLEncoded"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Data_Either = PS["Data.Either"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Data_String = PS["Data.String"];
+  var Data_String_Common = PS["Data.String.Common"];
+  var Prelude = PS["Prelude"];                 
+  var OPTIONS = (function () {
+      function OPTIONS() {
+
+      };
+      OPTIONS.value = new OPTIONS();
+      return OPTIONS;
+  })();
+  var GET = (function () {
+      function GET() {
+
+      };
+      GET.value = new GET();
+      return GET;
+  })();
+  var HEAD = (function () {
+      function HEAD() {
+
+      };
+      HEAD.value = new HEAD();
+      return HEAD;
+  })();
+  var POST = (function () {
+      function POST() {
+
+      };
+      POST.value = new POST();
+      return POST;
+  })();
+  var PUT = (function () {
+      function PUT() {
+
+      };
+      PUT.value = new PUT();
+      return PUT;
+  })();
+  var DELETE = (function () {
+      function DELETE() {
+
+      };
+      DELETE.value = new DELETE();
+      return DELETE;
+  })();
+  var TRACE = (function () {
+      function TRACE() {
+
+      };
+      TRACE.value = new TRACE();
+      return TRACE;
+  })();
+  var CONNECT = (function () {
+      function CONNECT() {
+
+      };
+      CONNECT.value = new CONNECT();
+      return CONNECT;
+  })();
+  var PROPFIND = (function () {
+      function PROPFIND() {
+
+      };
+      PROPFIND.value = new PROPFIND();
+      return PROPFIND;
+  })();
+  var PROPPATCH = (function () {
+      function PROPPATCH() {
+
+      };
+      PROPPATCH.value = new PROPPATCH();
+      return PROPPATCH;
+  })();
+  var MKCOL = (function () {
+      function MKCOL() {
+
+      };
+      MKCOL.value = new MKCOL();
+      return MKCOL;
+  })();
+  var COPY = (function () {
+      function COPY() {
+
+      };
+      COPY.value = new COPY();
+      return COPY;
+  })();
+  var MOVE = (function () {
+      function MOVE() {
+
+      };
+      MOVE.value = new MOVE();
+      return MOVE;
+  })();
+  var LOCK = (function () {
+      function LOCK() {
+
+      };
+      LOCK.value = new LOCK();
+      return LOCK;
+  })();
+  var UNLOCK = (function () {
+      function UNLOCK() {
+
+      };
+      UNLOCK.value = new UNLOCK();
+      return UNLOCK;
+  })();
+  var PATCH = (function () {
+      function PATCH() {
+
+      };
+      PATCH.value = new PATCH();
+      return PATCH;
+  })();
+  var unCustomMethod = function (v) {
+      return v;
+  };
+  var showMethod = new Data_Show.Show(function (v) {
+      if (v instanceof OPTIONS) {
+          return "OPTIONS";
+      };
+      if (v instanceof GET) {
+          return "GET";
+      };
+      if (v instanceof HEAD) {
+          return "HEAD";
+      };
+      if (v instanceof POST) {
+          return "POST";
+      };
+      if (v instanceof PUT) {
+          return "PUT";
+      };
+      if (v instanceof DELETE) {
+          return "DELETE";
+      };
+      if (v instanceof TRACE) {
+          return "TRACE";
+      };
+      if (v instanceof CONNECT) {
+          return "CONNECT";
+      };
+      if (v instanceof PROPFIND) {
+          return "PROPFIND";
+      };
+      if (v instanceof PROPPATCH) {
+          return "PROPPATCH";
+      };
+      if (v instanceof MKCOL) {
+          return "MKCOL";
+      };
+      if (v instanceof COPY) {
+          return "COPY";
+      };
+      if (v instanceof MOVE) {
+          return "MOVE";
+      };
+      if (v instanceof LOCK) {
+          return "LOCK";
+      };
+      if (v instanceof UNLOCK) {
+          return "UNLOCK";
+      };
+      if (v instanceof PATCH) {
+          return "PATCH";
+      };
+      throw new Error("Failed pattern match at Data.HTTP.Method line 40, column 1 - line 40, column 35: " + [ v.constructor.name ]);
+  });
+  var print = Data_Either.either(Data_Show.show(showMethod))(unCustomMethod);
+  exports["OPTIONS"] = OPTIONS;
+  exports["GET"] = GET;
+  exports["HEAD"] = HEAD;
+  exports["POST"] = POST;
+  exports["PUT"] = PUT;
+  exports["DELETE"] = DELETE;
+  exports["TRACE"] = TRACE;
+  exports["CONNECT"] = CONNECT;
+  exports["PROPFIND"] = PROPFIND;
+  exports["PROPPATCH"] = PROPPATCH;
+  exports["MKCOL"] = MKCOL;
+  exports["COPY"] = COPY;
+  exports["MOVE"] = MOVE;
+  exports["LOCK"] = LOCK;
+  exports["UNLOCK"] = UNLOCK;
+  exports["PATCH"] = PATCH;
+  exports["unCustomMethod"] = unCustomMethod;
+  exports["print"] = print;
+  exports["showMethod"] = showMethod;
+})(PS["Data.HTTP.Method"] = PS["Data.HTTP.Method"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Prelude = PS["Prelude"];                 
+  var MediaType = function (x) {
+      return x;
+  }; 
+  var newtypeMediaType = new Data_Newtype.Newtype(function (n) {
+      return n;
+  }, MediaType);
+  exports["MediaType"] = MediaType;
+  exports["newtypeMediaType"] = newtypeMediaType;
+})(PS["Data.MediaType"] = PS["Data.MediaType"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Data_MediaType = PS["Data.MediaType"];           
+  var applicationJSON = "application/json";
+  var applicationFormURLEncoded = "application/x-www-form-urlencoded";
+  exports["applicationFormURLEncoded"] = applicationFormURLEncoded;
+  exports["applicationJSON"] = applicationJSON;
+})(PS["Data.MediaType.Common"] = PS["Data.MediaType.Common"] || {});
+(function(exports) {
+  /* globals setImmediate, clearImmediate, setTimeout, clearTimeout */
+  /* jshint -W083, -W098, -W003 */
+  "use strict";
+
+  var Aff = function () {
+    // A unique value for empty.
+    var EMPTY = {};
+
+    /*
+
+  An awkward approximation. We elide evidence we would otherwise need in PS for
+  efficiency sake.
+
+  data Aff eff a
+    = Pure a
+    | Throw Error
+    | Catch (Aff eff a) (Error -> Aff eff a)
+    | Sync (Eff eff a)
+    | Async ((Either Error a -> Eff eff Unit) -> Eff eff (Canceler eff))
+    | forall b. Bind (Aff eff b) (b -> Aff eff a)
+    | forall b. Bracket (Aff eff b) (BracketConditions eff b) (b -> Aff eff a)
+    | forall b. Fork Boolean (Aff eff b) ?(Fiber eff b -> a)
+    | Sequential (ParAff aff a)
+
+  */  
+    var PURE    = "Pure";
+    var THROW   = "Throw";
+    var CATCH   = "Catch";
+    var SYNC    = "Sync";
+    var ASYNC   = "Async";
+    var BIND    = "Bind";
+    var BRACKET = "Bracket";
+    var FORK    = "Fork";
+    var SEQ     = "Sequential";
+
+    /*
+
+  data ParAff eff a
+    = forall b. Map (b -> a) (ParAff eff b)
+    | forall b. Apply (ParAff eff (b -> a)) (ParAff eff b)
+    | Alt (ParAff eff a) (ParAff eff a)
+    | ?Par (Aff eff a)
+
+  */  
+    var MAP   = "Map";
+    var APPLY = "Apply";
+    var ALT   = "Alt";
+
+    // Various constructors used in interpretation
+    var CONS      = "Cons";      // Cons-list, for stacks
+    var RESUME    = "Resume";    // Continue indiscriminately
+    var RELEASE   = "Release";   // Continue with bracket finalizers
+    var FINALIZER = "Finalizer"; // A non-interruptible effect
+    var FINALIZED = "Finalized"; // Marker for finalization
+    var FORKED    = "Forked";    // Reference to a forked fiber, with resumption stack
+    var FIBER     = "Fiber";     // Actual fiber reference
+    var THUNK     = "Thunk";     // Primed effect, ready to invoke
+
+    function Aff(tag, _1, _2, _3) {
+      this.tag = tag;
+      this._1  = _1;
+      this._2  = _2;
+      this._3  = _3;
+    }
+
+    function AffCtr(tag) {
+      var fn = function (_1, _2, _3) {
+        return new Aff(tag, _1, _2, _3);
+      };
+      fn.tag = tag;
+      return fn;
+    }
+
+    function nonCanceler(error) {
+      return new Aff(PURE, void 0);
+    }
+
+    function runEff(eff) {
+      try {
+        eff();
+      } catch (error) {
+        setTimeout(function () {
+          throw error;
+        }, 0);
+      }
+    }
+
+    function runSync(left, right, eff) {
+      try {
+        return right(eff());
+      } catch (error) {
+        return left(error);
+      }
+    }
+
+    function runAsync(left, eff, k) {
+      try {
+        return eff(k)();
+      } catch (error) {
+        k(left(error))();
+        return nonCanceler;
+      }
+    }
+
+    var Scheduler = function () {
+      var limit    = 1024;
+      var size     = 0;
+      var ix       = 0;
+      var queue    = new Array(limit);
+      var draining = false;
+
+      function drain() {
+        var thunk;
+        draining = true;
+        while (size !== 0) {
+          size--;
+          thunk     = queue[ix];
+          queue[ix] = void 0;
+          ix        = (ix + 1) % limit;
+          thunk();
+        }
+        draining = false;
+      }
+
+      return {
+        isDraining: function () {
+          return draining;
+        },
+        enqueue: function (cb) {
+          var i, tmp;
+          if (size === limit) {
+            tmp = draining;
+            drain();
+            draining = tmp;
+          }
+
+          queue[(ix + size) % limit] = cb;
+          size++;
+
+          if (!draining) {
+            drain();
+          }
+        }
+      };
+    }();
+
+    function Supervisor(util) {
+      var fibers  = {};
+      var fiberId = 0;
+      var count   = 0;
+
+      return {
+        register: function (fiber) {
+          var fid = fiberId++;
+          fiber.onComplete({
+            rethrow: true,
+            handler: function (result) {
+              return function () {
+                count--;
+                delete fibers[fid];
+              };
+            }
+          });
+          fibers[fid] = fiber;
+          count++;
+        },
+        isEmpty: function () {
+          return count === 0;
+        },
+        killAll: function (killError, cb) {
+          return function () {
+            var killCount = 0;
+            var kills     = {};
+
+            function kill(fid) {
+              kills[fid] = fibers[fid].kill(killError, function (result) {
+                return function () {
+                  delete kills[fid];
+                  killCount--;
+                  if (util.isLeft(result) && util.fromLeft(result)) {
+                    setTimeout(function () {
+                      throw util.fromLeft(result);
+                    }, 0);
+                  }
+                  if (killCount === 0) {
+                    cb();
+                  }
+                };
+              })();
+            }
+
+            for (var k in fibers) {
+              if (fibers.hasOwnProperty(k)) {
+                killCount++;
+                kill(k);
+              }
+            }
+
+            fibers  = {};
+            fiberId = 0;
+            count   = 0;
+
+            return function (error) {
+              return new Aff(SYNC, function () {
+                for (var k in kills) {
+                  if (kills.hasOwnProperty(k)) {
+                    kills[k]();
+                  }
+                }
+              });
+            };
+          };
+        }
+      };
+    }
+
+    // Fiber state machine
+    var SUSPENDED   = 0; // Suspended, pending a join.
+    var CONTINUE    = 1; // Interpret the next instruction.
+    var STEP_BIND   = 2; // Apply the next bind.
+    var STEP_RESULT = 3; // Handle potential failure from a result.
+    var PENDING     = 4; // An async effect is running.
+    var RETURN      = 5; // The current stack has returned.
+    var COMPLETED   = 6; // The entire fiber has completed.
+
+    function Fiber(util, supervisor, aff) {
+      // Monotonically increasing tick, increased on each asynchronous turn.
+      var runTick = 0;
+
+      // The current branch of the state machine.
+      var status = SUSPENDED;
+
+      // The current point of interest for the state machine branch.
+      var step      = aff;  // Successful step
+      var fail      = null; // Failure step
+      var interrupt = null; // Asynchronous interrupt
+
+      // Stack of continuations for the current fiber.
+      var bhead = null;
+      var btail = null;
+
+      // Stack of attempts and finalizers for error recovery. Every `Cons` is also
+      // tagged with current `interrupt` state. We use this to track which items
+      // should be ignored or evaluated as a result of a kill.
+      var attempts = null;
+
+      // A special state is needed for Bracket, because it cannot be killed. When
+      // we enter a bracket acquisition or finalizer, we increment the counter,
+      // and then decrement once complete.
+      var bracketCount = 0;
+
+      // Each join gets a new id so they can be revoked.
+      var joinId  = 0;
+      var joins   = null;
+      var rethrow = true;
+
+      // Each invocation of `run` requires a tick. When an asynchronous effect is
+      // resolved, we must check that the local tick coincides with the fiber
+      // tick before resuming. This prevents multiple async continuations from
+      // accidentally resuming the same fiber. A common example may be invoking
+      // the provided callback in `makeAff` more than once, but it may also be an
+      // async effect resuming after the fiber was already cancelled.
+      function run(localRunTick) {
+        var tmp, result, attempt, canceler;
+        while (true) {
+          tmp       = null;
+          result    = null;
+          attempt   = null;
+          canceler  = null;
+
+          switch (status) {
+          case STEP_BIND:
+            status = CONTINUE;
+            step   = bhead(step);
+            if (btail === null) {
+              bhead = null;
+            } else {
+              bhead = btail._1;
+              btail = btail._2;
+            }
+            break;
+
+          case STEP_RESULT:
+            if (util.isLeft(step)) {
+              status = RETURN;
+              fail   = step;
+              step   = null;
+            } else if (bhead === null) {
+              status = RETURN;
+            } else {
+              status = STEP_BIND;
+              step   = util.fromRight(step);
+            }
+            break;
+
+          case CONTINUE:
+            switch (step.tag) {
+            case BIND:
+              if (bhead) {
+                btail = new Aff(CONS, bhead, btail);
+              }
+              bhead  = step._2;
+              status = CONTINUE;
+              step   = step._1;
+              break;
+
+            case PURE:
+              if (bhead === null) {
+                status = RETURN;
+                step   = util.right(step._1);
+              } else {
+                status = STEP_BIND;
+                step   = step._1;
+              }
+              break;
+
+            case SYNC:
+              status = STEP_RESULT;
+              step   = runSync(util.left, util.right, step._1);
+              break;
+
+            case ASYNC:
+              status = PENDING;
+              step   = runAsync(util.left, step._1, function (result) {
+                return function () {
+                  if (runTick !== localRunTick) {
+                    return;
+                  }
+                  runTick++;
+                  Scheduler.enqueue(function () {
+                    status = STEP_RESULT;
+                    step   = result;
+                    run(runTick);
+                  });
+                };
+              });
+              return;
+
+            case THROW:
+              status = RETURN;
+              fail   = util.left(step._1);
+              step   = null;
+              break;
+
+            // Enqueue the Catch so that we can call the error handler later on
+            // in case of an exception.
+            case CATCH:
+              if (bhead === null) {
+                attempts = new Aff(CONS, step, attempts, interrupt);
+              } else {
+                attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);
+              }
+              bhead    = null;
+              btail    = null;
+              status   = CONTINUE;
+              step     = step._1;
+              break;
+
+            // Enqueue the Bracket so that we can call the appropriate handlers
+            // after resource acquisition.
+            case BRACKET:
+              bracketCount++;
+              if (bhead === null) {
+                attempts = new Aff(CONS, step, attempts, interrupt);
+              } else {
+                attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);
+              }
+              bhead  = null;
+              btail  = null;
+              status = CONTINUE;
+              step   = step._1;
+              break;
+
+            case FORK:
+              status = STEP_RESULT;
+              tmp    = Fiber(util, supervisor, step._2);
+              if (supervisor) {
+                supervisor.register(tmp);
+              }
+              if (step._1) {
+                tmp.run();
+              }
+              step = util.right(tmp);
+              break;
+
+            case SEQ:
+              status = CONTINUE;
+              step   = sequential(util, supervisor, step._1);
+              break;
+            }
+            break;
+
+          case RETURN:
+            bhead = null;
+            btail = null;
+            // If the current stack has returned, and we have no other stacks to
+            // resume or finalizers to run, the fiber has halted and we can
+            // invoke all join callbacks. Otherwise we need to resume.
+            if (attempts === null) {
+              status = COMPLETED;
+              step   = interrupt || fail || step;
+            } else {
+              // The interrupt status for the enqueued item.
+              tmp      = attempts._3;
+              attempt  = attempts._1;
+              attempts = attempts._2;
+
+              switch (attempt.tag) {
+              // We cannot recover from an interrupt. Otherwise we should
+              // continue stepping, or run the exception handler if an exception
+              // was raised.
+              case CATCH:
+                // We should compare the interrupt status as well because we
+                // only want it to apply if there has been an interrupt since
+                // enqueuing the catch.
+                if (interrupt && interrupt !== tmp) {
+                  status = RETURN;
+                } else if (fail) {
+                  status = CONTINUE;
+                  step   = attempt._2(util.fromLeft(fail));
+                  fail   = null;
+                }
+                break;
+
+              // We cannot resume from an interrupt or exception.
+              case RESUME:
+                // As with Catch, we only want to ignore in the case of an
+                // interrupt since enqueing the item.
+                if (interrupt && interrupt !== tmp || fail) {
+                  status = RETURN;
+                } else {
+                  bhead  = attempt._1;
+                  btail  = attempt._2;
+                  status = STEP_BIND;
+                  step   = util.fromRight(step);
+                }
+                break;
+
+              // If we have a bracket, we should enqueue the handlers,
+              // and continue with the success branch only if the fiber has
+              // not been interrupted. If the bracket acquisition failed, we
+              // should not run either.
+              case BRACKET:
+                bracketCount--;
+                if (fail === null) {
+                  result   = util.fromRight(step);
+                  // We need to enqueue the Release with the same interrupt
+                  // status as the Bracket that is initiating it.
+                  attempts = new Aff(CONS, new Aff(RELEASE, attempt._2, result), attempts, tmp);
+                  // We should only coninue as long as the interrupt status has not changed or
+                  // we are currently within a non-interruptable finalizer.
+                  if (interrupt === tmp || bracketCount > 0) {
+                    status = CONTINUE;
+                    step   = attempt._3(result);
+                  }
+                }
+                break;
+
+              // Enqueue the appropriate handler. We increase the bracket count
+              // because it should not be cancelled.
+              case RELEASE:
+                bracketCount++;
+                attempts = new Aff(CONS, new Aff(FINALIZED, step), attempts, interrupt);
+                status   = CONTINUE;
+                // It has only been killed if the interrupt status has changed
+                // since we enqueued the item.
+                if (interrupt && interrupt !== tmp) {
+                  step = attempt._1.killed(util.fromLeft(interrupt))(attempt._2);
+                } else if (fail) {
+                  step = attempt._1.failed(util.fromLeft(fail))(attempt._2);
+                } else {
+                  step = attempt._1.completed(util.fromRight(step))(attempt._2);
+                }
+                break;
+
+              case FINALIZER:
+                bracketCount++;
+                attempts = new Aff(CONS, new Aff(FINALIZED, step), attempts, interrupt);
+                status   = CONTINUE;
+                step     = attempt._1;
+                break;
+
+              case FINALIZED:
+                bracketCount--;
+                status = RETURN;
+                step   = attempt._1;
+                break;
+              }
+            }
+            break;
+
+          case COMPLETED:
+            for (var k in joins) {
+              if (joins.hasOwnProperty(k)) {
+                rethrow = rethrow && joins[k].rethrow;
+                runEff(joins[k].handler(step));
+              }
+            }
+            joins = null;
+            // If we have an interrupt and a fail, then the thread threw while
+            // running finalizers. This should always rethrow in a fresh stack.
+            if (interrupt && fail) {
+              setTimeout(function () {
+                throw util.fromLeft(fail);
+              }, 0);
+            // If we have an unhandled exception, and no other fiber has joined
+            // then we need to throw the exception in a fresh stack.
+            } else if (util.isLeft(step) && rethrow) {
+              setTimeout(function () {
+                // Guard on reathrow because a completely synchronous fiber can
+                // still have an observer which was added after-the-fact.
+                if (rethrow) {
+                  throw util.fromLeft(step);
+                }
+              }, 0);
+            }
+            return;
+          case SUSPENDED:
+            status = CONTINUE;
+            break;
+          case PENDING: return;
+          }
+        }
+      }
+
+      function onComplete(join) {
+        return function () {
+          if (status === COMPLETED) {
+            rethrow = rethrow && join.rethrow;
+            join.handler(step)();
+            return function () {};
+          }
+
+          var jid    = joinId++;
+          joins      = joins || {};
+          joins[jid] = join;
+
+          return function() {
+            if (joins !== null) {
+              delete joins[jid];
+            }
+          };
+        };
+      }
+
+      function kill(error, cb) {
+        return function () {
+          if (status === COMPLETED) {
+            cb(util.right(void 0))();
+            return function () {};
+          }
+
+          var canceler = onComplete({
+            rethrow: false,
+            handler: function (/* unused */) {
+              return cb(util.right(void 0));
+            }
+          })();
+
+          switch (status) {
+          case SUSPENDED:
+            interrupt = util.left(error);
+            status    = COMPLETED;
+            step      = interrupt;
+            run(runTick);
+            break;
+          case PENDING:
+            if (interrupt === null) {
+              interrupt = util.left(error);
+            }
+            if (bracketCount === 0) {
+              if (status === PENDING) {
+                attempts = new Aff(CONS, new Aff(FINALIZER, step(error)), attempts, interrupt);
+              }
+              status   = RETURN;
+              step     = null;
+              fail     = null;
+              run(++runTick);
+            }
+            break;
+          default:
+            if (interrupt === null) {
+              interrupt = util.left(error);
+            }
+            if (bracketCount === 0) {
+              status = RETURN;
+              step   = null;
+              fail   = null;
+            }
+          }
+
+          return canceler;
+        };
+      }
+
+      function join(cb) {
+        return function () {
+          var canceler = onComplete({
+            rethrow: false,
+            handler: cb
+          })();
+          if (status === SUSPENDED) {
+            run(runTick);
+          }
+          return canceler;
+        };
+      }
+
+      return {
+        kill: kill,
+        join: join,
+        onComplete: onComplete,
+        isSuspended: function () {
+          return status === SUSPENDED;
+        },
+        run: function () {
+          if (status === SUSPENDED) {
+            if (!Scheduler.isDraining()) {
+              Scheduler.enqueue(function () {
+                run(runTick);
+              });
+            } else {
+              run(runTick);
+            }
+          }
+        }
+      };
+    }
+
+    function runPar(util, supervisor, par, cb) {
+      // Table of all forked fibers.
+      var fiberId   = 0;
+      var fibers    = {};
+
+      // Table of currently running cancelers, as a product of `Alt` behavior.
+      var killId    = 0;
+      var kills     = {};
+
+      // Error used for early cancelation on Alt branches.
+      var early     = new Error("[ParAff] Early exit");
+
+      // Error used to kill the entire tree.
+      var interrupt = null;
+
+      // The root pointer of the tree.
+      var root      = EMPTY;
+
+      // Walks a tree, invoking all the cancelers. Returns the table of pending
+      // cancellation fibers.
+      function kill(error, par, cb) {
+        var step  = par;
+        var head  = null;
+        var tail  = null;
+        var count = 0;
+        var kills = {};
+        var tmp, kid;
+
+        loop: while (true) {
+          tmp = null;
+
+          switch (step.tag) {
+          case FORKED:
+            if (step._3 === EMPTY) {
+              tmp = fibers[step._1];
+              kills[count++] = tmp.kill(error, function (result) {
+                return function () {
+                  count--;
+                  if (count === 0) {
+                    cb(result)();
+                  }
+                };
+              });
+            }
+            // Terminal case.
+            if (head === null) {
+              break loop;
+            }
+            // Go down the right side of the tree.
+            step = head._2;
+            if (tail === null) {
+              head = null;
+            } else {
+              head = tail._1;
+              tail = tail._2;
+            }
+            break;
+          case MAP:
+            step = step._2;
+            break;
+          case APPLY:
+          case ALT:
+            if (head) {
+              tail = new Aff(CONS, head, tail);
+            }
+            head = step;
+            step = step._1;
+            break;
+          }
+        }
+
+        if (count === 0) {
+          cb(util.right(void 0))();
+        } else {
+          // Run the cancelation effects. We alias `count` because it's mutable.
+          kid = 0;
+          tmp = count;
+          for (; kid < tmp; kid++) {
+            kills[kid] = kills[kid]();
+          }
+        }
+
+        return kills;
+      }
+
+      // When a fiber resolves, we need to bubble back up the tree with the
+      // result, computing the applicative nodes.
+      function join(result, head, tail) {
+        var fail, step, lhs, rhs, tmp, kid;
+
+        if (util.isLeft(result)) {
+          fail = result;
+          step = null;
+        } else {
+          step = result;
+          fail = null;
+        }
+
+        loop: while (true) {
+          lhs = null;
+          rhs = null;
+          tmp = null;
+          kid = null;
+
+          // We should never continue if the entire tree has been interrupted.
+          if (interrupt !== null) {
+            return;
+          }
+
+          // We've made it all the way to the root of the tree, which means
+          // the tree has fully evaluated.
+          if (head === null) {
+            cb(fail || step)();
+            return;
+          }
+
+          // The tree has already been computed, so we shouldn't try to do it
+          // again. This should never happen.
+          // TODO: Remove this?
+          if (head._3 !== EMPTY) {
+            return;
+          }
+
+          switch (head.tag) {
+          case MAP:
+            if (fail === null) {
+              head._3 = util.right(head._1(util.fromRight(step)));
+              step    = head._3;
+            } else {
+              head._3 = fail;
+            }
+            break;
+          case APPLY:
+            lhs = head._1._3;
+            rhs = head._2._3;
+            // If we have a failure we should kill the other side because we
+            // can't possible yield a result anymore.
+            if (fail) {
+              head._3 = fail;
+              tmp     = true;
+              kid     = killId++;
+
+              kills[kid] = kill(early, fail === lhs ? head._2 : head._1, function (/* unused */) {
+                return function () {
+                  delete kills[kid];
+                  if (tmp) {
+                    tmp = false;
+                  } else if (tail === null) {
+                    join(step, null, null);
+                  } else {
+                    join(step, tail._1, tail._2);
+                  }
+                };
+              });
+
+              if (tmp) {
+                tmp = false;
+                return;
+              }
+            } else if (lhs === EMPTY || rhs === EMPTY) {
+              // We can only proceed if both sides have resolved.
+              return;
+            } else {
+              step    = util.right(util.fromRight(lhs)(util.fromRight(rhs)));
+              head._3 = step;
+            }
+            break;
+          case ALT:
+            lhs = head._1._3;
+            rhs = head._2._3;
+            // We can only proceed if both have resolved or we have a success
+            if (lhs === EMPTY && util.isLeft(rhs) || rhs === EMPTY && util.isLeft(lhs)) {
+              return;
+            }
+            // If both sides resolve with an error, we should continue with the
+            // first error
+            if (lhs !== EMPTY && util.isLeft(lhs) && rhs !== EMPTY && util.isLeft(rhs)) {
+              fail    = step === lhs ? rhs : lhs;
+              step    = null;
+              head._3 = fail;
+            } else {
+              head._3 = step;
+              tmp     = true;
+              kid     = killId++;
+              // Once a side has resolved, we need to cancel the side that is still
+              // pending before we can continue.
+              kills[kid] = kill(early, step === lhs ? head._2 : head._1, function (/* unused */) {
+                return function () {
+                  delete kills[kid];
+                  if (tmp) {
+                    tmp = false;
+                  } else if (tail === null) {
+                    join(step, null, null);
+                  } else {
+                    join(step, tail._1, tail._2);
+                  }
+                };
+              });
+
+              if (tmp) {
+                tmp = false;
+                return;
+              }
+            }
+            break;
+          }
+
+          if (tail === null) {
+            head = null;
+          } else {
+            head = tail._1;
+            tail = tail._2;
+          }
+        }
+      }
+
+      function resolve(fiber) {
+        return function (result) {
+          return function () {
+            delete fibers[fiber._1];
+            fiber._3 = result;
+            join(result, fiber._2._1, fiber._2._2);
+          };
+        };
+      }
+
+      // Walks the applicative tree, substituting non-applicative nodes with
+      // `FORKED` nodes. In this tree, all applicative nodes use the `_3` slot
+      // as a mutable slot for memoization. In an unresolved state, the `_3`
+      // slot is `EMPTY`. In the cases of `ALT` and `APPLY`, we always walk
+      // the left side first, because both operations are left-associative. As
+      // we `RETURN` from those branches, we then walk the right side.
+      function run() {
+        var status = CONTINUE;
+        var step   = par;
+        var head   = null;
+        var tail   = null;
+        var tmp, fid;
+
+        loop: while (true) {
+          tmp = null;
+          fid = null;
+
+          switch (status) {
+          case CONTINUE:
+            switch (step.tag) {
+            case MAP:
+              if (head) {
+                tail = new Aff(CONS, head, tail);
+              }
+              head = new Aff(MAP, step._1, EMPTY, EMPTY);
+              step = step._2;
+              break;
+            case APPLY:
+              if (head) {
+                tail = new Aff(CONS, head, tail);
+              }
+              head = new Aff(APPLY, EMPTY, step._2, EMPTY);
+              step = step._1;
+              break;
+            case ALT:
+              if (head) {
+                tail = new Aff(CONS, head, tail);
+              }
+              head = new Aff(ALT, EMPTY, step._2, EMPTY);
+              step = step._1;
+              break;
+            default:
+              // When we hit a leaf value, we suspend the stack in the `FORKED`.
+              // When the fiber resolves, it can bubble back up the tree.
+              fid    = fiberId++;
+              status = RETURN;
+              tmp    = step;
+              step   = new Aff(FORKED, fid, new Aff(CONS, head, tail), EMPTY);
+              tmp    = Fiber(util, supervisor, tmp);
+              tmp.onComplete({
+                rethrow: false,
+                handler: resolve(step)
+              })();
+              fibers[fid] = tmp;
+              if (supervisor) {
+                supervisor.register(tmp);
+              }
+            }
+            break;
+          case RETURN:
+            // Terminal case, we are back at the root.
+            if (head === null) {
+              break loop;
+            }
+            // If we are done with the right side, we need to continue down the
+            // left. Otherwise we should continue up the stack.
+            if (head._1 === EMPTY) {
+              head._1 = step;
+              status  = CONTINUE;
+              step    = head._2;
+              head._2 = EMPTY;
+            } else {
+              head._2 = step;
+              step    = head;
+              if (tail === null) {
+                head  = null;
+              } else {
+                head  = tail._1;
+                tail  = tail._2;
+              }
+            }
+          }
+        }
+
+        // Keep a reference to the tree root so it can be cancelled.
+        root = step;
+
+        for (fid = 0; fid < fiberId; fid++) {
+          fibers[fid].run();
+        }
+      }
+
+      // Cancels the entire tree. If there are already subtrees being canceled,
+      // we need to first cancel those joins. We will then add fresh joins for
+      // all pending branches including those that were in the process of being
+      // canceled.
+      function cancel(error, cb) {
+        interrupt = util.left(error);
+        var innerKills;
+        for (var kid in kills) {
+          if (kills.hasOwnProperty(kid)) {
+            innerKills = kills[kid];
+            for (kid in innerKills) {
+              if (innerKills.hasOwnProperty(kid)) {
+                innerKills[kid]();
+              }
+            }
+          }
+        }
+
+        kills = null;
+        var newKills = kill(error, root, cb);
+
+        return function (killError) {
+          return new Aff(ASYNC, function (killCb) {
+            return function () {
+              for (var kid in newKills) {
+                if (newKills.hasOwnProperty(kid)) {
+                  newKills[kid]();
+                }
+              }
+              return nonCanceler;
+            };
+          });
+        };
+      }
+
+      run();
+
+      return function (killError) {
+        return new Aff(ASYNC, function (killCb) {
+          return function () {
+            return cancel(killError, killCb);
+          };
+        });
+      };
+    }
+
+    function sequential(util, supervisor, par) {
+      return new Aff(ASYNC, function (cb) {
+        return function () {
+          return runPar(util, supervisor, par, cb);
+        };
+      });
+    }
+
+    Aff.EMPTY       = EMPTY;
+    Aff.Pure        = AffCtr(PURE);
+    Aff.Throw       = AffCtr(THROW);
+    Aff.Catch       = AffCtr(CATCH);
+    Aff.Sync        = AffCtr(SYNC);
+    Aff.Async       = AffCtr(ASYNC);
+    Aff.Bind        = AffCtr(BIND);
+    Aff.Bracket     = AffCtr(BRACKET);
+    Aff.Fork        = AffCtr(FORK);
+    Aff.Seq         = AffCtr(SEQ);
+    Aff.ParMap      = AffCtr(MAP);
+    Aff.ParApply    = AffCtr(APPLY);
+    Aff.ParAlt      = AffCtr(ALT);
+    Aff.Fiber       = Fiber;
+    Aff.Supervisor  = Supervisor;
+    Aff.Scheduler   = Scheduler;
+    Aff.nonCanceler = nonCanceler;
+
+    return Aff;
+  }();
+
+  exports._pure = Aff.Pure;
+
+  exports._throwError = Aff.Throw;
+
+  exports._catchError = function (aff) {
+    return function (k) {
+      return Aff.Catch(aff, k);
+    };
+  };
+
+  exports._map = function (f) {
+    return function (aff) {
+      if (aff.tag === Aff.Pure.tag) {
+        return Aff.Pure(f(aff._1));
+      } else {
+        return Aff.Bind(aff, function (value) {
+          return Aff.Pure(f(value));
+        });
+      }
+    };
+  };
+
+  exports._bind = function (aff) {
+    return function (k) {
+      return Aff.Bind(aff, k);
+    };
+  };
+
+  exports._fork = function (immediate) {
+    return function (aff) {
+      return Aff.Fork(immediate, aff);
+    };
+  };
+
+  exports._liftEffect = Aff.Sync;
+
+  exports._parAffMap = function (f) {
+    return function (aff) {
+      return Aff.ParMap(f, aff);
+    };
+  };
+
+  exports._parAffApply = function (aff1) {
+    return function (aff2) {
+      return Aff.ParApply(aff1, aff2);
+    };
+  };
+
+  exports.makeAff = Aff.Async;
+
+  exports._makeFiber = function (util, aff) {
+    return function () {
+      return Aff.Fiber(util, null, aff);
+    };
+  };  
+
+  exports._sequential = Aff.Seq;
+})(PS["Effect.Aff"] = PS["Effect.Aff"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Unit = PS["Data.Unit"];
+  var Prelude = PS["Prelude"];                 
+  var MonadThrow = function (Monad0, throwError) {
+      this.Monad0 = Monad0;
+      this.throwError = throwError;
+  };
+  var MonadError = function (MonadThrow0, catchError) {
+      this.MonadThrow0 = MonadThrow0;
+      this.catchError = catchError;
+  };
+  var throwError = function (dict) {
+      return dict.throwError;
+  }; 
+  var catchError = function (dict) {
+      return dict.catchError;
+  };
+  var $$try = function (dictMonadError) {
+      return function (a) {
+          return catchError(dictMonadError)(Data_Functor.map(((((dictMonadError.MonadThrow0()).Monad0()).Bind1()).Apply0()).Functor0())(Data_Either.Right.create)(a))(function ($21) {
+              return Control_Applicative.pure(((dictMonadError.MonadThrow0()).Monad0()).Applicative0())(Data_Either.Left.create($21));
+          });
+      };
+  };
+  exports["catchError"] = catchError;
+  exports["throwError"] = throwError;
+  exports["MonadThrow"] = MonadThrow;
+  exports["MonadError"] = MonadError;
+  exports["try"] = $$try;
+})(PS["Control.Monad.Error.Class"] = PS["Control.Monad.Error.Class"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unit = PS["Data.Unit"];
+  var Prelude = PS["Prelude"];                 
+  var MonadState = function (Monad0, state) {
+      this.Monad0 = Monad0;
+      this.state = state;
+  };
+  var state = function (dict) {
+      return dict.state;
+  };
+  var put = function (dictMonadState) {
+      return function (s) {
+          return state(dictMonadState)(function (v) {
+              return new Data_Tuple.Tuple(Data_Unit.unit, s);
+          });
+      };
+  };
+  var modify_ = function (dictMonadState) {
+      return function (f) {
+          return state(dictMonadState)(function (s) {
+              return new Data_Tuple.Tuple(Data_Unit.unit, f(s));
+          });
+      };
+  };
+  var gets = function (dictMonadState) {
+      return function (f) {
+          return state(dictMonadState)(function (s) {
+              return new Data_Tuple.Tuple(f(s), s);
+          });
+      };
+  };
+  var get = function (dictMonadState) {
+      return state(dictMonadState)(function (s) {
+          return new Data_Tuple.Tuple(s, s);
+      });
+  };
+  exports["state"] = state;
+  exports["MonadState"] = MonadState;
+  exports["get"] = get;
+  exports["gets"] = gets;
+  exports["put"] = put;
+  exports["modify_"] = modify_;
+})(PS["Control.Monad.State.Class"] = PS["Control.Monad.State.Class"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Prelude = PS["Prelude"];                 
+  var MonadTrans = function (lift) {
+      this.lift = lift;
+  };
+  var lift = function (dict) {
+      return dict.lift;
+  };
+  exports["lift"] = lift;
+  exports["MonadTrans"] = MonadTrans;
+})(PS["Control.Monad.Trans.Class"] = PS["Control.Monad.Trans.Class"] || {});
+(function(exports) {
+    "use strict";
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad = PS["Control.Monad"];
+  var Effect = PS["Effect"];                 
+
+  // | The `MonadEffect` class captures those monads which support native effects.
+  // |
+  // | Instances are provided for `Effect` itself, and the standard monad
+  // | transformers.
+  // |
+  // | `liftEffect` can be used in any appropriate monad transformer stack to lift an
+  // | action of type `Effect a` into the monad.
+  // |
+  var MonadEffect = function (Monad0, liftEffect) {
+      this.Monad0 = Monad0;
+      this.liftEffect = liftEffect;
+  };                                                         
+  var liftEffect = function (dict) {
+      return dict.liftEffect;
+  };
+  exports["liftEffect"] = liftEffect;
+  exports["MonadEffect"] = MonadEffect;
+})(PS["Effect.Class"] = PS["Effect.Class"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_Monad_Cont_Class = PS["Control.Monad.Cont.Class"];
+  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
+  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
+  var Control_MonadPlus = PS["Control.MonadPlus"];
+  var Control_MonadZero = PS["Control.MonadZero"];
+  var Control_Plus = PS["Control.Plus"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Effect_Class = PS["Effect.Class"];
+  var Prelude = PS["Prelude"];                 
+  var ExceptT = function (x) {
+      return x;
+  };
+  var runExceptT = function (v) {
+      return v;
+  }; 
+  var mapExceptT = function (f) {
+      return function (v) {
+          return f(v);
+      };
+  };
+  var functorExceptT = function (dictFunctor) {
+      return new Data_Functor.Functor(function (f) {
+          return mapExceptT(Data_Functor.map(dictFunctor)(Data_Functor.map(Data_Either.functorEither)(f)));
+      });
+  };
+  var monadExceptT = function (dictMonad) {
+      return new Control_Monad.Monad(function () {
+          return applicativeExceptT(dictMonad);
+      }, function () {
+          return bindExceptT(dictMonad);
+      });
+  };
+  var bindExceptT = function (dictMonad) {
+      return new Control_Bind.Bind(function () {
+          return applyExceptT(dictMonad);
+      }, function (v) {
+          return function (k) {
+              return Control_Bind.bind(dictMonad.Bind1())(v)(Data_Either.either(function ($97) {
+                  return Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Left.create($97));
+              })(function (a) {
+                  var v1 = k(a);
+                  return v1;
+              }));
+          };
+      });
+  };
+  var applyExceptT = function (dictMonad) {
+      return new Control_Apply.Apply(function () {
+          return functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0());
+      }, Control_Monad.ap(monadExceptT(dictMonad)));
+  };
+  var applicativeExceptT = function (dictMonad) {
+      return new Control_Applicative.Applicative(function () {
+          return applyExceptT(dictMonad);
+      }, function ($98) {
+          return ExceptT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Right.create($98)));
+      });
+  };
+  var monadThrowExceptT = function (dictMonad) {
+      return new Control_Monad_Error_Class.MonadThrow(function () {
+          return monadExceptT(dictMonad);
+      }, function ($102) {
+          return ExceptT(Control_Applicative.pure(dictMonad.Applicative0())(Data_Either.Left.create($102)));
+      });
+  };
+  exports["ExceptT"] = ExceptT;
+  exports["runExceptT"] = runExceptT;
+  exports["mapExceptT"] = mapExceptT;
+  exports["functorExceptT"] = functorExceptT;
+  exports["applyExceptT"] = applyExceptT;
+  exports["applicativeExceptT"] = applicativeExceptT;
+  exports["bindExceptT"] = bindExceptT;
+  exports["monadExceptT"] = monadExceptT;
+  exports["monadThrowExceptT"] = monadThrowExceptT;
+})(PS["Control.Monad.Except.Trans"] = PS["Control.Monad.Except.Trans"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_Monad_Cont_Class = PS["Control.Monad.Cont.Class"];
+  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
+  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
+  var Control_MonadPlus = PS["Control.MonadPlus"];
+  var Control_MonadZero = PS["Control.MonadZero"];
+  var Control_Plus = PS["Control.Plus"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Effect_Class = PS["Effect.Class"];
+  var Prelude = PS["Prelude"];                 
+  var MaybeT = function (x) {
+      return x;
+  };
+  exports["MaybeT"] = MaybeT;
+})(PS["Control.Monad.Maybe.Trans"] = PS["Control.Monad.Maybe.Trans"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_Cont_Trans = PS["Control.Monad.Cont.Trans"];
+  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
+  var Control_Monad_Maybe_Trans = PS["Control.Monad.Maybe.Trans"];
+  var Control_Monad_Reader_Trans = PS["Control.Monad.Reader.Trans"];
+  var Control_Monad_Writer_Trans = PS["Control.Monad.Writer.Trans"];
+  var Control_Plus = PS["Control.Plus"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Functor_Compose = PS["Data.Functor.Compose"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Ref = PS["Effect.Ref"];
+  var Prelude = PS["Prelude"];
+  var Parallel = function (Applicative1, Monad0, parallel, sequential) {
+      this.Applicative1 = Applicative1;
+      this.Monad0 = Monad0;
+      this.parallel = parallel;
+      this.sequential = sequential;
+  };
+  var sequential = function (dict) {
+      return dict.sequential;
+  };
+  var parallel = function (dict) {
+      return dict.parallel;
+  };
+  exports["parallel"] = parallel;
+  exports["sequential"] = sequential;
+  exports["Parallel"] = Parallel;
+})(PS["Control.Parallel.Class"] = PS["Control.Parallel.Class"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Parallel_Class = PS["Control.Parallel.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Prelude = PS["Prelude"];                 
+  var parTraverse_ = function (dictParallel) {
+      return function (dictFoldable) {
+          return function (f) {
+              return function ($17) {
+                  return Control_Parallel_Class.sequential(dictParallel)(Data_Foldable.traverse_(dictParallel.Applicative1())(dictFoldable)(function ($18) {
+                      return Control_Parallel_Class.parallel(dictParallel)(f($18));
+                  })($17));
+              };
+          };
+      };
+  };
+  var parSequence_ = function (dictParallel) {
+      return function (dictFoldable) {
+          return parTraverse_(dictParallel)(dictFoldable)(Control_Category.identity(Control_Category.categoryFn));
+      };
+  };
+  exports["parTraverse_"] = parTraverse_;
+  exports["parSequence_"] = parSequence_;
+})(PS["Control.Parallel"] = PS["Control.Parallel"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.runFn4 = function (fn) {
+    return function (a) {
+      return function (b) {
+        return function (c) {
+          return function (d) {
+            return fn(a, b, c, d);
+          };
+        };
+      };
+    };
+  };
+})(PS["Data.Function.Uncurried"] = PS["Data.Function.Uncurried"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.Function.Uncurried"];
+  var Data_Unit = PS["Data.Unit"];
+  exports["runFn4"] = $foreign.runFn4;
+})(PS["Data.Function.Uncurried"] = PS["Data.Function.Uncurried"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.error = function (msg) {
+    return new Error(msg);
+  };
+
+  exports.throwException = function (e) {
+    return function () {
+      throw e;
+    };
+  };
+})(PS["Effect.Exception"] = PS["Effect.Exception"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Effect.Exception"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Show = PS["Data.Show"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var $$throw = function ($1) {
+      return $foreign.throwException($foreign.error($1));
+  };
+  exports["throw"] = $$throw;
+  exports["error"] = $foreign.error;
+  exports["throwException"] = $foreign.throwException;
+})(PS["Effect.Exception"] = PS["Effect.Exception"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.unsafePerformEffect = function (f) {
+    return f();
+  };
+})(PS["Effect.Unsafe"] = PS["Effect.Unsafe"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Effect.Unsafe"];
+  var Effect = PS["Effect"];
+  exports["unsafePerformEffect"] = $foreign.unsafePerformEffect;
+})(PS["Effect.Unsafe"] = PS["Effect.Unsafe"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Effect.Aff"];
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Lazy = PS["Control.Lazy"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Parallel = PS["Control.Parallel"];
+  var Control_Parallel_Class = PS["Control.Parallel.Class"];
+  var Control_Plus = PS["Control.Plus"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Time_Duration = PS["Data.Time.Duration"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Effect_Unsafe = PS["Effect.Unsafe"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Canceler = function (x) {
+      return x;
+  };
+  var suspendAff = $foreign._fork(false);
+  var functorParAff = new Data_Functor.Functor($foreign._parAffMap);
+  var functorAff = new Data_Functor.Functor($foreign._map);
+  var forkAff = $foreign._fork(true);
+  var ffiUtil = (function () {
+      var unsafeFromRight = function (v) {
+          if (v instanceof Data_Either.Right) {
+              return v.value0;
+          };
+          if (v instanceof Data_Either.Left) {
+              return Partial_Unsafe.unsafeCrashWith("unsafeFromRight: Left");
+          };
+          throw new Error("Failed pattern match at Effect.Aff line 395, column 21 - line 397, column 31: " + [ v.constructor.name ]);
+      };
+      var unsafeFromLeft = function (v) {
+          if (v instanceof Data_Either.Left) {
+              return v.value0;
+          };
+          if (v instanceof Data_Either.Right) {
+              return Partial_Unsafe.unsafeCrashWith("unsafeFromLeft: Right");
+          };
+          throw new Error("Failed pattern match at Effect.Aff line 390, column 20 - line 394, column 3: " + [ v.constructor.name ]);
+      };
+      var isLeft = function (v) {
+          if (v instanceof Data_Either.Left) {
+              return true;
+          };
+          if (v instanceof Data_Either.Right) {
+              return false;
+          };
+          throw new Error("Failed pattern match at Effect.Aff line 385, column 12 - line 387, column 20: " + [ v.constructor.name ]);
+      };
+      return {
+          isLeft: isLeft,
+          fromLeft: unsafeFromLeft,
+          fromRight: unsafeFromRight,
+          left: Data_Either.Left.create,
+          right: Data_Either.Right.create
+      };
+  })();
+  var makeFiber = function (aff) {
+      return $foreign._makeFiber(ffiUtil, aff);
+  };
+  var launchAff = function (aff) {
+      return function __do() {
+          var v = makeFiber(aff)();
+          v.run();
+          return v;
+      };
+  };
+  var applyParAff = new Control_Apply.Apply(function () {
+      return functorParAff;
+  }, $foreign._parAffApply);
+  var monadAff = new Control_Monad.Monad(function () {
+      return applicativeAff;
+  }, function () {
+      return bindAff;
+  });
+  var bindAff = new Control_Bind.Bind(function () {
+      return applyAff;
+  }, $foreign._bind);
+  var applyAff = new Control_Apply.Apply(function () {
+      return functorAff;
+  }, Control_Monad.ap(monadAff));
+  var applicativeAff = new Control_Applicative.Applicative(function () {
+      return applyAff;
+  }, $foreign._pure);
+  var monadEffectAff = new Effect_Class.MonadEffect(function () {
+      return monadAff;
+  }, $foreign._liftEffect);
+  var effectCanceler = function ($50) {
+      return Canceler(Data_Function["const"](Effect_Class.liftEffect(monadEffectAff)($50)));
+  };
+  var joinFiber = function (v) {
+      return $foreign.makeAff(function (k) {
+          return Data_Functor.map(Effect.functorEffect)(effectCanceler)(v.join(k));
+      });
+  };
+  var functorFiber = new Data_Functor.Functor(function (f) {
+      return function (t) {
+          return Effect_Unsafe.unsafePerformEffect(makeFiber(Data_Functor.map(functorAff)(f)(joinFiber(t))));
+      };
+  });
+  var killFiber = function (e) {
+      return function (v) {
+          return Control_Bind.bind(bindAff)(Effect_Class.liftEffect(monadEffectAff)(v.isSuspended))(function (v1) {
+              if (v1) {
+                  return Effect_Class.liftEffect(monadEffectAff)(Data_Functor["void"](Effect.functorEffect)(v.kill(e, Data_Function["const"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit)))));
+              };
+              return $foreign.makeAff(function (k) {
+                  return Data_Functor.map(Effect.functorEffect)(effectCanceler)(v.kill(e, k));
+              });
+          });
+      };
+  };
+  var monadThrowAff = new Control_Monad_Error_Class.MonadThrow(function () {
+      return monadAff;
+  }, $foreign._throwError);
+  var monadErrorAff = new Control_Monad_Error_Class.MonadError(function () {
+      return monadThrowAff;
+  }, $foreign._catchError);                                     
+  var runAff = function (k) {
+      return function (aff) {
+          return launchAff(Control_Bind.bindFlipped(bindAff)(function ($51) {
+              return Effect_Class.liftEffect(monadEffectAff)(k($51));
+          })(Control_Monad_Error_Class["try"](monadErrorAff)(aff)));
+      };
+  };
+  var runAff_ = function (k) {
+      return function (aff) {
+          return Data_Functor["void"](Effect.functorEffect)(runAff(k)(aff));
+      };
+  };
+  var parallelAff = new Control_Parallel_Class.Parallel(function () {
+      return applicativeParAff;
+  }, function () {
+      return monadAff;
+  }, Unsafe_Coerce.unsafeCoerce, $foreign._sequential);
+  var applicativeParAff = new Control_Applicative.Applicative(function () {
+      return applyParAff;
+  }, function ($53) {
+      return Control_Parallel_Class.parallel(parallelAff)(Control_Applicative.pure(applicativeAff)($53));
+  });
+  var monadRecAff = new Control_Monad_Rec_Class.MonadRec(function () {
+      return monadAff;
+  }, function (k) {
+      var go = function (a) {
+          return Control_Bind.bind(bindAff)(k(a))(function (v) {
+              if (v instanceof Control_Monad_Rec_Class.Done) {
+                  return Control_Applicative.pure(applicativeAff)(v.value0);
+              };
+              if (v instanceof Control_Monad_Rec_Class.Loop) {
+                  return go(v.value0);
+              };
+              throw new Error("Failed pattern match at Effect.Aff line 99, column 7 - line 101, column 22: " + [ v.constructor.name ]);
+          });
+      };
+      return go;
+  });
+  var nonCanceler = Data_Function["const"](Control_Applicative.pure(applicativeAff)(Data_Unit.unit));
+  exports["Canceler"] = Canceler;
+  exports["launchAff"] = launchAff;
+  exports["runAff"] = runAff;
+  exports["runAff_"] = runAff_;
+  exports["forkAff"] = forkAff;
+  exports["suspendAff"] = suspendAff;
+  exports["killFiber"] = killFiber;
+  exports["joinFiber"] = joinFiber;
+  exports["nonCanceler"] = nonCanceler;
+  exports["effectCanceler"] = effectCanceler;
+  exports["functorAff"] = functorAff;
+  exports["applyAff"] = applyAff;
+  exports["applicativeAff"] = applicativeAff;
+  exports["bindAff"] = bindAff;
+  exports["monadAff"] = monadAff;
+  exports["monadRecAff"] = monadRecAff;
+  exports["monadThrowAff"] = monadThrowAff;
+  exports["monadErrorAff"] = monadErrorAff;
+  exports["monadEffectAff"] = monadEffectAff;
+  exports["functorParAff"] = functorParAff;
+  exports["applyParAff"] = applyParAff;
+  exports["applicativeParAff"] = applicativeParAff;
+  exports["parallelAff"] = parallelAff;
+  exports["functorFiber"] = functorFiber;
+  exports["makeAff"] = $foreign.makeAff;
+})(PS["Effect.Aff"] = PS["Effect.Aff"] || {});
+(function(exports) {
+    "use strict";
+
+  exports._app = function() {
+    return app;
+  }
+
+  exports._closest = function(just, nothing, selector, el) {
+    var node = el.closest(selector);
+    if(node) {
+      return just(node);
+    } else {
+      return nothing;
+    }
+  }
+
+  exports._innerHtml = function(el) {
+    return el.innerHTML;
+  }
+
+  exports._setInnerHtml = function(content, el) {
+    el.innerHTML = content;
+    return el;
+  }
+
+  exports._createFormData = function(formElement) {
+    return new FormData(formElement);
+  }
+
+  exports._createFormString = function(formElement) {
+    return new URLSearchParams(new FormData(formElement)).toString()
+  }
+
+  exports._createFormArray = function(formElement) {
+    return Array.from(new FormData(formElement));
+  }
+
+  exports._getDataAttribute = function(name, el) {
+    return el.dataset[name];
+  }
+
+  exports._setDataAttribute = function(name, value, el) {
+    return el.dataset[name] = value;
+  }
+
+  exports._moment8601 = function(tuple, s) {
+    var m = moment(s, moment.ISO_8601);
+    var s1 = m.fromNow();
+    var s2 = m.format('MMMM D YYYY, h:mm a') + " (" + m.format() + ") ";
+    return tuple(s1)(s2);
+  }
+
+  exports._mmoment8601 = function(just, nothing, tuple, s) {
+    try {
+      var m = moment(s, moment.ISO_8601);
+      var s1 = m.fromNow();
+      var s2 = m.format('MMMM D YYYY, h:mm a') + " (" + m.format() + ") ";
+      return just(tuple(s1)(s2));
+    } catch (error) {
+      return nothing
+    }
+  }
+
+  exports._closeWindow = function (window) {
+    window.close();
+  };
+})(PS["Globals"] = PS["Globals"] || {});
+(function(exports) {
+    "use strict";
+
+  exports["null"] = null;
+
+  exports.nullable = function (a, r, f) {
+    return a == null ? r : f(a);
+  };
+
+  exports.notNull = function (x) {
+    return x;
+  };
+})(PS["Data.Nullable"] = PS["Data.Nullable"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.Nullable"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Show = PS["Data.Show"];
+  var Prelude = PS["Prelude"];                 
+  var toNullable = Data_Maybe.maybe($foreign["null"])($foreign.notNull);
+  var toMaybe = function (n) {
+      return $foreign.nullable(n, Data_Maybe.Nothing.value, Data_Maybe.Just.create);
+  };
+  exports["toMaybe"] = toMaybe;
+  exports["toNullable"] = toNullable;
+})(PS["Data.Nullable"] = PS["Data.Nullable"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
+  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Identity = PS["Data.Identity"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Prelude = PS["Prelude"];                                                           
+  var runExcept = function ($0) {
+      return Data_Newtype.unwrap(Data_Identity.newtypeIdentity)(Control_Monad_Except_Trans.runExceptT($0));
+  };
+  exports["runExcept"] = runExcept;
+})(PS["Control.Monad.Except"] = PS["Control.Monad.Except"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Plus = PS["Control.Plus"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
+  var Prelude = PS["Prelude"];                 
+  var NonEmpty = (function () {
+      function NonEmpty(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      NonEmpty.create = function (value0) {
+          return function (value1) {
+              return new NonEmpty(value0, value1);
+          };
+      };
+      return NonEmpty;
+  })();
+  var singleton = function (dictPlus) {
+      return function (a) {
+          return new NonEmpty(a, Control_Plus.empty(dictPlus));
+      };
+  };
+  var functorNonEmpty = function (dictFunctor) {
+      return new Data_Functor.Functor(function (f) {
+          return function (m) {
+              return new NonEmpty(f(m.value0), Data_Functor.map(dictFunctor)(f)(m.value1));
+          };
+      });
+  };
+  var foldableNonEmpty = function (dictFoldable) {
+      return new Data_Foldable.Foldable(function (dictMonoid) {
+          return function (f) {
+              return function (v) {
+                  return Data_Semigroup.append(dictMonoid.Semigroup0())(f(v.value0))(Data_Foldable.foldMap(dictFoldable)(dictMonoid)(f)(v.value1));
+              };
+          };
+      }, function (f) {
+          return function (b) {
+              return function (v) {
+                  return Data_Foldable.foldl(dictFoldable)(f)(f(b)(v.value0))(v.value1);
+              };
+          };
+      }, function (f) {
+          return function (b) {
+              return function (v) {
+                  return f(v.value0)(Data_Foldable.foldr(dictFoldable)(f)(b)(v.value1));
+              };
+          };
+      });
+  };
+  exports["NonEmpty"] = NonEmpty;
+  exports["singleton"] = singleton;
+  exports["functorNonEmpty"] = functorNonEmpty;
+  exports["foldableNonEmpty"] = foldableNonEmpty;
+})(PS["Data.NonEmpty"] = PS["Data.NonEmpty"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Comonad = PS["Control.Comonad"];
+  var Control_Extend = PS["Control.Extend"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_MonadPlus = PS["Control.MonadPlus"];
+  var Control_MonadZero = PS["Control.MonadZero"];
+  var Control_Plus = PS["Control.Plus"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_NonEmpty = PS["Data.NonEmpty"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
+  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
+  var Prelude = PS["Prelude"];                 
+  var Nil = (function () {
+      function Nil() {
+
+      };
+      Nil.value = new Nil();
+      return Nil;
+  })();
+  var Cons = (function () {
+      function Cons(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Cons.create = function (value0) {
+          return function (value1) {
+              return new Cons(value0, value1);
+          };
+      };
+      return Cons;
+  })();
+  var NonEmptyList = function (x) {
+      return x;
+  };
+  var foldableList = new Data_Foldable.Foldable(function (dictMonoid) {
+      return function (f) {
+          return Data_Foldable.foldl(foldableList)(function (acc) {
+              return function ($155) {
+                  return Data_Semigroup.append(dictMonoid.Semigroup0())(acc)(f($155));
+              };
+          })(Data_Monoid.mempty(dictMonoid));
+      };
+  }, function (f) {
+      var go = function ($copy_b) {
+          return function ($copy_v) {
+              var $tco_var_b = $copy_b;
+              var $tco_done = false;
+              var $tco_result;
+              function $tco_loop(b, v) {
+                  if (v instanceof Nil) {
+                      $tco_done = true;
+                      return b;
+                  };
+                  if (v instanceof Cons) {
+                      $tco_var_b = f(b)(v.value0);
+                      $copy_v = v.value1;
+                      return;
+                  };
+                  throw new Error("Failed pattern match at Data.List.Types line 81, column 12 - line 83, column 30: " + [ v.constructor.name ]);
+              };
+              while (!$tco_done) {
+                  $tco_result = $tco_loop($tco_var_b, $copy_v);
+              };
+              return $tco_result;
+          };
+      };
+      return go;
+  }, function (f) {
+      return function (b) {
+          var rev = Data_Foldable.foldl(foldableList)(Data_Function.flip(Cons.create))(Nil.value);
+          return function ($156) {
+              return Data_Foldable.foldl(foldableList)(Data_Function.flip(f))(b)(rev($156));
+          };
+      };
+  });
+  var foldableNonEmptyList = Data_NonEmpty.foldableNonEmpty(foldableList);
+  var functorList = new Data_Functor.Functor(function (f) {
+      return Data_Foldable.foldr(foldableList)(function (x) {
+          return function (acc) {
+              return new Cons(f(x), acc);
+          };
+      })(Nil.value);
+  });
+  var functorNonEmptyList = Data_NonEmpty.functorNonEmpty(functorList);
+  var semigroupList = new Data_Semigroup.Semigroup(function (xs) {
+      return function (ys) {
+          return Data_Foldable.foldr(foldableList)(Cons.create)(ys)(xs);
+      };
+  });
+  var applyList = new Control_Apply.Apply(function () {
+      return functorList;
+  }, function (v) {
+      return function (v1) {
+          if (v instanceof Nil) {
+              return Nil.value;
+          };
+          if (v instanceof Cons) {
+              return Data_Semigroup.append(semigroupList)(Data_Functor.map(functorList)(v.value0)(v1))(Control_Apply.apply(applyList)(v.value1)(v1));
+          };
+          throw new Error("Failed pattern match at Data.List.Types line 127, column 1 - line 127, column 33: " + [ v.constructor.name, v1.constructor.name ]);
+      };
+  });
+  var applicativeList = new Control_Applicative.Applicative(function () {
+      return applyList;
+  }, function (a) {
+      return new Cons(a, Nil.value);
+  });                                              
+  var altList = new Control_Alt.Alt(function () {
+      return functorList;
+  }, Data_Semigroup.append(semigroupList));
+  var plusList = new Control_Plus.Plus(function () {
+      return altList;
+  }, Nil.value);
+  exports["Nil"] = Nil;
+  exports["Cons"] = Cons;
+  exports["NonEmptyList"] = NonEmptyList;
+  exports["semigroupList"] = semigroupList;
+  exports["functorList"] = functorList;
+  exports["foldableList"] = foldableList;
+  exports["applyList"] = applyList;
+  exports["applicativeList"] = applicativeList;
+  exports["altList"] = altList;
+  exports["plusList"] = plusList;
+  exports["functorNonEmptyList"] = functorNonEmptyList;
+  exports["foldableNonEmptyList"] = foldableNonEmptyList;
+})(PS["Data.List.Types"] = PS["Data.List.Types"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.unsafeToForeign = function (value) {
+    return value;
+  };
+
+  exports.unsafeFromForeign = function (value) {
+    return value;
+  };
+
+  exports.typeOf = function (value) {
+    return typeof value;
+  };
+
+  exports.tagOf = function (value) {
+    return Object.prototype.toString.call(value).slice(8, -1);
+  };
+})(PS["Foreign"] = PS["Foreign"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.fromNumberImpl = function (just) {
+    return function (nothing) {
+      return function (n) {
+        /* jshint bitwise: false */
+        return (n | 0) === n ? just(n) : nothing;
+      };
+    };
+  };
+})(PS["Data.Int"] = PS["Data.Int"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.Int"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Bounded = PS["Data.Bounded"];
+  var Data_CommutativeRing = PS["Data.CommutativeRing"];
+  var Data_DivisionRing = PS["Data.DivisionRing"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_EuclideanRing = PS["Data.EuclideanRing"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Int_Bits = PS["Data.Int.Bits"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Global = PS["Global"];
+  var $$Math = PS["Math"];
+  var Prelude = PS["Prelude"];      
+  var fromNumber = $foreign.fromNumberImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);
+  exports["fromNumber"] = fromNumber;
+})(PS["Data.Int"] = PS["Data.Int"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Lazy = PS["Control.Lazy"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_NonEmpty = PS["Data.NonEmpty"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Data_Unit = PS["Data.Unit"];
+  var Prelude = PS["Prelude"];
+  var reverse = (function () {
+      var go = function ($copy_acc) {
+          return function ($copy_v) {
+              var $tco_var_acc = $copy_acc;
+              var $tco_done = false;
+              var $tco_result;
+              function $tco_loop(acc, v) {
+                  if (v instanceof Data_List_Types.Nil) {
+                      $tco_done = true;
+                      return acc;
+                  };
+                  if (v instanceof Data_List_Types.Cons) {
+                      $tco_var_acc = new Data_List_Types.Cons(v.value0, acc);
+                      $copy_v = v.value1;
+                      return;
+                  };
+                  throw new Error("Failed pattern match at Data.List line 368, column 3 - line 368, column 19: " + [ acc.constructor.name, v.constructor.name ]);
+              };
+              while (!$tco_done) {
+                  $tco_result = $tco_loop($tco_var_acc, $copy_v);
+              };
+              return $tco_result;
+          };
+      };
+      return go(Data_List_Types.Nil.value);
+  })();
+  var $$null = function (v) {
+      if (v instanceof Data_List_Types.Nil) {
+          return true;
+      };
+      return false;
+  };
+  var fromFoldable = function (dictFoldable) {
+      return Data_Foldable.foldr(dictFoldable)(Data_List_Types.Cons.create)(Data_List_Types.Nil.value);
+  };
+  exports["fromFoldable"] = fromFoldable;
+  exports["null"] = $$null;
+  exports["reverse"] = reverse;
+})(PS["Data.List"] = PS["Data.List"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_List = PS["Data.List"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_NonEmpty = PS["Data.NonEmpty"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
+  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];
+  var singleton = function ($160) {
+      return Data_List_Types.NonEmptyList(Data_NonEmpty.singleton(Data_List_Types.plusList)($160));
+  };
+  var cons = function (y) {
+      return function (v) {
+          return new Data_NonEmpty.NonEmpty(y, new Data_List_Types.Cons(v.value0, v.value1));
+      };
+  };
+  exports["singleton"] = singleton;
+  exports["cons"] = cons;
+})(PS["Data.List.NonEmpty"] = PS["Data.List.NonEmpty"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.singleton = function (c) {
+    return c;
+  };
+
+  exports.length = function (s) {
+    return s.length;
+  };
+
+  exports.drop = function (n) {
+    return function (s) {
+      return s.substring(n);
+    };
+  };
+})(PS["Data.String.CodeUnits"] = PS["Data.String.CodeUnits"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.charAt = function (i) {
+    return function (s) {
+      if (i >= 0 && i < s.length) return s.charAt(i);
+      throw new Error("Data.String.Unsafe.charAt: Invalid index.");
+    };
+  };
+})(PS["Data.String.Unsafe"] = PS["Data.String.Unsafe"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.String.Unsafe"];
+  exports["charAt"] = $foreign.charAt;
+})(PS["Data.String.Unsafe"] = PS["Data.String.Unsafe"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.String.CodeUnits"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_String_Pattern = PS["Data.String.Pattern"];
+  var Data_String_Unsafe = PS["Data.String.Unsafe"];
+  var Prelude = PS["Prelude"];
+  exports["singleton"] = $foreign.singleton;
+  exports["length"] = $foreign.length;
+  exports["drop"] = $foreign.drop;
+})(PS["Data.String.CodeUnits"] = PS["Data.String.CodeUnits"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Foreign"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
+  var Control_Monad_Except = PS["Control.Monad.Except"];
+  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Identity = PS["Data.Identity"];
+  var Data_Int = PS["Data.Int"];
+  var Data_List_NonEmpty = PS["Data.List.NonEmpty"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Data_String_CodeUnits = PS["Data.String.CodeUnits"];
+  var Prelude = PS["Prelude"];                 
+  var ForeignError = (function () {
+      function ForeignError(value0) {
+          this.value0 = value0;
+      };
+      ForeignError.create = function (value0) {
+          return new ForeignError(value0);
+      };
+      return ForeignError;
+  })();
+  var TypeMismatch = (function () {
+      function TypeMismatch(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      TypeMismatch.create = function (value0) {
+          return function (value1) {
+              return new TypeMismatch(value0, value1);
+          };
+      };
+      return TypeMismatch;
+  })();
+  var ErrorAtIndex = (function () {
+      function ErrorAtIndex(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      ErrorAtIndex.create = function (value0) {
+          return function (value1) {
+              return new ErrorAtIndex(value0, value1);
+          };
+      };
+      return ErrorAtIndex;
+  })();
+  var ErrorAtProperty = (function () {
+      function ErrorAtProperty(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      ErrorAtProperty.create = function (value0) {
+          return function (value1) {
+              return new ErrorAtProperty(value0, value1);
+          };
+      };
+      return ErrorAtProperty;
+  })();
+  var renderForeignError = function (v) {
+      if (v instanceof ForeignError) {
+          return v.value0;
+      };
+      if (v instanceof ErrorAtIndex) {
+          return "Error at array index " + (Data_Show.show(Data_Show.showInt)(v.value0) + (": " + renderForeignError(v.value1)));
+      };
+      if (v instanceof ErrorAtProperty) {
+          return "Error at property " + (Data_Show.show(Data_Show.showString)(v.value0) + (": " + renderForeignError(v.value1)));
+      };
+      if (v instanceof TypeMismatch) {
+          return "Type mismatch: expected " + (v.value0 + (", found " + v.value1));
+      };
+      throw new Error("Failed pattern match at Foreign line 72, column 1 - line 72, column 45: " + [ v.constructor.name ]);
+  };
+  var fail = function ($107) {
+      return Control_Monad_Error_Class.throwError(Control_Monad_Except_Trans.monadThrowExceptT(Data_Identity.monadIdentity))(Data_List_NonEmpty.singleton($107));
+  };
+  var unsafeReadTagged = function (tag) {
+      return function (value) {
+          if ($foreign.tagOf(value) === tag) {
+              return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))($foreign.unsafeFromForeign(value));
+          };
+          if (Data_Boolean.otherwise) {
+              return fail(new TypeMismatch(tag, $foreign.tagOf(value)));
+          };
+          throw new Error("Failed pattern match at Foreign line 106, column 1 - line 106, column 55: " + [ tag.constructor.name, value.constructor.name ]);
+      };
+  };
+  var readBoolean = unsafeReadTagged("Boolean");
+  var readString = unsafeReadTagged("String");
+  exports["ForeignError"] = ForeignError;
+  exports["TypeMismatch"] = TypeMismatch;
+  exports["ErrorAtIndex"] = ErrorAtIndex;
+  exports["ErrorAtProperty"] = ErrorAtProperty;
+  exports["renderForeignError"] = renderForeignError;
+  exports["unsafeReadTagged"] = unsafeReadTagged;
+  exports["readString"] = readString;
+  exports["readBoolean"] = readBoolean;
+  exports["fail"] = fail;
+  exports["unsafeToForeign"] = $foreign.unsafeToForeign;
+  exports["typeOf"] = $foreign.typeOf;
+})(PS["Foreign"] = PS["Foreign"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.unsafeReadPropImpl = function (f, s, key, value) {
+    return value == null ? f : s(value[key]);
+  };
+})(PS["Foreign.Index"] = PS["Foreign.Index"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Foreign.Index"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Identity = PS["Data.Identity"];
+  var Data_List_NonEmpty = PS["Data.List.NonEmpty"];
+  var Foreign = PS["Foreign"];
+  var Prelude = PS["Prelude"];
+  var unsafeReadProp = function (k) {
+      return function (value) {
+          return $foreign.unsafeReadPropImpl(Foreign.fail(new Foreign.TypeMismatch("object", Foreign.typeOf(value))), Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity)), k, value);
+      };
+  };
+  var readProp = unsafeReadProp;
+  exports["readProp"] = readProp;
+})(PS["Foreign.Index"] = PS["Foreign.Index"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.empty = {};
+
+  exports._lookup = function (no, yes, k, m) {
+    return k in m ? yes(m[k]) : no;
+  };
+
+  function toArrayWithKey(f) {
+    return function (m) {
+      var r = [];
+      for (var k in m) {
+        if (hasOwnProperty.call(m, k)) {
+          r.push(f(k)(m[k]));
+        }
+      }
+      return r;
+    };
+  }
+})(PS["Foreign.Object"] = PS["Foreign.Object"] || {});
+(function(exports) {
+    "use strict";
+
+  exports["new"] = function () {
+    return {};
+  };
+})(PS["Foreign.Object.ST"] = PS["Foreign.Object.ST"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Foreign.Object.ST"];
+  var Control_Monad_ST = PS["Control.Monad.ST"];
+  var Data_Maybe = PS["Data.Maybe"];
+  exports["new"] = $foreign["new"];
+})(PS["Foreign.Object.ST"] = PS["Foreign.Object.ST"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Foreign.Object"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad_ST = PS["Control.Monad.ST"];
+  var Control_Monad_ST_Internal = PS["Control.Monad.ST.Internal"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Foreign_Object_ST = PS["Foreign.Object.ST"];
+  var Prelude = PS["Prelude"];
+  var lookup = Data_Function_Uncurried.runFn4($foreign._lookup)(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);
+  exports["lookup"] = lookup;
+  exports["empty"] = $foreign.empty;
+})(PS["Foreign.Object"] = PS["Foreign.Object"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Type_Data_Boolean = PS["Type.Data.Boolean"];
+  var Type_Data_Symbol = PS["Type.Data.Symbol"];
+  var Type_Equality = PS["Type.Equality"];
+  var RLProxy = (function () {
+      function RLProxy() {
+
+      };
+      RLProxy.value = new RLProxy();
+      return RLProxy;
+  })();
+  exports["RLProxy"] = RLProxy;
+})(PS["Type.Row"] = PS["Type.Row"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Symbol = PS["Data.Symbol"];
+  var Prelude = PS["Prelude"];
+  var Record_Unsafe = PS["Record.Unsafe"];
+  var Record_Unsafe_Union = PS["Record.Unsafe.Union"];
+  var Type_Row = PS["Type.Row"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var get = function (dictIsSymbol) {
+      return function (dictCons) {
+          return function (l) {
+              return function (r) {
+                  return Record_Unsafe.unsafeGet(Data_Symbol.reflectSymbol(dictIsSymbol)(l))(r);
+              };
+          };
+      };
+  };
+  exports["get"] = get;
+})(PS["Record"] = PS["Record"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.copyRecord = function(rec) {
+    var copy = {};
+    for (var key in rec) {
+      if ({}.hasOwnProperty.call(rec, key)) {
+        copy[key] = rec[key];
+      }
+    }
+    return copy;
+  };
+
+  exports.unsafeInsert = function(l) {
+    return function(a) {
+      return function(rec) {
+        rec[l] = a;
+        return rec;
+      };
+    };
+  };
+})(PS["Record.Builder"] = PS["Record.Builder"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Record.Builder"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Symbol = PS["Data.Symbol"];
+  var Prelude = PS["Prelude"];
+  var Record_Unsafe_Union = PS["Record.Unsafe.Union"];
+  var Type_Row = PS["Type.Row"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var semigroupoidBuilder = Control_Semigroupoid.semigroupoidFn;
+  var insert = function (dictCons) {
+      return function (dictLacks) {
+          return function (dictIsSymbol) {
+              return function (l) {
+                  return function (a) {
+                      return function (r1) {
+                          return $foreign.unsafeInsert(Data_Symbol.reflectSymbol(dictIsSymbol)(l))(a)(r1);
+                      };
+                  };
+              };
+          };
+      };
+  };
+  var categoryBuilder = Control_Category.categoryFn;
+  var build = function (v) {
+      return function (r1) {
+          return v($foreign.copyRecord(r1));
+      };
+  };
+  exports["build"] = build;
+  exports["insert"] = insert;
+  exports["semigroupoidBuilder"] = semigroupoidBuilder;
+  exports["categoryBuilder"] = categoryBuilder;
+})(PS["Record.Builder"] = PS["Record.Builder"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Simple.JSON"];
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad_Except = PS["Control.Monad.Except"];
+  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Identity = PS["Data.Identity"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Symbol = PS["Data.Symbol"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_Variant = PS["Data.Variant"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Effect_Uncurried = PS["Effect.Uncurried"];
+  var Effect_Unsafe = PS["Effect.Unsafe"];
+  var Foreign = PS["Foreign"];
+  var Foreign_Index = PS["Foreign.Index"];
+  var Foreign_Object = PS["Foreign.Object"];
+  var Global_Unsafe = PS["Global.Unsafe"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];
+  var Record = PS["Record"];
+  var Record_Builder = PS["Record.Builder"];
+  var Type_Prelude = PS["Type.Prelude"];
+  var Type_Row = PS["Type.Row"];
+  var WriteForeign = function (writeImpl) {
+      this.writeImpl = writeImpl;
+  };
+  var WriteForeignFields = function (writeImplFields) {
+      this.writeImplFields = writeImplFields;
+  };
+  var writeImplFields = function (dict) {
+      return dict.writeImplFields;
+  };
+  var writeImpl = function (dict) {
+      return dict.writeImpl;
+  };
+  var writeJSON = function (dictWriteForeign) {
+      return function ($71) {
+          return Global_Unsafe.unsafeStringify(writeImpl(dictWriteForeign)($71));
+      };
+  };
+  var writeForeignString = new WriteForeign(Foreign.unsafeToForeign);
+  var writeForeignInt = new WriteForeign(Foreign.unsafeToForeign); 
+  var writeForeignBoolean = new WriteForeign(Foreign.unsafeToForeign);
+  var recordWriteForeign = function (dictRowToList) {
+      return function (dictWriteForeignFields) {
+          return new WriteForeign(function (rec) {
+              var steps = writeImplFields(dictWriteForeignFields)(Type_Row.RLProxy.value)(rec);
+              return Foreign.unsafeToForeign(Record_Builder.build(steps)({}));
+          });
+      };
+  }; 
+  var nilWriteForeignFields = new WriteForeignFields(function (v) {
+      return function (v1) {
+          return Control_Category.identity(Record_Builder.categoryBuilder);
+      };
+  });
+  var consWriteForeignFields = function (dictIsSymbol) {
+      return function (dictWriteForeign) {
+          return function (dictWriteForeignFields) {
+              return function (dictCons) {
+                  return function (dictLacks) {
+                      return function (dictCons1) {
+                          return new WriteForeignFields(function (v) {
+                              return function (rec) {
+                                  var rest = writeImplFields(dictWriteForeignFields)(Type_Row.RLProxy.value)(rec);
+                                  var value = writeImpl(dictWriteForeign)(Record.get(dictIsSymbol)(dictCons)(Data_Symbol.SProxy.value)(rec));
+                                  var result = Control_Semigroupoid.compose(Record_Builder.semigroupoidBuilder)(Record_Builder.insert(dictCons1)(dictLacks)(dictIsSymbol)(Data_Symbol.SProxy.value)(value))(rest);
+                                  return result;
+                              };
+                          });
+                      };
+                  };
+              };
+          };
+      };
+  };
+  exports["writeJSON"] = writeJSON;
+  exports["WriteForeign"] = WriteForeign;
+  exports["writeImpl"] = writeImpl;
+  exports["WriteForeignFields"] = WriteForeignFields;
+  exports["writeImplFields"] = writeImplFields;
+  exports["writeForeignString"] = writeForeignString;
+  exports["writeForeignInt"] = writeForeignInt;
+  exports["writeForeignBoolean"] = writeForeignBoolean;
+  exports["recordWriteForeign"] = recordWriteForeign;
+  exports["consWriteForeignFields"] = consWriteForeignFields;
+  exports["nilWriteForeignFields"] = nilWriteForeignFields;
+})(PS["Simple.JSON"] = PS["Simple.JSON"] || {});
+(function(exports) {
+    "use strict";
+  var Data_Symbol = PS["Data.Symbol"];
+  var Simple_JSON = PS["Simple.JSON"];
+  var note_wfI = Simple_JSON.recordWriteForeign()(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "created";
+  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "id";
+  }))(Simple_JSON.writeForeignInt)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "length";
+  }))(Simple_JSON.writeForeignInt)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "text";
+  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "title";
+  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "updated";
+  }))(Simple_JSON.writeForeignString)(Simple_JSON.nilWriteForeignFields)()()())()()())()()())()()())()()())()()());
+  var bookmark_wfI = Simple_JSON.recordWriteForeign()(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "bid";
+  }))(Simple_JSON.writeForeignInt)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "description";
+  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "private";
+  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "selected";
+  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "tags";
+  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "time";
+  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "title";
+  }))(Simple_JSON.writeForeignString)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "toread";
+  }))(Simple_JSON.writeForeignBoolean)(Simple_JSON.consWriteForeignFields(new Data_Symbol.IsSymbol(function () {
+      return "url";
+  }))(Simple_JSON.writeForeignString)(Simple_JSON.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()());
+  exports["bookmark_wfI"] = bookmark_wfI;
+  exports["note_wfI"] = note_wfI;
+})(PS["Model"] = PS["Model"] || {});
+(function(exports) {
+  /* global window */
+  "use strict";
+
+  exports.window = function () {
+    return window;
+  };
+})(PS["Web.HTML"] = PS["Web.HTML"] || {});
+(function(exports) {
+    "use strict";
+
+  exports._body = function (doc) {
+    return function () {
+      return doc.body;
+    };
+  };
+})(PS["Web.HTML.HTMLDocument"] = PS["Web.HTML.HTMLDocument"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.removeAttribute = function (name) {
+    return function (element) {
+      return function () {
+        element.removeAttribute(name);
+        return {};
+      };
+    };
+  };
+})(PS["Web.DOM.Element"] = PS["Web.DOM.Element"] || {});
+(function(exports) {
+    "use strict";                                             
+
+  exports._querySelector = function (selector) {
+    return function (node) {
+      return function () {
+        return node.querySelector(selector);
+      };
+    };
+  };
+
+  exports.querySelectorAll = function (selector) {
+    return function (node) {
+      return function () {
+        return node.querySelectorAll(selector);
+      };
+    };
+  };
+})(PS["Web.DOM.ParentNode"] = PS["Web.DOM.ParentNode"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.toArray = function (list) {
+    return function () {
+      return [].slice.call(list);
+    };
+  };
+})(PS["Web.DOM.NodeList"] = PS["Web.DOM.NodeList"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.DOM.NodeList"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
+  exports["toArray"] = $foreign.toArray;
+})(PS["Web.DOM.NodeList"] = PS["Web.DOM.NodeList"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.DOM.ParentNode"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Data_Ord = PS["Data.Ord"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM_HTMLCollection = PS["Web.DOM.HTMLCollection"];
+  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
+  var Web_DOM_NodeList = PS["Web.DOM.NodeList"];
+  var querySelector = function (qs) {
+      return function ($3) {
+          return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign._querySelector(qs)($3));
+      };
+  };
+  exports["querySelector"] = querySelector;
+  exports["querySelectorAll"] = $foreign.querySelectorAll;
+})(PS["Web.DOM.ParentNode"] = PS["Web.DOM.ParentNode"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.eventListener = function (fn) {
+    return function () {
+      return function (event) {
+        return fn(event)();
+      };
+    };
+  };
+})(PS["Web.Event.EventTarget"] = PS["Web.Event.EventTarget"] || {});
+(function(exports) {
+    "use strict";
+
+  exports._currentTarget = function (e) {
+    return e.currentTarget;
+  };
+
+  exports.preventDefault = function (e) {
+    return function () {
+      return e.preventDefault();
+    };
+  };
+})(PS["Web.Event.Event"] = PS["Web.Event.Event"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.toCharCode = function (c) {
+    return c.charCodeAt(0);
+  };
+
+  exports.fromCharCode = function (c) {
+    return String.fromCharCode(c);
+  };
+})(PS["Data.Enum"] = PS["Data.Enum"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.Enum"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_MonadPlus = PS["Control.MonadPlus"];
+  var Control_MonadZero = PS["Control.MonadZero"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Bounded = PS["Data.Bounded"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
+  var Data_Unit = PS["Data.Unit"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];
+  var Enum = function (Ord0, pred, succ) {
+      this.Ord0 = Ord0;
+      this.pred = pred;
+      this.succ = succ;
+  };
+  var BoundedEnum = function (Bounded0, Enum1, cardinality, fromEnum, toEnum) {
+      this.Bounded0 = Bounded0;
+      this.Enum1 = Enum1;
+      this.cardinality = cardinality;
+      this.fromEnum = fromEnum;
+      this.toEnum = toEnum;
+  };
+  var toEnum = function (dict) {
+      return dict.toEnum;
+  };
+  var succ = function (dict) {
+      return dict.succ;
+  }; 
+  var pred = function (dict) {
+      return dict.pred;
+  };              
+  var fromEnum = function (dict) {
+      return dict.fromEnum;
+  };
+  var toEnumWithDefaults = function (dictBoundedEnum) {
+      return function (low) {
+          return function (high) {
+              return function (x) {
+                  var v = toEnum(dictBoundedEnum)(x);
+                  if (v instanceof Data_Maybe.Just) {
+                      return v.value0;
+                  };
+                  if (v instanceof Data_Maybe.Nothing) {
+                      var $51 = x < fromEnum(dictBoundedEnum)(Data_Bounded.bottom(dictBoundedEnum.Bounded0()));
+                      if ($51) {
+                          return low;
+                      };
+                      return high;
+                  };
+                  throw new Error("Failed pattern match at Data.Enum line 158, column 33 - line 160, column 62: " + [ v.constructor.name ]);
+              };
+          };
+      };
+  };
+  var defaultSucc = function (toEnum$prime) {
+      return function (fromEnum$prime) {
+          return function (a) {
+              return toEnum$prime(fromEnum$prime(a) + 1 | 0);
+          };
+      };
+  };
+  var defaultPred = function (toEnum$prime) {
+      return function (fromEnum$prime) {
+          return function (a) {
+              return toEnum$prime(fromEnum$prime(a) - 1 | 0);
+          };
+      };
+  };
+  var charToEnum = function (v) {
+      if (v >= Data_Bounded.bottom(Data_Bounded.boundedInt) && v <= Data_Bounded.top(Data_Bounded.boundedInt)) {
+          return new Data_Maybe.Just($foreign.fromCharCode(v));
+      };
+      return Data_Maybe.Nothing.value;
+  };
+  var enumChar = new Enum(function () {
+      return Data_Ord.ordChar;
+  }, defaultPred(charToEnum)($foreign.toCharCode), defaultSucc(charToEnum)($foreign.toCharCode));
+  var cardinality = function (dict) {
+      return dict.cardinality;
+  }; 
+  var boundedEnumChar = new BoundedEnum(function () {
+      return Data_Bounded.boundedChar;
+  }, function () {
+      return enumChar;
+  }, $foreign.toCharCode(Data_Bounded.top(Data_Bounded.boundedChar)) - $foreign.toCharCode(Data_Bounded.bottom(Data_Bounded.boundedChar)) | 0, $foreign.toCharCode, charToEnum);
+  exports["Enum"] = Enum;
+  exports["succ"] = succ;
+  exports["pred"] = pred;
+  exports["BoundedEnum"] = BoundedEnum;
+  exports["cardinality"] = cardinality;
+  exports["toEnum"] = toEnum;
+  exports["fromEnum"] = fromEnum;
+  exports["toEnumWithDefaults"] = toEnumWithDefaults;
+  exports["defaultSucc"] = defaultSucc;
+  exports["defaultPred"] = defaultPred;
+  exports["enumChar"] = enumChar;
+  exports["boundedEnumChar"] = boundedEnumChar;
+})(PS["Data.Enum"] = PS["Data.Enum"] || {});
+(function(exports) {
+    "use strict";
+  var $foreign = PS["Web.Event.Event"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_DateTime_Instant = PS["Data.DateTime.Instant"];
+  var Data_Enum = PS["Data.Enum"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Data_Ord = PS["Data.Ord"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Web_Event_EventPhase = PS["Web.Event.EventPhase"];
+  var Web_Event_Internal_Types = PS["Web.Event.Internal.Types"];
+
+  // | The element that the event listener was added to.
+  var currentTarget = function ($6) {
+      return Data_Nullable.toMaybe($foreign._currentTarget($6));
+  };
+  exports["currentTarget"] = currentTarget;
+  exports["preventDefault"] = $foreign.preventDefault;
+})(PS["Web.Event.Event"] = PS["Web.Event.Event"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.Event.EventTarget"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Web_Event_Event = PS["Web.Event.Event"];
+  var Web_Event_Internal_Types = PS["Web.Event.Internal.Types"];
+  exports["eventListener"] = $foreign.eventListener;
+})(PS["Web.Event.EventTarget"] = PS["Web.Event.EventTarget"] || {});
+(function(exports) {
+    "use strict";
+
+  exports._unsafeReadProtoTagged = function (nothing, just, name, value) {
+    var obj = value;
+    while (obj != null) {
+      var proto = Object.getPrototypeOf(obj);
+      var ctor = proto.constructor.name;
+      if (ctor === name) {
+        return just(value);
+      } else if (ctor === "Object") {
+        return nothing;
+      }
+      obj = proto;
+    }
+    return nothing;
+  };
+})(PS["Web.Internal.FFI"] = PS["Web.Internal.FFI"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.Internal.FFI"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Maybe = PS["Data.Maybe"];                 
+  var unsafeReadProtoTagged = function (name) {
+      return function (value) {
+          return $foreign._unsafeReadProtoTagged(Data_Maybe.Nothing.value, Data_Maybe.Just.create, name, value);
+      };
+  };
+  exports["unsafeReadProtoTagged"] = unsafeReadProtoTagged;
+})(PS["Web.Internal.FFI"] = PS["Web.Internal.FFI"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.DOM.Element"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_DOM_ChildNode = PS["Web.DOM.ChildNode"];
+  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
+  var Web_DOM_NonDocumentTypeChildNode = PS["Web.DOM.NonDocumentTypeChildNode"];
+  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
+  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
+  var Web_Internal_FFI = PS["Web.Internal.FFI"];                 
+  var toParentNode = Unsafe_Coerce.unsafeCoerce;              
+  var toNode = Unsafe_Coerce.unsafeCoerce;                                             
+  var fromNode = Web_Internal_FFI.unsafeReadProtoTagged("Element");
+  exports["fromNode"] = fromNode;
+  exports["toNode"] = toNode;
+  exports["toParentNode"] = toParentNode;
+  exports["removeAttribute"] = $foreign.removeAttribute;
+})(PS["Web.DOM.Element"] = PS["Web.DOM.Element"] || {});
+(function(exports) {
+    "use strict";
+
+  exports._getElementById = function (id) {
+    return function (node) {
+      return function () {
+        return node.getElementById(id);
+      };
+    };
+  };
+})(PS["Web.DOM.NonElementParentNode"] = PS["Web.DOM.NonElementParentNode"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.DOM.NonElementParentNode"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];                 
+  var getElementById = function (eid) {
+      return function ($0) {
+          return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign._getElementById(eid)($0));
+      };
+  };
+  exports["getElementById"] = getElementById;
+})(PS["Web.DOM.NonElementParentNode"] = PS["Web.DOM.NonElementParentNode"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.DOM.Document"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_DOM_Comment = PS["Web.DOM.Comment"];
+  var Web_DOM_DocumentFragment = PS["Web.DOM.DocumentFragment"];
+  var Web_DOM_DocumentType = PS["Web.DOM.DocumentType"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var Web_DOM_HTMLCollection = PS["Web.DOM.HTMLCollection"];
+  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
+  var Web_DOM_NonElementParentNode = PS["Web.DOM.NonElementParentNode"];
+  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
+  var Web_DOM_ProcessingInstruction = PS["Web.DOM.ProcessingInstruction"];
+  var Web_DOM_Text = PS["Web.DOM.Text"];
+  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
+  var Web_Internal_FFI = PS["Web.Internal.FFI"];
+  var toNonElementParentNode = Unsafe_Coerce.unsafeCoerce;
+  exports["toNonElementParentNode"] = toNonElementParentNode;
+})(PS["Web.DOM.Document"] = PS["Web.DOM.Document"] || {});
+(function(exports) {
+    "use strict";
+
+  exports._read = function (nothing, just, value) {
+    var tag = Object.prototype.toString.call(value);
+    if (tag.indexOf("[object HTML") === 0 && tag.indexOf("Element]") === tag.length - 8) {
+      return just(value);
+    } else {
+      return nothing;
+    }
+  };
+})(PS["Web.HTML.HTMLElement"] = PS["Web.HTML.HTMLElement"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.HTML.HTMLElement"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_DOM = PS["Web.DOM"];
+  var Web_DOM_DOMTokenList = PS["Web.DOM.DOMTokenList"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
+  var Web_DOM_NonDocumentTypeChildNode = PS["Web.DOM.NonDocumentTypeChildNode"];
+  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
+  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];    
+  var toNode = Unsafe_Coerce.unsafeCoerce;       
+  var toElement = Unsafe_Coerce.unsafeCoerce;
+  var fromElement = function (x) {
+      return $foreign._read(Data_Maybe.Nothing.value, Data_Maybe.Just.create, x);
+  };
+  exports["fromElement"] = fromElement;
+  exports["toElement"] = toElement;
+  exports["toNode"] = toNode;
+})(PS["Web.HTML.HTMLElement"] = PS["Web.HTML.HTMLElement"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.HTML.HTMLDocument"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_DOM_Document = PS["Web.DOM.Document"];
+  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
+  var Web_DOM_NonElementParentNode = PS["Web.DOM.NonElementParentNode"];
+  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
+  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
+  var Web_HTML_HTMLDocument_ReadyState = PS["Web.HTML.HTMLDocument.ReadyState"];
+  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
+  var Web_Internal_FFI = PS["Web.Internal.FFI"];                 
+  var toParentNode = Unsafe_Coerce.unsafeCoerce; 
+  var toDocument = Unsafe_Coerce.unsafeCoerce;                              
+  var body = function ($2) {
+      return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign._body($2));
+  };
+  exports["toDocument"] = toDocument;
+  exports["toParentNode"] = toParentNode;
+  exports["body"] = body;
+})(PS["Web.HTML.HTMLDocument"] = PS["Web.HTML.HTMLDocument"] || {});
+(function(exports) {
+    "use strict";
+
+  // ----------------------------------------------------------------------------
+
+  exports.href = function (location) {
+    return function () {
+      return location.href;
+    };
+  };
+
+  exports.setHref = function (href) {
+    return function (location) {
+      return function () {
+        location.href = href;
+      };
+    };
+  };
+
+  // ----------------------------------------------------------------------------
+
+  exports.search = function (location) {
+    return function () {
+      return location.search;
+    };
+  };
+
+  // ----------------------------------------------------------------------------
+
+  exports.reload = function (location) {
+    return function () {
+      location.reload();
+    };
+  };
+})(PS["Web.HTML.Location"] = PS["Web.HTML.Location"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.HTML.Location"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  exports["setHref"] = $foreign.setHref;
+  exports["search"] = $foreign.search;
+  exports["reload"] = $foreign.reload;
+})(PS["Web.HTML.Location"] = PS["Web.HTML.Location"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.document = function (window) {
+    return function () {
+      return window.document;
+    };
+  };
+
+  exports.location = function (window) {
+    return function () {
+      return window.location;
+    };
+  };
+})(PS["Web.HTML.Window"] = PS["Web.HTML.Window"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.HTML.Window"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Data_Ord = PS["Data.Ord"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
+  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
+  var Web_HTML_History = PS["Web.HTML.History"];
+  var Web_HTML_Location = PS["Web.HTML.Location"];
+  var Web_HTML_Navigator = PS["Web.HTML.Navigator"];
+  var Web_Storage_Storage = PS["Web.Storage.Storage"];
+  exports["document"] = $foreign.document;
+  exports["location"] = $foreign.location;
+})(PS["Web.HTML.Window"] = PS["Web.HTML.Window"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.HTML"];
+  var Effect = PS["Effect"];
+  var Web_HTML_HTMLAnchorElement = PS["Web.HTML.HTMLAnchorElement"];
+  var Web_HTML_HTMLAreaElement = PS["Web.HTML.HTMLAreaElement"];
+  var Web_HTML_HTMLAudioElement = PS["Web.HTML.HTMLAudioElement"];
+  var Web_HTML_HTMLBRElement = PS["Web.HTML.HTMLBRElement"];
+  var Web_HTML_HTMLBaseElement = PS["Web.HTML.HTMLBaseElement"];
+  var Web_HTML_HTMLBodyElement = PS["Web.HTML.HTMLBodyElement"];
+  var Web_HTML_HTMLButtonElement = PS["Web.HTML.HTMLButtonElement"];
+  var Web_HTML_HTMLCanvasElement = PS["Web.HTML.HTMLCanvasElement"];
+  var Web_HTML_HTMLDListElement = PS["Web.HTML.HTMLDListElement"];
+  var Web_HTML_HTMLDataElement = PS["Web.HTML.HTMLDataElement"];
+  var Web_HTML_HTMLDataListElement = PS["Web.HTML.HTMLDataListElement"];
+  var Web_HTML_HTMLDivElement = PS["Web.HTML.HTMLDivElement"];
+  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
+  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
+  var Web_HTML_HTMLEmbedElement = PS["Web.HTML.HTMLEmbedElement"];
+  var Web_HTML_HTMLFieldSetElement = PS["Web.HTML.HTMLFieldSetElement"];
+  var Web_HTML_HTMLFormElement = PS["Web.HTML.HTMLFormElement"];
+  var Web_HTML_HTMLHRElement = PS["Web.HTML.HTMLHRElement"];
+  var Web_HTML_HTMLHeadElement = PS["Web.HTML.HTMLHeadElement"];
+  var Web_HTML_HTMLHeadingElement = PS["Web.HTML.HTMLHeadingElement"];
+  var Web_HTML_HTMLIFrameElement = PS["Web.HTML.HTMLIFrameElement"];
+  var Web_HTML_HTMLImageElement = PS["Web.HTML.HTMLImageElement"];
+  var Web_HTML_HTMLInputElement = PS["Web.HTML.HTMLInputElement"];
+  var Web_HTML_HTMLKeygenElement = PS["Web.HTML.HTMLKeygenElement"];
+  var Web_HTML_HTMLLIElement = PS["Web.HTML.HTMLLIElement"];
+  var Web_HTML_HTMLLabelElement = PS["Web.HTML.HTMLLabelElement"];
+  var Web_HTML_HTMLLegendElement = PS["Web.HTML.HTMLLegendElement"];
+  var Web_HTML_HTMLLinkElement = PS["Web.HTML.HTMLLinkElement"];
+  var Web_HTML_HTMLMapElement = PS["Web.HTML.HTMLMapElement"];
+  var Web_HTML_HTMLMediaElement = PS["Web.HTML.HTMLMediaElement"];
+  var Web_HTML_HTMLMetaElement = PS["Web.HTML.HTMLMetaElement"];
+  var Web_HTML_HTMLMeterElement = PS["Web.HTML.HTMLMeterElement"];
+  var Web_HTML_HTMLModElement = PS["Web.HTML.HTMLModElement"];
+  var Web_HTML_HTMLOListElement = PS["Web.HTML.HTMLOListElement"];
+  var Web_HTML_HTMLObjectElement = PS["Web.HTML.HTMLObjectElement"];
+  var Web_HTML_HTMLOptGroupElement = PS["Web.HTML.HTMLOptGroupElement"];
+  var Web_HTML_HTMLOptionElement = PS["Web.HTML.HTMLOptionElement"];
+  var Web_HTML_HTMLOutputElement = PS["Web.HTML.HTMLOutputElement"];
+  var Web_HTML_HTMLParagraphElement = PS["Web.HTML.HTMLParagraphElement"];
+  var Web_HTML_HTMLParamElement = PS["Web.HTML.HTMLParamElement"];
+  var Web_HTML_HTMLPreElement = PS["Web.HTML.HTMLPreElement"];
+  var Web_HTML_HTMLProgressElement = PS["Web.HTML.HTMLProgressElement"];
+  var Web_HTML_HTMLQuoteElement = PS["Web.HTML.HTMLQuoteElement"];
+  var Web_HTML_HTMLScriptElement = PS["Web.HTML.HTMLScriptElement"];
+  var Web_HTML_HTMLSelectElement = PS["Web.HTML.HTMLSelectElement"];
+  var Web_HTML_HTMLSourceElement = PS["Web.HTML.HTMLSourceElement"];
+  var Web_HTML_HTMLSpanElement = PS["Web.HTML.HTMLSpanElement"];
+  var Web_HTML_HTMLStyleElement = PS["Web.HTML.HTMLStyleElement"];
+  var Web_HTML_HTMLTableCaptionElement = PS["Web.HTML.HTMLTableCaptionElement"];
+  var Web_HTML_HTMLTableCellElement = PS["Web.HTML.HTMLTableCellElement"];
+  var Web_HTML_HTMLTableColElement = PS["Web.HTML.HTMLTableColElement"];
+  var Web_HTML_HTMLTableDataCellElement = PS["Web.HTML.HTMLTableDataCellElement"];
+  var Web_HTML_HTMLTableElement = PS["Web.HTML.HTMLTableElement"];
+  var Web_HTML_HTMLTableHeaderCellElement = PS["Web.HTML.HTMLTableHeaderCellElement"];
+  var Web_HTML_HTMLTableRowElement = PS["Web.HTML.HTMLTableRowElement"];
+  var Web_HTML_HTMLTableSectionElement = PS["Web.HTML.HTMLTableSectionElement"];
+  var Web_HTML_HTMLTemplateElement = PS["Web.HTML.HTMLTemplateElement"];
+  var Web_HTML_HTMLTextAreaElement = PS["Web.HTML.HTMLTextAreaElement"];
+  var Web_HTML_HTMLTimeElement = PS["Web.HTML.HTMLTimeElement"];
+  var Web_HTML_HTMLTitleElement = PS["Web.HTML.HTMLTitleElement"];
+  var Web_HTML_HTMLTrackElement = PS["Web.HTML.HTMLTrackElement"];
+  var Web_HTML_HTMLUListElement = PS["Web.HTML.HTMLUListElement"];
+  var Web_HTML_HTMLVideoElement = PS["Web.HTML.HTMLVideoElement"];
+  var Web_HTML_History = PS["Web.HTML.History"];
+  var Web_HTML_Location = PS["Web.HTML.Location"];
+  var Web_HTML_Navigator = PS["Web.HTML.Navigator"];
+  var Web_HTML_Window = PS["Web.HTML.Window"];
+  exports["window"] = $foreign.window;
+})(PS["Web.HTML"] = PS["Web.HTML"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Globals"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Effect = PS["Effect"];
+  var Model = PS["Model"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM = PS["Web.DOM"];
+  var Web_HTML = PS["Web.HTML"];
+  var Web_XHR_FormData = PS["Web.XHR.FormData"];                 
+  var setInnerHtml = function (c) {
+      return function (n) {
+          return Control_Applicative.pure(Effect.applicativeEffect)($foreign._setInnerHtml(c, n));
+      };
+  };
+  var setDataAttribute = function (k) {
+      return function (v) {
+          return function (n) {
+              return Control_Applicative.pure(Effect.applicativeEffect)($foreign._setDataAttribute(k, v, n));
+          };
+      };
+  };
+  var moment8601 = function (s) {
+      return Control_Applicative.pure(Effect.applicativeEffect)($foreign._moment8601(Data_Tuple.Tuple.create, s));
+  };
+  var mmoment8601 = function (s) {
+      return $foreign._mmoment8601(Data_Maybe.Just.create, Data_Maybe.Nothing.value, Data_Tuple.Tuple.create, s);
+  };
+  var innerHtml = function (n) {
+      return Control_Applicative.pure(Effect.applicativeEffect)($foreign._innerHtml(n));
+  };
+  var getDataAttribute = function (k) {
+      return function (n) {
+          return Control_Applicative.pure(Effect.applicativeEffect)(Data_Nullable.toMaybe($foreign._getDataAttribute(k, n)));
+      };
+  };
+  var createFormString = function (f) {
+      return $foreign._createFormString(f);
+  };
+  var createFormData = function (f) {
+      return $foreign._createFormData(f);
+  };
+  var createFormArray = function (f) {
+      return $foreign._createFormArray(f);
+  };
+  var closest = function (selector) {
+      return function (node) {
+          return Control_Applicative.pure(Effect.applicativeEffect)($foreign._closest(Data_Maybe.Just.create, Data_Maybe.Nothing.value, selector, node));
+      };
+  };
+  var closeWindow = function (win) {
+      return Control_Applicative.pure(Effect.applicativeEffect)($foreign._closeWindow(win));
+  };
+  var app$prime = function (v) {
+      return $foreign._app();
+  };
+  exports["app'"] = app$prime;
+  exports["closest"] = closest;
+  exports["moment8601"] = moment8601;
+  exports["mmoment8601"] = mmoment8601;
+  exports["innerHtml"] = innerHtml;
+  exports["setInnerHtml"] = setInnerHtml;
+  exports["createFormData"] = createFormData;
+  exports["createFormString"] = createFormString;
+  exports["createFormArray"] = createFormArray;
+  exports["getDataAttribute"] = getDataAttribute;
+  exports["setDataAttribute"] = setDataAttribute;
+  exports["closeWindow"] = closeWindow;
+  exports["_app"] = $foreign._app;
+  exports["_closest"] = $foreign._closest;
+  exports["_moment8601"] = $foreign._moment8601;
+  exports["_mmoment8601"] = $foreign._mmoment8601;
+  exports["_innerHtml"] = $foreign._innerHtml;
+  exports["_setInnerHtml"] = $foreign._setInnerHtml;
+  exports["_createFormData"] = $foreign._createFormData;
+  exports["_createFormString"] = $foreign._createFormString;
+  exports["_createFormArray"] = $foreign._createFormArray;
+  exports["_getDataAttribute"] = $foreign._getDataAttribute;
+  exports["_setDataAttribute"] = $foreign._setDataAttribute;
+  exports["_closeWindow"] = $foreign._closeWindow;
+})(PS["Globals"] = PS["Globals"] || {});
+(function(exports) {
+  /* global exports */
+  /* global XMLHttpRequest */
+  /* global module */
+  /* global process */
+  "use strict";
+
+  exports._ajax = function () {
+    var platformSpecific = { };
+    if (typeof module !== "undefined" && module.require && !(typeof process !== "undefined" && process.versions["electron"])) {
+      // We are on node.js
+      platformSpecific.newXHR = function () {
+        var XHR = module.require("xhr2");
+        return new XHR();
+      };
+
+      platformSpecific.fixupUrl = function (url) {
+        var urllib = module.require("url");
+        var u = urllib.parse(url);
+        u.protocol = u.protocol || "http:";
+        u.hostname = u.hostname || "localhost";
+        return urllib.format(u);
+      };
+
+      platformSpecific.getResponse = function (xhr) {
+        return xhr.response;
+      };
+    } else {
+      // We are in the browser
+      platformSpecific.newXHR = function () {
+        return new XMLHttpRequest();
+      };
+
+      platformSpecific.fixupUrl = function (url) {
+        return url || "/";
+      };
+
+      platformSpecific.getResponse = function (xhr) {
+        return xhr.response;
+      };
+    }
+
+    return function (mkHeader, options) {
+      return function (errback, callback) {
+        var xhr = platformSpecific.newXHR();
+        var fixedUrl = platformSpecific.fixupUrl(options.url);
+        xhr.open(options.method || "GET", fixedUrl, true, options.username, options.password);
+        if (options.headers) {
+          try {
+            for (var i = 0, header; (header = options.headers[i]) != null; i++) {
+              xhr.setRequestHeader(header.field, header.value);
+            }
+          } catch (e) {
+            errback(e);
+          }
+        }
+        xhr.onerror = function () {
+          errback(new Error("AJAX request failed: " + options.method + " " + options.url));
+        };
+        xhr.onload = function () {
+          callback({
+            status: xhr.status,
+            statusText: xhr.statusText,
+            headers: xhr.getAllResponseHeaders().split("\r\n")
+              .filter(function (header) {
+                return header.length > 0;
+              })
+              .map(function (header) {
+                var i = header.indexOf(":");
+                return mkHeader(header.substring(0, i))(header.substring(i + 2));
+              }),
+            response: platformSpecific.getResponse(xhr)
+          });
+        };
+        xhr.responseType = options.responseType;
+        xhr.withCredentials = options.withCredentials;
+        xhr.send(options.content);
+
+        return function (error, cancelErrback, cancelCallback) {
+          try {
+            xhr.abort();
+          } catch (e) {
+            return cancelErrback(e);
+          }
+          return cancelCallback();
+        };
+      };
+    };
+  }();
+})(PS["Network.HTTP.Affjax"] = PS["Network.HTTP.Affjax"] || {});
+(function(exports) {
+    "use strict";
+
+  function id(x) {
+    return x;
+  }                      
+  exports.fromObject = id;
+
+  exports.stringify = function (j) {
+    return JSON.stringify(j);
+  };
+
+  var objToString = Object.prototype.toString;
+
+  function isArray(a) {
+    return objToString.call(a) === "[object Array]";
+  }
+
+  exports._caseJson = function (isNull, isBool, isNum, isStr, isArr, isObj, j) {
+    if (j == null) return isNull();
+    else if (typeof j === "boolean") return isBool(j);
+    else if (typeof j === "number") return isNum(j);
+    else if (typeof j === "string") return isStr(j);
+    else if (objToString.call(j) === "[object Array]")
+      return isArr(j);
+    else return isObj(j);
+  };
+})(PS["Data.Argonaut.Core"] = PS["Data.Argonaut.Core"] || {});
+(function(exports) {
+  
+  // | This module defines a data type and various functions for creating and
+  // | manipulating JSON values. The README contains additional documentation
+  // | for this module.
+  "use strict";
+  var $foreign = PS["Data.Argonaut.Core"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Foreign_Object = PS["Foreign.Object"];
+  var Prelude = PS["Prelude"];                 
+  var verbJsonType = function (def) {
+      return function (f) {
+          return function (g) {
+              return g(def)(f);
+          };
+      };
+  };
+
+  // Decoding
+  var toJsonType = verbJsonType(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);
+  var jsonEmptyObject = $foreign.fromObject(Foreign_Object.empty);
+
+  // | A simpler version of `caseJson` which accepts a callback for when the
+  // | `Json` argument was a `Number`, and a default value for all other cases.
+  var caseJsonNumber = function (d) {
+      return function (f) {
+          return function (j) {
+              return $foreign._caseJson(Data_Function["const"](d), Data_Function["const"](d), f, Data_Function["const"](d), Data_Function["const"](d), Data_Function["const"](d), j);
+          };
+      };
+  };                                        
+  var toNumber = toJsonType(caseJsonNumber);
+  exports["caseJsonNumber"] = caseJsonNumber;
+  exports["toNumber"] = toNumber;
+  exports["jsonEmptyObject"] = jsonEmptyObject;
+  exports["stringify"] = $foreign.stringify;
+})(PS["Data.Argonaut.Core"] = PS["Data.Argonaut.Core"] || {});
+(function(exports) {
+    "use strict";
+
+  exports._jsonParser = function (fail, succ, s) {
+    try {
+      return succ(JSON.parse(s));
+    }
+    catch (e) {
+      return fail(e.message);
+    }
+  };
+})(PS["Data.Argonaut.Parser"] = PS["Data.Argonaut.Parser"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.Argonaut.Parser"];
+  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];                 
+  var jsonParser = function (j) {
+      return $foreign._jsonParser(Data_Either.Left.create, Data_Either.Right.create, j);
+  };
+  exports["jsonParser"] = jsonParser;
+})(PS["Data.Argonaut.Parser"] = PS["Data.Argonaut.Parser"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Function = PS["Data.Function"];
+  var Effect = PS["Effect"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Effect_Uncurried = PS["Effect.Uncurried"];
+  var Prelude = PS["Prelude"];
+  var fromEffectFnAff = function (v) {
+      return Effect_Aff.makeAff(function (k) {
+          return function __do() {
+              var v1 = v(function ($4) {
+                  return k(Data_Either.Left.create($4))();
+              }, function ($5) {
+                  return k(Data_Either.Right.create($5))();
+              });
+              return function (e) {
+                  return Effect_Aff.makeAff(function (k2) {
+                      return function __do() {
+                          v1(e, function ($6) {
+                              return k2(Data_Either.Left.create($6))();
+                          }, function ($7) {
+                              return k2(Data_Either.Right.create($7))();
+                          });
+                          return Effect_Aff.nonCanceler;
+                      };
+                  });
+              };
+          };
+      });
+  };
+  exports["fromEffectFnAff"] = fromEffectFnAff;
+})(PS["Effect.Aff.Compat"] = PS["Effect.Aff.Compat"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
+  var Data_ArrayBuffer_Types = PS["Data.ArrayBuffer.Types"];
+  var Data_FormURLEncoded = PS["Data.FormURLEncoded"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_MediaType = PS["Data.MediaType"];
+  var Data_MediaType_Common = PS["Data.MediaType.Common"];
+  var Web_DOM_Document = PS["Web.DOM.Document"];
+  var Web_File_Blob = PS["Web.File.Blob"];
+  var Web_XHR_FormData = PS["Web.XHR.FormData"];                 
+  var ArrayView = (function () {
+      function ArrayView(value0) {
+          this.value0 = value0;
+      };
+      ArrayView.create = function (value0) {
+          return new ArrayView(value0);
+      };
+      return ArrayView;
+  })();
+  var Blob = (function () {
+      function Blob(value0) {
+          this.value0 = value0;
+      };
+      Blob.create = function (value0) {
+          return new Blob(value0);
+      };
+      return Blob;
+  })();
+  var Document = (function () {
+      function Document(value0) {
+          this.value0 = value0;
+      };
+      Document.create = function (value0) {
+          return new Document(value0);
+      };
+      return Document;
+  })();
+  var $$String = (function () {
+      function $$String(value0) {
+          this.value0 = value0;
+      };
+      $$String.create = function (value0) {
+          return new $$String(value0);
+      };
+      return $$String;
+  })();
+  var FormData = (function () {
+      function FormData(value0) {
+          this.value0 = value0;
+      };
+      FormData.create = function (value0) {
+          return new FormData(value0);
+      };
+      return FormData;
+  })();
+  var FormURLEncoded = (function () {
+      function FormURLEncoded(value0) {
+          this.value0 = value0;
+      };
+      FormURLEncoded.create = function (value0) {
+          return new FormURLEncoded(value0);
+      };
+      return FormURLEncoded;
+  })();
+  var Json = (function () {
+      function Json(value0) {
+          this.value0 = value0;
+      };
+      Json.create = function (value0) {
+          return new Json(value0);
+      };
+      return Json;
+  })();
+  var toMediaType = function (v) {
+      if (v instanceof FormURLEncoded) {
+          return new Data_Maybe.Just(Data_MediaType_Common.applicationFormURLEncoded);
+      };
+      if (v instanceof Json) {
+          return new Data_Maybe.Just(Data_MediaType_Common.applicationJSON);
+      };
+      return Data_Maybe.Nothing.value;
+  };
+  var string = $$String.create;
+  exports["ArrayView"] = ArrayView;
+  exports["Blob"] = Blob;
+  exports["Document"] = Document;
+  exports["String"] = $$String;
+  exports["FormData"] = FormData;
+  exports["FormURLEncoded"] = FormURLEncoded;
+  exports["Json"] = Json;
+  exports["string"] = string;
+  exports["toMediaType"] = toMediaType;
+})(PS["Network.HTTP.Affjax.Request"] = PS["Network.HTTP.Affjax.Request"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Category = PS["Control.Category"];
+  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
+  var Data_ArrayBuffer_Types = PS["Data.ArrayBuffer.Types"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_MediaType = PS["Data.MediaType"];
+  var Data_MediaType_Common = PS["Data.MediaType.Common"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM_Document = PS["Web.DOM.Document"];
+  var Web_File_Blob = PS["Web.File.Blob"];                 
+  var $$ArrayBuffer = (function () {
+      function $$ArrayBuffer(value0) {
+          this.value0 = value0;
+      };
+      $$ArrayBuffer.create = function (value0) {
+          return new $$ArrayBuffer(value0);
+      };
+      return $$ArrayBuffer;
+  })();
+  var Blob = (function () {
+      function Blob(value0) {
+          this.value0 = value0;
+      };
+      Blob.create = function (value0) {
+          return new Blob(value0);
+      };
+      return Blob;
+  })();
+  var Document = (function () {
+      function Document(value0) {
+          this.value0 = value0;
+      };
+      Document.create = function (value0) {
+          return new Document(value0);
+      };
+      return Document;
+  })();
+  var Json = (function () {
+      function Json(value0) {
+          this.value0 = value0;
+      };
+      Json.create = function (value0) {
+          return new Json(value0);
+      };
+      return Json;
+  })();
+  var $$String = (function () {
+      function $$String(value0) {
+          this.value0 = value0;
+      };
+      $$String.create = function (value0) {
+          return new $$String(value0);
+      };
+      return $$String;
+  })();
+  var Ignore = (function () {
+      function Ignore(value0) {
+          this.value0 = value0;
+      };
+      Ignore.create = function (value0) {
+          return new Ignore(value0);
+      };
+      return Ignore;
+  })();
+  var toResponseType = function (v) {
+      if (v instanceof $$ArrayBuffer) {
+          return "arraybuffer";
+      };
+      if (v instanceof Blob) {
+          return "blob";
+      };
+      if (v instanceof Document) {
+          return "document";
+      };
+      if (v instanceof Json) {
+          return "text";
+      };
+      if (v instanceof $$String) {
+          return "text";
+      };
+      if (v instanceof Ignore) {
+          return "";
+      };
+      throw new Error("Failed pattern match at Network.HTTP.Affjax.Response line 41, column 3 - line 49, column 1: " + [ v.constructor.name ]);
+  };
+  var toMediaType = function (v) {
+      if (v instanceof Json) {
+          return new Data_Maybe.Just(Data_MediaType_Common.applicationJSON);
+      };
+      return Data_Maybe.Nothing.value;
+  };                                                                                
+  var json = new Json(Control_Category.identity(Control_Category.categoryFn));
+  var ignore = new Ignore(Control_Category.identity(Control_Category.categoryFn));
+  exports["ArrayBuffer"] = $$ArrayBuffer;
+  exports["Blob"] = Blob;
+  exports["Document"] = Document;
+  exports["Json"] = Json;
+  exports["String"] = $$String;
+  exports["Ignore"] = Ignore;
+  exports["json"] = json;
+  exports["ignore"] = ignore;
+  exports["toResponseType"] = toResponseType;
+  exports["toMediaType"] = toMediaType;
+})(PS["Network.HTTP.Affjax.Response"] = PS["Network.HTTP.Affjax.Response"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Data_Eq = PS["Data.Eq"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_MediaType = PS["Data.MediaType"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Prelude = PS["Prelude"];                 
+  var Accept = (function () {
+      function Accept(value0) {
+          this.value0 = value0;
+      };
+      Accept.create = function (value0) {
+          return new Accept(value0);
+      };
+      return Accept;
+  })();
+  var ContentType = (function () {
+      function ContentType(value0) {
+          this.value0 = value0;
+      };
+      ContentType.create = function (value0) {
+          return new ContentType(value0);
+      };
+      return ContentType;
+  })();
+  var RequestHeader = (function () {
+      function RequestHeader(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      RequestHeader.create = function (value0) {
+          return function (value1) {
+              return new RequestHeader(value0, value1);
+          };
+      };
+      return RequestHeader;
+  })();
+  var requestHeaderValue = function (v) {
+      if (v instanceof Accept) {
+          return Data_Newtype.unwrap(Data_MediaType.newtypeMediaType)(v.value0);
+      };
+      if (v instanceof ContentType) {
+          return Data_Newtype.unwrap(Data_MediaType.newtypeMediaType)(v.value0);
+      };
+      if (v instanceof RequestHeader) {
+          return v.value1;
+      };
+      throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 29, column 1 - line 29, column 46: " + [ v.constructor.name ]);
+  };
+  var requestHeaderName = function (v) {
+      if (v instanceof Accept) {
+          return "Accept";
+      };
+      if (v instanceof ContentType) {
+          return "Content-Type";
+      };
+      if (v instanceof RequestHeader) {
+          return v.value0;
+      };
+      throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 24, column 1 - line 24, column 45: " + [ v.constructor.name ]);
+  };
+  exports["Accept"] = Accept;
+  exports["ContentType"] = ContentType;
+  exports["RequestHeader"] = RequestHeader;
+  exports["requestHeaderName"] = requestHeaderName;
+  exports["requestHeaderValue"] = requestHeaderValue;
+})(PS["Network.HTTP.RequestHeader"] = PS["Network.HTTP.RequestHeader"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Data_Eq = PS["Data.Eq"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Prelude = PS["Prelude"];                 
+  var ResponseHeader = (function () {
+      function ResponseHeader(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      ResponseHeader.create = function (value0) {
+          return function (value1) {
+              return new ResponseHeader(value0, value1);
+          };
+      };
+      return ResponseHeader;
+  })();
+  var responseHeader = function (field) {
+      return function (value) {
+          return new ResponseHeader(field, value);
+      };
+  };
+  exports["responseHeader"] = responseHeader;
+})(PS["Network.HTTP.ResponseHeader"] = PS["Network.HTTP.ResponseHeader"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Network.HTTP.Affjax"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
+  var Control_Monad_Except = PS["Control.Monad.Except"];
+  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
+  var Control_Parallel = PS["Control.Parallel"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
+  var Data_Argonaut_Parser = PS["Data.Argonaut.Parser"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_FormURLEncoded = PS["Data.FormURLEncoded"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HTTP_Method = PS["Data.HTTP.Method"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Identity = PS["Data.Identity"];
+  var Data_Int = PS["Data.Int"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Time_Duration = PS["Data.Time.Duration"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Aff_Compat = PS["Effect.Aff.Compat"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Effect_Ref = PS["Effect.Ref"];
+  var Foreign = PS["Foreign"];
+  var $$Math = PS["Math"];
+  var Network_HTTP_Affjax_Request = PS["Network.HTTP.Affjax.Request"];
+  var Network_HTTP_Affjax_Response = PS["Network.HTTP.Affjax.Response"];
+  var Network_HTTP_RequestHeader = PS["Network.HTTP.RequestHeader"];
+  var Network_HTTP_ResponseHeader = PS["Network.HTTP.ResponseHeader"];
+  var Network_HTTP_StatusCode = PS["Network.HTTP.StatusCode"];
+  var Prelude = PS["Prelude"];
+  var defaultRequest = {
+      method: new Data_Either.Left(Data_HTTP_Method.GET.value),
+      url: "/",
+      headers: [  ],
+      content: Data_Maybe.Nothing.value,
+      username: Data_Maybe.Nothing.value,
+      password: Data_Maybe.Nothing.value,
+      withCredentials: false
+  };
+  var affjax = function (rt) {
+      return function (req) {
+          var parseJSON = function (v) {
+              if (v === "") {
+                  return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Argonaut_Core.jsonEmptyObject);
+              };
+              return Data_Either.either(function ($58) {
+                  return Foreign.fail(Foreign.ForeignError.create($58));
+              })(Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity)))(Data_Argonaut_Parser.jsonParser(v));
+          };
+          var fromResponse$prime = (function () {
+              if (rt instanceof Network_HTTP_Affjax_Response["ArrayBuffer"]) {
+                  return Foreign.unsafeReadTagged("ArrayBuffer");
+              };
+              if (rt instanceof Network_HTTP_Affjax_Response.Blob) {
+                  return Foreign.unsafeReadTagged("Blob");
+              };
+              if (rt instanceof Network_HTTP_Affjax_Response.Document) {
+                  return Foreign.unsafeReadTagged("Document");
+              };
+              if (rt instanceof Network_HTTP_Affjax_Response.Json) {
+                  return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(function ($59) {
+                      return rt.value0(parseJSON($59));
+                  })(Foreign.unsafeReadTagged("String"));
+              };
+              if (rt instanceof Network_HTTP_Affjax_Response["String"]) {
+                  return Foreign.unsafeReadTagged("String");
+              };
+              if (rt instanceof Network_HTTP_Affjax_Response.Ignore) {
+                  return Data_Function["const"](rt.value0(Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity))(Data_Unit.unit)));
+              };
+              throw new Error("Failed pattern match at Network.HTTP.Affjax line 261, column 19 - line 267, column 51: " + [ rt.constructor.name ]);
+          })();
+          var extractContent = function (v) {
+              if (v instanceof Network_HTTP_Affjax_Request.ArrayView) {
+                  return v.value0(Foreign.unsafeToForeign);
+              };
+              if (v instanceof Network_HTTP_Affjax_Request.Blob) {
+                  return Foreign.unsafeToForeign(v.value0);
+              };
+              if (v instanceof Network_HTTP_Affjax_Request.Document) {
+                  return Foreign.unsafeToForeign(v.value0);
+              };
+              if (v instanceof Network_HTTP_Affjax_Request["String"]) {
+                  return Foreign.unsafeToForeign(v.value0);
+              };
+              if (v instanceof Network_HTTP_Affjax_Request.FormData) {
+                  return Foreign.unsafeToForeign(v.value0);
+              };
+              if (v instanceof Network_HTTP_Affjax_Request.FormURLEncoded) {
+                  return Foreign.unsafeToForeign(Data_FormURLEncoded.encode(v.value0));
+              };
+              if (v instanceof Network_HTTP_Affjax_Request.Json) {
+                  return Foreign.unsafeToForeign(Data_Argonaut_Core.stringify(v.value0));
+              };
+              throw new Error("Failed pattern match at Network.HTTP.Affjax line 235, column 20 - line 242, column 53: " + [ v.constructor.name ]);
+          };
+          var addHeader = function (mh) {
+              return function (hs) {
+                  if (mh instanceof Data_Maybe.Just && !Data_Foldable.any(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean)(Data_Function.on(Data_Eq.eq(Data_Eq.eqString))(Network_HTTP_RequestHeader.requestHeaderName)(mh.value0))(hs)) {
+                      return Data_Array.snoc(hs)(mh.value0);
+                  };
+                  return hs;
+              };
+          };
+          var headers = function (reqContent) {
+              return addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_RequestHeader.ContentType.create)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Network_HTTP_Affjax_Request.toMediaType)(reqContent)))(addHeader(Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_RequestHeader.Accept.create)(Network_HTTP_Affjax_Response.toMediaType(rt)))(req.headers));
+          };
+          var req$prime = {
+              method: Data_HTTP_Method.print(req.method),
+              url: req.url,
+              headers: Data_Functor.map(Data_Functor.functorArray)(function (h) {
+                  return {
+                      field: Network_HTTP_RequestHeader.requestHeaderName(h),
+                      value: Network_HTTP_RequestHeader.requestHeaderValue(h)
+                  };
+              })(headers(req.content)),
+              content: Data_Nullable.toNullable(Data_Functor.map(Data_Maybe.functorMaybe)(extractContent)(req.content)),
+              responseType: Network_HTTP_Affjax_Response.toResponseType(rt),
+              username: Data_Nullable.toNullable(req.username),
+              password: Data_Nullable.toNullable(req.password),
+              withCredentials: req.withCredentials
+          };
+          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Aff_Compat.fromEffectFnAff($foreign._ajax(Network_HTTP_ResponseHeader.responseHeader, req$prime)))(function (v) {
+              var v1 = Control_Monad_Except.runExcept(fromResponse$prime(v.response));
+              if (v1 instanceof Data_Either.Left) {
+                  return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error(Data_Foldable.intercalate(Data_List_Types.foldableNonEmptyList)(Data_Monoid.monoidString)("\x0a")(Data_Functor.map(Data_List_Types.functorNonEmptyList)(Foreign.renderForeignError)(v1.value0))));
+              };
+              if (v1 instanceof Data_Either.Right) {
+                  return Control_Applicative.pure(Effect_Aff.applicativeAff)({
+                      response: v1.value0,
+                      headers: v.headers,
+                      status: v.status,
+                      statusText: v.statusText
+                  });
+              };
+              throw new Error("Failed pattern match at Network.HTTP.Affjax line 217, column 3 - line 219, column 49: " + [ v1.constructor.name ]);
+          });
+      };
+  };
+  exports["defaultRequest"] = defaultRequest;
+  exports["affjax"] = affjax;
+})(PS["Network.HTTP.Affjax"] = PS["Network.HTTP.Affjax"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Argonaut = PS["Data.Argonaut"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Either = PS["Data.Either"];
+  var Data_FormURLEncoded = PS["Data.FormURLEncoded"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HTTP_Method = PS["Data.HTTP.Method"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_MediaType_Common = PS["Data.MediaType.Common"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Class = PS["Effect.Class"];
+  var Globals = PS["Globals"];
+  var Model = PS["Model"];
+  var Network_HTTP_Affjax = PS["Network.HTTP.Affjax"];
+  var Network_HTTP_Affjax_Request = PS["Network.HTTP.Affjax.Request"];
+  var Network_HTTP_Affjax_Response = PS["Network.HTTP.Affjax.Response"];
+  var Network_HTTP_RequestHeader = PS["Network.HTTP.RequestHeader"];
+  var Prelude = PS["Prelude"];
+  var Simple_JSON = PS["Simple.JSON"];
+  var Web_Event_Event = PS["Web.Event.Event"];
+  var Web_HTML = PS["Web.HTML"];
+  var Web_HTML_Location = PS["Web.HTML.Location"];
+  var Web_HTML_Window = PS["Web.HTML.Window"];                 
+  var Star = (function () {
+      function Star() {
+
+      };
+      Star.value = new Star();
+      return Star;
+  })();
+  var UnStar = (function () {
+      function UnStar() {
+
+      };
+      UnStar.value = new UnStar();
+      return UnStar;
+  })();
+  var showStar = new Data_Show.Show(function (v) {
+      if (v instanceof Star) {
+          return "star";
+      };
+      if (v instanceof UnStar) {
+          return "unstar";
+      };
+      throw new Error("Failed pattern match at App line 31, column 1 - line 31, column 37: " + [ v.constructor.name ]);
+  });
+  var fetchUrl = function (method) {
+      return function (url) {
+          return function (headers) {
+              return function (content) {
+                  return function (rt) {
+                      var app = Globals["app'"](Data_Unit.unit);
+                      return Network_HTTP_Affjax.affjax(rt)({
+                          method: new Data_Either.Left(method),
+                          url: url,
+                          headers: Data_Array.cons(new Network_HTTP_RequestHeader.RequestHeader(app.csrfHeaderName, app.csrfToken))(headers),
+                          content: content,
+                          username: Network_HTTP_Affjax.defaultRequest.username,
+                          password: Network_HTTP_Affjax.defaultRequest.password,
+                          withCredentials: Network_HTTP_Affjax.defaultRequest.withCredentials
+                      });
+                  };
+              };
+          };
+      };
+  };
+  var logout = function (u) {
+      var app = Globals["app'"](u);
+      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor["void"](Effect_Aff.functorAff)(fetchUrl(Data_HTTP_Method.POST.value)(app.authRlogoutR)([  ])(Data_Maybe.Nothing.value)(Network_HTTP_Affjax_Response.ignore)))(function () {
+          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Control_Bind.bind(Effect.bindEffect)(Control_Bind.bind(Effect.bindEffect)(Web_HTML.window)(Web_HTML_Window.location))(Web_HTML_Location.reload));
+      });
+  };
+  var logoutE = function (e) {
+      return Control_Bind.bindFlipped(Effect.bindEffect)(function ($4) {
+          return Data_Functor["void"](Effect.functorEffect)(Effect_Aff.launchAff(logout($4)));
+      })(Web_Event_Event.preventDefault(e));
+  };
+  var fetchPath = function (method) {
+      return function (path) {
+          return function (headers) {
+              return function (content) {
+                  return function (rt) {
+                      return fetchUrl(method)((Globals["app'"](Data_Unit.unit)).homeR + path)(headers)(content)(rt);
+                  };
+              };
+          };
+      };
+  };
+  var fetchUrlEnc = function (method) {
+      return function (path) {
+          return function (content) {
+              return function (rt) {
+                  return fetchPath(method)(path)([ new Network_HTTP_RequestHeader.ContentType(Data_MediaType_Common.applicationFormURLEncoded) ])(Data_Functor.map(Data_Maybe.functorMaybe)(Network_HTTP_Affjax_Request.FormURLEncoded.create)(content))(rt);
+              };
+          };
+      };
+  };
+  var markRead = function (bid) {
+      var path = "bm/" + (Data_Show.show(Data_Show.showInt)(bid) + "/read");
+      return fetchUrlEnc(Data_HTTP_Method.POST.value)(path)(Data_Maybe.Nothing.value)(Network_HTTP_Affjax_Response.ignore);
+  };
+  var toggleStar = function (bid) {
+      return function (action) {
+          var path = "bm/" + (Data_Show.show(Data_Show.showInt)(bid) + ("/" + Data_Show.show(showStar)(action)));
+          return Data_Functor["void"](Effect_Aff.functorAff)(fetchUrlEnc(Data_HTTP_Method.POST.value)(path)(Data_Maybe.Nothing.value)(Network_HTTP_Affjax_Response.ignore));
+      };
+  };
+  var fetchJson = function (dictWriteForeign) {
+      return function (method) {
+          return function (path) {
+              return function (content) {
+                  return function (rt) {
+                      return fetchPath(method)(path)([ new Network_HTTP_RequestHeader.ContentType(Data_MediaType_Common.applicationJSON) ])(Data_Functor.map(Data_Maybe.functorMaybe)(function ($5) {
+                          return Network_HTTP_Affjax_Request.string(Simple_JSON.writeJSON(dictWriteForeign)($5));
+                      })(content))(rt);
+                  };
+              };
+          };
+      };
+  };
+  var editNote = function (bm) {
+      return fetchJson(Model.note_wfI)(Data_HTTP_Method.POST.value)("api/note/add")(new Data_Maybe.Just(bm))(Network_HTTP_Affjax_Response.json);
+  };
+  var editBookmark = function (bm) {
+      return fetchJson(Model.bookmark_wfI)(Data_HTTP_Method.POST.value)("api/add")(new Data_Maybe.Just(bm))(Network_HTTP_Affjax_Response.ignore);
+  };
+  var destroyNote = function (nid) {
+      return fetchUrlEnc(Data_HTTP_Method.DELETE.value)("api/note/" + Data_Show.show(Data_Show.showInt)(nid))(Data_Maybe.Nothing.value)(Network_HTTP_Affjax_Response.ignore);
+  };
+  var destroy = function (bid) {
+      return fetchUrlEnc(Data_HTTP_Method.DELETE.value)("bm/" + Data_Show.show(Data_Show.showInt)(bid))(Data_Maybe.Nothing.value)(Network_HTTP_Affjax_Response.ignore);
+  };
+  exports["Star"] = Star;
+  exports["UnStar"] = UnStar;
+  exports["toggleStar"] = toggleStar;
+  exports["destroy"] = destroy;
+  exports["markRead"] = markRead;
+  exports["editBookmark"] = editBookmark;
+  exports["editNote"] = editNote;
+  exports["destroyNote"] = destroyNote;
+  exports["logoutE"] = logoutE;
+  exports["logout"] = logout;
+  exports["fetchJson"] = fetchJson;
+  exports["fetchUrlEnc"] = fetchUrlEnc;
+  exports["fetchPath"] = fetchPath;
+  exports["fetchUrl"] = fetchUrl;
+  exports["showStar"] = showStar;
+})(PS["App"] = PS["App"] || {});
+(function(exports) {
+    "use strict";
+  var ButtonButton = (function () {
+      function ButtonButton() {
+
+      };
+      ButtonButton.value = new ButtonButton();
+      return ButtonButton;
+  })();
+  var ButtonSubmit = (function () {
+      function ButtonSubmit() {
+
+      };
+      ButtonSubmit.value = new ButtonSubmit();
+      return ButtonSubmit;
+  })();
+  var ButtonReset = (function () {
+      function ButtonReset() {
+
+      };
+      ButtonReset.value = new ButtonReset();
+      return ButtonReset;
+  })();
+  var renderButtonType = function (v) {
+      if (v instanceof ButtonButton) {
+          return "button";
+      };
+      if (v instanceof ButtonSubmit) {
+          return "submit";
+      };
+      if (v instanceof ButtonReset) {
+          return "reset";
+      };
+      throw new Error("Failed pattern match at DOM.HTML.Indexed.ButtonType line 9, column 20 - line 12, column 18: " + [ v.constructor.name ]);
+  };
+  exports["ButtonButton"] = ButtonButton;
+  exports["ButtonSubmit"] = ButtonSubmit;
+  exports["ButtonReset"] = ButtonReset;
+  exports["renderButtonType"] = renderButtonType;
+})(PS["DOM.HTML.Indexed.ButtonType"] = PS["DOM.HTML.Indexed.ButtonType"] || {});
+(function(exports) {
+    "use strict";
+  var InputButton = (function () {
+      function InputButton() {
+
+      };
+      InputButton.value = new InputButton();
+      return InputButton;
+  })();
+  var InputCheckbox = (function () {
+      function InputCheckbox() {
+
+      };
+      InputCheckbox.value = new InputCheckbox();
+      return InputCheckbox;
+  })();
+  var InputColor = (function () {
+      function InputColor() {
+
+      };
+      InputColor.value = new InputColor();
+      return InputColor;
+  })();
+  var InputDate = (function () {
+      function InputDate() {
+
+      };
+      InputDate.value = new InputDate();
+      return InputDate;
+  })();
+  var InputDatetimeLocal = (function () {
+      function InputDatetimeLocal() {
+
+      };
+      InputDatetimeLocal.value = new InputDatetimeLocal();
+      return InputDatetimeLocal;
+  })();
+  var InputEmail = (function () {
+      function InputEmail() {
+
+      };
+      InputEmail.value = new InputEmail();
+      return InputEmail;
+  })();
+  var InputFile = (function () {
+      function InputFile() {
+
+      };
+      InputFile.value = new InputFile();
+      return InputFile;
+  })();
+  var InputHidden = (function () {
+      function InputHidden() {
+
+      };
+      InputHidden.value = new InputHidden();
+      return InputHidden;
+  })();
+  var InputImage = (function () {
+      function InputImage() {
+
+      };
+      InputImage.value = new InputImage();
+      return InputImage;
+  })();
+  var InputMonth = (function () {
+      function InputMonth() {
+
+      };
+      InputMonth.value = new InputMonth();
+      return InputMonth;
+  })();
+  var InputNumber = (function () {
+      function InputNumber() {
+
+      };
+      InputNumber.value = new InputNumber();
+      return InputNumber;
+  })();
+  var InputPassword = (function () {
+      function InputPassword() {
+
+      };
+      InputPassword.value = new InputPassword();
+      return InputPassword;
+  })();
+  var InputRadio = (function () {
+      function InputRadio() {
+
+      };
+      InputRadio.value = new InputRadio();
+      return InputRadio;
+  })();
+  var InputRange = (function () {
+      function InputRange() {
+
+      };
+      InputRange.value = new InputRange();
+      return InputRange;
+  })();
+  var InputReset = (function () {
+      function InputReset() {
+
+      };
+      InputReset.value = new InputReset();
+      return InputReset;
+  })();
+  var InputSearch = (function () {
+      function InputSearch() {
+
+      };
+      InputSearch.value = new InputSearch();
+      return InputSearch;
+  })();
+  var InputSubmit = (function () {
+      function InputSubmit() {
+
+      };
+      InputSubmit.value = new InputSubmit();
+      return InputSubmit;
+  })();
+  var InputTel = (function () {
+      function InputTel() {
+
+      };
+      InputTel.value = new InputTel();
+      return InputTel;
+  })();
+  var InputText = (function () {
+      function InputText() {
+
+      };
+      InputText.value = new InputText();
+      return InputText;
+  })();
+  var InputTime = (function () {
+      function InputTime() {
+
+      };
+      InputTime.value = new InputTime();
+      return InputTime;
+  })();
+  var InputUrl = (function () {
+      function InputUrl() {
+
+      };
+      InputUrl.value = new InputUrl();
+      return InputUrl;
+  })();
+  var InputWeek = (function () {
+      function InputWeek() {
+
+      };
+      InputWeek.value = new InputWeek();
+      return InputWeek;
+  })();
+  var renderInputType = function (v) {
+      if (v instanceof InputButton) {
+          return "button";
+      };
+      if (v instanceof InputCheckbox) {
+          return "checkbox";
+      };
+      if (v instanceof InputColor) {
+          return "color";
+      };
+      if (v instanceof InputDate) {
+          return "date";
+      };
+      if (v instanceof InputDatetimeLocal) {
+          return "datetime-local";
+      };
+      if (v instanceof InputEmail) {
+          return "email";
+      };
+      if (v instanceof InputFile) {
+          return "file";
+      };
+      if (v instanceof InputHidden) {
+          return "hidden";
+      };
+      if (v instanceof InputImage) {
+          return "image";
+      };
+      if (v instanceof InputMonth) {
+          return "month";
+      };
+      if (v instanceof InputNumber) {
+          return "number";
+      };
+      if (v instanceof InputPassword) {
+          return "password";
+      };
+      if (v instanceof InputRadio) {
+          return "radio";
+      };
+      if (v instanceof InputRange) {
+          return "range";
+      };
+      if (v instanceof InputReset) {
+          return "reset";
+      };
+      if (v instanceof InputSearch) {
+          return "search";
+      };
+      if (v instanceof InputSubmit) {
+          return "submit";
+      };
+      if (v instanceof InputTel) {
+          return "tel";
+      };
+      if (v instanceof InputText) {
+          return "text";
+      };
+      if (v instanceof InputTime) {
+          return "time";
+      };
+      if (v instanceof InputUrl) {
+          return "url";
+      };
+      if (v instanceof InputWeek) {
+          return "week";
+      };
+      throw new Error("Failed pattern match at DOM.HTML.Indexed.InputType line 28, column 19 - line 50, column 16: " + [ v.constructor.name ]);
+  };
+  exports["InputButton"] = InputButton;
+  exports["InputCheckbox"] = InputCheckbox;
+  exports["InputColor"] = InputColor;
+  exports["InputDate"] = InputDate;
+  exports["InputDatetimeLocal"] = InputDatetimeLocal;
+  exports["InputEmail"] = InputEmail;
+  exports["InputFile"] = InputFile;
+  exports["InputHidden"] = InputHidden;
+  exports["InputImage"] = InputImage;
+  exports["InputMonth"] = InputMonth;
+  exports["InputNumber"] = InputNumber;
+  exports["InputPassword"] = InputPassword;
+  exports["InputRadio"] = InputRadio;
+  exports["InputRange"] = InputRange;
+  exports["InputReset"] = InputReset;
+  exports["InputSearch"] = InputSearch;
+  exports["InputSubmit"] = InputSubmit;
+  exports["InputTel"] = InputTel;
+  exports["InputText"] = InputText;
+  exports["InputTime"] = InputTime;
+  exports["InputUrl"] = InputUrl;
+  exports["InputWeek"] = InputWeek;
+  exports["renderInputType"] = renderInputType;
+})(PS["DOM.HTML.Indexed.InputType"] = PS["DOM.HTML.Indexed.InputType"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad_Cont_Trans = PS["Control.Monad.Cont.Trans"];
+  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
+  var Control_Monad_List_Trans = PS["Control.Monad.List.Trans"];
+  var Control_Monad_Maybe_Trans = PS["Control.Monad.Maybe.Trans"];
+  var Control_Monad_RWS_Trans = PS["Control.Monad.RWS.Trans"];
+  var Control_Monad_Reader_Trans = PS["Control.Monad.Reader.Trans"];
+  var Control_Monad_State_Trans = PS["Control.Monad.State.Trans"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Monad_Writer_Trans = PS["Control.Monad.Writer.Trans"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Class = PS["Effect.Class"];
+  var Prelude = PS["Prelude"];                 
+  var MonadAff = function (MonadEffect0, liftAff) {
+      this.MonadEffect0 = MonadEffect0;
+      this.liftAff = liftAff;
+  };
+  var monadAffAff = new MonadAff(function () {
+      return Effect_Aff.monadEffectAff;
+  }, Control_Category.identity(Control_Category.categoryFn));
+  var liftAff = function (dict) {
+      return dict.liftAff;
+  };
+  exports["liftAff"] = liftAff;
+  exports["MonadAff"] = MonadAff;
+  exports["monadAffAff"] = monadAffAff;
+})(PS["Effect.Aff.Class"] = PS["Effect.Aff.Class"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Ord = PS["Data.Ord"];
+  var Prelude = PS["Prelude"];                 
+  var OrdBox = (function () {
+      function OrdBox(value0, value1, value2) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+      };
+      OrdBox.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return new OrdBox(value0, value1, value2);
+              };
+          };
+      };
+      return OrdBox;
+  })();
+  var unOrdBox = function (v) {
+      return v.value2;
+  };
+  var mkOrdBox = function (dictOrd) {
+      return OrdBox.create(Data_Eq.eq(dictOrd.Eq0()))(Data_Ord.compare(dictOrd));
+  };
+  var eqOrdBox = new Data_Eq.Eq(function (v) {
+      return function (v1) {
+          return v.value0(v.value2)(v1.value2);
+      };
+  });
+  var ordOrdBox = new Data_Ord.Ord(function () {
+      return eqOrdBox;
+  }, function (v) {
+      return function (v1) {
+          return v.value1(v.value2)(v1.value2);
+      };
+  });
+  exports["mkOrdBox"] = mkOrdBox;
+  exports["unOrdBox"] = unOrdBox;
+  exports["eqOrdBox"] = eqOrdBox;
+  exports["ordOrdBox"] = ordOrdBox;
+})(PS["Halogen.Data.OrdBox"] = PS["Halogen.Data.OrdBox"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var On = (function () {
+      function On() {
+
+      };
+      On.value = new On();
+      return On;
+  })();
+  var Off = (function () {
+      function Off() {
+
+      };
+      Off.value = new Off();
+      return Off;
+  })();
+  var renderOnOff = function (v) {
+      if (v instanceof On) {
+          return "on";
+      };
+      if (v instanceof Off) {
+          return "off";
+      };
+      throw new Error("Failed pattern match at DOM.HTML.Indexed.OnOff line 8, column 15 - line 10, column 10: " + [ v.constructor.name ]);
+  };
+  exports["On"] = On;
+  exports["Off"] = Off;
+  exports["renderOnOff"] = renderOnOff;
+})(PS["DOM.HTML.Indexed.OnOff"] = PS["DOM.HTML.Indexed.OnOff"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Ord = PS["Data.Ord"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM = PS["Web.DOM"];
+  var RefUpdate = (function () {
+      function RefUpdate(value0, value1, value2) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+      };
+      RefUpdate.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return new RefUpdate(value0, value1, value2);
+              };
+          };
+      };
+      return RefUpdate;
+  })();
+  var Query = (function () {
+      function Query(value0) {
+          this.value0 = value0;
+      };
+      Query.create = function (value0) {
+          return new Query(value0);
+      };
+      return Query;
+  })();                             
+  var bifunctorInputF = new Data_Bifunctor.Bifunctor(function (f) {
+      return function (g) {
+          return function (v) {
+              if (v instanceof RefUpdate) {
+                  return new RefUpdate(v.value0, v.value1, f(v.value2));
+              };
+              if (v instanceof Query) {
+                  return new Query(g(v.value0));
+              };
+              throw new Error("Failed pattern match at Halogen.Query.InputF line 21, column 15 - line 23, column 27: " + [ v.constructor.name ]);
+          };
+      };
+  });
+  var functorInputF = new Data_Functor.Functor(Data_Bifunctor.rmap(bifunctorInputF));
+  exports["RefUpdate"] = RefUpdate;
+  exports["Query"] = Query;
+  exports["bifunctorInputF"] = bifunctorInputF;
+  exports["functorInputF"] = functorInputF;
+})(PS["Halogen.Query.InputF"] = PS["Halogen.Query.InputF"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Effect = PS["Effect"];
+  var Effect_Uncurried = PS["Effect.Uncurried"];
+  var Prelude = PS["Prelude"];                 
+  var Step = (function () {
+      function Step(value0, value1, value2) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+      };
+      Step.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return new Step(value0, value1, value2);
+              };
+          };
+      };
+      return Step;
+  })();
+  var step = function (v) {
+      return v.value1;
+  };
+  var halt = function (v) {
+      return v.value2;
+  };
+  var extract = function (v) {
+      return v.value0;
+  };
+  exports["Step"] = Step;
+  exports["extract"] = extract;
+  exports["step"] = step;
+  exports["halt"] = halt;
+})(PS["Halogen.VDom.Machine"] = PS["Halogen.VDom.Machine"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Category = PS["Control.Category"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var ElemSpec = (function () {
+      function ElemSpec(value0, value1, value2) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+      };
+      ElemSpec.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return new ElemSpec(value0, value1, value2);
+              };
+          };
+      };
+      return ElemSpec;
+  })();
+  var Text = (function () {
+      function Text(value0) {
+          this.value0 = value0;
+      };
+      Text.create = function (value0) {
+          return new Text(value0);
+      };
+      return Text;
+  })();
+  var Elem = (function () {
+      function Elem(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Elem.create = function (value0) {
+          return function (value1) {
+              return new Elem(value0, value1);
+          };
+      };
+      return Elem;
+  })();
+  var Keyed = (function () {
+      function Keyed(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Keyed.create = function (value0) {
+          return function (value1) {
+              return new Keyed(value0, value1);
+          };
+      };
+      return Keyed;
+  })();
+  var Widget = (function () {
+      function Widget(value0) {
+          this.value0 = value0;
+      };
+      Widget.create = function (value0) {
+          return new Widget(value0);
+      };
+      return Widget;
+  })();
+  var Grafted = (function () {
+      function Grafted(value0) {
+          this.value0 = value0;
+      };
+      Grafted.create = function (value0) {
+          return new Grafted(value0);
+      };
+      return Grafted;
+  })();
+  var Graft = (function () {
+      function Graft(value0, value1, value2) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+      };
+      Graft.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return new Graft(value0, value1, value2);
+              };
+          };
+      };
+      return Graft;
+  })();
+  var unGraft = function (f) {
+      return function ($90) {
+          return f($90);
+      };
+  };           
+  var graft = Unsafe_Coerce.unsafeCoerce;
+  var functorElemSpec = new Data_Functor.Functor(function (f) {
+      return function (m) {
+          return new ElemSpec(m.value0, m.value1, f(m.value2));
+      };
+  });
+  var bifunctorGraft = new Data_Bifunctor.Bifunctor(function (f) {
+      return function (g) {
+          return unGraft(function (v) {
+              return graft(new Graft(function ($92) {
+                  return f(v.value0($92));
+              }, function ($93) {
+                  return g(v.value1($93));
+              }, v.value2));
+          });
+      };
+  });
+  var bifunctorVDom = new Data_Bifunctor.Bifunctor(function (f) {
+      return function (g) {
+          return function (v) {
+              if (v instanceof Text) {
+                  return new Text(v.value0);
+              };
+              if (v instanceof Grafted) {
+                  return new Grafted(Data_Bifunctor.bimap(bifunctorGraft)(f)(g)(v.value0));
+              };
+              return new Grafted(graft(new Graft(f, g, v)));
+          };
+      };
+  });
+  var runGraft = unGraft(function (v) {
+      var go = function (v2) {
+          if (v2 instanceof Text) {
+              return new Text(v2.value0);
+          };
+          if (v2 instanceof Elem) {
+              return new Elem(Data_Functor.map(functorElemSpec)(v.value0)(v2.value0), Data_Functor.map(Data_Functor.functorArray)(go)(v2.value1));
+          };
+          if (v2 instanceof Keyed) {
+              return new Keyed(Data_Functor.map(functorElemSpec)(v.value0)(v2.value0), Data_Functor.map(Data_Functor.functorArray)(Data_Functor.map(Data_Tuple.functorTuple)(go))(v2.value1));
+          };
+          if (v2 instanceof Widget) {
+              return new Widget(v.value1(v2.value0));
+          };
+          if (v2 instanceof Grafted) {
+              return new Grafted(Data_Bifunctor.bimap(bifunctorGraft)(v.value0)(v.value1)(v2.value0));
+          };
+          throw new Error("Failed pattern match at Halogen.VDom.Types line 74, column 7 - line 74, column 27: " + [ v2.constructor.name ]);
+      };
+      return go(v.value2);
+  });
+  exports["Text"] = Text;
+  exports["Elem"] = Elem;
+  exports["Keyed"] = Keyed;
+  exports["Widget"] = Widget;
+  exports["Grafted"] = Grafted;
+  exports["Graft"] = Graft;
+  exports["graft"] = graft;
+  exports["unGraft"] = unGraft;
+  exports["runGraft"] = runGraft;
+  exports["ElemSpec"] = ElemSpec;
+  exports["bifunctorVDom"] = bifunctorVDom;
+  exports["bifunctorGraft"] = bifunctorGraft;
+  exports["functorElemSpec"] = functorElemSpec;
+})(PS["Halogen.VDom.Types"] = PS["Halogen.VDom.Types"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.unsafeGetAny = function (key, obj) {
+    return obj[key];
+  };
+
+  exports.unsafeHasAny = function (key, obj) {
+    return obj.hasOwnProperty(key);
+  };
+
+  exports.unsafeSetAny = function (key, val, obj) {
+      obj[key] = val;
+  };
+
+  exports.forE = function (a, f) {
+      var b = [];
+      for (var i = 0; i < a.length; i++) {
+        b.push(f(i, a[i]));
+      }
+      return b;
+  };
+
+  exports.forInE = function (o, f) {
+    var ks = Object.keys(o);
+    for (var i = 0; i < ks.length; i++) {
+      var k = ks[i];
+      f(k, o[k]);
+    }
+  };
+
+  exports.diffWithIxE = function (a1, a2, f1, f2, f3) {
+    var a3 = [];
+    var l1 = a1.length;
+    var l2 = a2.length;
+    var i  = 0;
+    while (1) {
+      if (i < l1) {
+        if (i < l2) {
+          a3.push(f1(i, a1[i], a2[i]));
+        } else {
+          f2(i, a1[i]);
+        }
+      } else if (i < l2) {
+        a3.push(f3(i, a2[i]));
+      } else {
+        break;
+      }
+      i++;
+    }
+    return a3;
+  };
+
+  exports.strMapWithIxE = function (as, fk, f) {
+    var o = {};
+    for (var i = 0; i < as.length; i++) {
+      var a = as[i];
+      var k = fk(a);
+      o[k] = f(k, i, a);
+    }
+    return o;
+  };
+
+  exports.diffWithKeyAndIxE = function (o1, as, fk, f1, f2, f3) {
+    var o2 = {};
+    for (var i = 0; i < as.length; i++) {
+      var a = as[i];
+      var k = fk(a);
+      if (o1.hasOwnProperty(k)) {
+        o2[k] = f1(k, i, o1[k], a);
+      } else {
+        o2[k] = f3(k, i, a);
+      }
+    }
+    for (var k in o1) {
+      if (k in o2) {
+        continue;
+      }
+      f2(k, o1[k]);
+    }
+    return o2;
+  };
+
+  exports.refEq = function (a, b) {
+    return a === b;
+  };
+
+  exports.createTextNode = function (s, doc) {
+    return doc.createTextNode(s);
+  };
+
+  exports.setTextContent = function (s, n) {
+    n.textContent = s;
+  };
+
+  exports.createElement = function (ns, name, doc) {
+    if (ns != null) {
+      return doc.createElementNS(ns, name);
+    } else {
+      return doc.createElement(name)
+    }
+  };
+
+  exports.insertChildIx = function (i, a, b) {
+    var n = b.childNodes.item(i) || null;
+    if (n !== a) {
+      b.insertBefore(a, n);
+    }
+  };
+
+  exports.removeChild = function (a, b) {
+    if (b && a.parentNode === b) {
+      b.removeChild(a);
+    }
+  };
+
+  exports.parentNode = function (a) {
+    return a.parentNode;
+  };
+
+  exports.setAttribute = function (ns, attr, val, el) {
+    if (ns != null) {
+      el.setAttributeNS(ns, attr, val);
+    } else {
+      el.setAttribute(attr, val);
+    }
+  };
+
+  exports.removeAttribute = function (ns, attr, el) {
+    if (ns != null) {
+      el.removeAttributeNS(ns, attr);
+    } else {
+      el.removeAttribute(attr);
+    }
+  };
+
+  exports.addEventListener = function (ev, listener, el) {
+    el.addEventListener(ev, listener, false);
+  };
+
+  exports.removeEventListener = function (ev, listener, el) {
+    el.removeEventListener(ev, listener, false);
+  };
+
+  exports.jsUndefined = void 0;
+})(PS["Halogen.VDom.Util"] = PS["Halogen.VDom.Util"] || {});
+(function(exports) {
+    "use strict";
+
+  var getEffProp = function (name) {
+    return function (node) {
+      return function () {
+        return node[name];
+      };
+    };
+  };                                                   
+
+  exports._parentNode = getEffProp("parentNode");          
+
+  exports._nextSibling = getEffProp("nextSibling");
+
+  exports.insertBefore = function (node1) {
+    return function (node2) {
+      return function (parent) {
+        return function () {
+          return parent.insertBefore(node1, node2);
+        };
+      };
+    };
+  };
+
+  exports.appendChild = function (node) {
+    return function (parent) {
+      return function () {
+        return parent.appendChild(node);
+      };
+    };
+  };
+
+  exports.removeChild = function (node) {
+    return function (parent) {
+      return function () {
+        return parent.removeChild(node);
+      };
+    };
+  };
+})(PS["Web.DOM.Node"] = PS["Web.DOM.Node"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Web.DOM.Node"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Enum = PS["Data.Enum"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_DOM_Document = PS["Web.DOM.Document"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var Web_DOM_Internal_Types = PS["Web.DOM.Internal.Types"];
+  var Web_DOM_NodeType = PS["Web.DOM.NodeType"];
+  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
+  var Web_Internal_FFI = PS["Web.Internal.FFI"];
+  var parentNode = function ($2) {
+      return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign._parentNode($2));
+  };
+  var nextSibling = function ($6) {
+      return Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe)($foreign._nextSibling($6));
+  };
+  exports["parentNode"] = parentNode;
+  exports["nextSibling"] = nextSibling;
+  exports["insertBefore"] = $foreign.insertBefore;
+  exports["appendChild"] = $foreign.appendChild;
+  exports["removeChild"] = $foreign.removeChild;
+})(PS["Web.DOM.Node"] = PS["Web.DOM.Node"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Halogen.VDom.Util"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Effect_Uncurried = PS["Effect.Uncurried"];
+  var Foreign_Object = PS["Foreign.Object"];
+  var Foreign_Object_ST = PS["Foreign.Object.ST"];
+  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_DOM_Document = PS["Web.DOM.Document"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var Web_DOM_Node = PS["Web.DOM.Node"];
+  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];                 
+  var unsafeLookup = $foreign.unsafeGetAny;
+  var unsafeFreeze = Unsafe_Coerce.unsafeCoerce;
+  var pokeMutMap = $foreign.unsafeSetAny;
+  var newMutMap = Foreign_Object_ST["new"];
+  var effectUnit = Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
+  exports["effectUnit"] = effectUnit;
+  exports["newMutMap"] = newMutMap;
+  exports["pokeMutMap"] = pokeMutMap;
+  exports["unsafeFreeze"] = unsafeFreeze;
+  exports["unsafeLookup"] = unsafeLookup;
+  exports["unsafeGetAny"] = $foreign.unsafeGetAny;
+  exports["unsafeHasAny"] = $foreign.unsafeHasAny;
+  exports["unsafeSetAny"] = $foreign.unsafeSetAny;
+  exports["forE"] = $foreign.forE;
+  exports["forInE"] = $foreign.forInE;
+  exports["diffWithIxE"] = $foreign.diffWithIxE;
+  exports["diffWithKeyAndIxE"] = $foreign.diffWithKeyAndIxE;
+  exports["strMapWithIxE"] = $foreign.strMapWithIxE;
+  exports["refEq"] = $foreign.refEq;
+  exports["createTextNode"] = $foreign.createTextNode;
+  exports["setTextContent"] = $foreign.setTextContent;
+  exports["createElement"] = $foreign.createElement;
+  exports["insertChildIx"] = $foreign.insertChildIx;
+  exports["removeChild"] = $foreign.removeChild;
+  exports["parentNode"] = $foreign.parentNode;
+  exports["setAttribute"] = $foreign.setAttribute;
+  exports["removeAttribute"] = $foreign.removeAttribute;
+  exports["addEventListener"] = $foreign.addEventListener;
+  exports["removeEventListener"] = $foreign.removeEventListener;
+  exports["jsUndefined"] = $foreign.jsUndefined;
+})(PS["Halogen.VDom.Util"] = PS["Halogen.VDom.Util"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Effect_Ref = PS["Effect.Ref"];
+  var Effect_Uncurried = PS["Effect.Uncurried"];
+  var Foreign = PS["Foreign"];
+  var Foreign_Object = PS["Foreign.Object"];
+  var Halogen_VDom = PS["Halogen.VDom"];
+  var Halogen_VDom_Machine = PS["Halogen.VDom.Machine"];
+  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
+  var Halogen_VDom_Util = PS["Halogen.VDom.Util"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var Web_Event_Event = PS["Web.Event.Event"];
+  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];                 
+  var Created = (function () {
+      function Created(value0) {
+          this.value0 = value0;
+      };
+      Created.create = function (value0) {
+          return new Created(value0);
+      };
+      return Created;
+  })();
+  var Removed = (function () {
+      function Removed(value0) {
+          this.value0 = value0;
+      };
+      Removed.create = function (value0) {
+          return new Removed(value0);
+      };
+      return Removed;
+  })();
+  var Attribute = (function () {
+      function Attribute(value0, value1, value2) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+      };
+      Attribute.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return new Attribute(value0, value1, value2);
+              };
+          };
+      };
+      return Attribute;
+  })();
+  var Property = (function () {
+      function Property(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Property.create = function (value0) {
+          return function (value1) {
+              return new Property(value0, value1);
+          };
+      };
+      return Property;
+  })();
+  var Handler = (function () {
+      function Handler(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Handler.create = function (value0) {
+          return function (value1) {
+              return new Handler(value0, value1);
+          };
+      };
+      return Handler;
+  })();
+  var Ref = (function () {
+      function Ref(value0) {
+          this.value0 = value0;
+      };
+      Ref.create = function (value0) {
+          return new Ref(value0);
+      };
+      return Ref;
+  })();
+  var unsafeGetProperty = Halogen_VDom_Util.unsafeGetAny;
+  var setProperty = Halogen_VDom_Util.unsafeSetAny;
+  var removeProperty = function (key, el) {
+      var v = Foreign.typeOf(Halogen_VDom_Util.unsafeGetAny(key, el));
+      if (v === "string") {
+          return Halogen_VDom_Util.unsafeSetAny(key, "", el);
+      };
+      if (key === "rowSpan") {
+          return Halogen_VDom_Util.unsafeSetAny(key, 1, el);
+      };
+      if (key === "colSpan") {
+          return Halogen_VDom_Util.unsafeSetAny(key, 1, el);
+      };
+      return Halogen_VDom_Util.unsafeSetAny(key, Halogen_VDom_Util.jsUndefined, el);
+  };
+  var propToStrKey = function (v) {
+      if (v instanceof Attribute && v.value0 instanceof Data_Maybe.Just) {
+          return "attr/" + (v.value0.value0 + (":" + v.value1));
+      };
+      if (v instanceof Attribute) {
+          return "attr/:" + v.value1;
+      };
+      if (v instanceof Property) {
+          return "prop/" + v.value0;
+      };
+      if (v instanceof Handler) {
+          return "handler/" + v.value0;
+      };
+      if (v instanceof Ref) {
+          return "ref";
+      };
+      throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 178, column 16 - line 185, column 1: " + [ v.constructor.name ]);
+  };
+  var propFromString = Unsafe_Coerce.unsafeCoerce;
+  var propFromInt = Unsafe_Coerce.unsafeCoerce;
+  var propFromBoolean = Unsafe_Coerce.unsafeCoerce;
+  var functorProp = new Data_Functor.Functor(function (f) {
+      return function (v) {
+          if (v instanceof Handler) {
+              return new Handler(v.value0, Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Maybe.functorMaybe)(f))(v.value1));
+          };
+          if (v instanceof Ref) {
+              return new Ref(Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Maybe.functorMaybe)(f))(v.value0));
+          };
+          return v;
+      };
+  });
+  var buildProp = function (emit) {
+      return function (el) {
+          var removeProp = function (prevEvents) {
+              return function (v, v1) {
+                  if (v1 instanceof Attribute) {
+                      return Halogen_VDom_Util.removeAttribute(Data_Nullable.toNullable(v1.value0), v1.value1, el);
+                  };
+                  if (v1 instanceof Property) {
+                      return removeProperty(v1.value0, el);
+                  };
+                  if (v1 instanceof Handler) {
+                      var handler = Halogen_VDom_Util.unsafeLookup(v1.value0, prevEvents);
+                      return Halogen_VDom_Util.removeEventListener(v1.value0, Data_Tuple.fst(handler), el);
+                  };
+                  if (v1 instanceof Ref) {
+                      return Data_Unit.unit;
+                  };
+                  throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 165, column 5 - line 175, column 18: " + [ v1.constructor.name ]);
+              };
+          };
+          var mbEmit = function (v) {
+              if (v instanceof Data_Maybe.Just) {
+                  return emit(v.value0)();
+              };
+              return Data_Unit.unit;
+          };
+          var done = function (ps) {
+              var v = Foreign_Object.lookup("ref")(ps);
+              if (v instanceof Data_Maybe.Just && v.value0 instanceof Ref) {
+                  return function () {
+                      return mbEmit(v.value0.value0(new Removed(el)));
+                  };
+              };
+              return Halogen_VDom_Util.effectUnit;
+          };
+          var diffProp = function (prevEvents, events) {
+              return function (v, v1, v11, v2) {
+                  if (v11 instanceof Attribute && v2 instanceof Attribute) {
+                      var $61 = v11.value2 === v2.value2;
+                      if ($61) {
+                          return v2;
+                      };
+                      Halogen_VDom_Util.setAttribute(Data_Nullable.toNullable(v2.value0), v2.value1, v2.value2, el);
+                      return v2;
+                  };
+                  if (v11 instanceof Property && v2 instanceof Property) {
+                      var v4 = Halogen_VDom_Util.refEq(v11.value1, v2.value1);
+                      if (v4) {
+                          return v2;
+                      };
+                      if (v2.value0 === "value") {
+                          var elVal = unsafeGetProperty("value", el);
+                          var $70 = Halogen_VDom_Util.refEq(elVal, v2.value1);
+                          if ($70) {
+                              return v2;
+                          };
+                          setProperty(v2.value0, v2.value1, el);
+                          return v2;
+                      };
+                      setProperty(v2.value0, v2.value1, el);
+                      return v2;
+                  };
+                  if (v11 instanceof Handler && v2 instanceof Handler) {
+                      var handler = Halogen_VDom_Util.unsafeLookup(v2.value0, prevEvents);
+                      Effect_Ref.write(v2.value1)(Data_Tuple.snd(handler))();
+                      Halogen_VDom_Util.pokeMutMap(v2.value0, handler, events);
+                      return v2;
+                  };
+                  return v2;
+              };
+          };
+          var applyProp = function (events) {
+              return function (v, v1, v2) {
+                  if (v2 instanceof Attribute) {
+                      Halogen_VDom_Util.setAttribute(Data_Nullable.toNullable(v2.value0), v2.value1, v2.value2, el);
+                      return v2;
+                  };
+                  if (v2 instanceof Property) {
+                      setProperty(v2.value0, v2.value1, el);
+                      return v2;
+                  };
+                  if (v2 instanceof Handler) {
+                      var v3 = Halogen_VDom_Util.unsafeGetAny(v2.value0, events);
+                      if (Halogen_VDom_Util.unsafeHasAny(v2.value0, events)) {
+                          Effect_Ref.write(v2.value1)(Data_Tuple.snd(v3))();
+                          return v2;
+                      };
+                      var v4 = Effect_Ref["new"](v2.value1)();
+                      var v5 = Web_Event_EventTarget.eventListener(function (ev) {
+                          return function __do() {
+                              var v5 = Effect_Ref.read(v4)();
+                              return mbEmit(v5(ev));
+                          };
+                      })();
+                      Halogen_VDom_Util.pokeMutMap(v2.value0, new Data_Tuple.Tuple(v5, v4), events);
+                      Halogen_VDom_Util.addEventListener(v2.value0, v5, el);
+                      return v2;
+                  };
+                  if (v2 instanceof Ref) {
+                      mbEmit(v2.value0(new Created(el)));
+                      return v2;
+                  };
+                  throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 109, column 5 - line 131, column 15: " + [ v2.constructor.name ]);
+              };
+          };
+          var patch = function (prevEvents, ps1) {
+              return function (ps2) {
+                  var v = Halogen_VDom_Util.newMutMap();
+                  var onThis = removeProp(prevEvents);
+                  var onThese = diffProp(prevEvents, v);
+                  var onThat = applyProp(v);
+                  var v1 = Halogen_VDom_Util.diffWithKeyAndIxE(ps1, ps2, propToStrKey, onThese, onThis, onThat);
+                  return new Halogen_VDom_Machine.Step(Data_Unit.unit, patch(Halogen_VDom_Util.unsafeFreeze(v), v1), done(v1));
+              };
+          };
+          var render = function (ps1) {
+              var v = Halogen_VDom_Util.newMutMap();
+              var v1 = Halogen_VDom_Util.strMapWithIxE(ps1, propToStrKey, applyProp(v));
+              return new Halogen_VDom_Machine.Step(Data_Unit.unit, patch(Halogen_VDom_Util.unsafeFreeze(v), v1), done(v1));
+          };
+          return render;
+      };
+  };
+  exports["Attribute"] = Attribute;
+  exports["Property"] = Property;
+  exports["Handler"] = Handler;
+  exports["Ref"] = Ref;
+  exports["Created"] = Created;
+  exports["Removed"] = Removed;
+  exports["propFromString"] = propFromString;
+  exports["propFromBoolean"] = propFromBoolean;
+  exports["propFromInt"] = propFromInt;
+  exports["buildProp"] = buildProp;
+  exports["functorProp"] = functorProp;
+})(PS["Halogen.VDom.DOM.Prop"] = PS["Halogen.VDom.DOM.Prop"] || {});
+(function(exports) {
+    "use strict";
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
+  var DOM_HTML_Indexed_CrossOriginValue = PS["DOM.HTML.Indexed.CrossOriginValue"];
+  var DOM_HTML_Indexed_DirValue = PS["DOM.HTML.Indexed.DirValue"];
+  var DOM_HTML_Indexed_FormMethod = PS["DOM.HTML.Indexed.FormMethod"];
+  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
+  var DOM_HTML_Indexed_KindValue = PS["DOM.HTML.Indexed.KindValue"];
+  var DOM_HTML_Indexed_MenuType = PS["DOM.HTML.Indexed.MenuType"];
+  var DOM_HTML_Indexed_MenuitemType = PS["DOM.HTML.Indexed.MenuitemType"];
+  var DOM_HTML_Indexed_OnOff = PS["DOM.HTML.Indexed.OnOff"];
+  var DOM_HTML_Indexed_OrderedListType = PS["DOM.HTML.Indexed.OrderedListType"];
+  var DOM_HTML_Indexed_PreloadValue = PS["DOM.HTML.Indexed.PreloadValue"];
+  var DOM_HTML_Indexed_ScopeValue = PS["DOM.HTML.Indexed.ScopeValue"];
+  var DOM_HTML_Indexed_StepValue = PS["DOM.HTML.Indexed.StepValue"];
+  var DOM_HTML_Indexed_WrapValue = PS["DOM.HTML.Indexed.WrapValue"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_MediaType = PS["Data.MediaType"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
+  var Halogen_VDom = PS["Halogen.VDom"];
+  var Halogen_VDom_DOM_Prop = PS["Halogen.VDom.DOM.Prop"];
+  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var Web_Event_Event = PS["Web.Event.Event"];
+  var HTML = function (x) {
+      return x;
+  };
+
+  // | A wrapper for strings which are used as CSS classes.
+  var ClassName = function (x) {
+      return x;
+  };
+  var IsProp = function (toPropValue) {
+      this.toPropValue = toPropValue;
+  }; 
+  var toPropValue = function (dict) {
+      return dict.toPropValue;
+  };
+
+  // | Constructs a text node `HTML` value.
+  var text = function ($27) {
+      return HTML(Halogen_VDom_Types.Text.create($27));
+  };
+  var stringIsProp = new IsProp(Halogen_VDom_DOM_Prop.propFromString);
+
+  // | A smart constructor for widget slots in the HTML.
+  var slot = function ($29) {
+      return HTML(Halogen_VDom_Types.Widget.create($29));
+  };
+
+  // | Create a HTML property.
+  var prop = function (dictIsProp) {
+      return function (v) {
+          return function ($32) {
+              return Halogen_VDom_DOM_Prop.Property.create(v)(toPropValue(dictIsProp)($32));
+          };
+      };
+  };                                   
+  var onOffIsProp = new IsProp(function ($35) {
+      return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_OnOff.renderOnOff($35));
+  });      
+  var newtypeClassName = new Data_Newtype.Newtype(function (n) {
+      return n;
+  }, ClassName);
+  var intIsProp = new IsProp(Halogen_VDom_DOM_Prop.propFromInt);
+  var inputTypeIsProp = new IsProp(function ($40) {
+      return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_InputType.renderInputType($40));
+  });
+
+  // | Create an event handler.
+  var handler = Halogen_VDom_DOM_Prop.Handler.create;
+
+  // | A smart constructor for HTML elements.
+  var element = function (ns) {
+      return function (name) {
+          return function (props) {
+              return function (children) {
+                  return new Halogen_VDom_Types.Elem(new Halogen_VDom_Types.ElemSpec(ns, name, props), children);
+              };
+          };
+      };
+  }; 
+  var buttonTypeIsProp = new IsProp(function ($44) {
+      return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_ButtonType.renderButtonType($44));
+  });
+  var booleanIsProp = new IsProp(Halogen_VDom_DOM_Prop.propFromBoolean);
+  var bifunctorHTML = new Data_Bifunctor.Bifunctor(function (f) {
+      return function (g) {
+          return function (v) {
+              return Data_Bifunctor.bimap(Halogen_VDom_Types.bifunctorVDom)(Data_Functor.map(Data_Functor.functorArray)(Data_Functor.map(Halogen_VDom_DOM_Prop.functorProp)(Data_Functor.map(Halogen_Query_InputF.functorInputF)(g))))(f)(v);
+          };
+      };
+  });                                                                            
+
+  // | Create a HTML attribute.
+  var attr = function (ns) {
+      return function (v) {
+          return Halogen_VDom_DOM_Prop.Attribute.create(ns)(v);
+      };
+  };
+  exports["HTML"] = HTML;
+  exports["slot"] = slot;
+  exports["text"] = text;
+  exports["element"] = element;
+  exports["prop"] = prop;
+  exports["attr"] = attr;
+  exports["handler"] = handler;
+  exports["IsProp"] = IsProp;
+  exports["toPropValue"] = toPropValue;
+  exports["ClassName"] = ClassName;
+  exports["bifunctorHTML"] = bifunctorHTML;
+  exports["stringIsProp"] = stringIsProp;
+  exports["intIsProp"] = intIsProp;
+  exports["booleanIsProp"] = booleanIsProp;
+  exports["buttonTypeIsProp"] = buttonTypeIsProp;
+  exports["inputTypeIsProp"] = inputTypeIsProp;
+  exports["onOffIsProp"] = onOffIsProp;
+  exports["newtypeClassName"] = newtypeClassName;
+})(PS["Halogen.HTML.Core"] = PS["Halogen.HTML.Core"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Const = PS["Data.Const"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_List = PS["Data.List"];
+  var Data_List_NonEmpty = PS["Data.List.NonEmpty"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_NonEmpty = PS["Data.NonEmpty"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
+  var Pure = (function () {
+      function Pure(value0) {
+          this.value0 = value0;
+      };
+      Pure.create = function (value0) {
+          return new Pure(value0);
+      };
+      return Pure;
+  })();
+  var Lift = (function () {
+      function Lift(value0) {
+          this.value0 = value0;
+      };
+      Lift.create = function (value0) {
+          return new Lift(value0);
+      };
+      return Lift;
+  })();
+  var Ap = (function () {
+      function Ap(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Ap.create = function (value0) {
+          return function (value1) {
+              return new Ap(value0, value1);
+          };
+      };
+      return Ap;
+  })();
+  var mkAp = function (fba) {
+      return function (fb) {
+          return new Ap(fba, fb);
+      };
+  };
+  var liftFreeAp = Lift.create;
+  var goLeft = function ($copy_dictApplicative) {
+      return function ($copy_fStack) {
+          return function ($copy_valStack) {
+              return function ($copy_nat) {
+                  return function ($copy_func) {
+                      return function ($copy_count) {
+                          var $tco_var_dictApplicative = $copy_dictApplicative;
+                          var $tco_var_fStack = $copy_fStack;
+                          var $tco_var_valStack = $copy_valStack;
+                          var $tco_var_nat = $copy_nat;
+                          var $tco_var_func = $copy_func;
+                          var $tco_done = false;
+                          var $tco_result;
+                          function $tco_loop(dictApplicative, fStack, valStack, nat, func, count) {
+                              if (func instanceof Pure) {
+                                  $tco_done = true;
+                                  return new Data_Tuple.Tuple(new Data_List_Types.Cons({
+                                      func: Control_Applicative.pure(dictApplicative)(func.value0),
+                                      count: count
+                                  }, fStack), valStack);
+                              };
+                              if (func instanceof Lift) {
+                                  $tco_done = true;
+                                  return new Data_Tuple.Tuple(new Data_List_Types.Cons({
+                                      func: nat(func.value0),
+                                      count: count
+                                  }, fStack), valStack);
+                              };
+                              if (func instanceof Ap) {
+                                  $tco_var_dictApplicative = dictApplicative;
+                                  $tco_var_fStack = fStack;
+                                  $tco_var_valStack = Data_List_NonEmpty.cons(func.value1)(valStack);
+                                  $tco_var_nat = nat;
+                                  $tco_var_func = func.value0;
+                                  $copy_count = count + 1 | 0;
+                                  return;
+                              };
+                              throw new Error("Failed pattern match at Control.Applicative.Free line 102, column 41 - line 105, column 81: " + [ func.constructor.name ]);
+                          };
+                          while (!$tco_done) {
+                              $tco_result = $tco_loop($tco_var_dictApplicative, $tco_var_fStack, $tco_var_valStack, $tco_var_nat, $tco_var_func, $copy_count);
+                          };
+                          return $tco_result;
+                      };
+                  };
+              };
+          };
+      };
+  };
+  var goApply = function ($copy_dictApplicative) {
+      return function ($copy_fStack) {
+          return function ($copy_vals) {
+              return function ($copy_gVal) {
+                  var $tco_var_dictApplicative = $copy_dictApplicative;
+                  var $tco_var_fStack = $copy_fStack;
+                  var $tco_var_vals = $copy_vals;
+                  var $tco_done = false;
+                  var $tco_result;
+                  function $tco_loop(dictApplicative, fStack, vals, gVal) {
+                      if (fStack instanceof Data_List_Types.Nil) {
+                          $tco_done = true;
+                          return new Data_Either.Left(gVal);
+                      };
+                      if (fStack instanceof Data_List_Types.Cons) {
+                          var gRes = Control_Apply.apply(dictApplicative.Apply0())(fStack.value0.func)(gVal);
+                          var $14 = fStack.value0.count === 1;
+                          if ($14) {
+                              if (fStack.value1 instanceof Data_List_Types.Nil) {
+                                  $tco_done = true;
+                                  return new Data_Either.Left(gRes);
+                              };
+                              $tco_var_dictApplicative = dictApplicative;
+                              $tco_var_fStack = fStack.value1;
+                              $tco_var_vals = vals;
+                              $copy_gVal = gRes;
+                              return;
+                          };
+                          if (vals instanceof Data_List_Types.Nil) {
+                              $tco_done = true;
+                              return new Data_Either.Left(gRes);
+                          };
+                          if (vals instanceof Data_List_Types.Cons) {
+                              $tco_done = true;
+                              return Data_Either.Right.create(new Data_Tuple.Tuple(new Data_List_Types.Cons({
+                                  func: gRes,
+                                  count: fStack.value0.count - 1 | 0
+                              }, fStack.value1), new Data_NonEmpty.NonEmpty(vals.value0, vals.value1)));
+                          };
+                          throw new Error("Failed pattern match at Control.Applicative.Free line 83, column 11 - line 88, column 50: " + [ vals.constructor.name ]);
+                      };
+                      throw new Error("Failed pattern match at Control.Applicative.Free line 72, column 3 - line 88, column 50: " + [ fStack.constructor.name ]);
+                  };
+                  while (!$tco_done) {
+                      $tco_result = $tco_loop($tco_var_dictApplicative, $tco_var_fStack, $tco_var_vals, $copy_gVal);
+                  };
+                  return $tco_result;
+              };
+          };
+      };
+  };
+  var functorFreeAp = new Data_Functor.Functor(function (f) {
+      return function (x) {
+          return mkAp(new Pure(f))(x);
+      };
+  });
+  var foldFreeAp = function (dictApplicative) {
+      return function (nat) {
+          return function (z) {
+              var go = function ($copy_v) {
+                  var $tco_done = false;
+                  var $tco_result;
+                  function $tco_loop(v) {
+                      if (v.value1.value0 instanceof Pure) {
+                          var v1 = goApply(dictApplicative)(v.value0)(v.value1.value1)(Control_Applicative.pure(dictApplicative)(v.value1.value0.value0));
+                          if (v1 instanceof Data_Either.Left) {
+                              $tco_done = true;
+                              return v1.value0;
+                          };
+                          if (v1 instanceof Data_Either.Right) {
+                              $copy_v = v1.value0;
+                              return;
+                          };
+                          throw new Error("Failed pattern match at Control.Applicative.Free line 54, column 17 - line 56, column 24: " + [ v1.constructor.name ]);
+                      };
+                      if (v.value1.value0 instanceof Lift) {
+                          var v1 = goApply(dictApplicative)(v.value0)(v.value1.value1)(nat(v.value1.value0.value0));
+                          if (v1 instanceof Data_Either.Left) {
+                              $tco_done = true;
+                              return v1.value0;
+                          };
+                          if (v1 instanceof Data_Either.Right) {
+                              $copy_v = v1.value0;
+                              return;
+                          };
+                          throw new Error("Failed pattern match at Control.Applicative.Free line 57, column 17 - line 59, column 24: " + [ v1.constructor.name ]);
+                      };
+                      if (v.value1.value0 instanceof Ap) {
+                          var nextVals = new Data_NonEmpty.NonEmpty(v.value1.value0.value1, v.value1.value1);
+                          $copy_v = goLeft(dictApplicative)(v.value0)(nextVals)(nat)(v.value1.value0.value0)(1);
+                          return;
+                      };
+                      throw new Error("Failed pattern match at Control.Applicative.Free line 53, column 5 - line 64, column 1: " + [ v.value1.value0.constructor.name ]);
+                  };
+                  while (!$tco_done) {
+                      $tco_result = $tco_loop($copy_v);
+                  };
+                  return $tco_result;
+              };
+              return go(new Data_Tuple.Tuple(Data_List_Types.Nil.value, Data_List_NonEmpty.singleton(z)));
+          };
+      };
+  };
+  var retractFreeAp = function (dictApplicative) {
+      return foldFreeAp(dictApplicative)(Control_Category.identity(Control_Category.categoryFn));
+  };
+  var applyFreeAp = new Control_Apply.Apply(function () {
+      return functorFreeAp;
+  }, function (fba) {
+      return function (fb) {
+          return mkAp(fba)(fb);
+      };
+  });
+  var applicativeFreeAp = new Control_Applicative.Applicative(function () {
+      return applyFreeAp;
+  }, Pure.create);
+  var hoistFreeAp = function (f) {
+      return foldFreeAp(applicativeFreeAp)(function ($37) {
+          return liftFreeAp(f($37));
+      });
+  };
+  exports["liftFreeAp"] = liftFreeAp;
+  exports["retractFreeAp"] = retractFreeAp;
+  exports["foldFreeAp"] = foldFreeAp;
+  exports["hoistFreeAp"] = hoistFreeAp;
+  exports["functorFreeAp"] = functorFreeAp;
+  exports["applyFreeAp"] = applyFreeAp;
+  exports["applicativeFreeAp"] = applicativeFreeAp;
+})(PS["Control.Applicative.Free"] = PS["Control.Applicative.Free"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_MonadPlus = PS["Control.MonadPlus"];
+  var Control_MonadZero = PS["Control.MonadZero"];
+  var Control_Plus = PS["Control.Plus"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_List = PS["Data.List"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
+  var Prelude = PS["Prelude"];                 
+  var CatQueue = (function () {
+      function CatQueue(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      CatQueue.create = function (value0) {
+          return function (value1) {
+              return new CatQueue(value0, value1);
+          };
+      };
+      return CatQueue;
+  })();
+  var uncons = function ($copy_v) {
+      var $tco_done = false;
+      var $tco_result;
+      function $tco_loop(v) {
+          if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {
+              $tco_done = true;
+              return Data_Maybe.Nothing.value;
+          };
+          if (v.value0 instanceof Data_List_Types.Nil) {
+              $copy_v = new CatQueue(Data_List.reverse(v.value1), Data_List_Types.Nil.value);
+              return;
+          };
+          if (v.value0 instanceof Data_List_Types.Cons) {
+              $tco_done = true;
+              return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value0.value0, new CatQueue(v.value0.value1, v.value1)));
+          };
+          throw new Error("Failed pattern match at Data.CatQueue line 83, column 1 - line 83, column 63: " + [ v.constructor.name ]);
+      };
+      while (!$tco_done) {
+          $tco_result = $tco_loop($copy_v);
+      };
+      return $tco_result;
+  };
+  var snoc = function (v) {
+      return function (a) {
+          return new CatQueue(v.value0, new Data_List_Types.Cons(a, v.value1));
+      };
+  };
+  var $$null = function (v) {
+      if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {
+          return true;
+      };
+      return false;
+  };                                                                                                
+  var empty = new CatQueue(Data_List_Types.Nil.value, Data_List_Types.Nil.value);
+  exports["CatQueue"] = CatQueue;
+  exports["empty"] = empty;
+  exports["null"] = $$null;
+  exports["snoc"] = snoc;
+  exports["uncons"] = uncons;
+})(PS["Data.CatQueue"] = PS["Data.CatQueue"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_MonadPlus = PS["Control.MonadPlus"];
+  var Control_MonadZero = PS["Control.MonadZero"];
+  var Control_Plus = PS["Control.Plus"];
+  var Data_CatQueue = PS["Data.CatQueue"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_List = PS["Data.List"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Data_Unfoldable1 = PS["Data.Unfoldable1"];
+  var Prelude = PS["Prelude"];                 
+  var CatNil = (function () {
+      function CatNil() {
+
+      };
+      CatNil.value = new CatNil();
+      return CatNil;
+  })();
+  var CatCons = (function () {
+      function CatCons(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      CatCons.create = function (value0) {
+          return function (value1) {
+              return new CatCons(value0, value1);
+          };
+      };
+      return CatCons;
+  })();
+  var link = function (v) {
+      return function (cat) {
+          if (v instanceof CatNil) {
+              return cat;
+          };
+          if (v instanceof CatCons) {
+              return new CatCons(v.value0, Data_CatQueue.snoc(v.value1)(cat));
+          };
+          throw new Error("Failed pattern match at Data.CatList line 111, column 1 - line 111, column 54: " + [ v.constructor.name, cat.constructor.name ]);
+      };
+  };
+  var foldr = function (k) {
+      return function (b) {
+          return function (q) {
+              var foldl = function ($copy_v) {
+                  return function ($copy_c) {
+                      return function ($copy_v1) {
+                          var $tco_var_v = $copy_v;
+                          var $tco_var_c = $copy_c;
+                          var $tco_done = false;
+                          var $tco_result;
+                          function $tco_loop(v, c, v1) {
+                              if (v1 instanceof Data_List_Types.Nil) {
+                                  $tco_done = true;
+                                  return c;
+                              };
+                              if (v1 instanceof Data_List_Types.Cons) {
+                                  $tco_var_v = v;
+                                  $tco_var_c = v(c)(v1.value0);
+                                  $copy_v1 = v1.value1;
+                                  return;
+                              };
+                              throw new Error("Failed pattern match at Data.CatList line 126, column 3 - line 126, column 59: " + [ v.constructor.name, c.constructor.name, v1.constructor.name ]);
+                          };
+                          while (!$tco_done) {
+                              $tco_result = $tco_loop($tco_var_v, $tco_var_c, $copy_v1);
+                          };
+                          return $tco_result;
+                      };
+                  };
+              };
+              var go = function ($copy_xs) {
+                  return function ($copy_ys) {
+                      var $tco_var_xs = $copy_xs;
+                      var $tco_done = false;
+                      var $tco_result;
+                      function $tco_loop(xs, ys) {
+                          var v = Data_CatQueue.uncons(xs);
+                          if (v instanceof Data_Maybe.Nothing) {
+                              $tco_done = true;
+                              return foldl(function (x) {
+                                  return function (i) {
+                                      return i(x);
+                                  };
+                              })(b)(ys);
+                          };
+                          if (v instanceof Data_Maybe.Just) {
+                              $tco_var_xs = v.value0.value1;
+                              $copy_ys = new Data_List_Types.Cons(k(v.value0.value0), ys);
+                              return;
+                          };
+                          throw new Error("Failed pattern match at Data.CatList line 122, column 14 - line 124, column 67: " + [ v.constructor.name ]);
+                      };
+                      while (!$tco_done) {
+                          $tco_result = $tco_loop($tco_var_xs, $copy_ys);
+                      };
+                      return $tco_result;
+                  };
+              };
+              return go(q)(Data_List_Types.Nil.value);
+          };
+      };
+  };
+  var uncons = function (v) {
+      if (v instanceof CatNil) {
+          return Data_Maybe.Nothing.value;
+      };
+      if (v instanceof CatCons) {
+          return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value0, (function () {
+              var $45 = Data_CatQueue["null"](v.value1);
+              if ($45) {
+                  return CatNil.value;
+              };
+              return foldr(link)(CatNil.value)(v.value1);
+          })()));
+      };
+      throw new Error("Failed pattern match at Data.CatList line 102, column 1 - line 102, column 61: " + [ v.constructor.name ]);
+  };
+  var empty = CatNil.value;
+  var append = function (v) {
+      return function (v1) {
+          if (v1 instanceof CatNil) {
+              return v;
+          };
+          if (v instanceof CatNil) {
+              return v1;
+          };
+          return link(v)(v1);
+      };
+  }; 
+  var semigroupCatList = new Data_Semigroup.Semigroup(append);
+  var snoc = function (cat) {
+      return function (a) {
+          return append(cat)(new CatCons(a, Data_CatQueue.empty));
+      };
+  };
+  exports["CatNil"] = CatNil;
+  exports["CatCons"] = CatCons;
+  exports["empty"] = empty;
+  exports["append"] = append;
+  exports["snoc"] = snoc;
+  exports["uncons"] = uncons;
+  exports["semigroupCatList"] = semigroupCatList;
+})(PS["Data.CatList"] = PS["Data.CatList"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_CatList = PS["Data.CatList"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Free = (function () {
+      function Free(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Free.create = function (value0) {
+          return function (value1) {
+              return new Free(value0, value1);
+          };
+      };
+      return Free;
+  })();
+  var Return = (function () {
+      function Return(value0) {
+          this.value0 = value0;
+      };
+      Return.create = function (value0) {
+          return new Return(value0);
+      };
+      return Return;
+  })();
+  var Bind = (function () {
+      function Bind(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Bind.create = function (value0) {
+          return function (value1) {
+              return new Bind(value0, value1);
+          };
+      };
+      return Bind;
+  })();
+  var toView = function ($copy_v) {
+      var $tco_done = false;
+      var $tco_result;
+      function $tco_loop(v) {
+          var runExpF = function (v2) {
+              return v2;
+          };
+          var concatF = function (v2) {
+              return function (r) {
+                  return new Free(v2.value0, Data_Semigroup.append(Data_CatList.semigroupCatList)(v2.value1)(r));
+              };
+          };
+          if (v.value0 instanceof Return) {
+              var v2 = Data_CatList.uncons(v.value1);
+              if (v2 instanceof Data_Maybe.Nothing) {
+                  $tco_done = true;
+                  return new Return(v.value0.value0);
+              };
+              if (v2 instanceof Data_Maybe.Just) {
+                  $copy_v = concatF(runExpF(v2.value0.value0)(v.value0.value0))(v2.value0.value1);
+                  return;
+              };
+              throw new Error("Failed pattern match at Control.Monad.Free line 220, column 7 - line 224, column 64: " + [ v2.constructor.name ]);
+          };
+          if (v.value0 instanceof Bind) {
+              $tco_done = true;
+              return new Bind(v.value0.value0, function (a) {
+                  return concatF(v.value0.value1(a))(v.value1);
+              });
+          };
+          throw new Error("Failed pattern match at Control.Monad.Free line 218, column 3 - line 226, column 56: " + [ v.value0.constructor.name ]);
+      };
+      while (!$tco_done) {
+          $tco_result = $tco_loop($copy_v);
+      };
+      return $tco_result;
+  };
+  var fromView = function (f) {
+      return new Free(f, Data_CatList.empty);
+  };
+  var freeMonad = new Control_Monad.Monad(function () {
+      return freeApplicative;
+  }, function () {
+      return freeBind;
+  });
+  var freeFunctor = new Data_Functor.Functor(function (k) {
+      return function (f) {
+          return Control_Bind.bindFlipped(freeBind)(function ($118) {
+              return Control_Applicative.pure(freeApplicative)(k($118));
+          })(f);
+      };
+  });
+  var freeBind = new Control_Bind.Bind(function () {
+      return freeApply;
+  }, function (v) {
+      return function (k) {
+          return new Free(v.value0, Data_CatList.snoc(v.value1)(k));
+      };
+  });
+  var freeApply = new Control_Apply.Apply(function () {
+      return freeFunctor;
+  }, Control_Monad.ap(freeMonad));
+  var freeApplicative = new Control_Applicative.Applicative(function () {
+      return freeApply;
+  }, function ($119) {
+      return fromView(Return.create($119));
+  });
+  var liftF = function (f) {
+      return fromView(new Bind(f, function ($120) {
+          return Control_Applicative.pure(freeApplicative)($120);
+      }));
+  };
+  var foldFree = function (dictMonadRec) {
+      return function (k) {
+          var go = function (f) {
+              var v = toView(f);
+              if (v instanceof Return) {
+                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_Rec_Class.Done.create)(Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(v.value0));
+              };
+              if (v instanceof Bind) {
+                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(function ($127) {
+                      return Control_Monad_Rec_Class.Loop.create(v.value1($127));
+                  })(k(v.value0));
+              };
+              throw new Error("Failed pattern match at Control.Monad.Free line 151, column 10 - line 153, column 37: " + [ v.constructor.name ]);
+          };
+          return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(go);
+      };
+  };
+  exports["liftF"] = liftF;
+  exports["foldFree"] = foldFree;
+  exports["freeFunctor"] = freeFunctor;
+  exports["freeBind"] = freeBind;
+  exports["freeApplicative"] = freeApplicative;
+  exports["freeApply"] = freeApply;
+  exports["freeMonad"] = freeMonad;
+})(PS["Control.Monad.Free"] = PS["Control.Monad.Free"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
+  var runExists = Unsafe_Coerce.unsafeCoerce;
+  var mkExists = Unsafe_Coerce.unsafeCoerce;
+  exports["mkExists"] = mkExists;
+  exports["runExists"] = runExists;
+})(PS["Data.Exists"] = PS["Data.Exists"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Alt = PS["Control.Alt"];
+  var Control_Alternative = PS["Control.Alternative"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Comonad = PS["Control.Comonad"];
+  var Control_Extend = PS["Control.Extend"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_MonadPlus = PS["Control.MonadPlus"];
+  var Control_MonadZero = PS["Control.MonadZero"];
+  var Control_Plus = PS["Control.Plus"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Distributive = PS["Data.Distributive"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Exists = PS["Data.Exists"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Functor_Invariant = PS["Data.Functor.Invariant"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Semigroup_Foldable = PS["Data.Semigroup.Foldable"];
+  var Data_Semigroup_Traversable = PS["Data.Semigroup.Traversable"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Prelude = PS["Prelude"];
+  var unCoyoneda = function (f) {
+      return function (v) {
+          return Data_Exists.runExists(function (v1) {
+              return f(v1.value0)(v1.value1);
+          })(v);
+      };
+  };
+  exports["unCoyoneda"] = unCoyoneda;
+})(PS["Data.Coyoneda"] = PS["Data.Coyoneda"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
+  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Exists = PS["Data.Exists"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect_Class = PS["Effect.Class"];
+  var Prelude = PS["Prelude"];                 
+  var Bound = (function () {
+      function Bound(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Bound.create = function (value0) {
+          return function (value1) {
+              return new Bound(value0, value1);
+          };
+      };
+      return Bound;
+  })();
+  var FreeT = (function () {
+      function FreeT(value0) {
+          this.value0 = value0;
+      };
+      FreeT.create = function (value0) {
+          return new FreeT(value0);
+      };
+      return FreeT;
+  })();
+  var Bind = (function () {
+      function Bind(value0) {
+          this.value0 = value0;
+      };
+      Bind.create = function (value0) {
+          return new Bind(value0);
+      };
+      return Bind;
+  })();
+  var monadTransFreeT = function (dictFunctor) {
+      return new Control_Monad_Trans_Class.MonadTrans(function (dictMonad) {
+          return function (ma) {
+              return new FreeT(function (v) {
+                  return Data_Functor.map(((dictMonad.Bind1()).Apply0()).Functor0())(Data_Either.Left.create)(ma);
+              });
+          };
+      });
+  };
+  var freeT = FreeT.create;
+  var bound = function (m) {
+      return function (f) {
+          return new Bind(Data_Exists.mkExists(new Bound(m, f)));
+      };
+  };
+  var functorFreeT = function (dictFunctor) {
+      return function (dictFunctor1) {
+          return new Data_Functor.Functor(function (f) {
+              return function (v) {
+                  if (v instanceof FreeT) {
+                      return new FreeT(function (v1) {
+                          return Data_Functor.map(dictFunctor1)(Data_Bifunctor.bimap(Data_Either.bifunctorEither)(f)(Data_Functor.map(dictFunctor)(Data_Functor.map(functorFreeT(dictFunctor)(dictFunctor1))(f))))(v.value0(Data_Unit.unit));
+                      });
+                  };
+                  if (v instanceof Bind) {
+                      return Data_Exists.runExists(function (v1) {
+                          return bound(v1.value0)(function ($104) {
+                              return Data_Functor.map(functorFreeT(dictFunctor)(dictFunctor1))(f)(v1.value1($104));
+                          });
+                      })(v.value0);
+                  };
+                  throw new Error("Failed pattern match at Control.Monad.Free.Trans line 57, column 1 - line 57, column 71: " + [ f.constructor.name, v.constructor.name ]);
+              };
+          });
+      };
+  };
+  var monadFreeT = function (dictFunctor) {
+      return function (dictMonad) {
+          return new Control_Monad.Monad(function () {
+              return applicativeFreeT(dictFunctor)(dictMonad);
+          }, function () {
+              return bindFreeT(dictFunctor)(dictMonad);
+          });
+      };
+  };
+  var bindFreeT = function (dictFunctor) {
+      return function (dictMonad) {
+          return new Control_Bind.Bind(function () {
+              return applyFreeT(dictFunctor)(dictMonad);
+          }, function (v) {
+              return function (f) {
+                  if (v instanceof Bind) {
+                      return Data_Exists.runExists(function (v1) {
+                          return bound(v1.value0)(function (x) {
+                              return bound(function (v2) {
+                                  return v1.value1(x);
+                              })(f);
+                          });
+                      })(v.value0);
+                  };
+                  return bound(function (v1) {
+                      return v;
+                  })(f);
+              };
+          });
+      };
+  };
+  var applyFreeT = function (dictFunctor) {
+      return function (dictMonad) {
+          return new Control_Apply.Apply(function () {
+              return functorFreeT(dictFunctor)(((dictMonad.Bind1()).Apply0()).Functor0());
+          }, Control_Monad.ap(monadFreeT(dictFunctor)(dictMonad)));
+      };
+  };
+  var applicativeFreeT = function (dictFunctor) {
+      return function (dictMonad) {
+          return new Control_Applicative.Applicative(function () {
+              return applyFreeT(dictFunctor)(dictMonad);
+          }, function (a) {
+              return new FreeT(function (v) {
+                  return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Left(a));
+              });
+          });
+      };
+  };
+  var liftFreeT = function (dictFunctor) {
+      return function (dictMonad) {
+          return function (fa) {
+              return new FreeT(function (v) {
+                  return Control_Applicative.pure(dictMonad.Applicative0())(new Data_Either.Right(Data_Functor.map(dictFunctor)(Control_Applicative.pure(applicativeFreeT(dictFunctor)(dictMonad)))(fa)));
+              });
+          };
+      };
+  };
+  var resume = function (dictFunctor) {
+      return function (dictMonadRec) {
+          var go = function (v) {
+              if (v instanceof FreeT) {
+                  return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_Rec_Class.Done.create)(v.value0(Data_Unit.unit));
+              };
+              if (v instanceof Bind) {
+                  return Data_Exists.runExists(function (v1) {
+                      var v2 = v1.value0(Data_Unit.unit);
+                      if (v2 instanceof FreeT) {
+                          return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())(v2.value0(Data_Unit.unit))(function (v3) {
+                              if (v3 instanceof Data_Either.Left) {
+                                  return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Loop(v1.value1(v3.value0)));
+                              };
+                              if (v3 instanceof Data_Either.Right) {
+                                  return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Done(new Data_Either.Right(Data_Functor.map(dictFunctor)(function (h) {
+                                      return Control_Bind.bind(bindFreeT(dictFunctor)(dictMonadRec.Monad0()))(h)(v1.value1);
+                                  })(v3.value0))));
+                              };
+                              throw new Error("Failed pattern match at Control.Monad.Free.Trans line 52, column 20 - line 54, column 67: " + [ v3.constructor.name ]);
+                          });
+                      };
+                      if (v2 instanceof Bind) {
+                          return Data_Exists.runExists(function (v3) {
+                              return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Loop(Control_Bind.bind(bindFreeT(dictFunctor)(dictMonadRec.Monad0()))(v3.value0(Data_Unit.unit))(function (z) {
+                                  return Control_Bind.bind(bindFreeT(dictFunctor)(dictMonadRec.Monad0()))(v3.value1(z))(v1.value1);
+                              })));
+                          })(v2.value0);
+                      };
+                      throw new Error("Failed pattern match at Control.Monad.Free.Trans line 50, column 5 - line 55, column 98: " + [ v2.constructor.name ]);
+                  })(v.value0);
+              };
+              throw new Error("Failed pattern match at Control.Monad.Free.Trans line 47, column 3 - line 47, column 75: " + [ v.constructor.name ]);
+          };
+          return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(go);
+      };
+  };
+  var runFreeT = function (dictFunctor) {
+      return function (dictMonadRec) {
+          return function (interp) {
+              var go = function (v) {
+                  if (v instanceof Data_Either.Left) {
+                      return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Control_Monad_Rec_Class.Done(v.value0));
+                  };
+                  if (v instanceof Data_Either.Right) {
+                      return Data_Functor.map((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0())(Control_Monad_Rec_Class.Loop.create)(interp(v.value0));
+                  };
+                  throw new Error("Failed pattern match at Control.Monad.Free.Trans line 126, column 3 - line 126, column 63: " + [ v.constructor.name ]);
+              };
+              return Control_Monad_Rec_Class.tailRecM(dictMonadRec)(Control_Bind.composeKleisliFlipped((dictMonadRec.Monad0()).Bind1())(go)(resume(dictFunctor)(dictMonadRec)));
+          };
+      };
+  };
+  var monadRecFreeT = function (dictFunctor) {
+      return function (dictMonad) {
+          return new Control_Monad_Rec_Class.MonadRec(function () {
+              return monadFreeT(dictFunctor)(dictMonad);
+          }, function (f) {
+              var go = function (s) {
+                  return Control_Bind.bind(bindFreeT(dictFunctor)(dictMonad))(f(s))(function (v) {
+                      if (v instanceof Control_Monad_Rec_Class.Loop) {
+                          return go(v.value0);
+                      };
+                      if (v instanceof Control_Monad_Rec_Class.Done) {
+                          return Control_Applicative.pure(applicativeFreeT(dictFunctor)(dictMonad))(v.value0);
+                      };
+                      throw new Error("Failed pattern match at Control.Monad.Free.Trans line 80, column 15 - line 82, column 25: " + [ v.constructor.name ]);
+                  });
+              };
+              return go;
+          });
+      };
+  };
+  exports["freeT"] = freeT;
+  exports["liftFreeT"] = liftFreeT;
+  exports["resume"] = resume;
+  exports["runFreeT"] = runFreeT;
+  exports["functorFreeT"] = functorFreeT;
+  exports["applyFreeT"] = applyFreeT;
+  exports["applicativeFreeT"] = applicativeFreeT;
+  exports["bindFreeT"] = bindFreeT;
+  exports["monadFreeT"] = monadFreeT;
+  exports["monadTransFreeT"] = monadTransFreeT;
+  exports["monadRecFreeT"] = monadRecFreeT;
+})(PS["Control.Monad.Free.Trans"] = PS["Control.Monad.Free.Trans"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Category = PS["Control.Category"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Prelude = PS["Prelude"];                 
+  var Profunctor = function (dimap) {
+      this.dimap = dimap;
+  };
+  var profunctorFn = new Profunctor(function (a2b) {
+      return function (c2d) {
+          return function (b2c) {
+              return function ($9) {
+                  return c2d(b2c(a2b($9)));
+              };
+          };
+      };
+  });
+  var dimap = function (dict) {
+      return dict.dimap;
+  };
+  var rmap = function (dictProfunctor) {
+      return function (b2c) {
+          return dimap(dictProfunctor)(Control_Category.identity(Control_Category.categoryFn))(b2c);
+      };
+  };
+  exports["dimap"] = dimap;
+  exports["Profunctor"] = Profunctor;
+  exports["rmap"] = rmap;
+  exports["profunctorFn"] = profunctorFn;
+})(PS["Data.Profunctor"] = PS["Data.Profunctor"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad_Except = PS["Control.Monad.Except"];
+  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
+  var Control_Monad_Free_Trans = PS["Control.Monad.Free.Trans"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Parallel = PS["Control.Parallel"];
+  var Control_Parallel_Class = PS["Control.Parallel.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Identity = PS["Data.Identity"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Profunctor = PS["Data.Profunctor"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unit = PS["Data.Unit"];
+  var Prelude = PS["Prelude"];
+  var Emit = (function () {
+      function Emit(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Emit.create = function (value0) {
+          return function (value1) {
+              return new Emit(value0, value1);
+          };
+      };
+      return Emit;
+  })();
+  var runProcess = function (dictMonadRec) {
+      return Control_Monad_Free_Trans.runFreeT(Data_Identity.functorIdentity)(dictMonadRec)(function ($186) {
+          return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(Data_Newtype.unwrap(Data_Identity.newtypeIdentity)($186));
+      });
+  };
+  var profunctorAwait = new Data_Profunctor.Profunctor(function (f) {
+      return function (g) {
+          return function (v) {
+              return Data_Profunctor.dimap(Data_Profunctor.profunctorFn)(f)(g)(v);
+          };
+      };
+  });
+  var loop = function (dictFunctor) {
+      return function (dictMonad) {
+          return function (me) {
+              return Control_Monad_Rec_Class.tailRecM(Control_Monad_Free_Trans.monadRecFreeT(dictFunctor)(dictMonad))(function (v) {
+                  return Data_Functor.map(Control_Monad_Free_Trans.functorFreeT(dictFunctor)(((dictMonad.Bind1()).Apply0()).Functor0()))(Data_Maybe.maybe(new Control_Monad_Rec_Class.Loop(Data_Unit.unit))(Control_Monad_Rec_Class.Done.create))(me);
+              })(Data_Unit.unit);
+          };
+      };
+  };
+  var fuseWithL = function (dictFunctor) {
+      return function (dictFunctor1) {
+          return function (dictFunctor2) {
+              return function (dictMonadRec) {
+                  return function (zap) {
+                      return function (fs) {
+                          return function (gs) {
+                              var go = function (v) {
+                                  return Control_Monad_Except_Trans.runExceptT(Control_Bind.bind(Control_Monad_Except_Trans.bindExceptT(dictMonadRec.Monad0()))(Control_Monad_Except_Trans.ExceptT(Control_Monad_Free_Trans.resume(dictFunctor)(dictMonadRec)(v.value0)))(function (v1) {
+                                      return Control_Bind.bind(Control_Monad_Except_Trans.bindExceptT(dictMonadRec.Monad0()))(Control_Monad_Except_Trans.ExceptT(Control_Monad_Free_Trans.resume(dictFunctor1)(dictMonadRec)(v.value1)))(function (v2) {
+                                          return Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonadRec.Monad0()))(Data_Functor.map(dictFunctor2)(function (t) {
+                                              return Control_Monad_Free_Trans.freeT(function (v3) {
+                                                  return go(t);
+                                              });
+                                          })(zap(Data_Tuple.Tuple.create)(v1)(v2)));
+                                      });
+                                  }));
+                              };
+                              return Control_Monad_Free_Trans.freeT(function (v) {
+                                  return go(new Data_Tuple.Tuple(fs, gs));
+                              });
+                          };
+                      };
+                  };
+              };
+          };
+      };
+  };
+  var fuseWith = function (dictFunctor) {
+      return function (dictFunctor1) {
+          return function (dictFunctor2) {
+              return function (dictMonadRec) {
+                  return function (dictParallel) {
+                      return function (zap) {
+                          return function (fs) {
+                              return function (gs) {
+                                  var go = function (v) {
+                                      return Control_Bind.bind((dictMonadRec.Monad0()).Bind1())(Control_Parallel_Class.sequential(dictParallel)(Control_Apply.apply((dictParallel.Applicative1()).Apply0())(Data_Functor.map(((dictParallel.Applicative1()).Apply0()).Functor0())(Control_Apply.lift2(Data_Either.applyEither)(zap(Data_Tuple.Tuple.create)))(Control_Parallel_Class.parallel(dictParallel)(Control_Monad_Free_Trans.resume(dictFunctor)(dictMonadRec)(v.value0))))(Control_Parallel_Class.parallel(dictParallel)(Control_Monad_Free_Trans.resume(dictFunctor1)(dictMonadRec)(v.value1)))))(function (v1) {
+                                          if (v1 instanceof Data_Either.Left) {
+                                              return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Data_Either.Left(v1.value0));
+                                          };
+                                          if (v1 instanceof Data_Either.Right) {
+                                              return Control_Applicative.pure((dictMonadRec.Monad0()).Applicative0())(new Data_Either.Right(Data_Functor.map(dictFunctor2)(function (t) {
+                                                  return Control_Monad_Free_Trans.freeT(function (v2) {
+                                                      return go(t);
+                                                  });
+                                              })(v1.value0)));
+                                          };
+                                          throw new Error("Failed pattern match at Control.Coroutine line 79, column 5 - line 81, column 63: " + [ v1.constructor.name ]);
+                                      });
+                                  };
+                                  return Control_Monad_Free_Trans.freeT(function (v) {
+                                      return go(new Data_Tuple.Tuple(fs, gs));
+                                  });
+                              };
+                          };
+                      };
+                  };
+              };
+          };
+      };
+  };
+  var functorAwait = new Data_Functor.Functor(Data_Profunctor.rmap(profunctorAwait));
+  var bifunctorEmit = new Data_Bifunctor.Bifunctor(function (f) {
+      return function (g) {
+          return function (v) {
+              return new Emit(f(v.value0), g(v.value1));
+          };
+      };
+  });
+  var functorEmit = new Data_Functor.Functor(Data_Bifunctor.rmap(bifunctorEmit));
+  var connect = function (dictMonadRec) {
+      return function (dictParallel) {
+          return fuseWith(functorEmit)(functorAwait)(Data_Identity.functorIdentity)(dictMonadRec)(dictParallel)(function (f) {
+              return function (v) {
+                  return function (v1) {
+                      return f(v.value1)(v1(v.value0));
+                  };
+              };
+          });
+      };
+  };
+  var emit = function (dictMonad) {
+      return function (o) {
+          return Control_Monad_Free_Trans.liftFreeT(functorEmit)(dictMonad)(new Emit(o, Data_Unit.unit));
+      };
+  };
+  var producer = function (dictMonad) {
+      return function (recv) {
+          return loop(functorEmit)(dictMonad)(Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(functorEmit)(dictMonad))(Control_Monad_Trans_Class.lift(Control_Monad_Free_Trans.monadTransFreeT(functorEmit))(dictMonad)(recv))(function (v) {
+              if (v instanceof Data_Either.Left) {
+                  return Data_Functor.voidLeft(Control_Monad_Free_Trans.functorFreeT(functorEmit)(((dictMonad.Bind1()).Apply0()).Functor0()))(emit(dictMonad)(v.value0))(Data_Maybe.Nothing.value);
+              };
+              if (v instanceof Data_Either.Right) {
+                  return Control_Applicative.pure(Control_Monad_Free_Trans.applicativeFreeT(functorEmit)(dictMonad))(new Data_Maybe.Just(v.value0));
+              };
+              throw new Error("Failed pattern match at Control.Coroutine line 125, column 3 - line 127, column 29: " + [ v.constructor.name ]);
+          }));
+      };
+  };
+  var pullFrom = function (dictMonadRec) {
+      return fuseWithL(functorAwait)(functorEmit)(Data_Identity.functorIdentity)(dictMonadRec)(function (f) {
+          return function (v) {
+              return function (v1) {
+                  return Control_Applicative.pure(Data_Identity.applicativeIdentity)(f(v(v1.value0))(v1.value1));
+              };
+          };
+      });
+  };
+  var $$await = function (dictMonad) {
+      return Control_Monad_Free_Trans.liftFreeT(functorAwait)(dictMonad)(Control_Category.identity(Control_Category.categoryFn));
+  };
+  exports["loop"] = loop;
+  exports["runProcess"] = runProcess;
+  exports["fuseWith"] = fuseWith;
+  exports["fuseWithL"] = fuseWithL;
+  exports["Emit"] = Emit;
+  exports["emit"] = emit;
+  exports["producer"] = producer;
+  exports["await"] = $$await;
+  exports["connect"] = connect;
+  exports["pullFrom"] = pullFrom;
+  exports["bifunctorEmit"] = bifunctorEmit;
+  exports["functorEmit"] = functorEmit;
+  exports["profunctorAwait"] = profunctorAwait;
+  exports["functorAwait"] = functorAwait;
+})(PS["Control.Coroutine"] = PS["Control.Coroutine"] || {});
+(function(exports) {
+  /* globals exports, setTimeout */
+  "use strict";
+
+  var AVar = function () {
+
+    function MutableQueue () {
+      this.head = null;
+      this.last = null;
+      this.size = 0;
+    }
+
+    function MutableCell (queue, value) {
+      this.queue = queue;
+      this.value = value;
+      this.next  = null;
+      this.prev  = null;
+    }
+
+    function AVar (value) {
+      this.draining = false;
+      this.error    = null;
+      this.value    = value;
+      this.takes    = new MutableQueue();
+      this.reads    = new MutableQueue();
+      this.puts     = new MutableQueue();
+    }
+
+    var EMPTY = {};
+
+    function runEff(eff) {
+      try {
+        eff();
+      } catch (error) {
+        setTimeout(function () {
+          throw error;
+        }, 0);
+      }
+    }
+
+    function putLast (queue, value) {
+      var cell = new MutableCell(queue, value);
+      switch (queue.size) {
+      case 0:
+        queue.head = cell;
+        break;
+      case 1:
+        cell.prev = queue.head;
+        queue.head.next = cell;
+        queue.last = cell;
+        break;
+      default:
+        cell.prev = queue.last;
+        queue.last.next = cell;
+        queue.last = cell;
+      }
+      queue.size++;
+      return cell;
+    }
+
+    function takeLast (queue) {
+      var cell;
+      switch (queue.size) {
+      case 0:
+        return null;
+      case 1:
+        cell = queue.head;
+        queue.head = null;
+        break;
+      case 2:
+        cell = queue.last;
+        queue.head.next = null;
+        queue.last = null;
+        break;
+      default:
+        cell = queue.last;
+        queue.last = cell.prev;
+        queue.last.next = null;
+      }
+      cell.prev = null;
+      cell.queue = null;
+      queue.size--;
+      return cell.value;
+    }
+
+    function takeHead (queue) {
+      var cell;
+      switch (queue.size) {
+      case 0:
+        return null;
+      case 1:
+        cell = queue.head;
+        queue.head = null;
+        break;
+      case 2:
+        cell = queue.head;
+        queue.last.prev = null;
+        queue.head = queue.last;
+        queue.last = null;
+        break;
+      default:
+        cell = queue.head;
+        queue.head = cell.next;
+        queue.head.prev = null;
+      }
+      cell.next = null;
+      cell.queue = null;
+      queue.size--;
+      return cell.value;
+    }
+
+    function deleteCell (cell) {
+      if (cell.queue === null) {
+        return;
+      }
+      if (cell.queue.last === cell) {
+        takeLast(cell.queue);
+        return;
+      }
+      if (cell.queue.head === cell) {
+        takeHead(cell.queue);
+        return;
+      }
+      if (cell.prev) {
+        cell.prev.next = cell.next;
+      }
+      if (cell.next) {
+        cell.next.prev = cell.prev;
+      }
+      cell.queue.size--;
+      cell.queue = null;
+      cell.value = null;
+      cell.next  = null;
+      cell.prev  = null;
+    }
+
+    function drainVar (util, avar) {
+      if (avar.draining) {
+        return;
+      }
+
+      var ps = avar.puts;
+      var ts = avar.takes;
+      var rs = avar.reads;
+      var p, r, t, value, rsize;
+
+      avar.draining = true;
+
+      while (1) { // eslint-disable-line no-constant-condition
+        p = null;
+        r = null;
+        t = null;
+        value = avar.value;
+        rsize = rs.size;
+
+        if (avar.error !== null) {
+          value = util.left(avar.error);
+          while (p = takeHead(ps)) { // eslint-disable-line no-cond-assign
+            runEff(p.cb(value));
+          }
+          while (r = takeHead(rs)) { // eslint-disable-line no-cond-assign
+            runEff(r(value));
+          }
+          while (t = takeHead(ts)) { // eslint-disable-line no-cond-assign
+            runEff(t(value));
+          }
+          break;
+        }
+
+        // Process the next put. We do not immediately invoke the callback
+        // because we want to preserve ordering. If there are takes/reads
+        // we want to run those first.
+        if (value === EMPTY && (p = takeHead(ps))) {
+          avar.value = value = p.value;
+        }
+
+        if (value !== EMPTY) {
+          // We go ahead and queue up the next take for the same reasons as
+          // above. Invoking the read callbacks can affect the mutable queue.
+          t = takeHead(ts);
+          // We only want to process the reads queued up before running these
+          // callbacks so we guard on rsize.
+          while (rsize-- && (r = takeHead(rs))) {
+            runEff(r(util.right(value)));
+          }
+          if (t !== null) {
+            avar.value = EMPTY;
+            runEff(t(util.right(value)));
+          }
+        }
+
+        if (p !== null) {
+          runEff(p.cb(util.right(void 0)));
+        }
+
+        // Callbacks could have queued up more items so we need to guard on the
+        // actual mutable properties.
+        if (avar.value === EMPTY && ps.size === 0 || avar.value !== EMPTY && ts.size === 0) {
+          break;
+        }
+      }
+      avar.draining = false;
+    }
+
+    AVar.EMPTY      = EMPTY;
+    AVar.putLast    = putLast;
+    AVar.takeLast   = takeLast;
+    AVar.takeHead   = takeHead;
+    AVar.deleteCell = deleteCell;
+    AVar.drainVar   = drainVar;
+
+    return AVar;
+  }();
+
+  exports.empty = function () {
+    return new AVar(AVar.EMPTY);
+  };
+
+  exports._killVar = function (util, error, avar) {
+    return function () {
+      if (avar.error === null) {
+        avar.error = error;
+        avar.value = AVar.EMPTY;
+        AVar.drainVar(util, avar);
+      }
+    };
+  };
+
+  exports._putVar = function (util, value, avar, cb) {
+    return function () {
+      var cell = AVar.putLast(avar.puts, { cb: cb, value: value });
+      AVar.drainVar(util, avar);
+      return function () {
+        AVar.deleteCell(cell);
+      };
+    };
+  };
+
+  exports._takeVar = function (util, avar, cb) {
+    return function () {
+      var cell = AVar.putLast(avar.takes, cb);
+      AVar.drainVar(util, avar);
+      return function () {
+        AVar.deleteCell(cell);
+      };
+    };
+  };
+})(PS["Effect.AVar"] = PS["Effect.AVar"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Effect.AVar"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Effect = PS["Effect"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Prelude = PS["Prelude"];                 
+  var Killed = (function () {
+      function Killed(value0) {
+          this.value0 = value0;
+      };
+      Killed.create = function (value0) {
+          return new Killed(value0);
+      };
+      return Killed;
+  })();
+  var Filled = (function () {
+      function Filled(value0) {
+          this.value0 = value0;
+      };
+      Filled.create = function (value0) {
+          return new Filled(value0);
+      };
+      return Filled;
+  })();
+  var Empty = (function () {
+      function Empty() {
+
+      };
+      Empty.value = new Empty();
+      return Empty;
+  })();
+  var ffiUtil = {
+      left: Data_Either.Left.create,
+      right: Data_Either.Right.create,
+      nothing: Data_Maybe.Nothing.value,
+      just: Data_Maybe.Just.create,
+      killed: Killed.create,
+      filled: Filled.create,
+      empty: Empty.value
+  };
+  var kill = function (err) {
+      return function (avar) {
+          return $foreign._killVar(ffiUtil, err, avar);
+      };
+  };
+  var put = function (value) {
+      return function (avar) {
+          return function (cb) {
+              return $foreign._putVar(ffiUtil, value, avar, cb);
+          };
+      };
+  };
+  var take = function (avar) {
+      return function (cb) {
+          return $foreign._takeVar(ffiUtil, avar, cb);
+      };
+  };
+  exports["Killed"] = Killed;
+  exports["Filled"] = Filled;
+  exports["Empty"] = Empty;
+  exports["take"] = take;
+  exports["put"] = put;
+  exports["kill"] = kill;
+  exports["empty"] = $foreign.empty;
+})(PS["Effect.AVar"] = PS["Effect.AVar"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Effect = PS["Effect"];
+  var Effect_AVar = PS["Effect.AVar"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Prelude = PS["Prelude"];
+  var take = function (avar) {
+      return Effect_Aff.makeAff(function (k) {
+          return function __do() {
+              var v = Effect_AVar.take(avar)(k)();
+              return Effect_Aff.effectCanceler(v);
+          };
+      });
+  };
+  var put = function (value) {
+      return function (avar) {
+          return Effect_Aff.makeAff(function (k) {
+              return function __do() {
+                  var v = Effect_AVar.put(value)(avar)(k)();
+                  return Effect_Aff.effectCanceler(v);
+              };
+          });
+      };
+  };
+  var kill = function (error) {
+      return function ($11) {
+          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_AVar.kill(error)($11));
+      };
+  };
+  var empty = Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_AVar.empty);
+  exports["empty"] = empty;
+  exports["take"] = take;
+  exports["put"] = put;
+  exports["kill"] = kill;
+})(PS["Effect.Aff.AVar"] = PS["Effect.Aff.AVar"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Coroutine = PS["Control.Coroutine"];
+  var Control_Monad_Free_Trans = PS["Control.Monad.Free.Trans"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Aff_AVar = PS["Effect.Aff.AVar"];
+  var Effect_Aff_Class = PS["Effect.Aff.Class"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Prelude = PS["Prelude"];                 
+  var Listening = (function () {
+      function Listening() {
+
+      };
+      Listening.value = new Listening();
+      return Listening;
+  })();
+  var Done = (function () {
+      function Done() {
+
+      };
+      Done.value = new Done();
+      return Done;
+  })();
+  var unEventSource = function (v) {
+      return v;
+  };
+  var eqSubscribeStatus = new Data_Eq.Eq(function (x) {
+      return function (y) {
+          if (x instanceof Listening && y instanceof Listening) {
+              return true;
+          };
+          if (x instanceof Done && y instanceof Done) {
+              return true;
+          };
+          return false;
+      };
+  });
+  exports["Listening"] = Listening;
+  exports["Done"] = Done;
+  exports["unEventSource"] = unEventSource;
+  exports["eqSubscribeStatus"] = eqSubscribeStatus;
+})(PS["Halogen.Query.EventSource"] = PS["Halogen.Query.EventSource"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Category = PS["Control.Category"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var unFork = Unsafe_Coerce.unsafeCoerce;
+  exports["unFork"] = unFork;
+})(PS["Halogen.Query.ForkF"] = PS["Halogen.Query.ForkF"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Applicative_Free = PS["Control.Applicative.Free"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad = PS["Control.Monad"];
+  var Control_Monad_Free = PS["Control.Monad.Free"];
+  var Control_Monad_Reader_Class = PS["Control.Monad.Reader.Class"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Monad_Writer_Class = PS["Control.Monad.Writer.Class"];
+  var Control_Parallel_Class = PS["Control.Parallel.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Coyoneda = PS["Data.Coyoneda"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_List = PS["Data.List"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect_Aff_Class = PS["Effect.Aff.Class"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Halogen_Query_EventSource = PS["Halogen.Query.EventSource"];
+  var Halogen_Query_ForkF = PS["Halogen.Query.ForkF"];
+  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM = PS["Web.DOM"];
+  var HalogenM = function (x) {
+      return x;
+  };
+  var State = (function () {
+      function State(value0) {
+          this.value0 = value0;
+      };
+      State.create = function (value0) {
+          return new State(value0);
+      };
+      return State;
+  })();
+  var Subscribe = (function () {
+      function Subscribe(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Subscribe.create = function (value0) {
+          return function (value1) {
+              return new Subscribe(value0, value1);
+          };
+      };
+      return Subscribe;
+  })();
+  var Lift = (function () {
+      function Lift(value0) {
+          this.value0 = value0;
+      };
+      Lift.create = function (value0) {
+          return new Lift(value0);
+      };
+      return Lift;
+  })();
+  var Halt = (function () {
+      function Halt(value0) {
+          this.value0 = value0;
+      };
+      Halt.create = function (value0) {
+          return new Halt(value0);
+      };
+      return Halt;
+  })();
+  var GetSlots = (function () {
+      function GetSlots(value0) {
+          this.value0 = value0;
+      };
+      GetSlots.create = function (value0) {
+          return new GetSlots(value0);
+      };
+      return GetSlots;
+  })();
+  var CheckSlot = (function () {
+      function CheckSlot(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      CheckSlot.create = function (value0) {
+          return function (value1) {
+              return new CheckSlot(value0, value1);
+          };
+      };
+      return CheckSlot;
+  })();
+  var ChildQuery = (function () {
+      function ChildQuery(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      ChildQuery.create = function (value0) {
+          return function (value1) {
+              return new ChildQuery(value0, value1);
+          };
+      };
+      return ChildQuery;
+  })();
+  var Raise = (function () {
+      function Raise(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      Raise.create = function (value0) {
+          return function (value1) {
+              return new Raise(value0, value1);
+          };
+      };
+      return Raise;
+  })();
+  var Par = (function () {
+      function Par(value0) {
+          this.value0 = value0;
+      };
+      Par.create = function (value0) {
+          return new Par(value0);
+      };
+      return Par;
+  })();
+  var Fork = (function () {
+      function Fork(value0) {
+          this.value0 = value0;
+      };
+      Fork.create = function (value0) {
+          return new Fork(value0);
+      };
+      return Fork;
+  })();
+  var GetRef = (function () {
+      function GetRef(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      GetRef.create = function (value0) {
+          return function (value1) {
+              return new GetRef(value0, value1);
+          };
+      };
+      return GetRef;
+  })();
+  var raise = function (o) {
+      return HalogenM(Control_Monad_Free.liftF(new Raise(o, Data_Unit.unit)));
+  };
+  var functorHalogenM = new Data_Functor.Functor(function (f) {
+      return function (v) {
+          return Data_Functor.map(Control_Monad_Free.freeFunctor)(f)(v);
+      };
+  });
+  var applyHalogenM = new Control_Apply.Apply(function () {
+      return functorHalogenM;
+  }, function (v) {
+      return function (v1) {
+          return Control_Apply.apply(Control_Monad_Free.freeApply)(v)(v1);
+      };
+  });
+  var bindHalogenM = new Control_Bind.Bind(function () {
+      return applyHalogenM;
+  }, function (v) {
+      return function (f) {
+          return Control_Bind.bind(Control_Monad_Free.freeBind)(v)(function (x) {
+              var v1 = f(x);
+              return v1;
+          });
+      };
+  });                                                       
+  var applicativeHalogenM = new Control_Applicative.Applicative(function () {
+      return applyHalogenM;
+  }, function (a) {
+      return Control_Applicative.pure(Control_Monad_Free.freeApplicative)(a);
+  });
+  var monadHalogenM = new Control_Monad.Monad(function () {
+      return applicativeHalogenM;
+  }, function () {
+      return bindHalogenM;
+  });
+  var monadEffectHalogenM = function (dictMonadEffect) {
+      return new Effect_Class.MonadEffect(function () {
+          return monadHalogenM;
+      }, function (eff) {
+          return HalogenM(Control_Monad_Free.liftF(Lift.create(Effect_Class.liftEffect(dictMonadEffect)(eff))));
+      });
+  };
+  var monadAffHalogenM = function (dictMonadAff) {
+      return new Effect_Aff_Class.MonadAff(function () {
+          return monadEffectHalogenM(dictMonadAff.MonadEffect0());
+      }, function (aff) {
+          return HalogenM(Control_Monad_Free.liftF(Lift.create(Effect_Aff_Class.liftAff(dictMonadAff)(aff))));
+      });
+  };
+  var monadStateHalogenM = new Control_Monad_State_Class.MonadState(function () {
+      return monadHalogenM;
+  }, function ($180) {
+      return HalogenM(Control_Monad_Free.liftF(State.create($180)));
+  });
+  exports["State"] = State;
+  exports["Subscribe"] = Subscribe;
+  exports["Lift"] = Lift;
+  exports["Halt"] = Halt;
+  exports["GetSlots"] = GetSlots;
+  exports["CheckSlot"] = CheckSlot;
+  exports["ChildQuery"] = ChildQuery;
+  exports["Raise"] = Raise;
+  exports["Par"] = Par;
+  exports["Fork"] = Fork;
+  exports["GetRef"] = GetRef;
+  exports["HalogenM"] = HalogenM;
+  exports["raise"] = raise;
+  exports["functorHalogenM"] = functorHalogenM;
+  exports["applyHalogenM"] = applyHalogenM;
+  exports["applicativeHalogenM"] = applicativeHalogenM;
+  exports["bindHalogenM"] = bindHalogenM;
+  exports["monadHalogenM"] = monadHalogenM;
+  exports["monadEffectHalogenM"] = monadEffectHalogenM;
+  exports["monadAffHalogenM"] = monadAffHalogenM;
+  exports["monadStateHalogenM"] = monadStateHalogenM;
+})(PS["Halogen.Query.HalogenM"] = PS["Halogen.Query.HalogenM"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Bifunctor = PS["Data.Bifunctor"];
+  var Data_Const = PS["Data.Const"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
+  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
+  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
+  var ComponentSlot = (function () {
+      function ComponentSlot(value0, value1, value2, value3, value4, value5) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+          this.value3 = value3;
+          this.value4 = value4;
+          this.value5 = value5;
+      };
+      ComponentSlot.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return function (value3) {
+                      return function (value4) {
+                          return function (value5) {
+                              return new ComponentSlot(value0, value1, value2, value3, value4, value5);
+                          };
+                      };
+                  };
+              };
+          };
+      };
+      return ComponentSlot;
+  })();
+  var unComponentSlot = function (f) {
+      return function (cs) {
+          return f(cs.value0)(cs.value1)(cs.value2)(cs.value3)(cs.value4)(cs.value5);
+      };
+  };
+  var unComponent = Unsafe_Coerce.unsafeCoerce;
+  var mkComponentSlot = ComponentSlot.create;
+  var mkComponent = Unsafe_Coerce.unsafeCoerce;
+  var parentComponent = function (dictOrd) {
+      return function (spec) {
+          return mkComponent({
+              initialState: spec.initialState,
+              render: spec.render,
+              "eval": spec["eval"],
+              receiver: spec.receiver,
+              initializer: Data_Maybe.Nothing.value,
+              finalizer: Data_Maybe.Nothing.value,
+              mkOrdBox: Halogen_Data_OrdBox.mkOrdBox(dictOrd)
+          });
+      };
+  };
+  var lifecycleComponent = function (dictBifunctor) {
+      return function (spec) {
+          return mkComponent({
+              initialState: spec.initialState,
+              render: spec.render,
+              "eval": spec["eval"],
+              receiver: spec.receiver,
+              initializer: spec.initializer,
+              finalizer: spec.finalizer,
+              mkOrdBox: Halogen_Data_OrdBox.mkOrdBox(Data_Ord.ordVoid)
+          });
+      };
+  }; 
+  var component = function (dictBifunctor) {
+      return function (spec) {
+          return lifecycleComponent(dictBifunctor)({
+              initialState: spec.initialState,
+              render: spec.render,
+              "eval": spec["eval"],
+              receiver: spec.receiver,
+              initializer: Data_Maybe.Nothing.value,
+              finalizer: Data_Maybe.Nothing.value
+          });
+      };
+  };
+  exports["mkComponent"] = mkComponent;
+  exports["unComponent"] = unComponent;
+  exports["component"] = component;
+  exports["lifecycleComponent"] = lifecycleComponent;
+  exports["parentComponent"] = parentComponent;
+  exports["mkComponentSlot"] = mkComponentSlot;
+  exports["unComponentSlot"] = unComponentSlot;
+})(PS["Halogen.Component"] = PS["Halogen.Component"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var DOM_HTML_Indexed = PS["DOM.HTML.Indexed"];
+  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
+  var DOM_HTML_Indexed_FormMethod = PS["DOM.HTML.Indexed.FormMethod"];
+  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
+  var DOM_HTML_Indexed_MenuType = PS["DOM.HTML.Indexed.MenuType"];
+  var DOM_HTML_Indexed_MenuitemType = PS["DOM.HTML.Indexed.MenuitemType"];
+  var DOM_HTML_Indexed_OnOff = PS["DOM.HTML.Indexed.OnOff"];
+  var DOM_HTML_Indexed_OrderedListType = PS["DOM.HTML.Indexed.OrderedListType"];
+  var DOM_HTML_Indexed_PreloadValue = PS["DOM.HTML.Indexed.PreloadValue"];
+  var DOM_HTML_Indexed_StepValue = PS["DOM.HTML.Indexed.StepValue"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_MediaType = PS["Data.MediaType"];
+  var Data_Newtype = PS["Data.Newtype"];
+  var Data_String = PS["Data.String"];
+  var Data_String_Common = PS["Data.String.Common"];
+  var Data_Unit = PS["Data.Unit"];
+  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
+  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
+  var Halogen_VDom_DOM_Prop = PS["Halogen.VDom.DOM.Prop"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var prop = function (dictIsProp) {
+      return Halogen_HTML_Core.prop(dictIsProp);
+  };                                                    
+  var required = prop(Halogen_HTML_Core.booleanIsProp)("required");
+  var rows = prop(Halogen_HTML_Core.intIsProp)("rows");        
+  var target = prop(Halogen_HTML_Core.stringIsProp)("target");
+  var title = prop(Halogen_HTML_Core.stringIsProp)("title");
+  var type_ = function (dictIsProp) {
+      return prop(dictIsProp)("type");
+  };
+  var value = prop(Halogen_HTML_Core.stringIsProp)("value");
+  var name = prop(Halogen_HTML_Core.stringIsProp)("name"); 
+  var id_ = prop(Halogen_HTML_Core.stringIsProp)("id");
+  var href = prop(Halogen_HTML_Core.stringIsProp)("href");
+  var $$for = prop(Halogen_HTML_Core.stringIsProp)("htmlFor");
+  var class_ = function ($13) {
+      return prop(Halogen_HTML_Core.stringIsProp)("className")(Data_Newtype.unwrap(Halogen_HTML_Core.newtypeClassName)($13));
+  };
+  var checked = prop(Halogen_HTML_Core.booleanIsProp)("checked");  
+  var autofocus = prop(Halogen_HTML_Core.booleanIsProp)("autofocus");
+  var autocomplete = function ($14) {
+      return prop(Halogen_HTML_Core.onOffIsProp)("autocomplete")((function (b) {
+          if (b) {
+              return DOM_HTML_Indexed_OnOff.On.value;
+          };
+          return DOM_HTML_Indexed_OnOff.Off.value;
+      })($14));
+  };
+  var attr = Halogen_HTML_Core.attr(Data_Maybe.Nothing.value);
+  exports["prop"] = prop;
+  exports["attr"] = attr;
+  exports["class_"] = class_;
+  exports["rows"] = rows;
+  exports["for"] = $$for;
+  exports["href"] = href;
+  exports["id_"] = id_;
+  exports["name"] = name;
+  exports["target"] = target;
+  exports["title"] = title;
+  exports["type_"] = type_;
+  exports["value"] = value;
+  exports["required"] = required;
+  exports["checked"] = checked;
+  exports["autocomplete"] = autocomplete;
+  exports["autofocus"] = autofocus;
+})(PS["Halogen.HTML.Properties"] = PS["Halogen.HTML.Properties"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var DOM_HTML_Indexed = PS["DOM.HTML.Indexed"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
+  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
+  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
+  var Halogen_VDom = PS["Halogen.VDom"];
+  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var element = Halogen_HTML_Core.element(Data_Maybe.Nothing.value);
+  var form = element("form");
+  var input = function (props) {
+      return element("input")(props)([  ]);
+  };                   
+  var label = element("label");
+  var p = element("p");
+  var p_ = p([  ]);
+  var span = element("span");
+  var table = element("table");
+  var tbody = element("tbody");
+  var tbody_ = tbody([  ]);
+  var td = element("td");
+  var td_ = td([  ]);
+  var textarea = function (es) {
+      return element("textarea")(es)([  ]);
+  };                       
+  var tr = element("tr");
+  var tr_ = tr([  ]);
+  var div = element("div");
+  var div_ = div([  ]);
+  var button = element("button");
+  var br = function (props) {
+      return element("br")(props)([  ]);
+  };
+  var br_ = br([  ]);    
+  var a = element("a");
+  exports["element"] = element;
+  exports["a"] = a;
+  exports["br"] = br;
+  exports["br_"] = br_;
+  exports["button"] = button;
+  exports["div"] = div;
+  exports["div_"] = div_;
+  exports["form"] = form;
+  exports["input"] = input;
+  exports["label"] = label;
+  exports["p"] = p;
+  exports["p_"] = p_;
+  exports["span"] = span;
+  exports["table"] = table;
+  exports["tbody"] = tbody;
+  exports["tbody_"] = tbody_;
+  exports["td"] = td;
+  exports["td_"] = td_;
+  exports["textarea"] = textarea;
+  exports["tr"] = tr;
+  exports["tr_"] = tr_;
+})(PS["Halogen.HTML.Elements"] = PS["Halogen.HTML.Elements"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Halogen_Component = PS["Halogen.Component"];
+  var Halogen_Component_ChildPath = PS["Halogen.Component.ChildPath"];
+  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
+  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
+  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var slot = function (p) {
+      return function (component) {
+          return function (input) {
+              return function (outputQuery) {
+                  var f = Halogen_Component.unComponent(function (v) {
+                      return v.receiver;
+                  })(component);
+                  return Halogen_HTML_Core.slot(Halogen_Component.mkComponentSlot(p)(component)(input)(f)(outputQuery)(Data_Maybe.Just.create));
+              };
+          };
+      };
+  };
+  exports["slot"] = slot;
+})(PS["Halogen.HTML"] = PS["Halogen.HTML"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Apply = PS["Control.Apply"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_FoldableWithIndex = PS["Data.FoldableWithIndex"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_FunctorWithIndex = PS["Data.FunctorWithIndex"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_List = PS["Data.List"];
+  var Data_List_Lazy = PS["Data.List.Lazy"];
+  var Data_List_Lazy_Types = PS["Data.List.Lazy.Types"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_TraversableWithIndex = PS["Data.TraversableWithIndex"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];                 
+  var Leaf = (function () {
+      function Leaf() {
+
+      };
+      Leaf.value = new Leaf();
+      return Leaf;
+  })();
+  var Two = (function () {
+      function Two(value0, value1, value2, value3) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+          this.value3 = value3;
+      };
+      Two.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return function (value3) {
+                      return new Two(value0, value1, value2, value3);
+                  };
+              };
+          };
+      };
+      return Two;
+  })();
+  var Three = (function () {
+      function Three(value0, value1, value2, value3, value4, value5, value6) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+          this.value3 = value3;
+          this.value4 = value4;
+          this.value5 = value5;
+          this.value6 = value6;
+      };
+      Three.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return function (value3) {
+                      return function (value4) {
+                          return function (value5) {
+                              return function (value6) {
+                                  return new Three(value0, value1, value2, value3, value4, value5, value6);
+                              };
+                          };
+                      };
+                  };
+              };
+          };
+      };
+      return Three;
+  })();
+  var TwoLeft = (function () {
+      function TwoLeft(value0, value1, value2) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+      };
+      TwoLeft.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return new TwoLeft(value0, value1, value2);
+              };
+          };
+      };
+      return TwoLeft;
+  })();
+  var TwoRight = (function () {
+      function TwoRight(value0, value1, value2) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+      };
+      TwoRight.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return new TwoRight(value0, value1, value2);
+              };
+          };
+      };
+      return TwoRight;
+  })();
+  var ThreeLeft = (function () {
+      function ThreeLeft(value0, value1, value2, value3, value4, value5) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+          this.value3 = value3;
+          this.value4 = value4;
+          this.value5 = value5;
+      };
+      ThreeLeft.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return function (value3) {
+                      return function (value4) {
+                          return function (value5) {
+                              return new ThreeLeft(value0, value1, value2, value3, value4, value5);
+                          };
+                      };
+                  };
+              };
+          };
+      };
+      return ThreeLeft;
+  })();
+  var ThreeMiddle = (function () {
+      function ThreeMiddle(value0, value1, value2, value3, value4, value5) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+          this.value3 = value3;
+          this.value4 = value4;
+          this.value5 = value5;
+      };
+      ThreeMiddle.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return function (value3) {
+                      return function (value4) {
+                          return function (value5) {
+                              return new ThreeMiddle(value0, value1, value2, value3, value4, value5);
+                          };
+                      };
+                  };
+              };
+          };
+      };
+      return ThreeMiddle;
+  })();
+  var ThreeRight = (function () {
+      function ThreeRight(value0, value1, value2, value3, value4, value5) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+          this.value3 = value3;
+          this.value4 = value4;
+          this.value5 = value5;
+      };
+      ThreeRight.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return function (value3) {
+                      return function (value4) {
+                          return function (value5) {
+                              return new ThreeRight(value0, value1, value2, value3, value4, value5);
+                          };
+                      };
+                  };
+              };
+          };
+      };
+      return ThreeRight;
+  })();
+  var KickUp = (function () {
+      function KickUp(value0, value1, value2, value3) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+          this.value3 = value3;
+      };
+      KickUp.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return function (value3) {
+                      return new KickUp(value0, value1, value2, value3);
+                  };
+              };
+          };
+      };
+      return KickUp;
+  })();
+  var values = function (v) {
+      if (v instanceof Leaf) {
+          return Data_List_Types.Nil.value;
+      };
+      if (v instanceof Two) {
+          return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(values(v.value3)));
+      };
+      if (v instanceof Three) {
+          return Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value2))(Data_Semigroup.append(Data_List_Types.semigroupList)(values(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value5))(values(v.value6)))));
+      };
+      throw new Error("Failed pattern match at Data.Map.Internal line 594, column 1 - line 594, column 40: " + [ v.constructor.name ]);
+  };
+  var lookup = function (dictOrd) {
+      return function (k) {
+          var comp = Data_Ord.compare(dictOrd);
+          var go = function ($copy_v) {
+              var $tco_done = false;
+              var $tco_result;
+              function $tco_loop(v) {
+                  if (v instanceof Leaf) {
+                      $tco_done = true;
+                      return Data_Maybe.Nothing.value;
+                  };
+                  if (v instanceof Two) {
+                      var v2 = comp(k)(v.value1);
+                      if (v2 instanceof Data_Ordering.EQ) {
+                          $tco_done = true;
+                          return new Data_Maybe.Just(v.value2);
+                      };
+                      if (v2 instanceof Data_Ordering.LT) {
+                          $copy_v = v.value0;
+                          return;
+                      };
+                      $copy_v = v.value3;
+                      return;
+                  };
+                  if (v instanceof Three) {
+                      var v3 = comp(k)(v.value1);
+                      if (v3 instanceof Data_Ordering.EQ) {
+                          $tco_done = true;
+                          return new Data_Maybe.Just(v.value2);
+                      };
+                      var v4 = comp(k)(v.value4);
+                      if (v4 instanceof Data_Ordering.EQ) {
+                          $tco_done = true;
+                          return new Data_Maybe.Just(v.value5);
+                      };
+                      if (v3 instanceof Data_Ordering.LT) {
+                          $copy_v = v.value0;
+                          return;
+                      };
+                      if (v4 instanceof Data_Ordering.GT) {
+                          $copy_v = v.value6;
+                          return;
+                      };
+                      $copy_v = v.value3;
+                      return;
+                  };
+                  throw new Error("Failed pattern match at Data.Map.Internal line 193, column 5 - line 193, column 22: " + [ v.constructor.name ]);
+              };
+              while (!$tco_done) {
+                  $tco_result = $tco_loop($copy_v);
+              };
+              return $tco_result;
+          };
+          return go;
+      };
+  };
+  var member = function (dictOrd) {
+      return function (k) {
+          return function (m) {
+              return Data_Maybe.isJust(lookup(dictOrd)(k)(m));
+          };
+      };
+  };
+  var keys = function (v) {
+      if (v instanceof Leaf) {
+          return Data_List_Types.Nil.value;
+      };
+      if (v instanceof Two) {
+          return Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value1))(keys(v.value3)));
+      };
+      if (v instanceof Three) {
+          return Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value0))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value1))(Data_Semigroup.append(Data_List_Types.semigroupList)(keys(v.value3))(Data_Semigroup.append(Data_List_Types.semigroupList)(Control_Applicative.pure(Data_List_Types.applicativeList)(v.value4))(keys(v.value6)))));
+      };
+      throw new Error("Failed pattern match at Data.Map.Internal line 588, column 1 - line 588, column 38: " + [ v.constructor.name ]);
+  };
+  var functorMap = new Data_Functor.Functor(function (v) {
+      return function (v1) {
+          if (v1 instanceof Leaf) {
+              return Leaf.value;
+          };
+          if (v1 instanceof Two) {
+              return new Two(Data_Functor.map(functorMap)(v)(v1.value0), v1.value1, v(v1.value2), Data_Functor.map(functorMap)(v)(v1.value3));
+          };
+          if (v1 instanceof Three) {
+              return new Three(Data_Functor.map(functorMap)(v)(v1.value0), v1.value1, v(v1.value2), Data_Functor.map(functorMap)(v)(v1.value3), v1.value4, v(v1.value5), Data_Functor.map(functorMap)(v)(v1.value6));
+          };
+          throw new Error("Failed pattern match at Data.Map.Internal line 89, column 1 - line 89, column 39: " + [ v.constructor.name, v1.constructor.name ]);
+      };
+  });
+  var fromZipper = function ($copy_dictOrd) {
+      return function ($copy_v) {
+          return function ($copy_tree) {
+              var $tco_var_dictOrd = $copy_dictOrd;
+              var $tco_var_v = $copy_v;
+              var $tco_done = false;
+              var $tco_result;
+              function $tco_loop(dictOrd, v, tree) {
+                  if (v instanceof Data_List_Types.Nil) {
+                      $tco_done = true;
+                      return tree;
+                  };
+                  if (v instanceof Data_List_Types.Cons) {
+                      if (v.value0 instanceof TwoLeft) {
+                          $tco_var_dictOrd = dictOrd;
+                          $tco_var_v = v.value1;
+                          $copy_tree = new Two(tree, v.value0.value0, v.value0.value1, v.value0.value2);
+                          return;
+                      };
+                      if (v.value0 instanceof TwoRight) {
+                          $tco_var_dictOrd = dictOrd;
+                          $tco_var_v = v.value1;
+                          $copy_tree = new Two(v.value0.value0, v.value0.value1, v.value0.value2, tree);
+                          return;
+                      };
+                      if (v.value0 instanceof ThreeLeft) {
+                          $tco_var_dictOrd = dictOrd;
+                          $tco_var_v = v.value1;
+                          $copy_tree = new Three(tree, v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5);
+                          return;
+                      };
+                      if (v.value0 instanceof ThreeMiddle) {
+                          $tco_var_dictOrd = dictOrd;
+                          $tco_var_v = v.value1;
+                          $copy_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, tree, v.value0.value3, v.value0.value4, v.value0.value5);
+                          return;
+                      };
+                      if (v.value0 instanceof ThreeRight) {
+                          $tco_var_dictOrd = dictOrd;
+                          $tco_var_v = v.value1;
+                          $copy_tree = new Three(v.value0.value0, v.value0.value1, v.value0.value2, v.value0.value3, v.value0.value4, v.value0.value5, tree);
+                          return;
+                      };
+                      throw new Error("Failed pattern match at Data.Map.Internal line 411, column 3 - line 416, column 88: " + [ v.value0.constructor.name ]);
+                  };
+                  throw new Error("Failed pattern match at Data.Map.Internal line 408, column 1 - line 408, column 80: " + [ v.constructor.name, tree.constructor.name ]);
+              };
+              while (!$tco_done) {
+                  $tco_result = $tco_loop($tco_var_dictOrd, $tco_var_v, $copy_tree);
+              };
+              return $tco_result;
+          };
+      };
+  };
+  var insert = function (dictOrd) {
+      return function (k) {
+          return function (v) {
+              var up = function ($copy_v1) {
+                  return function ($copy_v2) {
+                      var $tco_var_v1 = $copy_v1;
+                      var $tco_done = false;
+                      var $tco_result;
+                      function $tco_loop(v1, v2) {
+                          if (v1 instanceof Data_List_Types.Nil) {
+                              $tco_done = true;
+                              return new Two(v2.value0, v2.value1, v2.value2, v2.value3);
+                          };
+                          if (v1 instanceof Data_List_Types.Cons) {
+                              if (v1.value0 instanceof TwoLeft) {
+                                  $tco_done = true;
+                                  return fromZipper(dictOrd)(v1.value1)(new Three(v2.value0, v2.value1, v2.value2, v2.value3, v1.value0.value0, v1.value0.value1, v1.value0.value2));
+                              };
+                              if (v1.value0 instanceof TwoRight) {
+                                  $tco_done = true;
+                                  return fromZipper(dictOrd)(v1.value1)(new Three(v1.value0.value0, v1.value0.value1, v1.value0.value2, v2.value0, v2.value1, v2.value2, v2.value3));
+                              };
+                              if (v1.value0 instanceof ThreeLeft) {
+                                  $tco_var_v1 = v1.value1;
+                                  $copy_v2 = new KickUp(new Two(v2.value0, v2.value1, v2.value2, v2.value3), v1.value0.value0, v1.value0.value1, new Two(v1.value0.value2, v1.value0.value3, v1.value0.value4, v1.value0.value5));
+                                  return;
+                              };
+                              if (v1.value0 instanceof ThreeMiddle) {
+                                  $tco_var_v1 = v1.value1;
+                                  $copy_v2 = new KickUp(new Two(v1.value0.value0, v1.value0.value1, v1.value0.value2, v2.value0), v2.value1, v2.value2, new Two(v2.value3, v1.value0.value3, v1.value0.value4, v1.value0.value5));
+                                  return;
+                              };
+                              if (v1.value0 instanceof ThreeRight) {
+                                  $tco_var_v1 = v1.value1;
+                                  $copy_v2 = new KickUp(new Two(v1.value0.value0, v1.value0.value1, v1.value0.value2, v1.value0.value3), v1.value0.value4, v1.value0.value5, new Two(v2.value0, v2.value1, v2.value2, v2.value3));
+                                  return;
+                              };
+                              throw new Error("Failed pattern match at Data.Map.Internal line 447, column 5 - line 452, column 108: " + [ v1.value0.constructor.name, v2.constructor.name ]);
+                          };
+                          throw new Error("Failed pattern match at Data.Map.Internal line 444, column 3 - line 444, column 56: " + [ v1.constructor.name, v2.constructor.name ]);
+                      };
+                      while (!$tco_done) {
+                          $tco_result = $tco_loop($tco_var_v1, $copy_v2);
+                      };
+                      return $tco_result;
+                  };
+              };
+              var comp = Data_Ord.compare(dictOrd);
+              var down = function ($copy_ctx) {
+                  return function ($copy_v1) {
+                      var $tco_var_ctx = $copy_ctx;
+                      var $tco_done = false;
+                      var $tco_result;
+                      function $tco_loop(ctx, v1) {
+                          if (v1 instanceof Leaf) {
+                              $tco_done = true;
+                              return up(ctx)(new KickUp(Leaf.value, k, v, Leaf.value));
+                          };
+                          if (v1 instanceof Two) {
+                              var v2 = comp(k)(v1.value1);
+                              if (v2 instanceof Data_Ordering.EQ) {
+                                  $tco_done = true;
+                                  return fromZipper(dictOrd)(ctx)(new Two(v1.value0, k, v, v1.value3));
+                              };
+                              if (v2 instanceof Data_Ordering.LT) {
+                                  $tco_var_ctx = new Data_List_Types.Cons(new TwoLeft(v1.value1, v1.value2, v1.value3), ctx);
+                                  $copy_v1 = v1.value0;
+                                  return;
+                              };
+                              $tco_var_ctx = new Data_List_Types.Cons(new TwoRight(v1.value0, v1.value1, v1.value2), ctx);
+                              $copy_v1 = v1.value3;
+                              return;
+                          };
+                          if (v1 instanceof Three) {
+                              var v3 = comp(k)(v1.value1);
+                              if (v3 instanceof Data_Ordering.EQ) {
+                                  $tco_done = true;
+                                  return fromZipper(dictOrd)(ctx)(new Three(v1.value0, k, v, v1.value3, v1.value4, v1.value5, v1.value6));
+                              };
+                              var v4 = comp(k)(v1.value4);
+                              if (v4 instanceof Data_Ordering.EQ) {
+                                  $tco_done = true;
+                                  return fromZipper(dictOrd)(ctx)(new Three(v1.value0, v1.value1, v1.value2, v1.value3, k, v, v1.value6));
+                              };
+                              if (v3 instanceof Data_Ordering.LT) {
+                                  $tco_var_ctx = new Data_List_Types.Cons(new ThreeLeft(v1.value1, v1.value2, v1.value3, v1.value4, v1.value5, v1.value6), ctx);
+                                  $copy_v1 = v1.value0;
+                                  return;
+                              };
+                              if (v3 instanceof Data_Ordering.GT && v4 instanceof Data_Ordering.LT) {
+                                  $tco_var_ctx = new Data_List_Types.Cons(new ThreeMiddle(v1.value0, v1.value1, v1.value2, v1.value4, v1.value5, v1.value6), ctx);
+                                  $copy_v1 = v1.value3;
+                                  return;
+                              };
+                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeRight(v1.value0, v1.value1, v1.value2, v1.value3, v1.value4, v1.value5), ctx);
+                              $copy_v1 = v1.value6;
+                              return;
+                          };
+                          throw new Error("Failed pattern match at Data.Map.Internal line 427, column 3 - line 427, column 55: " + [ ctx.constructor.name, v1.constructor.name ]);
+                      };
+                      while (!$tco_done) {
+                          $tco_result = $tco_loop($tco_var_ctx, $copy_v1);
+                      };
+                      return $tco_result;
+                  };
+              };
+              return down(Data_List_Types.Nil.value);
+          };
+      };
+  };
+  var pop = function (dictOrd) {
+      return function (k) {
+          var up = function (ctxs) {
+              return function (tree) {
+                  if (ctxs instanceof Data_List_Types.Nil) {
+                      return tree;
+                  };
+                  if (ctxs instanceof Data_List_Types.Cons) {
+                      var $__unused = function (dictPartial1) {
+                          return function ($dollar55) {
+                              return $dollar55;
+                          };
+                      };
+                      return $__unused()((function () {
+                          if (ctxs.value0 instanceof TwoLeft && (ctxs.value0.value2 instanceof Leaf && tree instanceof Leaf)) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value));
+                          };
+                          if (ctxs.value0 instanceof TwoRight && (ctxs.value0.value0 instanceof Leaf && tree instanceof Leaf)) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Two(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value));
+                          };
+                          if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Two) {
+                              return up(ctxs.value1)(new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3));
+                          };
+                          if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Two) {
+                              return up(ctxs.value1)(new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree));
+                          };
+                          if (ctxs.value0 instanceof TwoLeft && ctxs.value0.value2 instanceof Three) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6)));
+                          };
+                          if (ctxs.value0 instanceof TwoRight && ctxs.value0.value0 instanceof Three) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree)));
+                          };
+                          if (ctxs.value0 instanceof ThreeLeft && (ctxs.value0.value2 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value0, ctxs.value0.value1, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));
+                          };
+                          if (ctxs.value0 instanceof ThreeMiddle && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value5 instanceof Leaf && tree instanceof Leaf))) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value3, ctxs.value0.value4, Leaf.value));
+                          };
+                          if (ctxs.value0 instanceof ThreeRight && (ctxs.value0.value0 instanceof Leaf && (ctxs.value0.value3 instanceof Leaf && tree instanceof Leaf))) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Three(Leaf.value, ctxs.value0.value1, ctxs.value0.value2, Leaf.value, ctxs.value0.value4, ctxs.value0.value5, Leaf.value));
+                          };
+                          if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Two) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0, ctxs.value0.value2.value1, ctxs.value0.value2.value2, ctxs.value0.value2.value3), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
+                          };
+                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Two) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Two(new Three(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
+                          };
+                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Two) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0, ctxs.value0.value5.value1, ctxs.value0.value5.value2, ctxs.value0.value5.value3)));
+                          };
+                          if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Two) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Two(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Three(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3, ctxs.value0.value4, ctxs.value0.value5, tree)));
+                          };
+                          if (ctxs.value0 instanceof ThreeLeft && ctxs.value0.value2 instanceof Three) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(tree, ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2.value0), ctxs.value0.value2.value1, ctxs.value0.value2.value2, new Two(ctxs.value0.value2.value3, ctxs.value0.value2.value4, ctxs.value0.value2.value5, ctxs.value0.value2.value6), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
+                          };
+                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value0 instanceof Three) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Three(new Two(ctxs.value0.value0.value0, ctxs.value0.value0.value1, ctxs.value0.value0.value2, ctxs.value0.value0.value3), ctxs.value0.value0.value4, ctxs.value0.value0.value5, new Two(ctxs.value0.value0.value6, ctxs.value0.value1, ctxs.value0.value2, tree), ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5));
+                          };
+                          if (ctxs.value0 instanceof ThreeMiddle && ctxs.value0.value5 instanceof Three) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(tree, ctxs.value0.value3, ctxs.value0.value4, ctxs.value0.value5.value0), ctxs.value0.value5.value1, ctxs.value0.value5.value2, new Two(ctxs.value0.value5.value3, ctxs.value0.value5.value4, ctxs.value0.value5.value5, ctxs.value0.value5.value6)));
+                          };
+                          if (ctxs.value0 instanceof ThreeRight && ctxs.value0.value3 instanceof Three) {
+                              return fromZipper(dictOrd)(ctxs.value1)(new Three(ctxs.value0.value0, ctxs.value0.value1, ctxs.value0.value2, new Two(ctxs.value0.value3.value0, ctxs.value0.value3.value1, ctxs.value0.value3.value2, ctxs.value0.value3.value3), ctxs.value0.value3.value4, ctxs.value0.value3.value5, new Two(ctxs.value0.value3.value6, ctxs.value0.value4, ctxs.value0.value5, tree)));
+                          };
+                          throw new Error("Failed pattern match at Data.Map.Internal line 497, column 9 - line 514, column 136: " + [ ctxs.value0.constructor.name, tree.constructor.name ]);
+                      })());
+                  };
+                  throw new Error("Failed pattern match at Data.Map.Internal line 494, column 5 - line 514, column 136: " + [ ctxs.constructor.name ]);
+              };
+          };
+          var removeMaxNode = function (ctx) {
+              return function (m) {
+                  var $__unused = function (dictPartial1) {
+                      return function ($dollar57) {
+                          return $dollar57;
+                      };
+                  };
+                  return $__unused()((function () {
+                      if (m instanceof Two && (m.value0 instanceof Leaf && m.value3 instanceof Leaf)) {
+                          return up(ctx)(Leaf.value);
+                      };
+                      if (m instanceof Two) {
+                          return removeMaxNode(new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx))(m.value3);
+                      };
+                      if (m instanceof Three && (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf))) {
+                          return up(new Data_List_Types.Cons(new TwoRight(Leaf.value, m.value1, m.value2), ctx))(Leaf.value);
+                      };
+                      if (m instanceof Three) {
+                          return removeMaxNode(new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx))(m.value6);
+                      };
+                      throw new Error("Failed pattern match at Data.Map.Internal line 526, column 5 - line 530, column 107: " + [ m.constructor.name ]);
+                  })());
+              };
+          };
+          var maxNode = function (m) {
+              var $__unused = function (dictPartial1) {
+                  return function ($dollar59) {
+                      return $dollar59;
+                  };
+              };
+              return $__unused()((function () {
+                  if (m instanceof Two && m.value3 instanceof Leaf) {
+                      return {
+                          key: m.value1,
+                          value: m.value2
+                      };
+                  };
+                  if (m instanceof Two) {
+                      return maxNode(m.value3);
+                  };
+                  if (m instanceof Three && m.value6 instanceof Leaf) {
+                      return {
+                          key: m.value4,
+                          value: m.value5
+                      };
+                  };
+                  if (m instanceof Three) {
+                      return maxNode(m.value6);
+                  };
+                  throw new Error("Failed pattern match at Data.Map.Internal line 517, column 33 - line 521, column 45: " + [ m.constructor.name ]);
+              })());
+          };
+          var comp = Data_Ord.compare(dictOrd);
+          var down = function ($copy_ctx) {
+              return function ($copy_m) {
+                  var $tco_var_ctx = $copy_ctx;
+                  var $tco_done = false;
+                  var $tco_result;
+                  function $tco_loop(ctx, m) {
+                      if (m instanceof Leaf) {
+                          $tco_done = true;
+                          return Data_Maybe.Nothing.value;
+                      };
+                      if (m instanceof Two) {
+                          var v = comp(k)(m.value1);
+                          if (m.value3 instanceof Leaf && v instanceof Data_Ordering.EQ) {
+                              $tco_done = true;
+                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, up(ctx)(Leaf.value)));
+                          };
+                          if (v instanceof Data_Ordering.EQ) {
+                              var max = maxNode(m.value0);
+                              $tco_done = true;
+                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new TwoLeft(max.key, max.value, m.value3), ctx))(m.value0)));
+                          };
+                          if (v instanceof Data_Ordering.LT) {
+                              $tco_var_ctx = new Data_List_Types.Cons(new TwoLeft(m.value1, m.value2, m.value3), ctx);
+                              $copy_m = m.value0;
+                              return;
+                          };
+                          $tco_var_ctx = new Data_List_Types.Cons(new TwoRight(m.value0, m.value1, m.value2), ctx);
+                          $copy_m = m.value3;
+                          return;
+                      };
+                      if (m instanceof Three) {
+                          var leaves = (function () {
+                              if (m.value0 instanceof Leaf && (m.value3 instanceof Leaf && m.value6 instanceof Leaf)) {
+                                  return true;
+                              };
+                              return false;
+                          })();
+                          var v = comp(k)(m.value4);
+                          var v3 = comp(k)(m.value1);
+                          if (leaves && v3 instanceof Data_Ordering.EQ) {
+                              $tco_done = true;
+                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value4, m.value5, Leaf.value))));
+                          };
+                          if (leaves && v instanceof Data_Ordering.EQ) {
+                              $tco_done = true;
+                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, fromZipper(dictOrd)(ctx)(new Two(Leaf.value, m.value1, m.value2, Leaf.value))));
+                          };
+                          if (v3 instanceof Data_Ordering.EQ) {
+                              var max = maxNode(m.value0);
+                              $tco_done = true;
+                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value2, removeMaxNode(new Data_List_Types.Cons(new ThreeLeft(max.key, max.value, m.value3, m.value4, m.value5, m.value6), ctx))(m.value0)));
+                          };
+                          if (v instanceof Data_Ordering.EQ) {
+                              var max = maxNode(m.value3);
+                              $tco_done = true;
+                              return new Data_Maybe.Just(new Data_Tuple.Tuple(m.value5, removeMaxNode(new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, max.key, max.value, m.value6), ctx))(m.value3)));
+                          };
+                          if (v3 instanceof Data_Ordering.LT) {
+                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeLeft(m.value1, m.value2, m.value3, m.value4, m.value5, m.value6), ctx);
+                              $copy_m = m.value0;
+                              return;
+                          };
+                          if (v3 instanceof Data_Ordering.GT && v instanceof Data_Ordering.LT) {
+                              $tco_var_ctx = new Data_List_Types.Cons(new ThreeMiddle(m.value0, m.value1, m.value2, m.value4, m.value5, m.value6), ctx);
+                              $copy_m = m.value3;
+                              return;
+                          };
+                          $tco_var_ctx = new Data_List_Types.Cons(new ThreeRight(m.value0, m.value1, m.value2, m.value3, m.value4, m.value5), ctx);
+                          $copy_m = m.value6;
+                          return;
+                      };
+                      throw new Error("Failed pattern match at Data.Map.Internal line 467, column 34 - line 490, column 80: " + [ m.constructor.name ]);
+                  };
+                  while (!$tco_done) {
+                      $tco_result = $tco_loop($tco_var_ctx, $copy_m);
+                  };
+                  return $tco_result;
+              };
+          };
+          return down(Data_List_Types.Nil.value);
+      };
+  };
+  var foldableMap = new Data_Foldable.Foldable(function (dictMonoid) {
+      return function (f) {
+          return function (m) {
+              return Data_Foldable.foldMap(Data_List_Types.foldableList)(dictMonoid)(f)(values(m));
+          };
+      };
+  }, function (f) {
+      return function (z) {
+          return function (m) {
+              return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(z)(values(m));
+          };
+      };
+  }, function (f) {
+      return function (z) {
+          return function (m) {
+              return Data_Foldable.foldr(Data_List_Types.foldableList)(f)(z)(values(m));
+          };
+      };
+  });
+  var empty = Leaf.value;
+  var $$delete = function (dictOrd) {
+      return function (k) {
+          return function (m) {
+              return Data_Maybe.maybe(m)(Data_Tuple.snd)(pop(dictOrd)(k)(m));
+          };
+      };
+  }; 
+  var alter = function (dictOrd) {
+      return function (f) {
+          return function (k) {
+              return function (m) {
+                  var v = f(lookup(dictOrd)(k)(m));
+                  if (v instanceof Data_Maybe.Nothing) {
+                      return $$delete(dictOrd)(k)(m);
+                  };
+                  if (v instanceof Data_Maybe.Just) {
+                      return insert(dictOrd)(k)(v.value0)(m);
+                  };
+                  throw new Error("Failed pattern match at Data.Map.Internal line 535, column 15 - line 537, column 25: " + [ v.constructor.name ]);
+              };
+          };
+      };
+  };
+  exports["empty"] = empty;
+  exports["insert"] = insert;
+  exports["lookup"] = lookup;
+  exports["delete"] = $$delete;
+  exports["pop"] = pop;
+  exports["member"] = member;
+  exports["alter"] = alter;
+  exports["keys"] = keys;
+  exports["values"] = values;
+  exports["functorMap"] = functorMap;
+  exports["foldableMap"] = foldableMap;
+})(PS["Data.Map.Internal"] = PS["Data.Map.Internal"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Monad_ST = PS["Control.Monad.ST"];
+  var Control_Monad_ST_Internal = PS["Control.Monad.ST.Internal"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Array_ST = PS["Data.Array.ST"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_List = PS["Data.List"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Map_Internal = PS["Data.Map.Internal"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ordering = PS["Data.Ordering"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Data_Unit = PS["Data.Unit"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];
+  var toList = function (v) {
+      return Data_Map_Internal.keys(v);
+  };
+  var foldableSet = new Data_Foldable.Foldable(function (dictMonoid) {
+      return function (f) {
+          return function ($59) {
+              return Data_Foldable.foldMap(Data_List_Types.foldableList)(dictMonoid)(f)(toList($59));
+          };
+      };
+  }, function (f) {
+      return function (x) {
+          return function ($60) {
+              return Data_Foldable.foldl(Data_List_Types.foldableList)(f)(x)(toList($60));
+          };
+      };
+  }, function (f) {
+      return function (x) {
+          return function ($61) {
+              return Data_Foldable.foldr(Data_List_Types.foldableList)(f)(x)(toList($61));
+          };
+      };
+  });
+  exports["foldableSet"] = foldableSet;
+})(PS["Data.Set"] = PS["Data.Set"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Map_Internal = PS["Data.Map.Internal"];
+  var Data_Set = PS["Data.Set"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];                 
+  var keys = function ($0) {
+      return Data_Functor["void"](Data_Map_Internal.functorMap)($0);
+  };
+  exports["keys"] = keys;
+})(PS["Data.Map"] = PS["Data.Map"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Parallel = PS["Control.Parallel"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_List = PS["Data.List"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Map = PS["Data.Map"];
+  var Data_Map_Internal = PS["Data.Map.Internal"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect_Aff_Class = PS["Effect.Aff.Class"];
+  var Effect_Class = PS["Effect.Class"];
+  var Halogen_Component_ChildPath = PS["Halogen.Component.ChildPath"];
+  var Halogen_Query_EventSource = PS["Halogen.Query.EventSource"];
+  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
+  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
+  var Prelude = PS["Prelude"];
+  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
+  var action = function (act) {
+      return act(Data_Unit.unit);
+  };
+  exports["action"] = action;
+})(PS["Halogen.Query"] = PS["Halogen.Query"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Web_Event_Event = PS["Web.Event.Event"];
+  var change = "change";
+  exports["change"] = change;
+})(PS["Web.HTML.Event.EventTypes"] = PS["Web.HTML.Event.EventTypes"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Web_Event_Event = PS["Web.Event.Event"];
+  var click = "click";
+  exports["click"] = click;
+})(PS["Web.UIEvent.MouseEvent.EventTypes"] = PS["Web.UIEvent.MouseEvent.EventTypes"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_Except = PS["Control.Monad.Except"];
+  var Control_Monad_Except_Trans = PS["Control.Monad.Except.Trans"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Identity = PS["Data.Identity"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Foreign = PS["Foreign"];
+  var Foreign_Index = PS["Foreign.Index"];
+  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
+  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
+  var Halogen_Query = PS["Halogen.Query"];
+  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_Clipboard_ClipboardEvent = PS["Web.Clipboard.ClipboardEvent"];
+  var Web_Clipboard_ClipboardEvent_EventTypes = PS["Web.Clipboard.ClipboardEvent.EventTypes"];
+  var Web_Event_Event = PS["Web.Event.Event"];
+  var Web_HTML_Event_DragEvent = PS["Web.HTML.Event.DragEvent"];
+  var Web_HTML_Event_DragEvent_EventTypes = PS["Web.HTML.Event.DragEvent.EventTypes"];
+  var Web_HTML_Event_EventTypes = PS["Web.HTML.Event.EventTypes"];
+  var Web_TouchEvent_TouchEvent = PS["Web.TouchEvent.TouchEvent"];
+  var Web_UIEvent_FocusEvent = PS["Web.UIEvent.FocusEvent"];
+  var Web_UIEvent_FocusEvent_EventTypes = PS["Web.UIEvent.FocusEvent.EventTypes"];
+  var Web_UIEvent_KeyboardEvent = PS["Web.UIEvent.KeyboardEvent"];
+  var Web_UIEvent_KeyboardEvent_EventTypes = PS["Web.UIEvent.KeyboardEvent.EventTypes"];
+  var Web_UIEvent_MouseEvent = PS["Web.UIEvent.MouseEvent"];
+  var Web_UIEvent_MouseEvent_EventTypes = PS["Web.UIEvent.MouseEvent.EventTypes"];
+  var Web_UIEvent_WheelEvent = PS["Web.UIEvent.WheelEvent"];
+  var Web_UIEvent_WheelEvent_EventTypes = PS["Web.UIEvent.WheelEvent.EventTypes"];
+  var mouseHandler = Unsafe_Coerce.unsafeCoerce;
+  var input_ = function (f) {
+      return function (v) {
+          return Data_Maybe.Just.create(Halogen_Query.action(f));
+      };
+  };
+  var input = function (f) {
+      return function (x) {
+          return Data_Maybe.Just.create(Halogen_Query.action(f(x)));
+      };
+  };
+  var handler = function (et) {
+      return function ($1) {
+          return Halogen_HTML_Core.handler(et)(Data_Functor.map(Data_Functor.functorFn)(Data_Functor.map(Data_Maybe.functorMaybe)(Halogen_Query_InputF.Query.create))($1));
+      };
+  };                                                       
+  var onClick = function ($2) {
+      return handler(Web_UIEvent_MouseEvent_EventTypes.click)(mouseHandler($2));
+  };                                                       
+  var onSubmit = handler("submit");
+  var addForeignPropHandler = function (key) {
+      return function (prop) {
+          return function (reader) {
+              return function (f) {
+                  var go = function (a) {
+                      return Control_Bind.composeKleisliFlipped(Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity))(reader)(Foreign_Index.readProp(prop))(Foreign.unsafeToForeign(a));
+                  };
+                  return handler(key)(Control_Bind.composeKleisli(Data_Maybe.bindMaybe)(Web_Event_Event.currentTarget)(function (e) {
+                      return Data_Either.either(Data_Function["const"](Data_Maybe.Nothing.value))(f)(Control_Monad_Except.runExcept(go(e)));
+                  }));
+              };
+          };
+      };
+  };
+  var onChecked = addForeignPropHandler(Web_HTML_Event_EventTypes.change)("checked")(Foreign.readBoolean);              
+  var onValueChange = addForeignPropHandler(Web_HTML_Event_EventTypes.change)("value")(Foreign.readString);
+  exports["input"] = input;
+  exports["input_"] = input_;
+  exports["handler"] = handler;
+  exports["onSubmit"] = onSubmit;
+  exports["onClick"] = onClick;
+  exports["onValueChange"] = onValueChange;
+  exports["onChecked"] = onChecked;
+})(PS["Halogen.HTML.Events"] = PS["Halogen.HTML.Events"] || {});
+(function(exports) {
+    "use strict";
+  /* global Symbol */
+
+  var hasArrayFrom = typeof Array.from === "function";
+  var hasStringIterator =
+    typeof Symbol !== "undefined" &&
+    Symbol != null &&
+    typeof Symbol.iterator !== "undefined" &&
+    typeof String.prototype[Symbol.iterator] === "function";
+  var hasFromCodePoint = typeof String.prototype.fromCodePoint === "function";
+  var hasCodePointAt = typeof String.prototype.codePointAt === "function";
+
+  exports._unsafeCodePointAt0 = function (fallback) {
+    return hasCodePointAt
+      ? function (str) { return str.codePointAt(0); }
+      : fallback;
+  };
+
+  exports._singleton = function (fallback) {
+    return hasFromCodePoint ? String.fromCodePoint : fallback;
+  };
+
+  exports._take = function (fallback) {
+    return function (n) {
+      if (hasStringIterator) {
+        return function (str) {
+          var accum = "";
+          var iter = str[Symbol.iterator]();
+          for (var i = 0; i < n; ++i) {
+            var o = iter.next();
+            if (o.done) return accum;
+            accum += o.value;
+          }
+          return accum;
+        };
+      }
+      return fallback(n);
+    };
+  };
+
+  exports._toCodePointArray = function (fallback) {
+    return function (unsafeCodePointAt0) {
+      if (hasArrayFrom) {
+        return function (str) {
+          return Array.from(str, unsafeCodePointAt0);
+        };
+      }
+      return fallback;
+    };
+  };
+})(PS["Data.String.CodePoints"] = PS["Data.String.CodePoints"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Data.String.CodePoints"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Bounded = PS["Data.Bounded"];
+  var Data_Enum = PS["Data.Enum"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_EuclideanRing = PS["Data.EuclideanRing"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Int = PS["Data.Int"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Ring = PS["Data.Ring"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Show = PS["Data.Show"];
+  var Data_String_CodeUnits = PS["Data.String.CodeUnits"];
+  var Data_String_Common = PS["Data.String.Common"];
+  var Data_String_Pattern = PS["Data.String.Pattern"];
+  var Data_String_Unsafe = PS["Data.String.Unsafe"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unfoldable = PS["Data.Unfoldable"];
+  var Prelude = PS["Prelude"];
+  var unsurrogate = function (lead) {
+      return function (trail) {
+          return (((lead - 55296 | 0) * 1024 | 0) + (trail - 56320 | 0) | 0) + 65536 | 0;
+      };
+  }; 
+  var isTrail = function (cu) {
+      return 56320 <= cu && cu <= 57343;
+  };
+  var isLead = function (cu) {
+      return 55296 <= cu && cu <= 56319;
+  };
+  var uncons = function (s) {
+      var v = Data_String_CodeUnits.length(s);
+      if (v === 0) {
+          return Data_Maybe.Nothing.value;
+      };
+      if (v === 1) {
+          return new Data_Maybe.Just({
+              head: Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s)),
+              tail: ""
+          });
+      };
+      var cu1 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(1)(s));
+      var cu0 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s));
+      var $21 = isLead(cu0) && isTrail(cu1);
+      if ($21) {
+          return new Data_Maybe.Just({
+              head: unsurrogate(cu0)(cu1),
+              tail: Data_String_CodeUnits.drop(2)(s)
+          });
+      };
+      return new Data_Maybe.Just({
+          head: cu0,
+          tail: Data_String_CodeUnits.drop(1)(s)
+      });
+  };
+  var unconsButWithTuple = function (s) {
+      return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) {
+          return new Data_Tuple.Tuple(v.head, v.tail);
+      })(uncons(s));
+  };
+  var toCodePointArrayFallback = function (s) {
+      return Data_Unfoldable.unfoldr(Data_Unfoldable.unfoldableArray)(unconsButWithTuple)(s);
+  };
+  var unsafeCodePointAt0Fallback = function (s) {
+      var cu1 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(1)(s));
+      var cu0 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s));
+      var $25 = isLead(cu0) && isTrail(cu1);
+      if ($25) {
+          return unsurrogate(cu0)(cu1);
+      };
+      return cu0;
+  };
+  var unsafeCodePointAt0 = $foreign._unsafeCodePointAt0(unsafeCodePointAt0Fallback);
+  var toCodePointArray = $foreign._toCodePointArray(toCodePointArrayFallback)(unsafeCodePointAt0);
+  var length = function ($51) {
+      return Data_Array.length(toCodePointArray($51));
+  };
+  var fromCharCode = function ($52) {
+      return Data_String_CodeUnits.singleton(Data_Enum.toEnumWithDefaults(Data_Enum.boundedEnumChar)(Data_Bounded.bottom(Data_Bounded.boundedChar))(Data_Bounded.top(Data_Bounded.boundedChar))($52));
+  };
+  var singletonFallback = function (v) {
+      if (v <= 65535) {
+          return fromCharCode(v);
+      };
+      var lead = Data_EuclideanRing.div(Data_EuclideanRing.euclideanRingInt)(v - 65536 | 0)(1024) + 55296 | 0;
+      var trail = Data_EuclideanRing.mod(Data_EuclideanRing.euclideanRingInt)(v - 65536 | 0)(1024) + 56320 | 0;
+      return fromCharCode(lead) + fromCharCode(trail);
+  };                                                                       
+  var singleton = $foreign._singleton(singletonFallback);
+  var takeFallback = function (n) {
+      return function (v) {
+          if (n < 1) {
+              return "";
+          };
+          var v1 = uncons(v);
+          if (v1 instanceof Data_Maybe.Just) {
+              return singleton(v1.value0.head) + takeFallback(n - 1 | 0)(v1.value0.tail);
+          };
+          return v;
+      };
+  };
+  var take = $foreign._take(takeFallback);
+  var drop = function (n) {
+      return function (s) {
+          return Data_String_CodeUnits.drop(Data_String_CodeUnits.length(take(n)(s)))(s);
+      };
+  };
+  exports["singleton"] = singleton;
+  exports["toCodePointArray"] = toCodePointArray;
+  exports["uncons"] = uncons;
+  exports["length"] = length;
+  exports["take"] = take;
+  exports["drop"] = drop;
+})(PS["Data.String.CodePoints"] = PS["Data.String.CodePoints"] || {});
+(function(exports) {
+    "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_Maybe_Trans = PS["Control.Monad.Maybe.Trans"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_String = PS["Data.String"];
+  var Data_String_CodePoints = PS["Data.String.CodePoints"];
+  var Data_String_Common = PS["Data.String.Common"];
+  var Data_String_Pattern = PS["Data.String.Pattern"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Effect = PS["Effect"];
+  var Global_Unsafe = PS["Global.Unsafe"];
+  var Halogen_HTML = PS["Halogen.HTML"];
+  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
+  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
+  var Partial_Unsafe = PS["Partial.Unsafe"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM = PS["Web.DOM"];
+  var Web_DOM_Document = PS["Web.DOM.Document"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var Web_DOM_NodeList = PS["Web.DOM.NodeList"];
+  var Web_DOM_NonElementParentNode = PS["Web.DOM.NonElementParentNode"];
+  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
+  var Web_HTML = PS["Web.HTML"];
+  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
+  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
+  var Web_HTML_Location = PS["Web.HTML.Location"];
+  var Web_HTML_Window = PS["Web.HTML.Window"];                 
+
+  // Halogen
+  var class_ = function ($54) {
+      return Halogen_HTML_Properties.class_(Halogen_HTML_Core.ClassName($54));
+  };
+  var attr = function (a) {
+      return Halogen_HTML_Properties.attr(a);
+  };
+  var _querySelectorAll = function (s) {
+      return function (n) {
+          return Control_Bind.bindFlipped(Effect.bindEffect)(Web_DOM_NodeList.toArray)(Web_DOM_ParentNode.querySelectorAll(s)(Web_DOM_Element.toParentNode(n)));
+      };
+  };
+  var _querySelector = function (s) {
+      return function (n) {
+          return Web_DOM_ParentNode.querySelector(s)(Web_DOM_Element.toParentNode(n));
+      };
+  };
+  var _queryBoth$prime$prime = function (v) {
+      return function (v1) {
+          return function (f) {
+              return function __do() {
+                  var v2 = _querySelectorAll(v.value0)(v.value1)();
+                  var v3 = _querySelectorAll(v1.value0)(v1.value1)();
+                  return f(v2)(v3)();
+              };
+          };
+      };
+  };
+  var _queryBoth$prime = function (v) {
+      return function (v1) {
+          return function (f) {
+              return function __do() {
+                  var v2 = _querySelector(v.value0)(v.value1)();
+                  var v3 = _querySelectorAll(v1.value0)(v1.value1)();
+                  return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(v2)(function (a) {
+                      return f(a)(v3);
+                  })();
+              };
+          };
+      };
+  };
+
+  // Util
+  var _queryBoth = function (v) {
+      return function (v1) {
+          return function (f) {
+              return function __do() {
+                  var v2 = _querySelector(v.value0)(v.value1)();
+                  var v3 = _querySelector(v1.value0)(v1.value1)();
+                  return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(v2)(function (a) {
+                      return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(v3)(function (b) {
+                          return f(a)(b);
+                      });
+                  })();
+              };
+          };
+      };
+  };
+  var _parseQueryString = function (srh) {
+      var decode = function ($55) {
+          return Global_Unsafe.unsafeDecodeURIComponent(Data_String_Common.replaceAll("+")(" ")($55));
+      };
+      var go = function (kv) {
+          var v = Data_String_Common.split("=")(kv);
+          if (v.length === 1) {
+              return new Data_Maybe.Just(new Data_Tuple.Tuple(decode(v[0]), Data_Maybe.Nothing.value));
+          };
+          if (v.length === 2) {
+              return new Data_Maybe.Just(new Data_Tuple.Tuple(decode(v[0]), new Data_Maybe.Just(decode(v[1]))));
+          };
+          return Data_Maybe.Nothing.value;
+      };
+      var qs = (function () {
+          var srh$prime = Data_String_CodePoints.take(1)(srh);
+          var $51 = srh$prime === "#" || srh$prime === "?";
+          if ($51) {
+              return Data_String_CodePoints.drop(1)(srh);
+          };
+          return srh;
+      })();
+      return Data_Array.mapMaybe(go)(Data_Array.filter(function (v) {
+          return v !== "";
+      })(Data_String_Common.split("&")(qs)));
+  };
+  var _mt_pure = function ($56) {
+      return Control_Monad_Maybe_Trans.MaybeT(Control_Applicative.pure(Effect.applicativeEffect)($56));
+  };
+  var _mt = Control_Monad_Maybe_Trans.MaybeT;
+  var _lookupQueryStringValue = function (qs) {
+      return function (k) {
+          return Control_Bind.join(Data_Maybe.bindMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Tuple.snd)(Data_Foldable.find(Data_Foldable.foldableArray)(function ($57) {
+              return (function (v) {
+                  return v === k;
+              })(Data_Tuple.fst($57));
+          })(qs)));
+      };
+  };
+  var _loc = Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.location)(Web_HTML.window);
+  var _getElementById = function (s) {
+      return function ($58) {
+          return Web_DOM_NonElementParentNode.getElementById(s)(Web_DOM_Document.toNonElementParentNode(Web_HTML_HTMLDocument.toDocument($58)));
+      };
+  };
+  var _fromNode = function (e) {
+      return Data_Maybe.fromJust()(Web_DOM_Element.fromNode(e));
+  };
+  var _fromElement = function (e) {
+      return Data_Maybe.fromJust()(Web_HTML_HTMLElement.fromElement(e));
+  };
+  var _doc = Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.document)(Web_HTML.window);
+  var _curQuerystring = function __do() {
+      var v = _loc();
+      var v1 = Web_HTML_Location.search(v)();
+      return _parseQueryString(v1);
+  };
+  var _body = Control_Bind.bindFlipped(Effect.bindEffect)(function ($59) {
+      return Control_Applicative.pure(Effect.applicativeEffect)(Data_Maybe.fromJust()($59));
+  })(Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_HTMLDocument.body)(_doc));
+  exports["class_"] = class_;
+  exports["attr"] = attr;
+  exports["_queryBoth"] = _queryBoth;
+  exports["_queryBoth'"] = _queryBoth$prime;
+  exports["_queryBoth''"] = _queryBoth$prime$prime;
+  exports["_querySelector"] = _querySelector;
+  exports["_querySelectorAll"] = _querySelectorAll;
+  exports["_fromNode"] = _fromNode;
+  exports["_fromElement"] = _fromElement;
+  exports["_getElementById"] = _getElementById;
+  exports["_doc"] = _doc;
+  exports["_loc"] = _loc;
+  exports["_curQuerystring"] = _curQuerystring;
+  exports["_parseQueryString"] = _parseQueryString;
+  exports["_lookupQueryStringValue"] = _lookupQueryStringValue;
+  exports["_body"] = _body;
+  exports["_mt"] = _mt;
+  exports["_mt_pure"] = _mt_pure;
+})(PS["Util"] = PS["Util"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var App = PS["App"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
+  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_String = PS["Data.String"];
+  var Data_String_Common = PS["Data.String.Common"];
+  var Data_String_Pattern = PS["Data.String.Pattern"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Aff_Class = PS["Effect.Aff.Class"];
+  var Effect_Class = PS["Effect.Class"];
+  var Globals = PS["Globals"];
+  var Halogen = PS["Halogen"];
+  var Halogen_Component = PS["Halogen.Component"];
+  var Halogen_HTML = PS["Halogen.HTML"];
+  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
+  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
+  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
+  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
+  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
+  var Model = PS["Model"];
+  var Prelude = PS["Prelude"];
+  var Util = PS["Util"];
+  var Web_Event_Event = PS["Web.Event.Event"];
+  var Web_HTML = PS["Web.HTML"];
+  var Web_HTML_Location = PS["Web.HTML.Location"];                 
+  var Eurl = (function () {
+      function Eurl(value0) {
+          this.value0 = value0;
+      };
+      Eurl.create = function (value0) {
+          return new Eurl(value0);
+      };
+      return Eurl;
+  })();
+  var Etitle = (function () {
+      function Etitle(value0) {
+          this.value0 = value0;
+      };
+      Etitle.create = function (value0) {
+          return new Etitle(value0);
+      };
+      return Etitle;
+  })();
+  var Edescription = (function () {
+      function Edescription(value0) {
+          this.value0 = value0;
+      };
+      Edescription.create = function (value0) {
+          return new Edescription(value0);
+      };
+      return Edescription;
+  })();
+  var Etags = (function () {
+      function Etags(value0) {
+          this.value0 = value0;
+      };
+      Etags.create = function (value0) {
+          return new Etags(value0);
+      };
+      return Etags;
+  })();
+  var Eprivate = (function () {
+      function Eprivate(value0) {
+          this.value0 = value0;
+      };
+      Eprivate.create = function (value0) {
+          return new Eprivate(value0);
+      };
+      return Eprivate;
+  })();
+  var Etoread = (function () {
+      function Etoread(value0) {
+          this.value0 = value0;
+      };
+      Etoread.create = function (value0) {
+          return new Etoread(value0);
+      };
+      return Etoread;
+  })();
+  var BEditField = (function () {
+      function BEditField(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      BEditField.create = function (value0) {
+          return function (value1) {
+              return new BEditField(value0, value1);
+          };
+      };
+      return BEditField;
+  })();
+  var BEditSubmit = (function () {
+      function BEditSubmit(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      BEditSubmit.create = function (value0) {
+          return function (value1) {
+              return new BEditSubmit(value0, value1);
+          };
+      };
+      return BEditSubmit;
+  })();
+  var BDeleteAsk = (function () {
+      function BDeleteAsk(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      BDeleteAsk.create = function (value0) {
+          return function (value1) {
+              return new BDeleteAsk(value0, value1);
+          };
+      };
+      return BDeleteAsk;
+  })();
+  var BDestroy = (function () {
+      function BDestroy(value0) {
+          this.value0 = value0;
+      };
+      BDestroy.create = function (value0) {
+          return new BDestroy(value0);
+      };
+      return BDestroy;
+  })();
+  var addbmark = function (b$prime) {
+      var render = function (v) {
+          var toTextarea = function ($59) {
+              return Data_Array.drop(1)(Data_Foldable.foldMap(Data_Foldable.foldableArray)(Data_Monoid.monoidArray)(function (x) {
+                  return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];
+              })(Data_String_Common.split("\x0a")($59)));
+          };
+          var mmoment = Globals.mmoment8601(v.bm.time);
+          var editField = function (f) {
+              return function ($60) {
+                  return Halogen_HTML_Events.input(BEditField.create)(f($60));
+              };
+          };
+          var display_exists = Halogen_HTML_Elements.div([ Util.class_("alert") ])([ Halogen_HTML_Core.text("previously saved\xa0"), Halogen_HTML_Elements.span([ Util.class_("link f7 dib gray pr3"), Halogen_HTML_Properties.title(Data_Maybe.maybe(v.bm.time)(Data_Tuple.snd)(mmoment)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe("\xa0")(Data_Tuple.fst)(mmoment)) ]), Halogen_HTML_Elements.div([ Util.class_("edit_links dib ml1") ])([ Halogen_HTML_Elements.div([ Util.class_("delete_link di") ])([ Halogen_HTML_Elements.button(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(true))), Util.class_("delete") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(v.deleteAsk)([ Util.attr("hidden")("hidden") ])))([ Halogen_HTML_Core.text("delete") ]), Halogen_HTML_Elements.span(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Util.class_("confirm red") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(!v.deleteAsk)([ Util.attr("hidden")("hidden") ])))([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(false))) ])([ Halogen_HTML_Core.text("cancel\xa0/\xa0") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDestroy.create)), Util.class_("red") ])([ Halogen_HTML_Core.text("destroy") ]) ]) ]) ]) ]);
+          var display_edit = Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(Halogen_HTML_Events.input(BEditSubmit.create)) ])([ Halogen_HTML_Elements.table([ Util.class_("w-100") ])([ Halogen_HTML_Elements.tbody_([ Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td([ Util.class_("w1") ])([  ]), Halogen_HTML_Elements.td_(Data_Monoid.guard(Data_Monoid.monoidArray)(v.bm.bid > 0)([ display_exists ])) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("url") ])([ Halogen_HTML_Core.text("URL") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputUrl.value), Halogen_HTML_Properties.id_("url"), Util.class_("w-100 mv1"), Halogen_HTML_Properties.required(true), Halogen_HTML_Properties.name("url"), Halogen_HTML_Properties.autofocus(Data_String_Common["null"](v.bm.url)), Halogen_HTML_Properties.value(v.edit_bm.url), Halogen_HTML_Events.onValueChange(editField(Eurl.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("title") ])([ Halogen_HTML_Core.text("title") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Halogen_HTML_Properties.id_("title"), Util.class_("w-100 mv1"), Halogen_HTML_Properties.name("title"), Halogen_HTML_Properties.value(v.edit_bm.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("description") ])([ Halogen_HTML_Core.text("description") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.textarea([ Util.class_("w-100 mt1 mid-gray"), Halogen_HTML_Properties.id_("description"), Halogen_HTML_Properties.name("description"), Halogen_HTML_Properties.rows(4), Halogen_HTML_Properties.value(v.edit_bm.description), Halogen_HTML_Events.onValueChange(editField(Edescription.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("tags") ])([ Halogen_HTML_Core.text("tags") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Halogen_HTML_Properties.id_("tags"), Util.class_("w-100 mv1"), Halogen_HTML_Properties.name("tags"), Halogen_HTML_Properties.autocomplete(false), Util.attr("autocapitalize")("off"), Halogen_HTML_Properties.autofocus(!Data_String_Common["null"](v.bm.url)), Halogen_HTML_Properties.value(v.edit_bm.tags), Halogen_HTML_Events.onValueChange(editField(Etags.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("private") ])([ Halogen_HTML_Core.text("private") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Halogen_HTML_Properties.id_("private"), Util.class_("private pointer"), Halogen_HTML_Properties.name("private"), Halogen_HTML_Properties.checked(v["edit_bm"]["private"]), Halogen_HTML_Events.onChecked(editField(Eprivate.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("toread") ])([ Halogen_HTML_Core.text("read later") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Halogen_HTML_Properties.id_("toread"), Util.class_("toread pointer"), Halogen_HTML_Properties.name("toread"), Halogen_HTML_Properties.checked(v.edit_bm.toread), Halogen_HTML_Events.onChecked(editField(Etoread.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([  ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_("ph3 pv2 input-reset ba b--navy bg-transparent pointer f6 dib mt1 dim"), Halogen_HTML_Properties.value((function () {
+              var $21 = v.bm.bid > 0;
+              if ($21) {
+                  return "update bookmark";
+              };
+              return "add bookmark";
+          })()) ]) ]) ]) ]) ]) ]);
+          var display_destroyed = Halogen_HTML_Elements.p([ Util.class_("red") ])([ Halogen_HTML_Core.text("you killed this bookmark") ]);
+          return Halogen_HTML_Elements.div_([ (function () {
+              var $22 = !v.destroyed;
+              if ($22) {
+                  return display_edit;
+              };
+              return display_destroyed;
+          })() ]);
+      };
+      var mkState = function (b) {
+          return {
+              bm: b,
+              edit_bm: b,
+              deleteAsk: false,
+              destroyed: false
+          };
+      };
+      var $$eval = function (v) {
+          if (v instanceof BDeleteAsk) {
+              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
+                  var $26 = {};
+                  for (var $27 in v1) {
+                      if ({}.hasOwnProperty.call(v1, $27)) {
+                          $26[$27] = v1[$27];
+                      };
+                  };
+                  $26.deleteAsk = v.value0;
+                  return $26;
+              }))(function () {
+                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+              });
+          };
+          if (v instanceof BDestroy) {
+              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
+                  return v1.bm.bid;
+              }))(function (v1) {
+                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroy(v1))))(function () {
+                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v2) {
+                          var $32 = {};
+                          for (var $33 in v2) {
+                              if ({}.hasOwnProperty.call(v2, $33)) {
+                                  $32[$33] = v2[$33];
+                              };
+                          };
+                          $32.destroyed = true;
+                          return $32;
+                      }))(function () {
+                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
+                      });
+                  });
+              });
+          };
+          if (v instanceof BEditField) {
+              var modifyEdit = function (dictMonadState) {
+                  return function (g) {
+                      return Control_Monad_State_Class.modify_(dictMonadState)(function (s) {
+                          var $36 = {};
+                          for (var $37 in s) {
+                              if ({}.hasOwnProperty.call(s, $37)) {
+                                  $36[$37] = s[$37];
+                              };
+                          };
+                          $36.edit_bm = g(s.edit_bm);
+                          return $36;
+                      });
+                  };
+              };
+              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(modifyEdit(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
+                  if (v.value0 instanceof Eurl) {
+                      return function (v1) {
+                          return {
+                              url: v.value0.value0,
+                              title: v1.title,
+                              description: v1.description,
+                              tags: v1.tags,
+                              "private": v1["private"],
+                              toread: v1.toread,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Etitle) {
+                      return function (v1) {
+                          return {
+                              url: v1.url,
+                              title: v.value0.value0,
+                              description: v1.description,
+                              tags: v1.tags,
+                              "private": v1["private"],
+                              toread: v1.toread,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Edescription) {
+                      return function (v1) {
+                          return {
+                              url: v1.url,
+                              title: v1.title,
+                              description: v.value0.value0,
+                              tags: v1.tags,
+                              "private": v1["private"],
+                              toread: v1.toread,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Etags) {
+                      return function (v1) {
+                          return {
+                              url: v1.url,
+                              title: v1.title,
+                              description: v1.description,
+                              tags: v.value0.value0,
+                              "private": v1["private"],
+                              toread: v1.toread,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Eprivate) {
+                      return function (v1) {
+                          return {
+                              url: v1.url,
+                              title: v1.title,
+                              description: v1.description,
+                              tags: v1.tags,
+                              "private": v.value0.value0,
+                              toread: v1.toread,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Etoread) {
+                      return function (v1) {
+                          return {
+                              url: v1.url,
+                              title: v1.title,
+                              description: v1.description,
+                              tags: v1.tags,
+                              "private": v1["private"],
+                              toread: v.value0.value0,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  throw new Error("Failed pattern match at Component.Add line 156, column 18 - line 162, column 36: " + [ v.value0.constructor.name ]);
+              })()))(function () {
+                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+              });
+          };
+          if (v instanceof BEditSubmit) {
+              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {
+                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
+                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editBookmark(v1.edit_bm))))(function () {
+                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
+                              var $49 = {};
+                              for (var $50 in v1) {
+                                  if ({}.hasOwnProperty.call(v1, $50)) {
+                                      $49[$50] = v1[$50];
+                                  };
+                              };
+                              $49.bm = v1.edit_bm;
+                              return $49;
+                          })()))(function () {
+                              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util._loc))(function (v2) {
+                                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_HTML.window))(function (v3) {
+                                      return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Util._curQuerystring))(function (v4) {
+                                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)((function () {
+                                              var v5 = Util._lookupQueryStringValue(v4)("next");
+                                              if (v5 instanceof Data_Maybe.Just) {
+                                                  return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_HTML_Location.setHref(v5.value0)(v2));
+                                              };
+                                              return Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Globals.closeWindow(v3));
+                                          })())(function () {
+                                              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+                                          });
+                                      });
+                                  });
+                              });
+                          });
+                      });
+                  });
+              });
+          };
+          throw new Error("Failed pattern match at Component.Add line 146, column 3 - line 146, column 58: " + [ v.constructor.name ]);
+      };
+      var app = Globals["app'"](Data_Unit.unit);
+      return Halogen_Component.component(Halogen_HTML_Core.bifunctorHTML)({
+          initialState: Data_Function["const"](mkState(b$prime)),
+          render: render,
+          "eval": $$eval,
+          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
+      });
+  };
+  exports["BEditField"] = BEditField;
+  exports["BEditSubmit"] = BEditSubmit;
+  exports["BDeleteAsk"] = BDeleteAsk;
+  exports["BDestroy"] = BDestroy;
+  exports["Eurl"] = Eurl;
+  exports["Etitle"] = Etitle;
+  exports["Edescription"] = Edescription;
+  exports["Etags"] = Etags;
+  exports["Eprivate"] = Eprivate;
+  exports["Etoread"] = Etoread;
+  exports["addbmark"] = addbmark;
+})(PS["Component.Add"] = PS["Component.Add"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var App = PS["App"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
+  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Data_String = PS["Data.String"];
+  var Data_String_CodePoints = PS["Data.String.CodePoints"];
+  var Data_String_Common = PS["Data.String.Common"];
+  var Data_String_Pattern = PS["Data.String.Pattern"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Aff_Class = PS["Effect.Aff.Class"];
+  var Effect_Class = PS["Effect.Class"];
+  var Globals = PS["Globals"];
+  var Halogen = PS["Halogen"];
+  var Halogen_Component = PS["Halogen.Component"];
+  var Halogen_HTML = PS["Halogen.HTML"];
+  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
+  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
+  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
+  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
+  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
+  var Model = PS["Model"];
+  var Prelude = PS["Prelude"];
+  var Util = PS["Util"];
+  var Web_Event_Event = PS["Web.Event.Event"];                 
+  var Eurl = (function () {
+      function Eurl(value0) {
+          this.value0 = value0;
+      };
+      Eurl.create = function (value0) {
+          return new Eurl(value0);
+      };
+      return Eurl;
+  })();
+  var Etitle = (function () {
+      function Etitle(value0) {
+          this.value0 = value0;
+      };
+      Etitle.create = function (value0) {
+          return new Etitle(value0);
+      };
+      return Etitle;
+  })();
+  var Edescription = (function () {
+      function Edescription(value0) {
+          this.value0 = value0;
+      };
+      Edescription.create = function (value0) {
+          return new Edescription(value0);
+      };
+      return Edescription;
+  })();
+  var Etags = (function () {
+      function Etags(value0) {
+          this.value0 = value0;
+      };
+      Etags.create = function (value0) {
+          return new Etags(value0);
+      };
+      return Etags;
+  })();
+  var Eprivate = (function () {
+      function Eprivate(value0) {
+          this.value0 = value0;
+      };
+      Eprivate.create = function (value0) {
+          return new Eprivate(value0);
+      };
+      return Eprivate;
+  })();
+  var Etoread = (function () {
+      function Etoread(value0) {
+          this.value0 = value0;
+      };
+      Etoread.create = function (value0) {
+          return new Etoread(value0);
+      };
+      return Etoread;
+  })();
+  var BStar = (function () {
+      function BStar(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      BStar.create = function (value0) {
+          return function (value1) {
+              return new BStar(value0, value1);
+          };
+      };
+      return BStar;
+  })();
+  var BDeleteAsk = (function () {
+      function BDeleteAsk(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      BDeleteAsk.create = function (value0) {
+          return function (value1) {
+              return new BDeleteAsk(value0, value1);
+          };
+      };
+      return BDeleteAsk;
+  })();
+  var BDestroy = (function () {
+      function BDestroy(value0) {
+          this.value0 = value0;
+      };
+      BDestroy.create = function (value0) {
+          return new BDestroy(value0);
+      };
+      return BDestroy;
+  })();
+  var BEdit = (function () {
+      function BEdit(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      BEdit.create = function (value0) {
+          return function (value1) {
+              return new BEdit(value0, value1);
+          };
+      };
+      return BEdit;
+  })();
+  var BEditField = (function () {
+      function BEditField(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      BEditField.create = function (value0) {
+          return function (value1) {
+              return new BEditField(value0, value1);
+          };
+      };
+      return BEditField;
+  })();
+  var BEditSubmit = (function () {
+      function BEditSubmit(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      BEditSubmit.create = function (value0) {
+          return function (value1) {
+              return new BEditSubmit(value0, value1);
+          };
+      };
+      return BEditSubmit;
+  })();
+  var BMarkRead = (function () {
+      function BMarkRead(value0) {
+          this.value0 = value0;
+      };
+      BMarkRead.create = function (value0) {
+          return new BMarkRead(value0);
+      };
+      return BMarkRead;
+  })();
+  var BNotifyRemove = (function () {
+      function BNotifyRemove() {
+
+      };
+      BNotifyRemove.value = new BNotifyRemove();
+      return BNotifyRemove;
+  })();
+  var bmark = function (b$prime) {
+      var onEvent = function (v) {
+          if (v instanceof BStar) {
+              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
+                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.toggleStar(v1.bm.bid)((function () {
+                      if (v.value0) {
+                          return App.Star.value;
+                      };
+                      return App.UnStar.value;
+                  })())))(function () {
+                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
+                          var $33 = {};
+                          for (var $34 in v1) {
+                              if ({}.hasOwnProperty.call(v1, $34)) {
+                                  $33[$34] = v1[$34];
+                              };
+                          };
+                          $33.bm = (function () {
+                              var $27 = {};
+                              for (var $28 in v1.bm) {
+                                  if ({}.hasOwnProperty.call(v1.bm, $28)) {
+                                      $27[$28] = v1["bm"][$28];
+                                  };
+                              };
+                              $27.selected = v.value0;
+                              return $27;
+                          })();
+                          $33.edit_bm = (function () {
+                              var $30 = {};
+                              for (var $31 in v1.edit_bm) {
+                                  if ({}.hasOwnProperty.call(v1.edit_bm, $31)) {
+                                      $30[$31] = v1["edit_bm"][$31];
+                                  };
+                              };
+                              $30.selected = v.value0;
+                              return $30;
+                          })();
+                          return $33;
+                      })()))(function () {
+                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+                      });
+                  });
+              });
+          };
+          if (v instanceof BDeleteAsk) {
+              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
+                  var $38 = {};
+                  for (var $39 in v1) {
+                      if ({}.hasOwnProperty.call(v1, $39)) {
+                          $38[$39] = v1[$39];
+                      };
+                  };
+                  $38.deleteAsk = v.value0;
+                  return $38;
+              }))(function () {
+                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+              });
+          };
+          if (v instanceof BDestroy) {
+              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
+                  return v1.bm.bid;
+              }))(function (v1) {
+                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroy(v1))))(function () {
+                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Halogen_Query_HalogenM.raise(BNotifyRemove.value))(function () {
+                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
+                      });
+                  });
+              });
+          };
+          if (v instanceof BMarkRead) {
+              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
+                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.markRead(v1.bm.bid))))(function () {
+                      var newState = (function () {
+                          var $49 = {};
+                          for (var $50 in v1) {
+                              if ({}.hasOwnProperty.call(v1, $50)) {
+                                  $49[$50] = v1[$50];
+                              };
+                          };
+                          $49.bm = (function () {
+                              var $46 = {};
+                              for (var $47 in v1.bm) {
+                                  if ({}.hasOwnProperty.call(v1.bm, $47)) {
+                                      $46[$47] = v1["bm"][$47];
+                                  };
+                              };
+                              $46.toread = false;
+                              return $46;
+                          })();
+                          return $49;
+                      })();
+                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)(newState))(function () {
+                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
+                      });
+                  });
+              });
+          };
+          if (v instanceof BEdit) {
+              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
+                  var newState = (function () {
+                      var $54 = {};
+                      for (var $55 in v1) {
+                          if ({}.hasOwnProperty.call(v1, $55)) {
+                              $54[$55] = v1[$55];
+                          };
+                      };
+                      $54.edit = v.value0;
+                      $54.edit_bm = v1.bm;
+                      return $54;
+                  })();
+                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)(newState))(function () {
+                      return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+                  });
+              });
+          };
+          if (v instanceof BEditField) {
+              var modifyEdit = function (dictMonadState) {
+                  return function (g) {
+                      return Control_Monad_State_Class.modify_(dictMonadState)(function (s) {
+                          var $59 = {};
+                          for (var $60 in s) {
+                              if ({}.hasOwnProperty.call(s, $60)) {
+                                  $59[$60] = s[$60];
+                              };
+                          };
+                          $59.edit_bm = g(s.edit_bm);
+                          return $59;
+                      });
+                  };
+              };
+              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(modifyEdit(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
+                  if (v.value0 instanceof Eurl) {
+                      return function (v1) {
+                          return {
+                              url: v.value0.value0,
+                              title: v1.title,
+                              description: v1.description,
+                              tags: v1.tags,
+                              "private": v1["private"],
+                              toread: v1.toread,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Etitle) {
+                      return function (v1) {
+                          return {
+                              url: v1.url,
+                              title: v.value0.value0,
+                              description: v1.description,
+                              tags: v1.tags,
+                              "private": v1["private"],
+                              toread: v1.toread,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Edescription) {
+                      return function (v1) {
+                          return {
+                              url: v1.url,
+                              title: v1.title,
+                              description: v.value0.value0,
+                              tags: v1.tags,
+                              "private": v1["private"],
+                              toread: v1.toread,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Etags) {
+                      return function (v1) {
+                          return {
+                              url: v1.url,
+                              title: v1.title,
+                              description: v1.description,
+                              tags: v.value0.value0,
+                              "private": v1["private"],
+                              toread: v1.toread,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Eprivate) {
+                      return function (v1) {
+                          return {
+                              url: v1.url,
+                              title: v1.title,
+                              description: v1.description,
+                              tags: v1.tags,
+                              "private": v.value0.value0,
+                              toread: v1.toread,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Etoread) {
+                      return function (v1) {
+                          return {
+                              url: v1.url,
+                              title: v1.title,
+                              description: v1.description,
+                              tags: v1.tags,
+                              "private": v1["private"],
+                              toread: v.value0.value0,
+                              bid: v1.bid,
+                              selected: v1.selected,
+                              time: v1.time
+                          };
+                      };
+                  };
+                  throw new Error("Failed pattern match at Component.BMark line 229, column 18 - line 235, column 36: " + [ v.value0.constructor.name ]);
+              })()))(function () {
+                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+              });
+          };
+          if (v instanceof BEditSubmit) {
+              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {
+                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
+                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editBookmark(v1.edit_bm))))(function () {
+                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
+                              var $72 = {};
+                              for (var $73 in v1) {
+                                  if ({}.hasOwnProperty.call(v1, $73)) {
+                                      $72[$73] = v1[$73];
+                                  };
+                              };
+                              $72.edit = false;
+                              $72.bm = v1.edit_bm;
+                              return $72;
+                          })()))(function () {
+                              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+                          });
+                      });
+                  });
+              });
+          };
+          throw new Error("Failed pattern match at Component.BMark line 191, column 3 - line 191, column 65: " + [ v.constructor.name ]);
+      };
+      var mkState = function (b) {
+          return {
+              bm: b,
+              edit_bm: b,
+              deleteAsk: false,
+              edit: false
+          };
+      };
+      var app = Globals["app'"](Data_Unit.unit);
+      var render = function (v) {
+          var toTextarea = function (input) {
+              return Data_Array.drop(1)(Data_Foldable.foldMap(Data_Foldable.foldableArray)(Data_Monoid.monoidArray)(function (x) {
+                  return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];
+              })(Data_String_Common.split("\x0a")(input)));
+          };
+          var star = Data_Monoid.guard(Data_Monoid.monoidArray)(app.dat.isowner)([ Halogen_HTML_Elements.div([ Util.class_("star fl pointer" + Data_Monoid.guard(Data_Monoid.monoidString)(v.bm.selected)(" selected")) ])([ Halogen_HTML_Elements.button([ Util.class_("moon-gray"), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BStar.create(!v.bm.selected))) ])([ Halogen_HTML_Core.text("\u272d") ]) ]) ]);
+          var mmoment = Globals.mmoment8601(v.bm.time);
+          var links = Data_Monoid.guard(Data_Monoid.monoidArray)(app.dat.isowner)([ Halogen_HTML_Elements.div([ Util.class_("edit_links di") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BEdit.create(true))), Util.class_("edit light-silver hover-blue") ])([ Halogen_HTML_Core.text("edit\xa0\xa0") ]), Halogen_HTML_Elements.div([ Util.class_("delete_link di") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(true))), Util.class_("delete light-silver hover-blue" + Data_Monoid.guard(Data_Monoid.monoidString)(v.deleteAsk)(" dn")) ])([ Halogen_HTML_Core.text("delete") ]), Halogen_HTML_Elements.span([ Util.class_("confirm red" + Data_Monoid.guard(Data_Monoid.monoidString)(!v.deleteAsk)(" dn")) ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDeleteAsk.create(false))) ])([ Halogen_HTML_Core.text("cancel\xa0/\xa0") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BDestroy.create)), Util.class_("red") ])([ Halogen_HTML_Core.text("destroy") ]) ]) ]) ]), Halogen_HTML_Elements.div([ Util.class_("read di") ])(Data_Monoid.guard(Data_Monoid.monoidArray)(v.bm.toread)([ Halogen_HTML_Core.text("\xa0\xa0"), Halogen_HTML_Elements.button([ Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BMarkRead.create)), Util.class_("mark_read") ])([ Halogen_HTML_Core.text("mark as read") ]) ])) ]);
+          var linkToFilterTag = function (tag) {
+              return app.userR + ("/t:" + tag);
+          };
+          var linkToFilterSingle = function (bid) {
+              return app.userR + ("/b:" + Data_Show.show(Data_Show.showInt)(bid));
+          };
+          var editField = function (f) {
+              return function ($82) {
+                  return Halogen_HTML_Events.input(BEditField.create)(f($82));
+              };
+          };
+          var display_edit = [ Halogen_HTML_Elements.div([ Util.class_("edit_bookmark_form pa2 bg-white") ])([ Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(Halogen_HTML_Events.input(BEditSubmit.create)) ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputUrl.value), Util.class_("url w-100 mt2 mb1 pt1 f7 edit_form_input"), Halogen_HTML_Properties.required(true), Halogen_HTML_Properties.name("url"), Halogen_HTML_Properties.value(v.edit_bm.url), Halogen_HTML_Events.onValueChange(editField(Eurl.create)) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_("title w-100 mt2 mb1 pt1 f7 edit_form_input"), Halogen_HTML_Properties.name("title"), Halogen_HTML_Properties.value(v.edit_bm.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.p([ Util.class_("mt2 mb1") ])([ Halogen_HTML_Core.text(" description:") ]), Halogen_HTML_Elements.textarea([ Util.class_("description w-100 mt2 mb1 pt1 f7 edit_form_input"), Halogen_HTML_Properties.name("description"), Halogen_HTML_Properties.rows(5), Halogen_HTML_Properties.value(v.edit_bm.description), Halogen_HTML_Events.onValueChange(editField(Edescription.create)) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_("tags_input_box") ])([ Halogen_HTML_Elements.p_([ Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text(" tags:") ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_("tags w-100 mt2 mb1 pt1 f7 edit_form_input"), Halogen_HTML_Properties.name("tags"), Halogen_HTML_Properties.autocomplete(false), Util.attr("autocapitalize")("off"), Halogen_HTML_Properties.value(v.edit_bm.tags), Halogen_HTML_Events.onValueChange(editField(Etags.create)) ]), Halogen_HTML_Elements.br_ ]) ]), Halogen_HTML_Elements.div([ Util.class_("edit_form_checkboxes mv3") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_("private pointer"), Halogen_HTML_Properties.id_("edit_private"), Halogen_HTML_Properties.name("private"), Halogen_HTML_Properties.checked(v["edit_bm"]["private"]), Halogen_HTML_Events.onChecked(editField(Eprivate.create)) ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("edit_private"), Util.class_("mr2") ])([ Halogen_HTML_Core.text("private") ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_("toread pointer"), Halogen_HTML_Properties.id_("edit_toread"), Halogen_HTML_Properties.name("toread"), Halogen_HTML_Properties.checked(v.edit_bm.toread), Halogen_HTML_Events.onChecked(editField(Etoread.create)) ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.label([ Halogen_HTML_Properties["for"]("edit_toread") ])([ Halogen_HTML_Core.text("toread") ]), Halogen_HTML_Elements.br_ ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_("mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"), Halogen_HTML_Properties.value("save") ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputReset.value), Util.class_("pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"), Halogen_HTML_Properties.value("cancel"), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(BEdit.create(false))) ]) ]) ]) ];
+          var display = [ Halogen_HTML_Elements.div([ Util.class_("display") ])(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(v.bm.url), Halogen_HTML_Properties.target("_blank"), Util.class_("link f5 lh-title" + Data_Monoid.guard(Data_Monoid.monoidString)(v.bm.toread)(" unread")) ])([ Halogen_HTML_Core.text((function () {
+              var $78 = Data_String_Common["null"](v.bm.title);
+              if ($78) {
+                  return "[no title]";
+              };
+              return v.bm.title;
+          })()) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(v.bm.url), Util.class_("link f7 gray hover-blue") ])([ Halogen_HTML_Core.text(v.bm.url) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Util.class_("description mt1 mid-gray") ])(toTextarea(v.bm.description)), Halogen_HTML_Elements.div([ Util.class_("tags") ])(Data_Monoid.guard(Data_Monoid.monoidFn(Data_Monoid.monoidFn(Data_Monoid.monoidArray)))(!Data_String_Common["null"](v.bm.tags))(Data_Functor.map(Data_Functor.functorArray))(function (tag) {
+              return Halogen_HTML_Elements.a([ Util.class_("link tag mr1" + Data_Monoid.guard(Data_Monoid.monoidString)(Data_String_CodePoints.take(1)(tag) === ".")(" private")), Halogen_HTML_Properties.href(linkToFilterTag(tag)) ])([ Halogen_HTML_Core.text(tag) ]);
+          })(Data_String_Common.split(" ")(v.bm.tags))), Halogen_HTML_Elements.a([ Util.class_("link f7 dib gray w4"), Halogen_HTML_Properties.title(Data_Maybe.maybe(v.bm.time)(Data_Tuple.snd)(mmoment)), Halogen_HTML_Properties.href(linkToFilterSingle(v.bm.bid)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe("\xa0")(Data_Tuple.fst)(mmoment)) ]) ])(links)) ];
+          return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_(Data_Show.show(Data_Show.showInt)(v.bm.bid)), Util.class_("bookmark w-100 mw7 pa1 mb3" + Data_Monoid.guard(Data_Monoid.monoidString)(v["bm"]["private"])(" private")) ])(Data_Semigroup.append(Data_Semigroup.semigroupArray)(star)((function () {
+              if (v.edit) {
+                  return display_edit;
+              };
+              return display;
+          })()));
+      };
+      return Halogen_Component.component(Halogen_HTML_Core.bifunctorHTML)({
+          initialState: Data_Function["const"](mkState(b$prime)),
+          render: render,
+          "eval": onEvent,
+          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
+      });
+  };
+  exports["BStar"] = BStar;
+  exports["BDeleteAsk"] = BDeleteAsk;
+  exports["BDestroy"] = BDestroy;
+  exports["BEdit"] = BEdit;
+  exports["BEditField"] = BEditField;
+  exports["BEditSubmit"] = BEditSubmit;
+  exports["BMarkRead"] = BMarkRead;
+  exports["Eurl"] = Eurl;
+  exports["Etitle"] = Etitle;
+  exports["Edescription"] = Edescription;
+  exports["Etags"] = Etags;
+  exports["Eprivate"] = Eprivate;
+  exports["Etoread"] = Etoread;
+  exports["BNotifyRemove"] = BNotifyRemove;
+  exports["bmark"] = bmark;
+})(PS["Component.BMark"] = PS["Component.BMark"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Component_BMark = PS["Component.BMark"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Halogen = PS["Halogen"];
+  var Halogen_Component = PS["Halogen.Component"];
+  var Halogen_HTML = PS["Halogen.HTML"];
+  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
+  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
+  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
+  var Model = PS["Model"];
+  var Prelude = PS["Prelude"];                 
+  var HandleBMessage = (function () {
+      function HandleBMessage(value0, value1, value2) {
+          this.value0 = value0;
+          this.value1 = value1;
+          this.value2 = value2;
+      };
+      HandleBMessage.create = function (value0) {
+          return function (value1) {
+              return function (value2) {
+                  return new HandleBMessage(value0, value1, value2);
+              };
+          };
+      };
+      return HandleBMessage;
+  })();
+  var blist = function (st) {
+      var render = function (bms) {
+          var renderBookmark = function (b) {
+              return Halogen_HTML.slot(b.bid)(Component_BMark.bmark(b))(Data_Unit.unit)(Halogen_HTML_Events.input(HandleBMessage.create(b.bid)));
+          };
+          return Halogen_HTML_Elements.div_(Data_Functor.map(Data_Functor.functorArray)(renderBookmark)(bms));
+      };
+      var $$eval = function (v) {
+          var removeBookmark = function (bookmarkId) {
+              return Data_Array.filter(function (b) {
+                  return b.bid !== bookmarkId;
+              });
+          };
+          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(removeBookmark(v.value0)))(function () {
+              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value2);
+          });
+      };
+      return Halogen_Component.parentComponent(Data_Ord.ordInt)({
+          initialState: Data_Function["const"](st),
+          render: render,
+          "eval": $$eval,
+          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
+      });
+  };
+  exports["HandleBMessage"] = HandleBMessage;
+  exports["blist"] = blist;
+})(PS["Component.BList"] = PS["Component.BList"] || {});
+(function(exports) {
+    "use strict";
+  var App = PS["App"];
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_State_Class = PS["Control.Monad.State.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var DOM_HTML_Indexed_ButtonType = PS["DOM.HTML.Indexed.ButtonType"];
+  var DOM_HTML_Indexed_InputType = PS["DOM.HTML.Indexed.InputType"];
+  var Data_Argonaut = PS["Data.Argonaut"];
+  var Data_Argonaut_Core = PS["Data.Argonaut.Core"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Int = PS["Data.Int"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Monoid = PS["Data.Monoid"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Semigroup = PS["Data.Semigroup"];
+  var Data_Show = PS["Data.Show"];
+  var Data_String = PS["Data.String"];
+  var Data_String_CodePoints = PS["Data.String.CodePoints"];
+  var Data_String_Common = PS["Data.String.Common"];
+  var Data_String_Pattern = PS["Data.String.Pattern"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Aff_Class = PS["Effect.Aff.Class"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Globals = PS["Globals"];
+  var Halogen = PS["Halogen"];
+  var Halogen_Component = PS["Halogen.Component"];
+  var Halogen_HTML = PS["Halogen.HTML"];
+  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
+  var Halogen_HTML_Elements = PS["Halogen.HTML.Elements"];
+  var Halogen_HTML_Events = PS["Halogen.HTML.Events"];
+  var Halogen_HTML_Properties = PS["Halogen.HTML.Properties"];
+  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
+  var Model = PS["Model"];
+  var Prelude = PS["Prelude"];
+  var Util = PS["Util"];
+  var Web_Event_Event = PS["Web.Event.Event"];
+  var Web_HTML = PS["Web.HTML"];
+  var Web_HTML_Location = PS["Web.HTML.Location"];
+
+  // | FormField Edits
+  var Etitle = (function () {
+      function Etitle(value0) {
+          this.value0 = value0;
+      };
+      Etitle.create = function (value0) {
+          return new Etitle(value0);
+      };
+      return Etitle;
+  })();
+
+  // | FormField Edits
+  var Etext = (function () {
+      function Etext(value0) {
+          this.value0 = value0;
+      };
+      Etext.create = function (value0) {
+          return new Etext(value0);
+      };
+      return Etext;
+  })();
+  var NNop = (function () {
+      function NNop(value0) {
+          this.value0 = value0;
+      };
+      NNop.create = function (value0) {
+          return new NNop(value0);
+      };
+      return NNop;
+  })();
+  var NEditField = (function () {
+      function NEditField(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      NEditField.create = function (value0) {
+          return function (value1) {
+              return new NEditField(value0, value1);
+          };
+      };
+      return NEditField;
+  })();
+  var NEditSubmit = (function () {
+      function NEditSubmit(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      NEditSubmit.create = function (value0) {
+          return function (value1) {
+              return new NEditSubmit(value0, value1);
+          };
+      };
+      return NEditSubmit;
+  })();
+  var NEdit = (function () {
+      function NEdit(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      NEdit.create = function (value0) {
+          return function (value1) {
+              return new NEdit(value0, value1);
+          };
+      };
+      return NEdit;
+  })();
+  var NDeleteAsk = (function () {
+      function NDeleteAsk(value0, value1) {
+          this.value0 = value0;
+          this.value1 = value1;
+      };
+      NDeleteAsk.create = function (value0) {
+          return function (value1) {
+              return new NDeleteAsk(value0, value1);
+          };
+      };
+      return NDeleteAsk;
+  })();
+  var NDestroy = (function () {
+      function NDestroy(value0) {
+          this.value0 = value0;
+      };
+      NDestroy.create = function (value0) {
+          return new NDestroy(value0);
+      };
+      return NDestroy;
+  })();
+  var nnote = function (st$prime) {
+      var render = function (v) {
+          var toTextarea = function (input) {
+              return Data_Array.drop(1)(Data_Foldable.foldMap(Data_Foldable.foldableArray)(Data_Monoid.monoidArray)(function (x) {
+                  return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];
+              })(Data_String_Common.split("\x0a")(input)));
+          };
+          var mmoment = function (n) {
+              return Globals.mmoment8601(n.created);
+          };
+          var renderNote = Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_(Data_Show.show(Data_Show.showInt)(v.note.id)), Util.class_("note w-100 mw7 pa1 mb2") ])(Data_Semigroup.append(Data_Semigroup.semigroupArray)([ Halogen_HTML_Elements.div([ Util.class_("display") ])([ Halogen_HTML_Elements.div([ Util.class_("link f5 lh-title") ])([ Halogen_HTML_Core.text((function () {
+              var $18 = Data_String_Common["null"](v.note.title);
+              if ($18) {
+                  return "[no title]";
+              };
+              return v.note.title;
+          })()) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Util.class_("description mt1 mid-gray") ])(toTextarea(v.note.text)), Halogen_HTML_Elements.div([ Util.class_("link f7 dib gray w4"), Halogen_HTML_Properties.title(Data_Maybe.maybe(v.note.created)(Data_Tuple.snd)(mmoment(v.note))) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe("\xa0")(Data_Tuple.fst)(mmoment(v.note))) ]) ]) ])([ Halogen_HTML_Elements.div([ Util.class_("edit_links db mt3") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(NEdit.create(true))), Util.class_("edit light-silver hover-blue") ])([ Halogen_HTML_Core.text("edit\xa0\xa0") ]), Halogen_HTML_Elements.div([ Util.class_("delete_link di") ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(NDeleteAsk.create(true))), Util.class_("delete light-silver hover-blue" + Data_Monoid.guard(Data_Monoid.monoidString)(v.deleteAsk)(" dn")) ])([ Halogen_HTML_Core.text("delete") ]), Halogen_HTML_Elements.span([ Util.class_("confirm red" + Data_Monoid.guard(Data_Monoid.monoidString)(!v.deleteAsk)(" dn")) ])([ Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(NDeleteAsk.create(false))) ])([ Halogen_HTML_Core.text("cancel\xa0/\xa0") ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.buttonTypeIsProp)(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(NDestroy.create)), Util.class_("red") ])([ Halogen_HTML_Core.text("destroy") ]) ]) ]) ]) ]));
+          var editField = function (f) {
+              return function ($61) {
+                  return Halogen_HTML_Events.input(NEditField.create)(f($61));
+              };
+          };
+          var renderNote_edit = Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(Halogen_HTML_Events.input(NEditSubmit.create)) ])([ Halogen_HTML_Elements.p([ Util.class_("mt2 mb1") ])([ Halogen_HTML_Core.text("Title:") ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputText.value), Util.class_("title w-100 mt2 mb1 pt1 f7 edit_form_input"), Halogen_HTML_Properties.name("title"), Halogen_HTML_Properties.value(v.edit_note.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.p([ Util.class_("mt2 mb1") ])([ Halogen_HTML_Core.text("Description:") ]), Halogen_HTML_Elements.textarea([ Util.class_("description w-100 mt2 mb1 pt1 f7 edit_form_input"), Halogen_HTML_Properties.name("text"), Halogen_HTML_Properties.rows(30), Halogen_HTML_Properties.value(v.edit_note.text), Halogen_HTML_Events.onValueChange(editField(Etext.create)) ]), Halogen_HTML_Elements.div([ Util.class_("edit_form_checkboxes mv3") ])([ Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_("mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"), Halogen_HTML_Properties.value("save") ]), Halogen_HTML_Core.text(" "), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.type_(Halogen_HTML_Core.inputTypeIsProp)(DOM_HTML_Indexed_InputType.InputReset.value), Util.class_("pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"), Halogen_HTML_Properties.value("cancel"), Halogen_HTML_Events.onClick(Halogen_HTML_Events.input_(NEdit.create(false))) ]) ]) ]);
+          var display_destroyed = Halogen_HTML_Elements.p([ Util.class_("red") ])([ Halogen_HTML_Core.text("you killed this note") ]);
+          if (v.destroyed) {
+              return display_destroyed;
+          };
+          if (v.edit) {
+              return renderNote_edit;
+          };
+          return renderNote;
+      };
+    
+      // | Handle UI Events
+  var onEvent = function (v) {
+          if (v instanceof NNop) {
+              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
+          };
+          if (v instanceof NEditField) {
+              var modifyEdit = function (dictMonadState) {
+                  return function (g) {
+                      return Control_Monad_State_Class.modify_(dictMonadState)(function (s) {
+                          var $25 = {};
+                          for (var $26 in s) {
+                              if ({}.hasOwnProperty.call(s, $26)) {
+                                  $25[$26] = s[$26];
+                              };
+                          };
+                          $25.edit_note = g(s.edit_note);
+                          return $25;
+                      });
+                  };
+              };
+              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(modifyEdit(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
+                  if (v.value0 instanceof Etitle) {
+                      return function (v1) {
+                          return {
+                              id: v1.id,
+                              title: v.value0.value0,
+                              text: v1.text,
+                              length: v1.length,
+                              created: v1.created,
+                              updated: v1.updated
+                          };
+                      };
+                  };
+                  if (v.value0 instanceof Etext) {
+                      return function (v1) {
+                          return {
+                              id: v1.id,
+                              title: v1.title,
+                              text: v.value0.value0,
+                              length: v1.length,
+                              created: v1.created,
+                              updated: v1.updated
+                          };
+                      };
+                  };
+                  throw new Error("Failed pattern match at Component.NList line 210, column 18 - line 212, column 32: " + [ v.value0.constructor.name ]);
+              })()))(function () {
+                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+              });
+          };
+          if (v instanceof NDeleteAsk) {
+              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM)(function (v1) {
+                  var $33 = {};
+                  for (var $34 in v1) {
+                      if ({}.hasOwnProperty.call(v1, $34)) {
+                          $33[$34] = v1[$34];
+                      };
+                  };
+                  $33.deleteAsk = v.value0;
+                  return $33;
+              }))(function () {
+                  return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+              });
+          };
+          if (v instanceof NDestroy) {
+              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
+                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Data_Functor["void"](Halogen_Query_HalogenM.functorHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.destroyNote(v1.note.id))))(function () {
+                      return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
+                          var $39 = {};
+                          for (var $40 in v1) {
+                              if ({}.hasOwnProperty.call(v1, $40)) {
+                                  $39[$40] = v1[$40];
+                              };
+                          };
+                          $39.destroyed = true;
+                          return $39;
+                      })()))(function () {
+                          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
+                      });
+                  });
+              });
+          };
+          if (v instanceof NEdit) {
+              return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
+                  var newState = (function () {
+                      var $44 = {};
+                      for (var $45 in v1) {
+                          if ({}.hasOwnProperty.call(v1, $45)) {
+                              $44[$45] = v1[$45];
+                          };
+                      };
+                      $44.edit = v.value0;
+                      $44.edit_note = v1.note;
+                      return $44;
+                  })();
+                  return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)(newState))(function () {
+                      return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+                  });
+              });
+          };
+          if (v instanceof NEditSubmit) {
+              return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Effect_Class.liftEffect(Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff))(Web_Event_Event.preventDefault(v.value0)))(function () {
+                  return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM))(function (v1) {
+                      return Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM)(Effect_Aff_Class.liftAff(Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff))(App.editNote(v1.edit_note)))(function (v2) {
+                          var nt$prime = Data_Maybe.fromMaybe(v1.edit_note)(Control_Bind.bind(Data_Maybe.bindMaybe)(Control_Bind.bind(Data_Maybe.bindMaybe)(Data_Argonaut_Core.toNumber(v2.response))(Data_Int.fromNumber))(function (n) {
+                              return new Data_Maybe.Just({
+                                  id: n,
+                                  created: v1.edit_note.created,
+                                  length: v1.edit_note.length,
+                                  text: v1.edit_note.text,
+                                  title: v1.edit_note.title,
+                                  updated: v1.edit_note.updated
+                              });
+                          }));
+                          return Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM)(Control_Monad_State_Class.put(Halogen_Query_HalogenM.monadStateHalogenM)((function () {
+                              var $51 = {};
+                              for (var $52 in v1) {
+                                  if ({}.hasOwnProperty.call(v1, $52)) {
+                                      $51[$52] = v1[$52];
+                                  };
+                              };
+                              $51.edit = false;
+                              $51.note = nt$prime;
+                              $51.edit_note = nt$prime;
+                              return $51;
+                          })()))(function () {
+                              return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value1);
+                          });
+                      });
+                  });
+              });
+          };
+          throw new Error("Failed pattern match at Component.NList line 205, column 3 - line 205, column 61: " + [ v.constructor.name ]);
+      };
+    
+      // | Initialize Component State
+  var mkState = function (note$prime) {
+          return {
+              note: note$prime,
+              edit_note: note$prime,
+              deleteAsk: false,
+              edit: note$prime.id <= 0,
+              destroyed: false
+          };
+      };
+      var app = Globals["app'"](Data_Unit.unit);
+      return Halogen_Component.component(Halogen_HTML_Core.bifunctorHTML)({
+          initialState: Data_Function["const"](mkState(st$prime)),
+          render: render,
+          "eval": onEvent,
+          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
+      });
+  };
+  var nlist = function (st$prime) {
+      var toTextarea = function (input) {
+          return Data_Array.drop(1)(Data_Foldable.foldMap(Data_Foldable.foldableArray)(Data_Monoid.monoidArray)(function (x) {
+              return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];
+          })(Data_String_Common.split("\x0a")(input)));
+      };
+    
+      // | Handle UI Events
+  var onEvent = function (v) {
+          return Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM)(v.value0);
+      };
+      var mmoment = function (bm) {
+          return Globals.mmoment8601(bm.created);
+      };
+    
+      // | Initialize Component State
+  var mkState = function (notes$prime) {
+          return {
+              notes: notes$prime,
+              cur: Data_Maybe.Nothing.value,
+              deleteAsk: false,
+              edit: false
+          };
+      };
+      var app = Globals["app'"](Data_Unit.unit);
+      var linkToFilterSingle = function (nid) {
+          return app.userR + ("/notes/" + Data_Show.show(Data_Show.showInt)(nid));
+      };
+      var render = function (v) {
+          var renderNote = function (bm) {
+              return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id_(Data_Show.show(Data_Show.showInt)(bm.id)), Util.class_("note w-100 mw7 pa1 mb2") ])([ Halogen_HTML_Elements.div([ Util.class_("display") ])([ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(linkToFilterSingle(bm.id)), Halogen_HTML_Properties.target("_blank"), Util.class_("link f5 lh-title") ])([ Halogen_HTML_Core.text((function () {
+                  var $59 = Data_String_Common["null"](bm.title);
+                  if ($59) {
+                      return "[no title]";
+                  };
+                  return bm.title;
+              })()) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Util.class_("description mt1 mid-gray") ])(toTextarea(Data_String_CodePoints.take(200)(bm.text))), Halogen_HTML_Elements.a([ Util.class_("link f7 dib gray w4"), Halogen_HTML_Properties.title(Data_Maybe.maybe(bm.created)(Data_Tuple.snd)(mmoment(bm))), Halogen_HTML_Properties.href(linkToFilterSingle(bm.id)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe("\xa0")(Data_Tuple.fst)(mmoment(bm))) ]) ]) ]);
+          };
+          return Halogen_HTML_Elements.div_(Data_Functor.map(Data_Functor.functorArray)(renderNote)(v.notes));
+      };
+      return Halogen_Component.component(Halogen_HTML_Core.bifunctorHTML)({
+          initialState: Data_Function["const"](mkState(st$prime)),
+          render: render,
+          "eval": onEvent,
+          receiver: Data_Function["const"](Data_Maybe.Nothing.value)
+      });
+  };
+  exports["nlist"] = nlist;
+  exports["NNop"] = NNop;
+  exports["NEditField"] = NEditField;
+  exports["NEditSubmit"] = NEditSubmit;
+  exports["NEdit"] = NEdit;
+  exports["NDeleteAsk"] = NDeleteAsk;
+  exports["NDestroy"] = NDestroy;
+  exports["Etitle"] = Etitle;
+  exports["Etext"] = Etext;
+  exports["nnote"] = nnote;
+})(PS["Component.NList"] = PS["Component.NList"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
+  var Control_Monad_Reader_Trans = PS["Control.Monad.Reader.Trans"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Prelude = PS["Prelude"];
+  var MonadFork = function (Functor1, Monad0, fork, join, suspend) {
+      this.Functor1 = Functor1;
+      this.Monad0 = Monad0;
+      this.fork = fork;
+      this.join = join;
+      this.suspend = suspend;
+  };
+  var suspend = function (dict) {
+      return dict.suspend;
+  };
+  var monadForkAff = new MonadFork(function () {
+      return Effect_Aff.functorFiber;
+  }, function () {
+      return Effect_Aff.monadAff;
+  }, Effect_Aff.forkAff, Effect_Aff.joinFiber, Effect_Aff.suspendAff);
+  var join = function (dict) {
+      return dict.join;
+  };
+  var fork = function (dict) {
+      return dict.fork;
+  };
+  exports["fork"] = fork;
+  exports["join"] = join;
+  exports["suspend"] = suspend;
+  exports["MonadFork"] = MonadFork;
+  exports["monadForkAff"] = monadForkAff;
+})(PS["Control.Monad.Fork.Class"] = PS["Control.Monad.Fork.Class"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.warn = function (s) {
+    return function () {
+      console.warn(s);
+      return {};
+    };
+  };
+})(PS["Effect.Console"] = PS["Effect.Console"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Effect.Console"];
+  var Data_Show = PS["Data.Show"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  exports["warn"] = $foreign.warn;
+})(PS["Effect.Console"] = PS["Effect.Console"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_List = PS["Data.List"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Map = PS["Data.Map"];
+  var Data_Map_Internal = PS["Data.Map.Internal"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Effect = PS["Effect"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Ref = PS["Effect.Ref"];
+  var Halogen_Component = PS["Halogen.Component"];
+  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Coerce = PS["Unsafe.Coerce"];
+  var Web_DOM = PS["Web.DOM"];
+  var unRenderStateX = Unsafe_Coerce.unsafeCoerce;
+  var unDriverStateX = Unsafe_Coerce.unsafeCoerce;
+  var renderStateX_ = function (dictApplicative) {
+      return function (f) {
+          return unDriverStateX(function (st) {
+              return Data_Foldable.traverse_(dictApplicative)(Data_Foldable.foldableMaybe)(f)(st.rendering);
+          });
+      };
+  };
+  var mkRenderStateX = function (v) {
+      return Unsafe_Coerce.unsafeCoerce;
+  };
+  var renderStateX = function (dictFunctor) {
+      return function (f) {
+          return unDriverStateX(function (st) {
+              return mkRenderStateX(st.prjQuery)(f(st.rendering));
+          });
+      };
+  };
+  var mkDriverStateXRef = Unsafe_Coerce.unsafeCoerce;
+  var initDriverState = function (component) {
+      return function (input) {
+          return function (handler) {
+              return function (prjQuery) {
+                  return function (lchs) {
+                      return function __do() {
+                          var v = Effect_Ref["new"]({})();
+                          var v1 = Effect_Ref["new"](Data_Map_Internal.empty)();
+                          var v2 = Effect_Ref["new"](Data_Map_Internal.empty)();
+                          var v3 = Effect_Ref["new"](Data_Functor.voidLeft(Data_Maybe.functorMaybe)(component.initializer)(Data_List_Types.Nil.value))();
+                          var v4 = Effect_Ref["new"](new Data_Maybe.Just(Data_List_Types.Nil.value))();
+                          var v5 = Effect_Ref["new"](Data_Maybe.Nothing.value)();
+                          var v6 = Effect_Ref["new"](0)();
+                          var v7 = Effect_Ref["new"](new Data_Maybe.Just(Data_Map_Internal.empty))();
+                          var ds = {
+                              component: component,
+                              state: component.initialState(input),
+                              refs: Data_Map_Internal.empty,
+                              children: Data_Map_Internal.empty,
+                              childrenIn: v1,
+                              childrenOut: v2,
+                              selfRef: v,
+                              handler: handler,
+                              pendingQueries: v3,
+                              pendingOuts: v4,
+                              pendingHandlers: v5,
+                              rendering: Data_Maybe.Nothing.value,
+                              prjQuery: prjQuery,
+                              fresh: v6,
+                              subscriptions: v7,
+                              lifecycleHandlers: lchs
+                          };
+                          Effect_Ref.write(ds)(v)();
+                          return mkDriverStateXRef(v);
+                      };
+                  };
+              };
+          };
+      };
+  };
+  exports["unDriverStateX"] = unDriverStateX;
+  exports["mkDriverStateXRef"] = mkDriverStateXRef;
+  exports["renderStateX"] = renderStateX;
+  exports["renderStateX_"] = renderStateX_;
+  exports["unRenderStateX"] = unRenderStateX;
+  exports["initDriverState"] = initDriverState;
+})(PS["Halogen.Aff.Driver.State"] = PS["Halogen.Aff.Driver.State"] || {});
+(function(exports) {
+    "use strict";
+
+  exports.reallyUnsafeRefEq = function (a) {
+    return function (b) {
+      return a === b;
+    };
+  };
+})(PS["Unsafe.Reference"] = PS["Unsafe.Reference"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var $foreign = PS["Unsafe.Reference"]; 
+  var unsafeRefEq = $foreign.reallyUnsafeRefEq;
+  exports["unsafeRefEq"] = unsafeRefEq;
+})(PS["Unsafe.Reference"] = PS["Unsafe.Reference"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Applicative_Free = PS["Control.Applicative.Free"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Coroutine = PS["Control.Coroutine"];
+  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
+  var Control_Monad_Fork_Class = PS["Control.Monad.Fork.Class"];
+  var Control_Monad_Free = PS["Control.Monad.Free"];
+  var Control_Monad_Free_Trans = PS["Control.Monad.Free.Trans"];
+  var Control_Monad_Trans_Class = PS["Control.Monad.Trans.Class"];
+  var Control_Parallel = PS["Control.Parallel"];
+  var Control_Parallel_Class = PS["Control.Parallel.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Boolean = PS["Data.Boolean"];
+  var Data_Coyoneda = PS["Data.Coyoneda"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_List = PS["Data.List"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Map = PS["Data.Map"];
+  var Data_Map_Internal = PS["Data.Map.Internal"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Set = PS["Data.Set"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Effect = PS["Effect"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Effect_Ref = PS["Effect.Ref"];
+  var Halogen_Aff_Driver_State = PS["Halogen.Aff.Driver.State"];
+  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
+  var Halogen_Query_EventSource = PS["Halogen.Query.EventSource"];
+  var Halogen_Query_ForkF = PS["Halogen.Query.ForkF"];
+  var Halogen_Query_HalogenM = PS["Halogen.Query.HalogenM"];
+  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Reference = PS["Unsafe.Reference"];                 
+  var queuingHandler = function (handler) {
+      return function (ref) {
+          return function (message) {
+              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
+                  if (v instanceof Data_Maybe.Nothing) {
+                      return handler(message);
+                  };
+                  if (v instanceof Data_Maybe.Just) {
+                      return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write(new Data_Maybe.Just(new Data_List_Types.Cons(handler(message), v.value0)))(ref));
+                  };
+                  throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 171, column 3 - line 175, column 59: " + [ v.constructor.name ]);
+              });
+          };
+      };
+  };
+  var handleLifecycle = function (lchs) {
+      return function (f) {
+          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write({
+              initializers: Data_List_Types.Nil.value,
+              finalizers: Data_List_Types.Nil.value
+          })(lchs)))(function () {
+              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(f))(function (v) {
+                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(lchs)))(function (v1) {
+                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(v1.finalizers))(function () {
+                          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Parallel.parSequence_(Effect_Aff.parallelAff)(Data_List_Types.foldableList)(v1.initializers))(function () {
+                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v);
+                          });
+                      });
+                  });
+              });
+          });
+      };
+  };
+  var $$eval = function (render) {
+      return function (r) {
+          var go = function (ref) {
+              return function (v) {
+                  if (v instanceof Halogen_Query_HalogenM.State) {
+                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
+                          var v2 = v.value0(v1.state);
+                          if (Unsafe_Reference.unsafeRefEq(v1.state)(v2.value1)) {
+                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v2.value0);
+                          };
+                          if (Data_Boolean.otherwise) {
+                              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.write({
+                                  component: v1.component,
+                                  state: v2.value1,
+                                  refs: v1.refs,
+                                  children: v1.children,
+                                  childrenIn: v1.childrenIn,
+                                  childrenOut: v1.childrenOut,
+                                  selfRef: v1.selfRef,
+                                  handler: v1.handler,
+                                  pendingQueries: v1.pendingQueries,
+                                  pendingOuts: v1.pendingOuts,
+                                  pendingHandlers: v1.pendingHandlers,
+                                  rendering: v1.rendering,
+                                  prjQuery: v1.prjQuery,
+                                  fresh: v1.fresh,
+                                  subscriptions: v1.subscriptions,
+                                  lifecycleHandlers: v1.lifecycleHandlers
+                              })(ref)))(function () {
+                                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(handleLifecycle(v1.lifecycleHandlers)(render(v1.lifecycleHandlers)(ref)))(function () {
+                                      return Control_Applicative.pure(Effect_Aff.applicativeAff)(v2.value0);
+                                  });
+                              });
+                          };
+                          throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 76, column 7 - line 82, column 21: " + [ v2.constructor.name ]);
+                      });
+                  };
+                  if (v instanceof Halogen_Query_HalogenM.Subscribe) {
+                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
+                          return Control_Bind.bind(Effect_Aff.bindAff)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff)(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Query_EventSource.unEventSource(v.value0))(function (v2) {
+                              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref["modify'"](function (i) {
+                                  return {
+                                      state: i + 1 | 0,
+                                      value: i
+                                  };
+                              })(v1.fresh)))(function (v3) {
+                                  var done$prime = Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v1.subscriptions)))(function (v4) {
+                                      return Control_Applicative.when(Effect_Aff.applicativeAff)(Data_Maybe.maybe(false)(Data_Map_Internal.member(Data_Ord.ordInt)(v3))(v4))(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Map_Internal["delete"](Data_Ord.ordInt)(v3)))(v1.subscriptions)));
+                                  });
+                                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(Data_Functor.map(Data_Maybe.functorMaybe)(Data_Map_Internal.insert(Data_Ord.ordInt)(v3)(done$prime)))(v1.subscriptions)))(function () {
+                                      var consumer = Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Control_Coroutine["await"](Effect_Aff.monadAff))(function (v4) {
+                                          return Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Control_Monad_Trans_Class.lift(Control_Monad_Free_Trans.monadTransFreeT(Control_Coroutine.functorAwait))(Effect_Aff.monadAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v1.subscriptions))))(function (v5) {
+                                              return Control_Applicative.when(Control_Monad_Free_Trans.applicativeFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Data_Maybe.isJust(v5))(Control_Bind.bind(Control_Monad_Free_Trans.bindFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Control_Monad_Trans_Class.lift(Control_Monad_Free_Trans.monadTransFreeT(Control_Coroutine.functorAwait))(Effect_Aff.monadAff)(evalF(ref)(v4)))(function (v6) {
+                                                  return Control_Applicative.when(Control_Monad_Free_Trans.applicativeFreeT(Control_Coroutine.functorAwait)(Effect_Aff.monadAff))(Data_Eq.eq(Halogen_Query_EventSource.eqSubscribeStatus)(v6)(Halogen_Query_EventSource.Listening.value))(consumer);
+                                              }));
+                                          });
+                                      });
+                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Coroutine.runProcess(Effect_Aff.monadRecAff)(Control_Coroutine.pullFrom(Effect_Aff.monadRecAff)(consumer)(v2.producer)))(function () {
+                                          return done$prime;
+                                      });
+                                  });
+                              });
+                          })))(function (v2) {
+                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1);
+                          });
+                      });
+                  };
+                  if (v instanceof Halogen_Query_HalogenM.Lift) {
+                      return v.value0;
+                  };
+                  if (v instanceof Halogen_Query_HalogenM.Halt) {
+                      return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error(v.value0));
+                  };
+                  if (v instanceof Halogen_Query_HalogenM.GetSlots) {
+                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
+                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value0(Data_Functor.map(Data_List_Types.functorList)(Halogen_Data_OrdBox.unOrdBox)(Data_List.fromFoldable(Data_Set.foldableSet)(Data_Map.keys(v1.children)))));
+                      });
+                  };
+                  if (v instanceof Halogen_Query_HalogenM.CheckSlot) {
+                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
+                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1(Data_Map_Internal.member(Halogen_Data_OrdBox.ordOrdBox)(v1.component.mkOrdBox(v.value0))(v1.children)));
+                      });
+                  };
+                  if (v instanceof Halogen_Query_HalogenM.ChildQuery) {
+                      return evalChildQuery(ref)(v.value0)(v.value1);
+                  };
+                  if (v instanceof Halogen_Query_HalogenM.Raise) {
+                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
+                          return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(queuingHandler(v1.handler)(v1.pendingOuts)(v.value0))(function () {
+                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1);
+                          });
+                      });
+                  };
+                  if (v instanceof Halogen_Query_HalogenM.Par) {
+                      return Control_Parallel_Class.sequential(Effect_Aff.parallelAff)(Control_Applicative_Free.retractFreeAp(Effect_Aff.applicativeParAff)(Control_Applicative_Free.hoistFreeAp(function ($103) {
+                          return Control_Parallel_Class.parallel(Effect_Aff.parallelAff)(evalM(ref)($103));
+                      })(v.value0)));
+                  };
+                  if (v instanceof Halogen_Query_HalogenM.Fork) {
+                      return Halogen_Query_ForkF.unFork(function (v1) {
+                          return Control_Bind.bind(Effect_Aff.bindAff)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff)(evalM(ref)(v1.value0)))(function (v2) {
+                              return Control_Applicative.pure(Effect_Aff.applicativeAff)(v1.value1(Data_Function.flip(Effect_Aff.killFiber)(v2)));
+                          });
+                      })(v.value0);
+                  };
+                  if (v instanceof Halogen_Query_HalogenM.GetRef) {
+                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v1) {
+                          return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value1(Data_Map_Internal.lookup(Data_Ord.ordString)(v.value0)(v1.refs)));
+                      });
+                  };
+                  throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 73, column 12 - line 128, column 33: " + [ v.constructor.name ]);
+              };
+          };
+          var evalM = function (ref) {
+              return function (v) {
+                  return Control_Monad_Free.foldFree(Effect_Aff.monadRecAff)(go(ref))(v);
+              };
+          };
+          var evalF = function (ref) {
+              return function (q) {
+                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
+                      var v1 = v["component"]["eval"](q);
+                      return Control_Monad_Free.foldFree(Effect_Aff.monadRecAff)(go(ref))(v1);
+                  });
+              };
+          };
+          var evalChildQuery = function (ref) {
+              return function (p) {
+                  return Data_Coyoneda.unCoyoneda(function (k) {
+                      return function (q) {
+                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
+                              var v1 = Data_Map_Internal.lookup(Halogen_Data_OrdBox.ordOrdBox)(v.component.mkOrdBox(p))(v.children);
+                              if (v1 instanceof Data_Maybe.Just) {
+                                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(v1.value0)))(function (v2) {
+                                      return Halogen_Aff_Driver_State.unDriverStateX(function (ds) {
+                                          var v3 = ds.prjQuery(q);
+                                          if (v3 instanceof Data_Maybe.Just) {
+                                              return Data_Functor.map(Effect_Aff.functorAff)(k)(evalF(ds.selfRef)(v3.value0));
+                                          };
+                                          if (v3 instanceof Data_Maybe.Nothing) {
+                                              return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error("Query projection failed for child query"));
+                                          };
+                                          throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 141, column 32 - line 143, column 82: " + [ v3.constructor.name ]);
+                                      })(v2);
+                                  });
+                              };
+                              if (v1 instanceof Data_Maybe.Nothing) {
+                                  return Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff)(Effect_Exception.error("Slot lookup failed for child query"));
+                              };
+                              throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 138, column 5 - line 144, column 73: " + [ v1.constructor.name ]);
+                          });
+                      };
+                  });
+              };
+          };
+          return function (v) {
+              if (v instanceof Halogen_Query_InputF.RefUpdate) {
+                  return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(function (v1) {
+                      return {
+                          component: v1.component,
+                          state: v1.state,
+                          refs: Data_Map_Internal.alter(Data_Ord.ordString)(Data_Function["const"](v.value1))(v.value0)(v1.refs),
+                          children: v1.children,
+                          childrenIn: v1.childrenIn,
+                          childrenOut: v1.childrenOut,
+                          selfRef: v1.selfRef,
+                          handler: v1.handler,
+                          pendingQueries: v1.pendingQueries,
+                          pendingOuts: v1.pendingOuts,
+                          pendingHandlers: v1.pendingHandlers,
+                          rendering: v1.rendering,
+                          prjQuery: v1.prjQuery,
+                          fresh: v1.fresh,
+                          subscriptions: v1.subscriptions,
+                          lifecycleHandlers: v1.lifecycleHandlers
+                      };
+                  })(r)))(function () {
+                      return Control_Applicative.pure(Effect_Aff.applicativeAff)(v.value2);
+                  });
+              };
+              if (v instanceof Halogen_Query_InputF.Query) {
+                  return evalF(r)(v.value0);
+              };
+              throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 59, column 3 - line 64, column 25: " + [ v.constructor.name ]);
+          };
+      };
+  };
+  exports["handleLifecycle"] = handleLifecycle;
+  exports["eval"] = $$eval;
+  exports["queuingHandler"] = queuingHandler;
+})(PS["Halogen.Aff.Driver.Eval"] = PS["Halogen.Aff.Driver.Eval"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Coroutine = PS["Control.Coroutine"];
+  var Control_Monad_Fork_Class = PS["Control.Monad.Fork.Class"];
+  var Control_Monad_Rec_Class = PS["Control.Monad.Rec.Class"];
+  var Control_Parallel = PS["Control.Parallel"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_List = PS["Data.List"];
+  var Data_List_Types = PS["Data.List.Types"];
+  var Data_Map = PS["Data.Map"];
+  var Data_Map_Internal = PS["Data.Map.Internal"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Ord = PS["Data.Ord"];
+  var Data_Semiring = PS["Data.Semiring"];
+  var Data_Traversable = PS["Data.Traversable"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Aff_AVar = PS["Effect.Aff.AVar"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Console = PS["Effect.Console"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Effect_Ref = PS["Effect.Ref"];
+  var Halogen = PS["Halogen"];
+  var Halogen_Aff_Driver_Eval = PS["Halogen.Aff.Driver.Eval"];
+  var Halogen_Aff_Driver_State = PS["Halogen.Aff.Driver.State"];
+  var Halogen_Component = PS["Halogen.Component"];
+  var Halogen_Data_OrdBox = PS["Halogen.Data.OrdBox"];
+  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
+  var Prelude = PS["Prelude"];                 
+  var newLifecycleHandlers = Effect_Ref["new"]({
+      initializers: Data_List_Types.Nil.value,
+      finalizers: Data_List_Types.Nil.value
+  });
+  var handleAff = Effect_Aff.runAff_(Data_Either.either(Effect_Exception.throwException)(Data_Function["const"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit))));
+  var runUI = function (renderSpec) {
+      return function (component) {
+          return function (i) {
+              var subscribe = function (fresh) {
+                  return function (ref) {
+                      return function (consumer) {
+                          return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Aff_AVar.empty)(function (v) {
+                              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(function __do() {
+                                  var v1 = Effect_Ref.read(fresh)();
+                                  Effect_Ref.modify_(function (v2) {
+                                      return v2 + 1 | 0;
+                                  })(fresh)();
+                                  Effect_Ref.modify_(Data_Map_Internal.insert(Data_Ord.ordInt)(v1)(v))(ref)();
+                                  return v1;
+                              }))(function (v1) {
+                                  var producer = Control_Coroutine.producer(Effect_Aff.monadAff)(Data_Functor.map(Effect_Aff.functorAff)(Data_Either.Left.create)(Effect_Aff_AVar.take(v)));
+                                  return Data_Functor["void"](Effect_Aff.functorAff)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff)(Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Coroutine.runProcess(Effect_Aff.monadRecAff)(Control_Coroutine.connect(Effect_Aff.monadRecAff)(Effect_Aff.parallelAff)(producer)(consumer)))(function () {
+                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.modify_(Data_Map_Internal["delete"](Data_Ord.ordInt)(v1))(ref)))(function () {
+                                          return Effect_Aff_AVar.kill(Effect_Exception.error("ended"))(v);
+                                      });
+                                  })));
+                              });
+                          });
+                      };
+                  };
+              };
+              var rootHandler = function (ref) {
+                  return function (message) {
+                      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref.read(ref)))(function (v) {
+                          return Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Map_Internal.foldableMap)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(Data_Functor.map(Data_Map_Internal.functorMap)(Effect_Aff_AVar.put(message))(v));
+                      });
+                  };
+              };
+              var handlePending = function (ref) {
+                  return function __do() {
+                      var v = Effect_Ref.read(ref)();
+                      Effect_Ref.write(Data_Maybe.Nothing.value)(ref)();
+                      return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(v)(function ($63) {
+                          return handleAff(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(Data_List.reverse($63)));
+                      })();
+                  };
+              };
+              var cleanupSubscriptions = function (v) {
+                  return function __do() {
+                      Control_Bind.bindFlipped(Effect.bindEffect)(Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(function ($64) {
+                          return handleAff(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Map_Internal.foldableMap)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))($64));
+                      }))(Effect_Ref.read(v.subscriptions))();
+                      return Effect_Ref.write(Data_Maybe.Nothing.value)(v.subscriptions)();
+                  };
+              };
+              var squashChildInitializers = function (lchs) {
+                  return function (preInits) {
+                      return Halogen_Aff_Driver_State.unDriverStateX(function (st) {
+                          var parentInitializer = Data_Functor.map(Data_Maybe.functorMaybe)(function ($65) {
+                              return evalF(st.selfRef)(Halogen_Query_InputF.Query.create($65));
+                          })(st.component.initializer);
+                          return Effect_Ref.modify_(function (handlers) {
+                              return {
+                                  initializers: new Data_List_Types.Cons(Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Control_Parallel.parSequence_(Effect_Aff.parallelAff)(Data_List_Types.foldableList)(Data_List.reverse(handlers.initializers)))(function () {
+                                      return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Foldable.sequence_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(parentInitializer))(function () {
+                                          return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(function __do() {
+                                              handlePending(st.pendingQueries)();
+                                              return handlePending(st.pendingOuts)();
+                                          });
+                                      });
+                                  }), preInits),
+                                  finalizers: handlers.finalizers
+                              };
+                          })(lchs);
+                      });
+                  };
+              };
+              var runComponent = function (lchs) {
+                  return function (handler) {
+                      return function (j) {
+                          return function (prjQuery) {
+                              return Halogen_Component.unComponent(function (c) {
+                                  return function __do() {
+                                      var v = newLifecycleHandlers();
+                                      var v1 = Halogen_Aff_Driver_State.initDriverState(c)(j)(handler)(prjQuery)(v)();
+                                      var v2 = Effect_Ref.read(lchs)();
+                                      Effect_Ref.write({
+                                          initializers: Data_List_Types.Nil.value,
+                                          finalizers: v2.finalizers
+                                      })(lchs)();
+                                      Control_Bind.bindFlipped(Effect.bindEffect)(Halogen_Aff_Driver_State.unDriverStateX(function ($66) {
+                                          return render(lchs)((function (v3) {
+                                              return v3.selfRef;
+                                          })($66));
+                                      }))(Effect_Ref.read(v1))();
+                                      Control_Bind.bindFlipped(Effect.bindEffect)(squashChildInitializers(lchs)(v2.initializers))(Effect_Ref.read(v1))();
+                                      return v1;
+                                  };
+                              });
+                          };
+                      };
+                  };
+              };
+              var renderChild = function (lchs) {
+                  return function (handler) {
+                      return function (mkOrdBox) {
+                          return function (childrenInRef) {
+                              return function (childrenOutRef) {
+                                  return Halogen_Component.unComponentSlot(function (p) {
+                                      return function (ctor) {
+                                          return function (input) {
+                                              return function (inputQuery) {
+                                                  return function (outputQuery) {
+                                                      return function (prjQuery) {
+                                                          var ordP = mkOrdBox(p);
+                                                          return function __do() {
+                                                              var v = Effect_Ref.read(childrenInRef)();
+                                                              var v1 = (function () {
+                                                                  var v1 = Data_Map_Internal.pop(Halogen_Data_OrdBox.ordOrdBox)(ordP)(v);
+                                                                  if (v1 instanceof Data_Maybe.Just) {
+                                                                      Effect_Ref.write(v1.value0.value1)(childrenInRef)();
+                                                                      Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(inputQuery(input))(function (q) {
+                                                                          return function __do() {
+                                                                              var v2 = Effect_Ref.read(v1.value0.value0)();
+                                                                              return Halogen_Aff_Driver_State.unDriverStateX(function (st) {
+                                                                                  return Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(st.prjQuery(q))(function ($67) {
+                                                                                      return handleAff(evalF(st.selfRef)(Halogen_Query_InputF.Query.create($67)));
+                                                                                  });
+                                                                              })(v2)();
+                                                                          };
+                                                                      })();
+                                                                      return v1.value0.value0;
+                                                                  };
+                                                                  if (v1 instanceof Data_Maybe.Nothing) {
+                                                                      return runComponent(lchs)(function ($68) {
+                                                                          return Data_Maybe.maybe(Control_Applicative.pure(Effect_Aff.applicativeAff)(Data_Unit.unit))(handler)(outputQuery($68));
+                                                                      })(input)(prjQuery)(ctor)();
+                                                                  };
+                                                                  throw new Error("Failed pattern match at Halogen.Aff.Driver line 258, column 14 - line 266, column 92: " + [ v1.constructor.name ]);
+                                                              })();
+                                                              var v2 = Data_Functor.map(Effect.functorEffect)(Data_Map_Internal.member(Halogen_Data_OrdBox.ordOrdBox)(ordP))(Effect_Ref.read(childrenOutRef))();
+                                                              Control_Applicative.when(Effect.applicativeEffect)(v2)(Effect_Console.warn("Halogen: Duplicate slot address was detected during rendering, unexpected results may occur"))();
+                                                              Effect_Ref.modify_(Data_Map_Internal.insert(Halogen_Data_OrdBox.ordOrdBox)(ordP)(v1))(childrenOutRef)();
+                                                              return Control_Bind.bind(Effect.bindEffect)(Effect_Ref.read(v1))(Halogen_Aff_Driver_State.renderStateX(Effect.functorEffect)(function (v3) {
+                                                                  if (v3 instanceof Data_Maybe.Nothing) {
+                                                                      return Effect_Exception["throw"]("Halogen internal error: child was not initialized in renderChild");
+                                                                  };
+                                                                  if (v3 instanceof Data_Maybe.Just) {
+                                                                      return Control_Applicative.pure(Effect.applicativeEffect)(renderSpec.renderChild(v3.value0));
+                                                                  };
+                                                                  throw new Error("Failed pattern match at Halogen.Aff.Driver line 271, column 37 - line 273, column 50: " + [ v3.constructor.name ]);
+                                                              }))();
+                                                          };
+                                                      };
+                                                  };
+                                              };
+                                          };
+                                      };
+                                  });
+                              };
+                          };
+                      };
+                  };
+              };
+              var render = function (lchs) {
+                  return function ($$var) {
+                      return function __do() {
+                          var v = Effect_Ref.read($$var)();
+                          var v1 = Data_Functor.map(Effect.functorEffect)(Data_Maybe.isNothing)(Effect_Ref.read(v.pendingHandlers))();
+                          Control_Applicative.when(Effect.applicativeEffect)(v1)(Effect_Ref.write(new Data_Maybe.Just(Data_List_Types.Nil.value))(v.pendingHandlers))();
+                          Effect_Ref.write(Data_Map_Internal.empty)(v.childrenOut)();
+                          Effect_Ref.write(v.children)(v.childrenIn)();
+                          var handler = Halogen_Aff_Driver_Eval.queuingHandler(function ($69) {
+                              return Data_Functor["void"](Effect_Aff.functorAff)(evalF(v.selfRef)($69));
+                          })(v.pendingHandlers);
+                          var childHandler = Halogen_Aff_Driver_Eval.queuingHandler(function ($70) {
+                              return handler(Halogen_Query_InputF.Query.create($70));
+                          })(v.pendingQueries);
+                          var v2 = renderSpec.render(function ($71) {
+                              return handleAff(handler($71));
+                          })(renderChild(lchs)(childHandler)(v.component.mkOrdBox)(v.childrenIn)(v.childrenOut))(v.component.render(v.state))(v.rendering)();
+                          var v3 = Effect_Ref.read(v.childrenOut)();
+                          Control_Bind.bind(Effect.bindEffect)(Effect_Ref.read(v.childrenIn))(Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Map_Internal.foldableMap)(function (childVar) {
+                              return function __do() {
+                                  var v4 = Effect_Ref.read(childVar)();
+                                  Halogen_Aff_Driver_State.renderStateX_(Effect.applicativeEffect)(renderSpec.removeChild)(v4)();
+                                  return finalize(lchs)(v4)();
+                              };
+                          }))();
+                          Effect_Ref.modify_(function (v4) {
+                              return {
+                                  rendering: new Data_Maybe.Just(v2),
+                                  children: v3,
+                                  component: v4.component,
+                                  state: v4.state,
+                                  refs: v4.refs,
+                                  childrenIn: v4.childrenIn,
+                                  childrenOut: v4.childrenOut,
+                                  selfRef: v4.selfRef,
+                                  handler: v4.handler,
+                                  pendingQueries: v4.pendingQueries,
+                                  pendingOuts: v4.pendingOuts,
+                                  pendingHandlers: v4.pendingHandlers,
+                                  prjQuery: v4.prjQuery,
+                                  fresh: v4.fresh,
+                                  subscriptions: v4.subscriptions,
+                                  lifecycleHandlers: v4.lifecycleHandlers
+                              };
+                          })(v.selfRef)();
+                          return Control_Applicative.when(Effect.applicativeEffect)(v1)(Data_Function.flip(Control_Monad_Rec_Class.tailRecM(Control_Monad_Rec_Class.monadRecEffect))(Data_Unit.unit)(function (v4) {
+                              return function __do() {
+                                  var v5 = Effect_Ref.read(v.pendingHandlers)();
+                                  Effect_Ref.write(new Data_Maybe.Just(Data_List_Types.Nil.value))(v.pendingHandlers)();
+                                  Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(function ($72) {
+                                      return handleAff(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList)(Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff))(Data_List.reverse($72)));
+                                  })(v5)();
+                                  var v6 = Effect_Ref.read(v.pendingHandlers)();
+                                  var $57 = Data_Maybe.maybe(false)(Data_List["null"])(v6);
+                                  if ($57) {
+                                      return Data_Functor.voidLeft(Effect.functorEffect)(Effect_Ref.write(Data_Maybe.Nothing.value)(v.pendingHandlers))(new Control_Monad_Rec_Class.Done(Data_Unit.unit))();
+                                  };
+                                  return new Control_Monad_Rec_Class.Loop(Data_Unit.unit);
+                              };
+                          }))();
+                      };
+                  };
+              };
+              var finalize = function (lchs) {
+                  return Halogen_Aff_Driver_State.unDriverStateX(function (st) {
+                      return function __do() {
+                          cleanupSubscriptions(st)();
+                          Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(Data_Functor.map(Data_Maybe.functorMaybe)(function ($73) {
+                              return evalF(st.selfRef)(Halogen_Query_InputF.Query.create($73));
+                          })(st.component.finalizer))(function (f) {
+                              return Effect_Ref.modify_(function (handlers) {
+                                  return {
+                                      initializers: handlers.initializers,
+                                      finalizers: new Data_List_Types.Cons(f, handlers.finalizers)
+                                  };
+                              })(lchs);
+                          })();
+                          return Data_Foldable.for_(Effect.applicativeEffect)(Data_Map_Internal.foldableMap)(st.children)(Control_Bind.composeKleisliFlipped(Effect.bindEffect)(finalize(lchs))(Effect_Ref.read))();
+                      };
+                  });
+              };
+              var evalF = function (ref) {
+                  return Halogen_Aff_Driver_Eval["eval"](render)(ref);
+              };
+              var evalDriver = function (ref) {
+                  return function (prjQuery) {
+                      return function (q) {
+                          var v = prjQuery(q);
+                          if (v instanceof Data_Maybe.Just) {
+                              return evalF(ref)(new Halogen_Query_InputF.Query(v.value0));
+                          };
+                          if (v instanceof Data_Maybe.Nothing) {
+                              return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Exception.throwException(Effect_Exception.error("Halogen internal error: query projection failed in runUI'")));
+                          };
+                          throw new Error("Failed pattern match at Halogen.Aff.Driver line 136, column 5 - line 138, column 113: " + [ v.constructor.name ]);
+                      };
+                  };
+              };
+              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(newLifecycleHandlers))(function (v) {
+                  return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Effect_Ref["new"](0)))(function (v1) {
+                      return Halogen_Aff_Driver_Eval.handleLifecycle(v)(function __do() {
+                          var v2 = Effect_Ref["new"](Data_Map_Internal.empty)();
+                          return Control_Bind.bind(Effect.bindEffect)(Control_Bind.bind(Effect.bindEffect)(runComponent(v)(rootHandler(v2))(i)(Data_Maybe.Just.create)(component))(Effect_Ref.read))(Halogen_Aff_Driver_State.unDriverStateX(function (st) {
+                              return Control_Applicative.pure(Effect.applicativeEffect)({
+                                  query: evalDriver(st.selfRef)(st.prjQuery),
+                                  subscribe: subscribe(v1)(v2)
+                              });
+                          }))();
+                      });
+                  });
+              });
+          };
+      };
+  };
+  exports["runUI"] = runUI;
+})(PS["Halogen.Aff.Driver"] = PS["Halogen.Aff.Driver"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Monad_Error_Class = PS["Control.Monad.Error.Class"];
+  var Control_Semigroupoid = PS["Control.Semigroupoid"];
+  var Data_Either = PS["Data.Either"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Exception = PS["Effect.Exception"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
+  var Web_Event_EventTarget = PS["Web.Event.EventTarget"];
+  var Web_HTML = PS["Web.HTML"];
+  var Web_HTML_Event_EventTypes = PS["Web.HTML.Event.EventTypes"];
+  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
+  var Web_HTML_HTMLDocument_ReadyState = PS["Web.HTML.HTMLDocument.ReadyState"];
+  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
+  var Web_HTML_Window = PS["Web.HTML.Window"];                 
+  var selectElement = function (query) {
+      return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Control_Bind.bindFlipped(Effect.bindEffect)(Control_Bind.composeKleisliFlipped(Effect.bindEffect)(function ($12) {
+          return Web_DOM_ParentNode.querySelector(query)(Web_HTML_HTMLDocument.toParentNode($12));
+      })(Web_HTML_Window.document))(Web_HTML.window)))(function (v) {
+          return Control_Applicative.pure(Effect_Aff.applicativeAff)(Control_Bind.bindFlipped(Data_Maybe.bindMaybe)(Web_HTML_HTMLElement.fromElement)(v));
+      });
+  };
+  var runHalogenAff = Effect_Aff.runAff_(Data_Either.either(Effect_Exception.throwException)(Data_Function["const"](Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit))));
+  exports["selectElement"] = selectElement;
+  exports["runHalogenAff"] = runHalogenAff;
+})(PS["Halogen.Aff.Util"] = PS["Halogen.Aff.Util"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Data_Array = PS["Data.Array"];
+  var Data_Eq = PS["Data.Eq"];
+  var Data_Function_Uncurried = PS["Data.Function.Uncurried"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Nullable = PS["Data.Nullable"];
+  var Data_Tuple = PS["Data.Tuple"];
+  var Effect = PS["Effect"];
+  var Effect_Uncurried = PS["Effect.Uncurried"];
+  var Halogen_VDom_Machine = PS["Halogen.VDom.Machine"];
+  var Halogen_VDom_Types = PS["Halogen.VDom.Types"];
+  var Halogen_VDom_Util = PS["Halogen.VDom.Util"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM_Document = PS["Web.DOM.Document"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var Web_DOM_Node = PS["Web.DOM.Node"];
+  var eqElemSpec = function (a, b) {
+      if (a.value1 === b.value1) {
+          if (a.value0 instanceof Data_Maybe.Just && (b.value0 instanceof Data_Maybe.Just && a.value0.value0 === b.value0.value0)) {
+              return true;
+          };
+          if (a.value0 instanceof Data_Maybe.Nothing && b.value0 instanceof Data_Maybe.Nothing) {
+              return true;
+          };
+          return false;
+      };
+      return false;
+  };
+  var buildWidget = (function () {
+      var patch = function (build, v) {
+          return function (v1) {
+              if (v1 instanceof Halogen_VDom_Types.Grafted) {
+                  return patch(build, v)(Halogen_VDom_Types.runGraft(v1.value0));
+              };
+              if (v1 instanceof Halogen_VDom_Types.Widget) {
+                  var v2 = v.value1(v1.value0);
+                  return new Halogen_VDom_Machine.Step(v2.value0, patch(build, v2), v2.value2);
+              };
+              v.value2();
+              return build(v1);
+          };
+      };
+      var render = function (v, build, w) {
+          var v1 = v.buildWidget(v)(w);
+          return new Halogen_VDom_Machine.Step(v1.value0, patch(build, v1), v1.value2);
+      };
+      return render;
+  })();
+  var buildText = (function () {
+      var patch = function (build, halt, node, s1) {
+          return function (v) {
+              if (v instanceof Halogen_VDom_Types.Grafted) {
+                  return patch(build, halt, node, s1)(Halogen_VDom_Types.runGraft(v.value0));
+              };
+              if (v instanceof Halogen_VDom_Types.Text) {
+                  var res = new Halogen_VDom_Machine.Step(node, patch(build, halt, node, v.value0), halt);
+                  var $84 = s1 === v.value0;
+                  if ($84) {
+                      return res;
+                  };
+                  Halogen_VDom_Util.setTextContent(v.value0, node);
+                  return res;
+              };
+              halt();
+              return build(v);
+          };
+      };
+      var done = function (node) {
+          return function __do() {
+              var v = Halogen_VDom_Util.parentNode(node);
+              return Halogen_VDom_Util.removeChild(node, v);
+          };
+      };
+      var render = function (v, build, s) {
+          var v1 = Halogen_VDom_Util.createTextNode(s, v.document);
+          var halt = done(v1);
+          return new Halogen_VDom_Machine.Step(v1, patch(build, halt, v1, s), halt);
+      };
+      return render;
+  })();
+  var buildKeyed = (function () {
+      var done = function (node, attrs, steps) {
+          return function __do() {
+              var v = Halogen_VDom_Util.parentNode(node);
+              Halogen_VDom_Util.removeChild(node, v);
+              Halogen_VDom_Util.forInE(steps, function (v1, v2) {
+                  return v2.value2();
+              });
+              return Halogen_VDom_Machine.halt(attrs)();
+          };
+      };
+      var patch = function (build, halt, node, attrs, v, ch1, len1) {
+          return function (v1) {
+              if (v1 instanceof Halogen_VDom_Types.Grafted) {
+                  return patch(build, halt, node, attrs, v, ch1, len1)(Halogen_VDom_Types.runGraft(v1.value0));
+              };
+              if (v1 instanceof Halogen_VDom_Types.Keyed && eqElemSpec(v, v1.value0)) {
+                  var v2 = Data_Array.length(v1.value1);
+                  if (len1 === 0 && v2 === 0) {
+                      var v4 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
+                      var halt$prime = done(node, v4, ch1);
+                      return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v4, v1.value0, ch1, 0), halt$prime);
+                  };
+                  var onThis = function (v4, v5) {
+                      return v5.value2();
+                  };
+                  var onThese = function (v4, ix$prime, v5, v6) {
+                      var v7 = v5.value1(v6.value1);
+                      Halogen_VDom_Util.insertChildIx(ix$prime, v7.value0, node);
+                      return v7;
+                  };
+                  var onThat = function (v4, ix, v5) {
+                      var v6 = build(v5.value1);
+                      Halogen_VDom_Util.insertChildIx(ix, v6.value0, node);
+                      return v6;
+                  };
+                  var v4 = Halogen_VDom_Util.diffWithKeyAndIxE(ch1, v1.value1, Data_Tuple.fst, onThese, onThis, onThat);
+                  var v5 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
+                  var halt$prime = done(node, v5, v4);
+                  return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v5, v1.value0, v4, v2), halt$prime);
+              };
+              halt();
+              return build(v1);
+          };
+      };
+      var render = function (v, build, v1, ch1) {
+          var v2 = Halogen_VDom_Util.createElement(Data_Nullable.toNullable(v1.value0), v1.value1, v.document);
+          var node = Web_DOM_Element.toNode(v2);
+          var onChild = function (k, ix, v3) {
+              var v4 = build(v3.value1);
+              Halogen_VDom_Util.insertChildIx(ix, v4.value0, node);
+              return v4;
+          };
+          var v3 = Halogen_VDom_Util.strMapWithIxE(ch1, Data_Tuple.fst, onChild);
+          var v4 = v.buildAttributes(v2)(v1.value2);
+          var halt = done(node, v4, v3);
+          return new Halogen_VDom_Machine.Step(node, patch(build, halt, node, v4, v1, v3, Data_Array.length(ch1)), halt);
+      };
+      return render;
+  })();
+  var buildElem = (function () {
+      var done = function (node, attrs, steps) {
+          return function __do() {
+              var v = Halogen_VDom_Util.parentNode(node);
+              Halogen_VDom_Util.removeChild(node, v);
+              Effect.foreachE(steps)(Halogen_VDom_Machine.halt)();
+              return Halogen_VDom_Machine.halt(attrs)();
+          };
+      };
+      var patch = function (build, halt, node, attrs, v, ch1) {
+          return function (v1) {
+              if (v1 instanceof Halogen_VDom_Types.Grafted) {
+                  return patch(build, halt, node, attrs, v, ch1)(Halogen_VDom_Types.runGraft(v1.value0));
+              };
+              if (v1 instanceof Halogen_VDom_Types.Elem && eqElemSpec(v, v1.value0)) {
+                  var v2 = Data_Array.length(v1.value1);
+                  var v3 = Data_Array.length(ch1);
+                  if (v3 === 0 && v2 === 0) {
+                      var v4 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
+                      var halt$prime = done(node, v4, ch1);
+                      return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v4, v1.value0, ch1), halt$prime);
+                  };
+                  var onThis = function (ix, v4) {
+                      return v4.value2();
+                  };
+                  var onThese = function (ix, v4, vdom) {
+                      var v5 = v4.value1(vdom);
+                      Halogen_VDom_Util.insertChildIx(ix, v5.value0, node);
+                      return v5;
+                  };
+                  var onThat = function (ix, vdom) {
+                      var v4 = build(vdom);
+                      Halogen_VDom_Util.insertChildIx(ix, v4.value0, node);
+                      return v4;
+                  };
+                  var v4 = Halogen_VDom_Util.diffWithIxE(ch1, v1.value1, onThese, onThis, onThat);
+                  var v5 = Halogen_VDom_Machine.step(attrs)(v1.value0.value2);
+                  var halt$prime = done(node, v5, v4);
+                  return new Halogen_VDom_Machine.Step(node, patch(build, halt$prime, node, v5, v1.value0, v4), halt$prime);
+              };
+              halt();
+              return build(v1);
+          };
+      };
+      var render = function (v, build, v1, ch1) {
+          var v2 = Halogen_VDom_Util.createElement(Data_Nullable.toNullable(v1.value0), v1.value1, v.document);
+          var node = Web_DOM_Element.toNode(v2);
+          var onChild = function (ix, child) {
+              var v3 = build(child);
+              Halogen_VDom_Util.insertChildIx(ix, v3.value0, node);
+              return v3;
+          };
+          var v3 = Halogen_VDom_Util.forE(ch1, onChild);
+          var v4 = v.buildAttributes(v2)(v1.value2);
+          var halt = done(node, v4, v3);
+          return new Halogen_VDom_Machine.Step(node, patch(build, halt, node, v4, v1, v3), halt);
+      };
+      return render;
+  })();
+  var buildVDom = function (spec) {
+      var build = function (v) {
+          if (v instanceof Halogen_VDom_Types.Text) {
+              return buildText(spec, build, v.value0);
+          };
+          if (v instanceof Halogen_VDom_Types.Elem) {
+              return buildElem(spec, build, v.value0, v.value1);
+          };
+          if (v instanceof Halogen_VDom_Types.Keyed) {
+              return buildKeyed(spec, build, v.value0, v.value1);
+          };
+          if (v instanceof Halogen_VDom_Types.Widget) {
+              return buildWidget(spec, build, v.value0);
+          };
+          if (v instanceof Halogen_VDom_Types.Grafted) {
+              return build(Halogen_VDom_Types.runGraft(v.value0));
+          };
+          throw new Error("Failed pattern match at Halogen.VDom.DOM line 58, column 27 - line 63, column 52: " + [ v.constructor.name ]);
+      };
+      return build;
+  };
+  exports["buildVDom"] = buildVDom;
+  exports["buildText"] = buildText;
+  exports["buildElem"] = buildElem;
+  exports["buildKeyed"] = buildKeyed;
+  exports["buildWidget"] = buildWidget;
+})(PS["Halogen.VDom.DOM"] = PS["Halogen.VDom.DOM"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Control_Bind = PS["Control.Bind"];
+  var Control_Category = PS["Control.Category"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_HeytingAlgebra = PS["Data.HeytingAlgebra"];
+  var Data_Maybe = PS["Data.Maybe"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Class = PS["Effect.Class"];
+  var Effect_Ref = PS["Effect.Ref"];
+  var Effect_Uncurried = PS["Effect.Uncurried"];
+  var Halogen_Aff_Driver = PS["Halogen.Aff.Driver"];
+  var Halogen_Aff_Driver_State = PS["Halogen.Aff.Driver.State"];
+  var Halogen_Component = PS["Halogen.Component"];
+  var Halogen_HTML_Core = PS["Halogen.HTML.Core"];
+  var Halogen_Query_InputF = PS["Halogen.Query.InputF"];
+  var Halogen_VDom = PS["Halogen.VDom"];
+  var Halogen_VDom_DOM = PS["Halogen.VDom.DOM"];
+  var Halogen_VDom_DOM_Prop = PS["Halogen.VDom.DOM.Prop"];
+  var Halogen_VDom_Machine = PS["Halogen.VDom.Machine"];
+  var Prelude = PS["Prelude"];
+  var Unsafe_Reference = PS["Unsafe.Reference"];
+  var Web_DOM_Document = PS["Web.DOM.Document"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var Web_DOM_Node = PS["Web.DOM.Node"];
+  var Web_HTML = PS["Web.HTML"];
+  var Web_HTML_HTMLDocument = PS["Web.HTML.HTMLDocument"];
+  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];
+  var Web_HTML_Window = PS["Web.HTML.Window"];
+  var substInParent = function (v) {
+      return function (v1) {
+          return function (v2) {
+              if (v1 instanceof Data_Maybe.Just && v2 instanceof Data_Maybe.Just) {
+                  return Data_Functor["void"](Effect.functorEffect)(Web_DOM_Node.insertBefore(v)(v1.value0)(v2.value0));
+              };
+              if (v1 instanceof Data_Maybe.Nothing && v2 instanceof Data_Maybe.Just) {
+                  return Data_Functor["void"](Effect.functorEffect)(Web_DOM_Node.appendChild(v)(v2.value0));
+              };
+              return Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
+          };
+      };
+  };
+  var removeChild = function (v) {
+      return function __do() {
+          var v1 = Web_DOM_Node.parentNode(v.node)();
+          return Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe)(function (pn) {
+              return Web_DOM_Node.removeChild(v.node)(pn);
+          })(v1)();
+      };
+  };
+  var mkSpec = function (handler) {
+      return function (renderChildRef) {
+          return function (document) {
+              var getNode = Halogen_Aff_Driver_State.unRenderStateX(function (v) {
+                  return v.node;
+              });
+              var done = Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
+              var patch = function (slot) {
+                  var v = Effect_Ref.read(renderChildRef)();
+                  var v1 = v(slot)();
+                  var node = getNode(v1);
+                  return new Halogen_VDom_Machine.Step(node, patch, done);
+              };
+              var buildWidget = function (spec) {
+                  return function (slot) {
+                      var v = Effect_Ref.read(renderChildRef)();
+                      var v1 = v(slot)();
+                      var node = getNode(v1);
+                      return new Halogen_VDom_Machine.Step(node, patch, done);
+                  };
+              };
+              var buildAttributes = Halogen_VDom_DOM_Prop.buildProp(handler);
+              return {
+                  buildWidget: buildWidget,
+                  buildAttributes: buildAttributes,
+                  document: document
+              };
+          };
+      };
+  };
+  var renderSpec = function (document) {
+      return function (container) {
+          var render = function (handler) {
+              return function (child) {
+                  return function (v) {
+                      return function (v1) {
+                          if (v1 instanceof Data_Maybe.Nothing) {
+                              return function __do() {
+                                  var v2 = Effect_Ref["new"](child)();
+                                  var spec = mkSpec(handler)(v2)(document);
+                                  var v3 = Halogen_VDom_DOM.buildVDom(spec)(v);
+                                  var node = Halogen_VDom_Machine.extract(v3);
+                                  Data_Functor["void"](Effect.functorEffect)(Web_DOM_Node.appendChild(node)(Web_HTML_HTMLElement.toNode(container)))();
+                                  return {
+                                      machine: v3,
+                                      node: node,
+                                      renderChildRef: v2
+                                  };
+                              };
+                          };
+                          if (v1 instanceof Data_Maybe.Just) {
+                              return function __do() {
+                                  Effect_Ref.write(child)(v1.value0.renderChildRef)();
+                                  var v2 = Web_DOM_Node.parentNode(v1.value0.node)();
+                                  var v3 = Web_DOM_Node.nextSibling(v1.value0.node)();
+                                  var v4 = Halogen_VDom_Machine.step(v1.value0.machine)(v);
+                                  var newNode = Halogen_VDom_Machine.extract(v4);
+                                  Control_Applicative.when(Effect.applicativeEffect)(Data_HeytingAlgebra.not(Data_HeytingAlgebra.heytingAlgebraFunction(Data_HeytingAlgebra.heytingAlgebraFunction(Data_HeytingAlgebra.heytingAlgebraBoolean)))(Unsafe_Reference.unsafeRefEq)(v1.value0.node)(newNode))(substInParent(newNode)(v3)(v2))();
+                                  return {
+                                      machine: v4,
+                                      node: newNode,
+                                      renderChildRef: v1.value0.renderChildRef
+                                  };
+                              };
+                          };
+                          throw new Error("Failed pattern match at Halogen.VDom.Driver line 118, column 5 - line 134, column 80: " + [ v1.constructor.name ]);
+                      };
+                  };
+              };
+          };
+          return {
+              render: render,
+              renderChild: Control_Category.identity(Control_Category.categoryFn),
+              removeChild: removeChild
+          };
+      };
+  };
+  var runUI = function (component) {
+      return function (i) {
+          return function (element) {
+              return Control_Bind.bind(Effect_Aff.bindAff)(Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Data_Functor.map(Effect.functorEffect)(Web_HTML_HTMLDocument.toDocument)(Control_Bind.bindFlipped(Effect.bindEffect)(Web_HTML_Window.document)(Web_HTML.window))))(function (v) {
+                  return Halogen_Aff_Driver.runUI(renderSpec(v)(element))(component)(i);
+              });
+          };
+      };
+  };
+  exports["runUI"] = runUI;
+})(PS["Halogen.VDom.Driver"] = PS["Halogen.VDom.Driver"] || {});
+(function(exports) {
+    "use strict";
+  var Control_Applicative = PS["Control.Applicative"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Prelude = PS["Prelude"];                 
+  var main = Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit);
+  exports["main"] = main;
+})(PS["Main"] = PS["Main"] || {});
+(function(exports) {
+  // Generated by purs version 0.12.0
+  "use strict";
+  var Component_Add = PS["Component.Add"];
+  var Component_BList = PS["Component.BList"];
+  var Component_NList = PS["Component.NList"];
+  var Control_Bind = PS["Control.Bind"];
+  var Data_Foldable = PS["Data.Foldable"];
+  var Data_Function = PS["Data.Function"];
+  var Data_Functor = PS["Data.Functor"];
+  var Data_Unit = PS["Data.Unit"];
+  var Effect = PS["Effect"];
+  var Effect_Aff = PS["Effect.Aff"];
+  var Effect_Class = PS["Effect.Class"];
+  var Halogen_Aff = PS["Halogen.Aff"];
+  var Halogen_Aff_Util = PS["Halogen.Aff.Util"];
+  var Halogen_VDom_Driver = PS["Halogen.VDom.Driver"];
+  var Model = PS["Model"];
+  var Prelude = PS["Prelude"];
+  var Web_DOM_Element = PS["Web.DOM.Element"];
+  var Web_DOM_ParentNode = PS["Web.DOM.ParentNode"];
+  var Web_HTML_HTMLElement = PS["Web.HTML.HTMLElement"];                 
+  var showFooter = Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(".user_footer"))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
+      return Effect_Class.liftEffect(Effect_Aff.monadEffectAff)(Web_DOM_Element.removeAttribute("hidden")(Web_HTML_HTMLElement.toElement(el)));
+  }));
+  var renderNotes = function (renderElSelector) {
+      return function (notes) {
+          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
+              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor["void"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_NList.nlist(notes))(Data_Unit.unit)(el)))(function () {
+                  return showFooter;
+              });
+          })));
+      };
+  };
+  var renderNote = function (renderElSelector) {
+      return function (note) {
+          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
+              return Data_Functor["void"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_NList.nnote(note))(Data_Unit.unit)(el));
+          })));
+      };
+  };
+  var renderBookmarks = function (renderElSelector) {
+      return function (bmarks) {
+          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
+              return Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff)(Data_Functor["void"](Effect_Aff.functorAff)(Halogen_VDom_Driver.runUI(Component_BList.blist(bmarks))(Data_Unit.unit)(el)))(function () {
+                  return showFooter;
+              });
+          })));
+      };
+  };
+  var renderAddForm = function (renderElSelector) {
+      return function (bmark) {
+          return Halogen_Aff_Util.runHalogenAff(Control_Bind.bind(Effect_Aff.bindAff)(Halogen_Aff_Util.selectElement(renderElSelector))(Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe)(function (el) {
+              return Halogen_VDom_Driver.runUI(Component_Add.addbmark(bmark))(Data_Unit.unit)(el);
+          })));
+      };
+  };
+  exports["renderBookmarks"] = renderBookmarks;
+  exports["renderAddForm"] = renderAddForm;
+  exports["renderNotes"] = renderNotes;
+  exports["renderNote"] = renderNote;
   exports["showFooter"] = showFooter;
 })(PS["User"] = PS["User"] || {});
diff --git a/static/js/app.js.gz b/static/js/app.js.gz
Binary files a/static/js/app.js.gz and b/static/js/app.js.gz differ
diff --git a/static/js/app.min.js b/static/js/app.min.js
--- a/static/js/app.min.js
+++ b/static/js/app.min.js
@@ -1,1 +1,1 @@
-var PS={};!function(n){"use strict";(PS["Control.Bind"]=PS["Control.Bind"]||{}).arrayBind=function(n){return function(e){for(var t=[],r=0,a=n.length;r<a;r++)Array.prototype.push.apply(t,e(n[r]));return t}}}(),function(n){"use strict";(PS["Control.Apply"]=PS["Control.Apply"]||{}).arrayApply=function(n){return function(e){for(var t=n.length,r=e.length,a=new Array(t*r),u=0,o=0;o<t;o++)for(var i=n[o],l=0;l<r;l++)a[u++]=i(e[l]);return a}}}(),function(n){"use strict";var e=function(n){this.compose=n},t=new e(function(n){return function(e){return function(t){return n(e(t))}}});n.compose=function(n){return n.compose},n.Semigroupoid=e,n.semigroupoidFn=t}(PS["Control.Semigroupoid"]=PS["Control.Semigroupoid"]||{}),function(n){"use strict";var e=PS["Control.Semigroupoid"],t=function(n,e){this.Semigroupoid0=n,this.identity=e},r=new t(function(){return e.semigroupoidFn},function(n){return n});n.Category=t,n.identity=function(n){return n.identity},n.categoryFn=r}(PS["Control.Category"]=PS["Control.Category"]||{}),function(n){"use strict";(PS["Data.Boolean"]=PS["Data.Boolean"]||{}).otherwise=!0}(),function(n){"use strict";(PS["Data.Eq"]=PS["Data.Eq"]||{}).refEq=function(n){return function(e){return n===e}}}(),function(n){"use strict";n.boolConj=function(n){return function(e){return n&&e}},n.boolDisj=function(n){return function(e){return n||e}},n.boolNot=function(n){return!n}}(PS["Data.HeytingAlgebra"]=PS["Data.HeytingAlgebra"]||{}),function(n){"use strict";PS["Data.Symbol"];var e=function(){function n(){}return n.value=new n,n}();n.IsSymbol=function(n){this.reflectSymbol=n},n.reflectSymbol=function(n){return n.reflectSymbol},n.SProxy=e}(PS["Data.Symbol"]=PS["Data.Symbol"]||{}),function(n){"use strict";(PS["Data.Unit"]=PS["Data.Unit"]||{}).unit={}}(),function(n){"use strict";n.showIntImpl=function(n){return n.toString()},n.showStringImpl=function(n){var e=n.length;return'"'+n.replace(/[\0-\x1F\x7F"\\]/g,function(t,r){switch(t){case'"':case"\\":return"\\"+t;case"":return"\\a";case"\b":return"\\b";case"\f":return"\\f";case"\n":return"\\n";case"\r":return"\\r";case"\t":return"\\t";case"\v":return"\\v"}var a=r+1,u=a<e&&n[a]>="0"&&n[a]<="9"?"\\&":"";return"\\"+t.charCodeAt(0).toString(10)+u})+'"'}}(PS["Data.Show"]=PS["Data.Show"]||{}),function(n){"use strict";(PS["Record.Unsafe"]=PS["Record.Unsafe"]||{}).unsafeGet=function(n){return function(e){return e[n]}}}(),function(n){"use strict";var e=PS["Record.Unsafe"];n.unsafeGet=e.unsafeGet}(PS["Record.Unsafe"]=PS["Record.Unsafe"]||{}),function(n){"use strict";var e=PS["Data.Show"],t=(PS["Data.Symbol"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n){this.show=n}),r=new t(e.showStringImpl),a=new t(e.showIntImpl);n.Show=t,n.show=function(n){return n.show},n.showInt=a,n.showString=r}(PS["Data.Show"]=PS["Data.Show"]||{}),function(n){"use strict";var e=PS["Data.Unit"];PS["Data.Show"];n.unit=e.unit}(PS["Data.Unit"]=PS["Data.Unit"]||{}),function(n){"use strict";var e=PS["Data.HeytingAlgebra"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.Row"],PS["Type.Data.RowList"],function(n,e,t,r,a,u){this.conj=n,this.disj=e,this.ff=t,this.implies=r,this.not=a,this.tt=u}),r=function(n){return n.tt},a=function(n){return n.not},u=function(n){return n.implies},o=function(n){return n.ff},i=function(n){return n.disj},l=new t(e.boolConj,e.boolDisj,!1,function(n){return function(e){return i(l)(a(l)(n))(e)}},e.boolNot,!0),c=function(n){return n.conj};n.HeytingAlgebra=t,n.tt=r,n.ff=o,n.implies=u,n.conj=c,n.disj=i,n.not=a,n.heytingAlgebraBoolean=l,n.heytingAlgebraFunction=function(n){return new t(function(e){return function(t){return function(r){return c(n)(e(r))(t(r))}}},function(e){return function(t){return function(r){return i(n)(e(r))(t(r))}}},function(e){return o(n)},function(e){return function(t){return function(r){return u(n)(e(r))(t(r))}}},function(e){return function(t){return a(n)(e(t))}},function(e){return r(n)})}}(PS["Data.HeytingAlgebra"]=PS["Data.HeytingAlgebra"]||{}),function(n){"use strict";var e=PS["Data.Eq"],t=(PS["Data.HeytingAlgebra"],PS["Data.Symbol"],PS["Data.Unit"],PS["Data.Void"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n){this.eq=n}),r=new t(function(n){return function(n){return!0}}),a=new t(e.refEq),u=new t(e.refEq),o=new t(e.refEq);n.Eq=t,n.eq=function(n){return n.eq},n.eqInt=u,n.eqChar=o,n.eqString=a,n.eqVoid=r}(PS["Data.Eq"]=PS["Data.Eq"]||{}),function(n){"use strict";(PS["Data.Ord.Unsafe"]=PS["Data.Ord.Unsafe"]||{}).unsafeCompareImpl=function(n){return function(e){return function(t){return function(r){return function(a){return r<a?n:r===a?e:t}}}}}}(),function(n){"use strict";n.concatString=function(n){return function(e){return n+e}},n.concatArray=function(n){return function(e){return 0===n.length?e:0===e.length?n:n.concat(e)}}}(PS["Data.Semigroup"]=PS["Data.Semigroup"]||{}),function(n){"use strict";var e=PS["Data.Semigroup"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Data.Void"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n){this.append=n}),r=new t(e.concatString),a=new t(e.concatArray),u=function(n){return n.append};n.Semigroup=t,n.append=u,n.semigroupString=r,n.semigroupFn=function(n){return new t(function(e){return function(t){return function(r){return u(n)(e(r))(t(r))}}})},n.semigroupArray=a}(PS["Data.Semigroup"]=PS["Data.Semigroup"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.Semigroup"],PS["Data.Show"];var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}();n.LT=e,n.GT=t,n.EQ=r}(PS["Data.Ordering"]=PS["Data.Ordering"]||{}),function(n){"use strict";var e=PS["Data.Ord.Unsafe"],t=PS["Data.Ordering"],r=e.unsafeCompareImpl(t.LT.value)(t.EQ.value)(t.GT.value);n.unsafeCompare=r}(PS["Data.Ord.Unsafe"]=PS["Data.Ord.Unsafe"]||{}),function(n){"use strict";(PS["Data.Ring"]=PS["Data.Ring"]||{}).intSub=function(n){return function(e){return n-e|0}}}(),function(n){"use strict";n.intAdd=function(n){return function(e){return n+e|0}},n.intMul=function(n){return function(e){return n*e|0}}}(PS["Data.Semiring"]=PS["Data.Semiring"]||{}),function(n){"use strict";var e=PS["Data.Semiring"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.Row"],PS["Type.Data.RowList"],function(n,e,t,r){this.add=n,this.mul=e,this.one=t,this.zero=r}),r=new t(e.intAdd,e.intMul,1,0);n.Semiring=t,n.add=function(n){return n.add},n.zero=function(n){return n.zero},n.mul=function(n){return n.mul},n.one=function(n){return n.one},n.semiringInt=r}(PS["Data.Semiring"]=PS["Data.Semiring"]||{}),function(n){"use strict";var e=PS["Data.Ring"],t=PS["Data.Semiring"],r=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n,e){this.Semiring0=n,this.sub=e}),a=new r(function(){return t.semiringInt},e.intSub);n.Ring=r,n.sub=function(n){return n.sub},n.ringInt=a}(PS["Data.Ring"]=PS["Data.Ring"]||{}),function(n){"use strict";PS["Data.Ord"];var e=PS["Data.Eq"],t=PS["Data.Ord.Unsafe"],r=PS["Data.Ordering"],a=(PS["Data.Ring"],PS["Data.Semiring"],PS["Data.Unit"],PS["Data.Void"],function(n,e){this.Eq0=n,this.compare=e}),u=new a(function(){return e.eqVoid},function(n){return function(n){return r.EQ.value}}),o=new a(function(){return e.eqString},t.unsafeCompare),i=new a(function(){return e.eqInt},t.unsafeCompare),l=new a(function(){return e.eqChar},t.unsafeCompare);n.Ord=a,n.compare=function(n){return n.compare},n.ordInt=i,n.ordString=o,n.ordChar=l,n.ordVoid=u}(PS["Data.Ord"]=PS["Data.Ord"]||{}),function(n){"use strict";PS["Control.Category"],PS["Data.Boolean"],PS["Data.Ord"],PS["Data.Ring"];n.flip=function(n){return function(e){return function(t){return n(t)(e)}}},n.const=function(n){return function(e){return n}},n.on=function(n){return function(e){return function(t){return function(r){return n(e(t))(e(r))}}}}}(PS["Data.Function"]=PS["Data.Function"]||{}),function(n){"use strict";(PS["Data.Functor"]=PS["Data.Functor"]||{}).arrayMap=function(n){return function(e){for(var t=e.length,r=new Array(t),a=0;a<t;a++)r[a]=n(e[a]);return r}}}(),function(n){"use strict";var e=PS["Data.Functor"],t=PS["Control.Semigroupoid"],r=PS["Data.Function"],a=PS["Data.Unit"],u=function(n){this.map=n},o=function(n){return n.map},i=new u(t.compose(t.semigroupoidFn)),l=new u(e.arrayMap);n.Functor=u,n.map=o,n.void=function(n){return o(n)(r.const(a.unit))},n.voidLeft=function(n){return function(e){return function(t){return o(n)(r.const(t))(e)}}},n.functorFn=i,n.functorArray=l}(PS["Data.Functor"]=PS["Data.Functor"]||{}),function(n){"use strict";var e=PS["Control.Apply"],t=PS["Control.Category"],r=PS["Data.Function"],a=PS["Data.Functor"],u=function(n,e){this.Functor0=n,this.apply=e},o=new u(function(){return a.functorArray},e.arrayApply),i=function(n){return n.apply};n.Apply=u,n.apply=i,n.applySecond=function(n){return function(e){return function(u){return i(n)(a.map(n.Functor0())(r.const(t.identity(t.categoryFn)))(e))(u)}}},n.lift2=function(n){return function(e){return function(t){return function(r){return i(n)(a.map(n.Functor0())(e)(t))(r)}}}},n.applyArray=o}(PS["Control.Apply"]=PS["Control.Apply"]||{}),function(n){"use strict";var e=PS["Control.Apply"],t=(PS["Data.Functor"],PS["Data.Unit"]),r=function(n){return n.pure};n.Applicative=function(n,e){this.Apply0=n,this.pure=e},n.pure=r,n.liftA1=function(n){return function(t){return function(a){return e.apply(n.Apply0())(r(n)(t))(a)}}},n.when=function(n){return function(e){return function(a){if(e)return a;if(!e)return r(n)(t.unit);throw new Error("Failed pattern match at Control.Applicative line 57, column 1 - line 57, column 63: "+[e.constructor.name,a.constructor.name])}}}}(PS["Control.Applicative"]=PS["Control.Applicative"]||{}),function(n){"use strict";var e=PS["Control.Bind"],t=(PS["Control.Applicative"],PS["Control.Apply"]),r=PS["Control.Category"],a=PS["Data.Function"],u=(PS["Data.Functor"],PS["Data.Unit"],function(n,e){this.Apply0=n,this.bind=e}),o=function(n){this.discard=n},i=new u(function(){return t.applyArray},e.arrayBind),l=function(n){return n.bind},c=function(n){return a.flip(l(n))},f=new o(function(n){return l(n)});n.Bind=u,n.bind=l,n.bindFlipped=c,n.Discard=o,n.discard=function(n){return n.discard},n.join=function(n){return function(e){return l(n)(e)(r.identity(r.categoryFn))}},n.composeKleisli=function(n){return function(e){return function(t){return function(r){return l(n)(e(r))(t)}}}},n.composeKleisliFlipped=function(n){return function(e){return function(t){return function(r){return c(n)(e)(t(r))}}}},n.bindArray=i,n.discardUnit=f}(PS["Control.Bind"]=PS["Control.Bind"]||{}),function(n){"use strict";n.length=function(n){return n.length},n.cons=function(n){return function(e){return[n].concat(e)}},n.snoc=function(n){return function(e){var t=n.slice();return t.push(e),t}},n.concat=function(n){if(n.length<=1e4)return Array.prototype.concat.apply([],n);for(var e=[],t=0,r=n.length;t<r;t++)for(var a=n[t],u=0,o=a.length;u<o;u++)e.push(a[u]);return e},n.filter=function(n){return function(e){return e.filter(n)}},n.slice=function(n){return function(e){return function(t){return t.slice(n,e)}}},n.drop=function(n){return function(e){return n<1?e:e.slice(n)}}}(PS["Data.Array"]=PS["Data.Array"]||{}),function(n){"use strict";PS["Data.Functor"],PS["Data.Semigroup"];n.Alt=function(n,e){this.Functor0=n,this.alt=e},n.alt=function(n){return n.alt}}(PS["Control.Alt"]=PS["Control.Alt"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Apply"],PS["Control.Bind"]);PS["Data.Functor"],PS["Data.Unit"];n.Monad=function(n,e){this.Applicative0=n,this.Bind1=e},n.ap=function(n){return function(r){return function(a){return t.bind(n.Bind1())(r)(function(r){return t.bind(n.Bind1())(a)(function(t){return e.pure(n.Applicative0())(r(t))})})}}}}(PS["Control.Monad"]=PS["Control.Monad"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=function(n){return n.bimap};n.bimap=t,n.Bifunctor=function(n){this.bimap=n},n.rmap=function(n){return t(n)(e.identity(e.categoryFn))}}(PS["Data.Bifunctor"]=PS["Data.Bifunctor"]||{}),function(n){"use strict";n.topInt=2147483647,n.bottomInt=-2147483648,n.topChar=String.fromCharCode(65535),n.bottomChar=String.fromCharCode(0)}(PS["Data.Bounded"]=PS["Data.Bounded"]||{}),function(n){"use strict";var e=PS["Data.Bounded"],t=PS["Data.Ord"],r=(PS["Data.Ordering"],PS["Data.Unit"],function(n,e,t){this.Ord0=n,this.bottom=e,this.top=t}),a=new r(function(){return t.ordInt},e.bottomInt,e.topInt),u=new r(function(){return t.ordChar},e.bottomChar,e.topChar);n.Bounded=r,n.bottom=function(n){return n.bottom},n.top=function(n){return n.top},n.boundedInt=a,n.boundedChar=u}(PS["Data.Bounded"]=PS["Data.Bounded"]||{}),function(n){"use strict";n.foldrArray=function(n){return function(e){return function(t){for(var r=e,a=t.length-1;a>=0;a--)r=n(t[a])(r);return r}}},n.foldlArray=function(n){return function(e){return function(t){for(var r=e,a=t.length,u=0;u<a;u++)r=n(r)(t[u]);return r}}}}(PS["Data.Foldable"]=PS["Data.Foldable"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Data.Functor"];n.Plus=function(n,e){this.Alt0=n,this.empty=e},n.empty=function(n){return n.empty}}(PS["Control.Plus"]=PS["Control.Plus"]||{}),function(n){"use strict";n.intDegree=function(n){return Math.min(Math.abs(n),2147483647)},n.intDiv=function(n){return function(e){return 0===e?0:e>0?Math.floor(n/e):-Math.floor(n/-e)}},n.intMod=function(n){return function(e){if(0===e)return 0;var t=Math.abs(e);return(n%t+t)%t}}}(PS["Data.EuclideanRing"]=PS["Data.EuclideanRing"]||{}),function(n){"use strict";var e=PS["Data.Ring"],t=(PS["Data.Semiring"],PS["Data.Symbol"],PS["Data.Unit"],function(n){this.Ring0=n}),r=new t(function(){return e.ringInt});n.CommutativeRing=t,n.commutativeRingInt=r}(PS["Data.CommutativeRing"]=PS["Data.CommutativeRing"]||{}),function(n){"use strict";var e=PS["Data.EuclideanRing"],t=(PS["Data.BooleanAlgebra"],PS["Data.CommutativeRing"]),r=(PS["Data.Eq"],PS["Data.HeytingAlgebra"],PS["Data.Ring"],PS["Data.Semiring"],function(n,e,t,r){this.CommutativeRing0=n,this.degree=e,this.div=t,this.mod=r}),a=new r(function(){return t.commutativeRingInt},e.intDegree,e.intDiv,e.intMod);n.EuclideanRing=r,n.degree=function(n){return n.degree},n.div=function(n){return n.div},n.mod=function(n){return n.mod},n.euclideanRingInt=a}(PS["Data.EuclideanRing"]=PS["Data.EuclideanRing"]||{}),function(n){"use strict";PS["Data.Boolean"],PS["Data.Eq"],PS["Data.EuclideanRing"],PS["Data.Ord"],PS["Data.Ordering"];var e=PS["Data.Semigroup"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n,e){this.Semigroup0=n,this.mempty=e}),r=new t(function(){return e.semigroupString},""),a=new t(function(){return e.semigroupArray},[]),u=function(n){return n.mempty};n.Monoid=t,n.mempty=u,n.guard=function(n){return function(e){return function(t){if(e)return t;if(!e)return u(n);throw new Error("Failed pattern match at Data.Monoid line 74, column 1 - line 74, column 49: "+[e.constructor.name,t.constructor.name])}}},n.monoidFn=function(n){return new t(function(){return e.semigroupFn(n.Semigroup0())},function(e){return u(n)})},n.monoidString=r,n.monoidArray=a}(PS["Data.Monoid"]=PS["Data.Monoid"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"];var e=PS["Control.Apply"],t=PS["Control.Bind"],r=(PS["Control.Category"],PS["Control.Extend"],PS["Control.Monad"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Data.Bounded"],PS["Data.Eq"],PS["Data.Function"]),a=PS["Data.Functor"],u=(PS["Data.Functor.Invariant"],PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.Unit"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(n){return function(e){return function(t){if(t instanceof u)return n;if(t instanceof o)return e(t.value0);throw new Error("Failed pattern match at Data.Maybe line 218, column 1 - line 218, column 51: "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},l=i(!0)(r.const(!1)),c=i(!1)(r.const(!0)),f=new a.Functor(function(n){return function(e){return e instanceof o?new o(n(e.value0)):u.value}}),s=new e.Apply(function(){return f},function(n){return function(e){if(n instanceof o)return a.map(f)(n.value0)(e);if(n instanceof u)return u.value;throw new Error("Failed pattern match at Data.Maybe line 67, column 1 - line 67, column 35: "+[n.constructor.name,e.constructor.name])}}),d=new t.Bind(function(){return s},function(n){return function(e){if(n instanceof o)return e(n.value0);if(n instanceof u)return u.value;throw new Error("Failed pattern match at Data.Maybe line 126, column 1 - line 126, column 33: "+[n.constructor.name,e.constructor.name])}});n.Nothing=u,n.Just=o,n.maybe=i,n.isJust=c,n.isNothing=l,n.fromJust=function(n){return function(n){return function(){if(n instanceof o)return n.value0;throw new Error("Failed pattern match at Data.Maybe line 269, column 1 - line 269, column 46: "+[n.constructor.name])}()}},n.functorMaybe=f,n.applyMaybe=s,n.bindMaybe=d}(PS["Data.Maybe"]=PS["Data.Maybe"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad"],PS["Data.Bounded"],PS["Data.Eq"],PS["Data.Functor"];var e=PS["Data.HeytingAlgebra"],t=PS["Data.Monoid"],r=(PS["Data.Ord"],PS["Data.Semigroup"]),a=(PS["Data.Semiring"],PS["Data.Show"],PS.Prelude,function(n){return new r.Semigroup(function(t){return function(r){return e.disj(n)(t)(r)}})});n.Disj=function(n){return n},n.semigroupDisj=a,n.monoidDisj=function(n){return new t.Monoid(function(){return a(n)},e.ff(n))}}(PS["Data.Monoid.Disj"]=PS["Data.Monoid.Disj"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Function"];var e=PS["Data.Functor"],t=(PS["Data.Monoid.Additive"],PS["Data.Monoid.Conj"],PS["Data.Monoid.Disj"]),r=(PS["Data.Monoid.Dual"],PS["Data.Monoid.Endo"],PS["Data.Monoid.Multiplicative"],PS["Data.Semigroup.First"],PS["Data.Semigroup.Last"],PS.Prelude,function(n,e){this.unwrap=n,this.wrap=e}),a=function(n){return n.wrap},u=function(n){return n.unwrap},o=new r(function(n){return n},t.Disj);n.unwrap=u,n.wrap=a,n.Newtype=r,n.alaF=function(n){return function(t){return function(r){return function(o){return function(i){return function(i){return function(l){return e.map(t)(u(o))(i(e.map(n)(a(r))(l)))}}}}}}},n.newtypeDisj=o}(PS["Data.Newtype"]=PS["Data.Newtype"]||{}),function(n){"use strict";var e=PS["Data.Foldable"],t=(PS["Control.Alt"],PS["Control.Applicative"]),r=PS["Control.Apply"],a=(PS["Control.Bind"],PS["Control.Category"]),u=(PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Function"]),o=PS["Data.Functor"],i=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),l=(PS["Data.Maybe.First"],PS["Data.Maybe.Last"],PS["Data.Monoid"]),c=(PS["Data.Monoid.Additive"],PS["Data.Monoid.Conj"],PS["Data.Monoid.Disj"]),f=(PS["Data.Monoid.Dual"],PS["Data.Monoid.Endo"],PS["Data.Monoid.Multiplicative"],PS["Data.Newtype"]),s=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"]),d=(PS["Data.Semiring"],PS["Data.Unit"]),S=(PS.Prelude,function(n,e,t){this.foldMap=n,this.foldl=e,this.foldr=t}),P=function(n){return n.foldr},v=function(n){return function(e){return function(a){return P(e)(function(e){return r.applySecond(n.Apply0())(a(e))})(t.pure(n)(d.unit))}}},p=function(n){return n.foldl},m=new S(function(n){return function(e){return function(t){if(t instanceof i.Nothing)return l.mempty(n);if(t instanceof i.Just)return e(t.value0);throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: "+[e.constructor.name,t.constructor.name])}}},function(n){return function(e){return function(t){if(t instanceof i.Nothing)return e;if(t instanceof i.Just)return n(e)(t.value0);throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},function(n){return function(e){return function(t){if(t instanceof i.Nothing)return e;if(t instanceof i.Just)return n(t.value0)(e);throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: "+[n.constructor.name,e.constructor.name,t.constructor.name])}}}),D=function(n){return function(e){return function(t){return P(n)(function(n){return function(r){return s.append(e.Semigroup0())(t(n))(r)}})(l.mempty(e))}}},b=new S(function(n){return D(b)(n)},e.foldlArray,e.foldrArray),g=function(n){return n.foldMap};n.Foldable=S,n.foldr=P,n.foldl=p,n.foldMap=g,n.foldMapDefaultR=D,n.traverse_=v,n.for_=function(n){return function(e){return u.flip(v(n)(e))}},n.sequence_=function(n){return function(e){return v(n)(e)(a.identity(a.categoryFn))}},n.intercalate=function(n){return function(e){return function(t){return function(r){return p(n)(function(n){return function(r){return n.init?{init:!1,acc:r}:{init:!1,acc:s.append(e.Semigroup0())(n.acc)(s.append(e.Semigroup0())(t)(r))}}})({init:!0,acc:l.mempty(e)})(r).acc}}}},n.any=function(n){return function(e){return f.alaF(o.functorFn)(o.functorFn)(f.newtypeDisj)(f.newtypeDisj)(c.Disj)(g(n)(c.monoidDisj(e)))}},n.find=function(n){return function(e){return p(n)(function(n){return function(t){return n instanceof i.Nothing&&e(t)?new i.Just(t):n}})(i.Nothing.value)}},n.foldableArray=b,n.foldableMaybe=m}(PS["Data.Foldable"]=PS["Data.Foldable"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Applicative"];var e=PS["Control.Apply"],t=(PS["Control.Bind"],PS["Control.Extend"],PS["Control.Monad"],PS["Control.Semigroupoid"],PS["Data.Bifoldable"],PS["Data.Bifunctor"]),r=(PS["Data.Bitraversable"],PS["Data.Bounded"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.Functor.Invariant"],PS["Data.Maybe"],PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.Traversable"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=new r.Functor(function(n){return function(e){if(e instanceof a)return new a(e.value0);if(e instanceof u)return new u(n(e.value0));throw new Error("Failed pattern match at Data.Either line 35, column 8 - line 35, column 52: "+[e.constructor.name])}}),i=new t.Bifunctor(function(n){return function(e){return function(t){if(t instanceof a)return new a(n(t.value0));if(t instanceof u)return new u(e(t.value0));throw new Error("Failed pattern match at Data.Either line 40, column 1 - line 40, column 45: "+[n.constructor.name,e.constructor.name,t.constructor.name])}}}),l=new e.Apply(function(){return o},function(n){return function(e){if(n instanceof a)return new a(n.value0);if(n instanceof u)return r.map(o)(n.value0)(e);throw new Error("Failed pattern match at Data.Either line 76, column 1 - line 76, column 41: "+[n.constructor.name,e.constructor.name])}});n.Left=a,n.Right=u,n.either=function(n){return function(e){return function(t){if(t instanceof a)return n(t.value0);if(t instanceof u)return e(t.value0);throw new Error("Failed pattern match at Data.Either line 220, column 1 - line 220, column 64: "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},n.functorEither=o,n.bifunctorEither=i,n.applyEither=l}(PS["Data.Either"]=PS["Data.Either"]||{}),function(n){"use strict";PS["Control.Alt"];var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Lazy"],PS["Control.Monad"]),u=(PS["Data.BooleanAlgebra"],PS["Data.Bounded"],PS["Data.CommutativeRing"],PS["Data.Eq"],PS["Data.EuclideanRing"],PS["Data.Foldable"],PS["Data.Functor"]),o=(PS["Data.Functor.Invariant"],PS["Data.HeytingAlgebra"],PS["Data.Monoid"],PS["Data.Newtype"]),i=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS.Prelude,function(n){return n}),l=new o.Newtype(function(n){return n},i),c=new u.Functor(function(n){return function(e){return n(e)}}),f=new t.Apply(function(){return c},function(n){return function(e){return n(e)}}),s=new r.Bind(function(){return f},function(n){return function(e){return e(n)}}),d=new e.Applicative(function(){return f},i),S=new a.Monad(function(){return d},function(){return s});n.Identity=i,n.newtypeIdentity=l,n.functorIdentity=c,n.applyIdentity=f,n.applicativeIdentity=d,n.bindIdentity=s,n.monadIdentity=S}(PS["Data.Identity"]=PS["Data.Identity"]||{}),function(n){"use strict";n.pureE=function(n){return function(){return n}},n.bindE=function(n){return function(e){return function(){return e(n())()}}},n.foreachE=function(n){return function(e){return function(){for(var t=0,r=n.length;t<r;t++)e(n[t])()}}}}(PS.Effect=PS.Effect||{}),function(n){"use strict";var e=PS.Effect,t=PS["Control.Applicative"],r=PS["Control.Apply"],a=PS["Control.Bind"],u=PS["Control.Monad"],o=PS["Data.Functor"],i=(PS["Data.Monoid"],PS["Data.Semigroup"],PS.Prelude,new u.Monad(function(){return f},function(){return l})),l=new a.Bind(function(){return c},e.bindE),c=new r.Apply(function(){return s},u.ap(i)),f=new t.Applicative(function(){return c},e.pureE),s=new o.Functor(t.liftA1(f));n.functorEffect=s,n.applyEffect=c,n.applicativeEffect=f,n.bindEffect=l,n.monadEffect=i,n.foreachE=e.foreachE}(PS.Effect=PS.Effect||{}),function(n){"use strict";n.new=function(n){return function(){return{value:n}}},n.read=function(n){return function(){return n.value}},n["modify'"]=function(n){return function(e){return function(){var t=n(e.value);return e.value=t.state,t.value}}},n.write=function(n){return function(e){return function(){return e.value=n,{}}}}}(PS["Effect.Ref"]=PS["Effect.Ref"]||{}),function(n){"use strict";var e=PS["Effect.Ref"],t=(PS["Data.Function"],PS["Data.Functor"]),r=PS.Effect,a=(PS.Prelude,function(n){return e["modify'"](function(e){var t=n(e);return{state:t,value:t}})});n.modify=a,n.modify_=function(n){return function(e){return t.void(r.functorEffect)(a(n)(e))}},n.new=e.new,n.read=e.read,n["modify'"]=e["modify'"],n.write=e.write}(PS["Effect.Ref"]=PS["Effect.Ref"]||{}),function(n){"use strict";(PS["Partial.Unsafe"]=PS["Partial.Unsafe"]||{}).unsafePartial=function(n){return n()}}(),function(n){"use strict";(PS["Partial"]=PS["Partial"]||{}).crashWith=function(){return function(n){throw new Error(n)}}}(),function(n){"use strict";var e=PS.Partial;n.crashWith=e.crashWith}(PS.Partial=PS.Partial||{}),function(n){"use strict";var e=PS["Partial.Unsafe"],t=PS.Partial;n.unsafeCrashWith=function(n){return e.unsafePartial(function(e){return t.crashWith(e)(n)})}}(PS["Partial.Unsafe"]=PS["Partial.Unsafe"]||{}),function(n){"use strict";PS["Control.Applicative"];var e=PS["Control.Bind"],t=(PS["Control.Monad"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Either"],PS["Data.Functor"]),r=(PS["Data.Identity"],PS["Data.Maybe"],PS["Data.Unit"],PS.Effect),a=PS["Effect.Ref"],u=(PS["Partial.Unsafe"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(n,e){this.Monad0=n,this.tailRecM=e},l=new i(function(){return r.monadEffect},function(n){return function(i){var l=function(n){return function(){if(n instanceof o)return n.value0;throw new Error("Failed pattern match at Control.Monad.Rec.Class line 111, column 30 - line 111, column 44: "+[n.constructor.name])}()};return function(){var c=e.bindFlipped(r.bindEffect)(a.new)(n(i))();return function(){for(;!function(){var e=a.read(c)();if(e instanceof u){var t=n(e.value0)();a.write(t)(c)();return!1}if(e instanceof o)return!0;throw new Error("Failed pattern match at Control.Monad.Rec.Class line 102, column 22 - line 107, column 28: "+[e.constructor.name])}(););}(),t.map(r.functorEffect)(l)(a.read(c))()}}});n.Loop=u,n.Done=o,n.MonadRec=i,n.tailRecM=function(n){return n.tailRecM},n.monadRecEffect=l}(PS["Control.Monad.Rec.Class"]=PS["Control.Monad.Rec.Class"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Biapplicative"],PS["Control.Biapply"],PS["Control.Bind"],PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Lazy"],PS["Control.Monad"],PS["Control.Semigroupoid"],PS["Data.Bifoldable"],PS["Data.Bifunctor"],PS["Data.Bitraversable"],PS["Data.BooleanAlgebra"],PS["Data.Bounded"],PS["Data.CommutativeRing"],PS["Data.Distributive"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"];var e=PS["Data.Functor"],t=(PS["Data.Functor.Invariant"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Maybe.First"],PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Unit"],PS.Prelude,PS["Type.Equality"],function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),r=new e.Functor(function(n){return function(e){return new t(e.value0,n(e.value1))}});n.Tuple=t,n.fst=function(n){return n.value0},n.snd=function(n){return n.value1},n.functorTuple=r}(PS["Data.Tuple"]=PS["Data.Tuple"]||{}),function(n){"use strict";(PS["Data.Unfoldable"]=PS["Data.Unfoldable"]||{}).unfoldrArrayImpl=function(n){return function(e){return function(t){return function(r){return function(a){return function(u){for(var o=[],i=u;;){var l=a(i);if(n(l))return o;var c=e(l);o.push(t(c)),i=r(c)}}}}}}}}(),function(n){"use strict";(PS["Data.Unfoldable1"]=PS["Data.Unfoldable1"]||{}).unfoldr1ArrayImpl=function(n){return function(e){return function(t){return function(r){return function(a){return function(u){for(var o=[],i=u;;){var l=a(i);o.push(t(l));var c=r(l);if(n(c))return o;i=e(c)}}}}}}}}(),function(n){"use strict";var e=PS["Data.Unfoldable1"],t=(PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Maybe"]),r=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Tuple"]),a=(PS["Partial.Unsafe"],PS.Prelude,function(n){this.unfoldr1=n}),u=new a(e.unfoldr1ArrayImpl(t.isNothing)(t.fromJust())(r.fst)(r.snd));n.Unfoldable1=a,n.unfoldr1=function(n){return n.unfoldr1},n.unfoldable1Array=u}(PS["Data.Unfoldable1"]=PS["Data.Unfoldable1"]||{}),function(n){"use strict";var e=PS["Data.Unfoldable"],t=(PS["Data.Function"],PS["Data.Functor"],PS["Data.Maybe"]),r=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Traversable"],PS["Data.Tuple"]),a=PS["Data.Unfoldable1"],u=(PS["Data.Unit"],PS["Partial.Unsafe"],PS.Prelude,function(n,e){this.Unfoldable10=n,this.unfoldr=e}),o=new u(function(){return a.unfoldable1Array},e.unfoldrArrayImpl(t.isNothing)(t.fromJust())(r.fst)(r.snd));n.Unfoldable=u,n.unfoldr=function(n){return n.unfoldr},n.unfoldableArray=o}(PS["Data.Unfoldable"]=PS["Data.Unfoldable"]||{}),function(n){"use strict";(PS["Unsafe.Coerce"]=PS["Unsafe.Coerce"]||{}).unsafeCoerce=function(n){return n}}(),function(n){"use strict";var e=PS["Unsafe.Coerce"];n.unsafeCoerce=e.unsafeCoerce}(PS["Unsafe.Coerce"]=PS["Unsafe.Coerce"]||{}),function(n){"use strict";var e=PS["Data.Array"],t=(PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"]),r=(PS["Control.Category"],PS["Control.Lazy"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.ST"],PS["Control.Monad.ST.Internal"],PS["Control.Semigroupoid"],PS["Data.Array.NonEmpty.Internal"],PS["Data.Array.ST"],PS["Data.Array.ST.Iterator"],PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"]),a=(PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),u=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Partial.Unsafe"],PS.Prelude,PS["Unsafe.Coerce"],function(n){return[n]}),o=r.flip(t.bind(t.bindArray));n.singleton=u,n.concatMap=o,n.mapMaybe=function(n){return o(function(e){return a.maybe([])(u)(n(e))})},n.length=e.length,n.cons=e.cons,n.snoc=e.snoc,n.filter=e.filter,n.drop=e.drop}(PS["Data.Array"]=PS["Data.Array"]||{}),function(n){"use strict";n.replace=function(n){return function(e){return function(t){return t.replace(n,e)}}},n.replaceAll=function(n){return function(e){return function(t){return t.replace(new RegExp(n.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),e)}}},n.split=function(n){return function(e){return e.split(n)}},n.joinWith=function(n){return function(e){return e.join(n)}}}(PS["Data.String.Common"]=PS["Data.String.Common"]||{}),function(n){"use strict";var e=PS["Data.String.Common"];PS["Data.Eq"],PS["Data.Ordering"],PS["Data.String.Pattern"],PS.Prelude;n.null=function(n){return""===n},n.replaceAll=e.replaceAll,n.split=e.split,n.joinWith=e.joinWith}(PS["Data.String.Common"]=PS["Data.String.Common"]||{}),function(n){"use strict";n.unsafeStringify=function(n){return JSON.stringify(n)},n.unsafeDecodeURIComponent=decodeURIComponent,n.unsafeEncodeURIComponent=encodeURIComponent}(PS["Global.Unsafe"]=PS["Global.Unsafe"]||{}),function(n){"use strict";var e=PS["Global.Unsafe"];n.unsafeStringify=e.unsafeStringify,n.unsafeDecodeURIComponent=e.unsafeDecodeURIComponent,n.unsafeEncodeURIComponent=e.unsafeEncodeURIComponent}(PS["Global.Unsafe"]=PS["Global.Unsafe"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Eq"];var e,t=PS["Data.Functor"],r=PS["Data.Maybe"],a=(PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.String"],PS["Data.String.Common"]),u=(PS["Data.Tuple"],PS["Global.Unsafe"]),o=(PS.Prelude,function(n){return n}),i=(e=function(n){if(n.value1 instanceof r.Nothing)return u.unsafeEncodeURIComponent(n.value0);if(n.value1 instanceof r.Just)return u.unsafeEncodeURIComponent(n.value0)+"="+u.unsafeEncodeURIComponent(n.value1.value0);throw new Error("Failed pattern match at Data.FormURLEncoded line 35, column 18 - line 37, column 89: "+[n.constructor.name])},function(n){return a.joinWith("&")(t.map(t.functorArray)(e)(o(n)))});n.toArray=o,n.encode=i}(PS["Data.FormURLEncoded"]=PS["Data.FormURLEncoded"]||{}),function(n){"use strict";var e=PS["Data.Either"],t=(PS["Data.Eq"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"]),r=(PS["Data.String"],PS["Data.String.Common"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),a=function(){function n(){}return n.value=new n,n}(),u=function(){function n(){}return n.value=new n,n}(),o=function(){function n(){}return n.value=new n,n}(),i=function(){function n(){}return n.value=new n,n}(),l=function(){function n(){}return n.value=new n,n}(),c=function(){function n(){}return n.value=new n,n}(),f=function(){function n(){}return n.value=new n,n}(),s=function(){function n(){}return n.value=new n,n}(),d=function(){function n(){}return n.value=new n,n}(),S=function(){function n(){}return n.value=new n,n}(),P=function(){function n(){}return n.value=new n,n}(),v=function(){function n(){}return n.value=new n,n}(),p=function(){function n(){}return n.value=new n,n}(),m=function(){function n(){}return n.value=new n,n}(),D=function(){function n(){}return n.value=new n,n}(),b=function(n){return n},g=new t.Show(function(n){if(n instanceof r)return"OPTIONS";if(n instanceof a)return"GET";if(n instanceof u)return"HEAD";if(n instanceof o)return"POST";if(n instanceof i)return"PUT";if(n instanceof l)return"DELETE";if(n instanceof c)return"TRACE";if(n instanceof f)return"CONNECT";if(n instanceof s)return"PROPFIND";if(n instanceof d)return"PROPPATCH";if(n instanceof S)return"MKCOL";if(n instanceof P)return"COPY";if(n instanceof v)return"MOVE";if(n instanceof p)return"LOCK";if(n instanceof m)return"UNLOCK";if(n instanceof D)return"PATCH";throw new Error("Failed pattern match at Data.HTTP.Method line 40, column 1 - line 40, column 35: "+[n.constructor.name])}),h=e.either(t.show(g))(b);n.OPTIONS=r,n.GET=a,n.HEAD=u,n.POST=o,n.PUT=i,n.DELETE=l,n.TRACE=c,n.CONNECT=f,n.PROPFIND=s,n.PROPPATCH=d,n.MKCOL=S,n.COPY=P,n.MOVE=v,n.LOCK=p,n.UNLOCK=m,n.PATCH=D,n.unCustomMethod=b,n.print=h,n.showMethod=g}(PS["Data.HTTP.Method"]=PS["Data.HTTP.Method"]||{}),function(n){"use strict";PS["Data.Eq"];var e=PS["Data.Newtype"],t=(PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Show"],PS.Prelude,function(n){return n}),r=new e.Newtype(function(n){return n},t);n.MediaType=t,n.newtypeMediaType=r}(PS["Data.MediaType"]=PS["Data.MediaType"]||{}),function(n){"use strict";PS["Data.MediaType"];n.applicationFormURLEncoded="application/x-www-form-urlencoded",n.applicationJSON="application/json"}(PS["Data.MediaType.Common"]=PS["Data.MediaType.Common"]||{}),function(n){"use strict";var e=function(){var n={},e="Pure",t="Throw",r="Catch",a="Sync",u="Async",o="Bind",i="Bracket",l="Fork",c="Sequential",f="Map",s="Apply",d="Alt",S="Cons",P="Resume",v="Release",p="Finalizer",m="Finalized",D="Forked";function b(n,e,t,r){this.tag=n,this._1=e,this._2=t,this._3=r}function g(n){var e=function(e,t,r){return new b(n,e,t,r)};return e.tag=n,e}function h(n){return new b(e,void 0)}function w(n){try{n()}catch(n){setTimeout(function(){throw n},0)}}function E(n,e,t){try{return e(t())}catch(e){return n(e)}}function y(n,e,t){try{return e(t)()}catch(e){return t(n(e))(),h}}var M=function(){var n=1024,e=0,t=0,r=new Array(n),a=!1;function u(){var u;for(a=!0;0!==e;)e--,u=r[t],r[t]=void 0,t=(t+1)%n,u();a=!1}return{isDraining:function(){return a},enqueue:function(o){var i;e===n&&(i=a,u(),a=i),r[(t+e)%n]=o,e++,a||u()}}}();var C=0,T=1,A=2,F=3,H=4,L=5,_=6;function O(n,f,s){var d=0,D=C,g=s,h=null,I=null,N=null,x=null,U=null,R=0,k=0,B=null,q=!0;function j(s){for(var k,V,J;;)switch(k=null,V=null,J=null,null,D){case A:D=T,g=N(g),null===x?N=null:(N=x._1,x=x._2);break;case F:n.isLeft(g)?(D=L,h=g,g=null):null===N?D=L:(D=A,g=n.fromRight(g));break;case T:switch(g.tag){case o:N&&(x=new b(S,N,x)),N=g._2,D=T,g=g._1;break;case e:null===N?(D=L,g=n.right(g._1)):(D=A,g=g._1);break;case a:D=F,g=E(n.left,n.right,g._1);break;case u:return D=H,void(g=y(n.left,g._1,function(n){return function(){d===s&&(d++,M.enqueue(function(){D=F,g=n,j(d)}))}}));case t:D=L,h=n.left(g._1),g=null;break;case r:U=new b(S,g,null===N?U:new b(S,new b(P,N,x),U,I),I),N=null,x=null,D=T,g=g._1;break;case i:R++,U=new b(S,g,null===N?U:new b(S,new b(P,N,x),U,I),I),N=null,x=null,D=T,g=g._1;break;case l:D=F,k=O(n,f,g._2),f&&f.register(k),g._1&&k.run(),g=n.right(k);break;case c:D=T,g=W(n,f,g._1)}break;case L:if(N=null,x=null,null===U)D=_,g=I||h||g;else switch(k=U._3,J=U._1,U=U._2,J.tag){case r:I&&I!==k?D=L:h&&(D=T,g=J._2(n.fromLeft(h)),h=null);break;case P:I&&I!==k||h?D=L:(N=J._1,x=J._2,D=A,g=n.fromRight(g));break;case i:R--,null===h&&(V=n.fromRight(g),U=new b(S,new b(v,J._2,V),U,k),(I===k||R>0)&&(D=T,g=J._3(V)));break;case v:R++,U=new b(S,new b(m,g),U,I),D=T,g=I&&I!==k?J._1.killed(n.fromLeft(I))(J._2):h?J._1.failed(n.fromLeft(h))(J._2):J._1.completed(n.fromRight(g))(J._2);break;case p:R++,U=new b(S,new b(m,g),U,I),D=T,g=J._1;break;case m:R--,D=L,g=J._1}break;case _:for(var Q in B)B.hasOwnProperty(Q)&&(q=q&&B[Q].rethrow,w(B[Q].handler(g)));return B=null,void(I&&h?setTimeout(function(){throw n.fromLeft(h)},0):n.isLeft(g)&&q&&setTimeout(function(){if(q)throw n.fromLeft(g)},0));case C:D=T;break;case H:return}}function V(n){return function(){if(D===_)return q=q&&n.rethrow,n.handler(g)(),function(){};var e=k++;return(B=B||{})[e]=n,function(){null!==B&&delete B[e]}}}return{kill:function(e,t){return function(){if(D===_)return t(n.right(void 0))(),function(){};var r=V({rethrow:!1,handler:function(){return t(n.right(void 0))}})();switch(D){case C:I=n.left(e),D=_,g=I,j(d);break;case H:null===I&&(I=n.left(e)),0===R&&(D===H&&(U=new b(S,new b(p,g(e)),U,I)),D=L,g=null,h=null,j(++d));break;default:null===I&&(I=n.left(e)),0===R&&(D=L,g=null,h=null)}return r}},join:function(n){return function(){var e=V({rethrow:!1,handler:n})();return D===C&&j(d),e}},onComplete:V,isSuspended:function(){return D===C},run:function(){D===C&&(M.isDraining()?j(d):M.enqueue(function(){j(d)}))}}}function I(e,t,r,a){var o=0,i={},l=0,c={},P=new Error("[ParAff] Early exit"),v=null,p=n;function m(t,r,a){var u,o,l=r,c=null,P=null,v=0,p={};n:for(;;)switch(u=null,l.tag){case D:if(l._3===n&&(u=i[l._1],p[v++]=u.kill(t,function(n){return function(){0===--v&&a(n)()}})),null===c)break n;l=c._2,null===P?c=null:(c=P._1,P=P._2);break;case f:l=l._2;break;case s:case d:c&&(P=new b(S,c,P)),c=l,l=l._1}if(0===v)a(e.right(void 0))();else for(o=0,u=v;o<u;o++)p[o]=p[o]();return p}function g(t){return function(r){return function(){delete i[t._1],t._3=r,function t(r,u,o){var i,S,p,D,b,g;for(e.isLeft(r)?(i=r,S=null):(S=r,i=null);;){if(p=null,D=null,b=null,g=null,null!==v)return;if(null===u)return void a(i||S)();if(u._3!==n)return;switch(u.tag){case f:null===i?(u._3=e.right(u._1(e.fromRight(S))),S=u._3):u._3=i;break;case s:if(p=u._1._3,D=u._2._3,i){if(u._3=i,b=!0,g=l++,c[g]=m(P,i===p?u._2:u._1,function(){return function(){delete c[g],b?b=!1:null===o?t(S,null,null):t(S,o._1,o._2)}}),b)return void(b=!1)}else{if(p===n||D===n)return;S=e.right(e.fromRight(p)(e.fromRight(D))),u._3=S}break;case d:if(p=u._1._3,D=u._2._3,p===n&&e.isLeft(D)||D===n&&e.isLeft(p))return;if(p!==n&&e.isLeft(p)&&D!==n&&e.isLeft(D))i=S===p?D:p,S=null,u._3=i;else if(u._3=S,b=!0,g=l++,c[g]=m(P,S===p?u._2:u._1,function(){return function(){delete c[g],b?b=!1:null===o?t(S,null,null):t(S,o._1,o._2)}}),b)return void(b=!1)}null===o?u=null:(u=o._1,o=o._2)}}(r,t._2._1,t._2._2)}}}return function(){var a,u,l=T,c=r,P=null,v=null;n:for(;;)switch(a=null,u=null,l){case T:switch(c.tag){case f:P&&(v=new b(S,P,v)),P=new b(f,c._1,n,n),c=c._2;break;case s:P&&(v=new b(S,P,v)),P=new b(s,n,c._2,n),c=c._1;break;case d:P&&(v=new b(S,P,v)),P=new b(d,n,c._2,n),c=c._1;break;default:u=o++,l=L,a=c,c=new b(D,u,new b(S,P,v),n),(a=O(e,t,a)).onComplete({rethrow:!1,handler:g(c)})(),i[u]=a,t&&t.register(a)}break;case L:if(null===P)break n;P._1===n?(P._1=c,l=T,c=P._2,P._2=n):(P._2=c,c=P,null===v?P=null:(P=v._1,v=v._2))}for(p=c,u=0;u<o;u++)i[u].run()}(),function(n){return new b(u,function(t){return function(){return function(n,t){var r;for(var a in v=e.left(n),c)if(c.hasOwnProperty(a))for(a in r=c[a])r.hasOwnProperty(a)&&r[a]();c=null;var o=m(n,p,t);return function(n){return new b(u,function(n){return function(){for(var n in o)o.hasOwnProperty(n)&&o[n]();return h}})}}(n,t)}})}}function W(n,e,t){return new b(u,function(r){return function(){return I(n,e,t,r)}})}return b.EMPTY=n,b.Pure=g(e),b.Throw=g(t),b.Catch=g(r),b.Sync=g(a),b.Async=g(u),b.Bind=g(o),b.Bracket=g(i),b.Fork=g(l),b.Seq=g(c),b.ParMap=g(f),b.ParApply=g(s),b.ParAlt=g(d),b.Fiber=O,b.Supervisor=function(n){var e={},t=0,r=0;return{register:function(n){var a=t++;n.onComplete({rethrow:!0,handler:function(n){return function(){r--,delete e[a]}}}),e[a]=n,r++},isEmpty:function(){return 0===r},killAll:function(u,o){return function(){var i=0,l={};function c(t){l[t]=e[t].kill(u,function(e){return function(){delete l[t],i--,n.isLeft(e)&&n.fromLeft(e)&&setTimeout(function(){throw n.fromLeft(e)},0),0===i&&o()}})()}for(var f in e)e.hasOwnProperty(f)&&(i++,c(f));return e={},t=0,r=0,function(n){return new b(a,function(){for(var n in l)l.hasOwnProperty(n)&&l[n]()})}}}}},b.Scheduler=M,b.nonCanceler=h,b}();n._pure=e.Pure,n._throwError=e.Throw,n._catchError=function(n){return function(t){return e.Catch(n,t)}},n._map=function(n){return function(t){return t.tag===e.Pure.tag?e.Pure(n(t._1)):e.Bind(t,function(t){return e.Pure(n(t))})}},n._bind=function(n){return function(t){return e.Bind(n,t)}},n._fork=function(n){return function(t){return e.Fork(n,t)}},n._liftEffect=e.Sync,n._parAffMap=function(n){return function(t){return e.ParMap(n,t)}},n._parAffApply=function(n){return function(t){return e.ParApply(n,t)}},n.makeAff=e.Async,n._makeFiber=function(n,t){return function(){return e.Fiber(n,null,t)}},n._sequential=e.Seq}(PS["Effect.Aff"]=PS["Effect.Aff"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Bind"],PS["Control.Semigroupoid"],PS["Data.Either"]),r=(PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.Maybe"],PS["Data.Unit"],PS.Prelude,function(n){return n.catchError});n.catchError=a,n.throwError=function(n){return n.throwError},n.MonadThrow=function(n,e){this.Monad0=n,this.throwError=e},n.MonadError=function(n,e){this.MonadThrow0=n,this.catchError=e},n.try=function(n){return function(u){return a(n)(r.map(n.MonadThrow0().Monad0().Bind1().Apply0().Functor0())(t.Right.create)(u))(function(r){return e.pure(n.MonadThrow0().Monad0().Applicative0())(t.Left.create(r))})}}}(PS["Control.Monad.Error.Class"]=PS["Control.Monad.Error.Class"]||{}),function(n){"use strict";var e=PS["Data.Tuple"],t=PS["Data.Unit"],r=(PS.Prelude,function(n){return n.state});n.state=r,n.MonadState=function(n,e){this.Monad0=n,this.state=e},n.get=function(n){return r(n)(function(n){return new e.Tuple(n,n)})},n.gets=function(n){return function(t){return r(n)(function(n){return new e.Tuple(t(n),n)})}},n.put=function(n){return function(a){return r(n)(function(n){return new e.Tuple(t.unit,a)})}},n.modify_=function(n){return function(a){return r(n)(function(n){return new e.Tuple(t.unit,a(n))})}}}(PS["Control.Monad.State.Class"]=PS["Control.Monad.State.Class"]||{}),function(n){"use strict";PS.Prelude;n.lift=function(n){return n.lift},n.MonadTrans=function(n){this.lift=n}}(PS["Control.Monad.Trans.Class"]=PS["Control.Monad.Trans.Class"]||{}),function(n){"use strict";PS["Control.Category"],PS["Control.Monad"],PS.Effect;n.liftEffect=function(n){return n.liftEffect},n.MonadEffect=function(n,e){this.Monad0=n,this.liftEffect=e}}(PS["Effect.Class"]=PS["Effect.Class"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"];var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),u=(PS["Control.Monad.Cont.Class"],PS["Control.Monad.Error.Class"]),o=(PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Class"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Either"]),i=(PS["Data.Function"],PS["Data.Functor"]),l=(PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Semigroup"],PS["Data.Tuple"],PS["Effect.Class"],PS.Prelude,function(n){return n}),c=function(n){return function(e){return n(e)}},f=function(n){return new i.Functor(function(e){return c(i.map(n)(i.map(o.functorEither)(e)))})},s=function(n){return new a.Monad(function(){return P(n)},function(){return d(n)})},d=function(n){return new r.Bind(function(){return S(n)},function(t){return function(a){return r.bind(n.Bind1())(t)(o.either(function(t){return e.pure(n.Applicative0())(o.Left.create(t))})(function(n){return a(n)}))}})},S=function(n){return new t.Apply(function(){return f(n.Bind1().Apply0().Functor0())},a.ap(s(n)))},P=function(n){return new e.Applicative(function(){return S(n)},function(t){return l(e.pure(n.Applicative0())(o.Right.create(t)))})};n.ExceptT=l,n.runExceptT=function(n){return n},n.mapExceptT=c,n.functorExceptT=f,n.applyExceptT=S,n.applicativeExceptT=P,n.bindExceptT=d,n.monadExceptT=s,n.monadThrowExceptT=function(n){return new u.MonadThrow(function(){return s(n)},function(t){return l(e.pure(n.Applicative0())(o.Left.create(t)))})}}(PS["Control.Monad.Except.Trans"]=PS["Control.Monad.Except.Trans"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Monad"],PS["Control.Monad.Cont.Class"],PS["Control.Monad.Error.Class"],PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Class"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Tuple"],PS["Effect.Class"],PS.Prelude;n.MaybeT=function(n){return n}}(PS["Control.Monad.Maybe.Trans"]=PS["Control.Monad.Maybe.Trans"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad.Cont.Trans"],PS["Control.Monad.Except.Trans"],PS["Control.Monad.Maybe.Trans"],PS["Control.Monad.Reader.Trans"],PS["Control.Monad.Writer.Trans"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Either"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Functor.Compose"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Unit"],PS["Effect.Class"],PS["Effect.Ref"],PS.Prelude;n.parallel=function(n){return n.parallel},n.sequential=function(n){return n.sequential},n.Parallel=function(n,e,t,r){this.Applicative1=n,this.Monad0=e,this.parallel=t,this.sequential=r}}(PS["Control.Parallel.Class"]=PS["Control.Parallel.Class"]||{}),function(n){"use strict";PS["Control.Alternative"],PS["Control.Apply"];var e=PS["Control.Category"],t=PS["Control.Parallel.Class"],r=(PS["Control.Semigroupoid"],PS["Data.Foldable"]),a=(PS["Data.Traversable"],PS.Prelude,function(n){return function(e){return function(a){return function(u){return t.sequential(n)(r.traverse_(n.Applicative1())(e)(function(e){return t.parallel(n)(a(e))})(u))}}}});n.parTraverse_=a,n.parSequence_=function(n){return function(t){return a(n)(t)(e.identity(e.categoryFn))}}}(PS["Control.Parallel"]=PS["Control.Parallel"]||{}),function(n){"use strict";(PS["Data.Function.Uncurried"]=PS["Data.Function.Uncurried"]||{}).runFn4=function(n){return function(e){return function(t){return function(r){return function(a){return n(e,t,r,a)}}}}}}(),function(n){"use strict";var e=PS["Data.Function.Uncurried"];PS["Data.Unit"];n.runFn4=e.runFn4}(PS["Data.Function.Uncurried"]=PS["Data.Function.Uncurried"]||{}),function(n){"use strict";n.error=function(n){return new Error(n)},n.throwException=function(n){return function(){throw n}}}(PS["Effect.Exception"]=PS["Effect.Exception"]||{}),function(n){"use strict";var e=PS["Effect.Exception"];PS["Control.Applicative"],PS["Control.Semigroupoid"],PS["Data.Either"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Show"],PS.Effect,PS.Prelude;n.throw=function(n){return e.throwException(e.error(n))},n.error=e.error,n.throwException=e.throwException}(PS["Effect.Exception"]=PS["Effect.Exception"]||{}),function(n){"use strict";(PS["Effect.Unsafe"]=PS["Effect.Unsafe"]||{}).unsafePerformEffect=function(n){return n()}}(),function(n){"use strict";var e=PS["Effect.Unsafe"];PS.Effect;n.unsafePerformEffect=e.unsafePerformEffect}(PS["Effect.Unsafe"]=PS["Effect.Unsafe"]||{}),function(n){"use strict";var e=PS["Effect.Aff"],t=(PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"]),r=PS["Control.Apply"],a=PS["Control.Bind"],u=(PS["Control.Lazy"],PS["Control.Monad"]),o=PS["Control.Monad.Error.Class"],i=PS["Control.Monad.Rec.Class"],l=(PS["Control.Parallel"],PS["Control.Parallel.Class"]),c=(PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Either"]),f=(PS["Data.Foldable"],PS["Data.Function"]),s=(PS["Data.Function.Uncurried"],PS["Data.Functor"]),d=(PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Semigroup"],PS["Data.Time.Duration"],PS["Data.Unit"]),S=PS.Effect,P=PS["Effect.Class"],v=(PS["Effect.Exception"],PS["Effect.Unsafe"]),p=PS["Partial.Unsafe"],m=(PS.Prelude,PS["Unsafe.Coerce"]),D=function(n){return n},b=e._fork(!1),g=new s.Functor(e._parAffMap),h=new s.Functor(e._map),w=e._fork(!0),E={isLeft:function(n){if(n instanceof c.Left)return!0;if(n instanceof c.Right)return!1;throw new Error("Failed pattern match at Effect.Aff line 385, column 12 - line 387, column 20: "+[n.constructor.name])},fromLeft:function(n){if(n instanceof c.Left)return n.value0;if(n instanceof c.Right)return p.unsafeCrashWith("unsafeFromLeft: Right");throw new Error("Failed pattern match at Effect.Aff line 390, column 20 - line 394, column 3: "+[n.constructor.name])},fromRight:function(n){if(n instanceof c.Right)return n.value0;if(n instanceof c.Left)return p.unsafeCrashWith("unsafeFromRight: Left");throw new Error("Failed pattern match at Effect.Aff line 395, column 21 - line 397, column 31: "+[n.constructor.name])},left:c.Left.create,right:c.Right.create},y=function(n){return e._makeFiber(E,n)},M=function(n){return function(){var e=y(n)();return e.run(),e}},C=new r.Apply(function(){return g},e._parAffApply),T=new u.Monad(function(){return H},function(){return A}),A=new a.Bind(function(){return F},e._bind),F=new r.Apply(function(){return h},u.ap(T)),H=new t.Applicative(function(){return F},e._pure),L=new P.MonadEffect(function(){return T},e._liftEffect),_=function(n){return D(f.const(P.liftEffect(L)(n)))},O=function(n){return e.makeAff(function(e){return s.map(S.functorEffect)(_)(n.join(e))})},I=new s.Functor(function(n){return function(e){return v.unsafePerformEffect(y(s.map(h)(n)(O(e))))}}),W=new o.MonadThrow(function(){return T},e._throwError),N=new o.MonadError(function(){return W},e._catchError),x=function(n){return function(e){return M(a.bindFlipped(A)(function(e){return P.liftEffect(L)(n(e))})(o.try(N)(e)))}},U=new l.Parallel(function(){return R},function(){return T},m.unsafeCoerce,e._sequential),R=new t.Applicative(function(){return C},function(n){return l.parallel(U)(t.pure(H)(n))}),k=new i.MonadRec(function(){return T},function(n){var e=function(r){return a.bind(A)(n(r))(function(n){if(n instanceof i.Done)return t.pure(H)(n.value0);if(n instanceof i.Loop)return e(n.value0);throw new Error("Failed pattern match at Effect.Aff line 99, column 7 - line 101, column 22: "+[n.constructor.name])})};return e}),B=f.const(t.pure(H)(d.unit));n.Canceler=D,n.launchAff=M,n.runAff=x,n.runAff_=function(n){return function(e){return s.void(S.functorEffect)(x(n)(e))}},n.forkAff=w,n.suspendAff=b,n.killFiber=function(n){return function(r){return a.bind(A)(P.liftEffect(L)(r.isSuspended))(function(a){return a?P.liftEffect(L)(s.void(S.functorEffect)(r.kill(n,f.const(t.pure(S.applicativeEffect)(d.unit))))):e.makeAff(function(e){return s.map(S.functorEffect)(_)(r.kill(n,e))})})}},n.joinFiber=O,n.nonCanceler=B,n.effectCanceler=_,n.functorAff=h,n.applyAff=F,n.applicativeAff=H,n.bindAff=A,n.monadAff=T,n.monadRecAff=k,n.monadThrowAff=W,n.monadErrorAff=N,n.monadEffectAff=L,n.functorParAff=g,n.applyParAff=C,n.applicativeParAff=R,n.parallelAff=U,n.functorFiber=I,n.makeAff=e.makeAff}(PS["Effect.Aff"]=PS["Effect.Aff"]||{}),function(n){"use strict";n._app=function(){return app},n._closest=function(n,e,t,r){var a=r.closest(t);return a?n(a):e},n._innerHtml=function(n){return n.innerHTML},n._setInnerHtml=function(n,e){return e.innerHTML=n,e},n._createFormData=function(n){return new FormData(n)},n._createFormString=function(n){return new URLSearchParams(new FormData(n)).toString()},n._createFormArray=function(n){return Array.from(new FormData(n))},n._getDataAttribute=function(n,e){return e.dataset[n]},n._setDataAttribute=function(n,e,t){return t.dataset[n]=e},n._moment8601=function(n,e){var t=moment(e,moment.ISO_8601),r=t.fromNow(),a=t.format("MMMM D YYYY, h:mm a")+" ("+t.format()+") ";return n(r)(a)},n._mmoment8601=function(n,e,t,r){try{var a=moment(r,moment.ISO_8601),u=a.fromNow(),o=a.format("MMMM D YYYY, h:mm a")+" ("+a.format()+") ";return n(t(u)(o))}catch(n){return e}},n._closeWindow=function(n){n.close()}}(PS.Globals=PS.Globals||{}),function(n){"use strict";n.null=null,n.nullable=function(n,e,t){return null==n?e:t(n)},n.notNull=function(n){return n}}(PS["Data.Nullable"]=PS["Data.Nullable"]||{}),function(n){"use strict";var e=PS["Data.Nullable"],t=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.Maybe"]),r=(PS["Data.Ord"],PS["Data.Show"],PS.Prelude,t.maybe(e.null)(e.notNull));n.toMaybe=function(n){return e.nullable(n,t.Nothing.value,t.Just.create)},n.toNullable=r}(PS["Data.Nullable"]=PS["Data.Nullable"]||{}),function(n){"use strict";PS["Control.Monad.Error.Class"];var e=PS["Control.Monad.Except.Trans"],t=(PS["Control.Semigroupoid"],PS["Data.Either"],PS["Data.Identity"]),r=PS["Data.Newtype"];PS.Prelude;n.runExcept=function(n){return r.unwrap(t.newtypeIdentity)(e.runExceptT(n))}}(PS["Control.Monad.Except"]=PS["Control.Monad.Except"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Category"];var e=PS["Control.Plus"],t=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"]),r=(PS["Data.FoldableWithIndex"],PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"]),u=(PS["Data.Semigroup.Foldable"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}());n.NonEmpty=u,n.singleton=function(n){return function(t){return new u(t,e.empty(n))}},n.functorNonEmpty=function(n){return new r.Functor(function(e){return function(t){return new u(e(t.value0),r.map(n)(e)(t.value1))}})},n.foldableNonEmpty=function(n){return new t.Foldable(function(e){return function(r){return function(u){return a.append(e.Semigroup0())(r(u.value0))(t.foldMap(n)(e)(r)(u.value1))}}},function(e){return function(r){return function(a){return t.foldl(n)(e)(e(r)(a.value0))(a.value1)}}},function(e){return function(r){return function(a){return e(a.value0)(t.foldr(n)(e)(r)(a.value1))}}})}}(PS["Data.NonEmpty"]=PS["Data.NonEmpty"]||{}),function(n){"use strict";var e=PS["Control.Alt"],t=(PS["Control.Alternative"],PS["Control.Applicative"]),r=PS["Control.Apply"],a=(PS["Control.Bind"],PS["Control.Category"],PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Monad"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"]),u=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"]),o=(PS["Data.FoldableWithIndex"],PS["Data.Function"]),i=PS["Data.Functor"],l=(PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Monoid"]),c=(PS["Data.Newtype"],PS["Data.NonEmpty"]),f=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"]),s=(PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),S=new u.Foldable(function(n){return function(e){return u.foldl(S)(function(t){return function(r){return f.append(n.Semigroup0())(t)(e(r))}})(l.mempty(n))}},function(n){return function(e){return function(t){var r,a=e,u=!1;function o(e,r){if(r instanceof s)return u=!0,e;if(r instanceof d)return a=n(e)(r.value0),void(t=r.value1);throw new Error("Failed pattern match at Data.List.Types line 81, column 12 - line 83, column 30: "+[r.constructor.name])}for(;!u;)r=o(a,t);return r}}},function(n){return function(e){var t=u.foldl(S)(o.flip(d.create))(s.value);return function(r){return u.foldl(S)(o.flip(n))(e)(t(r))}}}),P=c.foldableNonEmpty(S),v=new i.Functor(function(n){return u.foldr(S)(function(e){return function(t){return new d(n(e),t)}})(s.value)}),p=c.functorNonEmpty(v),m=new f.Semigroup(function(n){return function(e){return u.foldr(S)(d.create)(e)(n)}}),D=new r.Apply(function(){return v},function(n){return function(e){if(n instanceof s)return s.value;if(n instanceof d)return f.append(m)(i.map(v)(n.value0)(e))(r.apply(D)(n.value1)(e));throw new Error("Failed pattern match at Data.List.Types line 127, column 1 - line 127, column 33: "+[n.constructor.name,e.constructor.name])}}),b=new t.Applicative(function(){return D},function(n){return new d(n,s.value)}),g=new e.Alt(function(){return v},f.append(m)),h=new a.Plus(function(){return g},s.value);n.Nil=s,n.Cons=d,n.NonEmptyList=function(n){return n},n.semigroupList=m,n.functorList=v,n.foldableList=S,n.applyList=D,n.applicativeList=b,n.altList=g,n.plusList=h,n.functorNonEmptyList=p,n.foldableNonEmptyList=P}(PS["Data.List.Types"]=PS["Data.List.Types"]||{}),function(n){"use strict";n.unsafeToForeign=function(n){return n},n.unsafeFromForeign=function(n){return n},n.typeOf=function(n){return typeof n},n.tagOf=function(n){return Object.prototype.toString.call(n).slice(8,-1)}}(PS.Foreign=PS.Foreign||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Lazy"],PS["Control.Monad.Rec.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Boolean"],PS["Data.Eq"];var e,t=PS["Data.Foldable"],r=(PS["Data.Function"],PS["Data.Functor"],PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.List.Types"]),a=(PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.NonEmpty"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unit"],PS.Prelude,e=r.Nil.value,function(n){var t,a=e,u=!1;function o(e,t){if(t instanceof r.Nil)return u=!0,e;if(t instanceof r.Cons)return a=new r.Cons(t.value0,e),void(n=t.value1);throw new Error("Failed pattern match at Data.List line 368, column 3 - line 368, column 19: "+[e.constructor.name,t.constructor.name])}for(;!u;)t=o(a,n);return t});n.fromFoldable=function(n){return t.foldr(n)(r.Cons.create)(r.Nil.value)},n.null=function(n){return n instanceof r.Nil},n.reverse=a}(PS["Data.List"]=PS["Data.List"]||{}),function(n){"use strict";PS["Control.Bind"],PS["Control.Category"],PS["Control.Semigroupoid"],PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.List"];var e=PS["Data.List.Types"],t=(PS["Data.Maybe"],PS["Data.NonEmpty"]);PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Partial.Unsafe"],PS.Prelude;n.singleton=function(n){return e.NonEmptyList(t.singleton(e.plusList)(n))},n.cons=function(n){return function(r){return new t.NonEmpty(n,new e.Cons(r.value0,r.value1))}}}(PS["Data.List.NonEmpty"]=PS["Data.List.NonEmpty"]||{}),function(n){"use strict";n.singleton=function(n){return n},n.length=function(n){return n.length},n.drop=function(n){return function(e){return e.substring(n)}}}(PS["Data.String.CodeUnits"]=PS["Data.String.CodeUnits"]||{}),function(n){"use strict";(PS["Data.String.Unsafe"]=PS["Data.String.Unsafe"]||{}).charAt=function(n){return function(e){if(n>=0&&n<e.length)return e.charAt(n);throw new Error("Data.String.Unsafe.charAt: Invalid index.")}}}(),function(n){"use strict";var e=PS["Data.String.Unsafe"];n.charAt=e.charAt}(PS["Data.String.Unsafe"]=PS["Data.String.Unsafe"]||{}),function(n){"use strict";var e=PS["Data.String.CodeUnits"];PS["Control.Semigroupoid"],PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Function"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semiring"],PS["Data.String.Pattern"],PS["Data.String.Unsafe"],PS.Prelude;n.singleton=e.singleton,n.length=e.length,n.drop=e.drop}(PS["Data.String.CodeUnits"]=PS["Data.String.CodeUnits"]||{}),function(n){"use strict";var e=PS.Foreign,t=PS["Control.Applicative"],r=PS["Control.Monad.Error.Class"],a=(PS["Control.Monad.Except"],PS["Control.Monad.Except.Trans"]),u=(PS["Control.Semigroupoid"],PS["Data.Boolean"]),o=(PS["Data.Either"],PS["Data.Eq"],PS["Data.Function"],PS["Data.HeytingAlgebra"],PS["Data.Identity"]),i=(PS["Data.Int"],PS["Data.List.NonEmpty"]),l=(PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"]),c=(PS["Data.String.CodeUnits"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),f=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),s=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),S=function(n){if(n instanceof c)return n.value0;if(n instanceof s)return"Error at array index "+l.show(l.showInt)(n.value0)+": "+S(n.value1);if(n instanceof d)return"Error at property "+l.show(l.showString)(n.value0)+": "+S(n.value1);if(n instanceof f)return"Type mismatch: expected "+n.value0+", found "+n.value1;throw new Error("Failed pattern match at Foreign line 72, column 1 - line 72, column 45: "+[n.constructor.name])},P=function(n){return r.throwError(a.monadThrowExceptT(o.monadIdentity))(i.singleton(n))},v=function(n){return function(r){if(e.tagOf(r)===n)return t.pure(a.applicativeExceptT(o.monadIdentity))(e.unsafeFromForeign(r));if(u.otherwise)return P(new f(n,e.tagOf(r)));throw new Error("Failed pattern match at Foreign line 106, column 1 - line 106, column 55: "+[n.constructor.name,r.constructor.name])}},p=v("Boolean"),m=v("String");n.ForeignError=c,n.TypeMismatch=f,n.ErrorAtIndex=s,n.ErrorAtProperty=d,n.renderForeignError=S,n.unsafeReadTagged=v,n.readString=m,n.readBoolean=p,n.fail=P,n.unsafeToForeign=e.unsafeToForeign,n.typeOf=e.typeOf}(PS.Foreign=PS.Foreign||{}),function(n){"use strict";(PS["Foreign.Index"]=PS["Foreign.Index"]||{}).unsafeReadPropImpl=function(n,e,t,r){return null==r?n:e(r[t])}}(),function(n){"use strict";var e=PS["Foreign.Index"],t=PS["Control.Applicative"],r=(PS["Control.Bind"],PS["Control.Monad.Except.Trans"]),a=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.HeytingAlgebra"],PS["Data.Identity"]),u=(PS["Data.List.NonEmpty"],PS.Foreign),o=(PS.Prelude,function(n){return function(o){return e.unsafeReadPropImpl(u.fail(new u.TypeMismatch("object",u.typeOf(o))),t.pure(r.applicativeExceptT(a.monadIdentity)),n,o)}});n.readProp=o}(PS["Foreign.Index"]=PS["Foreign.Index"]||{}),function(n){"use strict";n.empty={},n._lookup=function(n,e,t,r){return t in r?e(r[t]):n}}(PS["Foreign.Object"]=PS["Foreign.Object"]||{}),function(n){"use strict";(PS["Foreign.Object.ST"]=PS["Foreign.Object.ST"]||{}).new=function(){return{}}}(),function(n){"use strict";var e=PS["Foreign.Object.ST"];PS["Control.Monad.ST"],PS["Data.Maybe"];n.new=e.new}(PS["Foreign.Object.ST"]=PS["Foreign.Object.ST"]||{}),function(n){"use strict";var e=PS["Foreign.Object"],t=(PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Monad.ST"],PS["Control.Monad.ST.Internal"],PS["Control.Semigroupoid"],PS["Data.Array"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.FoldableWithIndex"],PS["Data.Function"],PS["Data.Function.Uncurried"]),r=(PS["Data.Functor"],PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),a=(PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Foreign.Object.ST"],PS.Prelude,t.runFn4(e._lookup)(r.Nothing.value)(r.Just.create));n.lookup=a,n.empty=e.empty}(PS["Foreign.Object"]=PS["Foreign.Object"]||{}),function(n){"use strict";PS["Type.Data.Boolean"],PS["Type.Data.Symbol"],PS["Type.Equality"];var e=function(){function n(){}return n.value=new n,n}();n.RLProxy=e}(PS["Type.Row"]=PS["Type.Row"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.Function.Uncurried"],PS["Data.HeytingAlgebra"];var e=PS["Data.Symbol"],t=(PS.Prelude,PS["Record.Unsafe"]);PS["Record.Unsafe.Union"],PS["Type.Row"],PS["Unsafe.Coerce"];n.get=function(n){return function(r){return function(r){return function(a){return t.unsafeGet(e.reflectSymbol(n)(r))(a)}}}}}(PS.Record=PS.Record||{}),function(n){"use strict";n.copyRecord=function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e},n.unsafeInsert=function(n){return function(e){return function(t){return t[n]=e,t}}}}(PS["Record.Builder"]=PS["Record.Builder"]||{}),function(n){"use strict";var e=PS["Record.Builder"],t=PS["Control.Category"],r=PS["Control.Semigroupoid"],a=(PS["Data.Function.Uncurried"],PS["Data.Symbol"]),u=(PS.Prelude,PS["Record.Unsafe.Union"],PS["Type.Row"],PS["Unsafe.Coerce"],r.semigroupoidFn),o=t.categoryFn;n.build=function(n){return function(t){return n(e.copyRecord(t))}},n.insert=function(n){return function(n){return function(n){return function(t){return function(r){return function(u){return e.unsafeInsert(a.reflectSymbol(n)(t))(r)(u)}}}}}},n.semigroupoidBuilder=u,n.categoryBuilder=o}(PS["Record.Builder"]=PS["Record.Builder"]||{}),function(n){"use strict";PS["Simple.JSON"],PS["Control.Alt"],PS["Control.Applicative"],PS["Control.Bind"];var e=PS["Control.Category"],t=(PS["Control.Monad.Except"],PS["Control.Monad.Except.Trans"],PS["Control.Semigroupoid"]),r=(PS["Data.Bifunctor"],PS["Data.Boolean"],PS["Data.Either"],PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Identity"],PS["Data.List.Types"],PS["Data.Maybe"],PS["Data.Nullable"],PS["Data.Semigroup"],PS["Data.Symbol"]),a=(PS["Data.Traversable"],PS["Data.Variant"],PS["Effect.Exception"],PS["Effect.Uncurried"],PS["Effect.Unsafe"],PS.Foreign),u=(PS["Foreign.Index"],PS["Foreign.Object"],PS["Global.Unsafe"]),o=(PS["Partial.Unsafe"],PS.Prelude,PS.Record),i=PS["Record.Builder"],l=(PS["Type.Prelude"],PS["Type.Row"]),c=function(n){this.writeImpl=n},f=function(n){this.writeImplFields=n},s=function(n){return n.writeImplFields},d=function(n){return n.writeImpl},S=new c(a.unsafeToForeign),P=new c(a.unsafeToForeign),v=new c(a.unsafeToForeign),p=new f(function(n){return function(n){return e.identity(i.categoryBuilder)}});n.writeJSON=function(n){return function(e){return u.unsafeStringify(d(n)(e))}},n.WriteForeign=c,n.writeImpl=d,n.WriteForeignFields=f,n.writeImplFields=s,n.writeForeignString=S,n.writeForeignInt=P,n.writeForeignBoolean=v,n.recordWriteForeign=function(n){return function(n){return new c(function(e){var t=s(n)(l.RLProxy.value)(e);return a.unsafeToForeign(i.build(t)({}))})}},n.consWriteForeignFields=function(n){return function(e){return function(a){return function(u){return function(c){return function(S){return new f(function(f){return function(f){var P=s(a)(l.RLProxy.value)(f),v=d(e)(o.get(n)(u)(r.SProxy.value)(f));return t.compose(i.semigroupoidBuilder)(i.insert(S)(c)(n)(r.SProxy.value)(v))(P)}})}}}}}},n.nilWriteForeignFields=p}(PS["Simple.JSON"]=PS["Simple.JSON"]||{}),function(n){"use strict";var e=PS["Data.Symbol"],t=PS["Simple.JSON"],r=t.recordWriteForeign()(t.consWriteForeignFields(new e.IsSymbol(function(){return"bid"}))(t.writeForeignInt)(t.consWriteForeignFields(new e.IsSymbol(function(){return"description"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"private"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"selected"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"tags"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"time"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"title"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"toread"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"url"}))(t.writeForeignString)(t.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()());n.wfI=r}(PS.Model=PS.Model||{}),function(n){"use strict";(PS["Web.HTML"]=PS["Web.HTML"]||{}).window=function(){return window}}(),function(n){"use strict";(PS["Web.HTML.HTMLDocument"]=PS["Web.HTML.HTMLDocument"]||{})._body=function(n){return function(){return n.body}}}(),function(n){"use strict";(PS["Web.DOM.Element"]=PS["Web.DOM.Element"]||{}).removeAttribute=function(n){return function(e){return function(){return e.removeAttribute(n),{}}}}}(),function(n){"use strict";n._querySelector=function(n){return function(e){return function(){return e.querySelector(n)}}},n.querySelectorAll=function(n){return function(e){return function(){return e.querySelectorAll(n)}}}}(PS["Web.DOM.ParentNode"]=PS["Web.DOM.ParentNode"]||{}),function(n){"use strict";(PS["Web.DOM.NodeList"]=PS["Web.DOM.NodeList"]||{}).toArray=function(n){return function(){return[].slice.call(n)}}}(),function(n){"use strict";var e=PS["Web.DOM.NodeList"];PS["Control.Semigroupoid"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Nullable"],PS.Effect,PS.Prelude,PS["Web.DOM.Internal.Types"];n.toArray=e.toArray}(PS["Web.DOM.NodeList"]=PS["Web.DOM.NodeList"]||{}),function(n){"use strict";var e=PS["Web.DOM.ParentNode"],t=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Nullable"]),a=(PS["Data.Ord"],PS.Effect);PS.Prelude,PS["Web.DOM.HTMLCollection"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NodeList"];n.querySelector=function(n){return function(u){return t.map(a.functorEffect)(r.toMaybe)(e._querySelector(n)(u))}},n.querySelectorAll=e.querySelectorAll}(PS["Web.DOM.ParentNode"]=PS["Web.DOM.ParentNode"]||{}),function(n){"use strict";(PS["Web.Event.EventTarget"]=PS["Web.Event.EventTarget"]||{}).eventListener=function(n){return function(){return function(e){return n(e)()}}}}(),function(n){"use strict";n._currentTarget=function(n){return n.currentTarget},n.preventDefault=function(n){return function(){return n.preventDefault()}}}(PS["Web.Event.Event"]=PS["Web.Event.Event"]||{}),function(n){"use strict";n.toCharCode=function(n){return n.charCodeAt(0)},n.fromCharCode=function(n){return String.fromCharCode(n)}}(PS["Data.Enum"]=PS["Data.Enum"]||{}),function(n){"use strict";var e=PS["Data.Enum"],t=(PS["Control.Apply"],PS["Control.Bind"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Semigroupoid"],PS["Data.Boolean"],PS["Data.Bounded"]),r=(PS["Data.Either"],PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),a=(PS["Data.Newtype"],PS["Data.Ord"]),u=(PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS["Data.Unit"],PS["Partial.Unsafe"],PS.Prelude,function(n,e,t){this.Ord0=n,this.pred=e,this.succ=t}),o=function(n,e,t,r,a){this.Bounded0=n,this.Enum1=e,this.cardinality=t,this.fromEnum=r,this.toEnum=a},i=function(n){return n.toEnum},l=function(n){return n.fromEnum},c=function(n){return function(e){return function(t){return n(e(t)+1|0)}}},f=function(n){return function(e){return function(t){return n(e(t)-1|0)}}},s=function(n){return n>=t.bottom(t.boundedInt)&&n<=t.top(t.boundedInt)?new r.Just(e.fromCharCode(n)):r.Nothing.value},d=new u(function(){return a.ordChar},f(s)(e.toCharCode),c(s)(e.toCharCode)),S=new o(function(){return t.boundedChar},function(){return d},e.toCharCode(t.top(t.boundedChar))-e.toCharCode(t.bottom(t.boundedChar))|0,e.toCharCode,s);n.Enum=u,n.succ=function(n){return n.succ},n.pred=function(n){return n.pred},n.BoundedEnum=o,n.cardinality=function(n){return n.cardinality},n.toEnum=i,n.fromEnum=l,n.toEnumWithDefaults=function(n){return function(e){return function(a){return function(u){var o=i(n)(u);if(o instanceof r.Just)return o.value0;if(o instanceof r.Nothing)return u<l(n)(t.bottom(n.Bounded0()))?e:a;throw new Error("Failed pattern match at Data.Enum line 158, column 33 - line 160, column 62: "+[o.constructor.name])}}}},n.defaultSucc=c,n.defaultPred=f,n.enumChar=d,n.boundedEnumChar=S}(PS["Data.Enum"]=PS["Data.Enum"]||{}),function(n){"use strict";var e=PS["Web.Event.Event"],t=(PS["Control.Semigroupoid"],PS["Data.DateTime.Instant"],PS["Data.Enum"],PS["Data.Eq"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Nullable"]);PS["Data.Ord"],PS.Effect,PS.Prelude,PS["Web.Event.EventPhase"],PS["Web.Event.Internal.Types"];n.currentTarget=function(n){return t.toMaybe(e._currentTarget(n))},n.preventDefault=e.preventDefault}(PS["Web.Event.Event"]=PS["Web.Event.Event"]||{}),function(n){"use strict";var e=PS["Web.Event.EventTarget"];PS.Effect,PS.Prelude,PS["Web.Event.Event"],PS["Web.Event.Internal.Types"];n.eventListener=e.eventListener}(PS["Web.Event.EventTarget"]=PS["Web.Event.EventTarget"]||{}),function(n){"use strict";(PS["Web.Internal.FFI"]=PS["Web.Internal.FFI"]||{})._unsafeReadProtoTagged=function(n,e,t,r){for(var a=r;null!=a;){var u=Object.getPrototypeOf(a),o=u.constructor.name;if(o===t)return e(r);if("Object"===o)return n;a=u}return n}}(),function(n){"use strict";var e=PS["Web.Internal.FFI"],t=(PS["Data.Function.Uncurried"],PS["Data.Maybe"]);n.unsafeReadProtoTagged=function(n){return function(r){return e._unsafeReadProtoTagged(t.Nothing.value,t.Just.create,n,r)}}}(PS["Web.Internal.FFI"]=PS["Web.Internal.FFI"]||{}),function(n){"use strict";var e=PS["Web.DOM.Element"],t=(PS["Control.Semigroupoid"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Nullable"],PS.Effect,PS.Prelude,PS["Unsafe.Coerce"]),r=(PS["Web.DOM.ChildNode"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonDocumentTypeChildNode"],PS["Web.DOM.ParentNode"],PS["Web.Event.EventTarget"],PS["Web.Internal.FFI"]),a=t.unsafeCoerce,u=t.unsafeCoerce,o=r.unsafeReadProtoTagged("Element");n.fromNode=o,n.toNode=u,n.toParentNode=a,n.removeAttribute=e.removeAttribute}(PS["Web.DOM.Element"]=PS["Web.DOM.Element"]||{}),function(n){"use strict";(PS["Web.DOM.NonElementParentNode"]=PS["Web.DOM.NonElementParentNode"]||{})._getElementById=function(n){return function(e){return function(){return e.getElementById(n)}}}}(),function(n){"use strict";var e=PS["Web.DOM.NonElementParentNode"],t=(PS["Control.Semigroupoid"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Nullable"]),a=PS.Effect;PS.Prelude,PS["Web.DOM.Element"];n.getElementById=function(n){return function(u){return t.map(a.functorEffect)(r.toMaybe)(e._getElementById(n)(u))}}}(PS["Web.DOM.NonElementParentNode"]=PS["Web.DOM.NonElementParentNode"]||{}),function(n){"use strict";PS["Web.DOM.Document"],PS["Control.Semigroupoid"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Nullable"],PS.Effect,PS.Prelude;var e=PS["Unsafe.Coerce"],t=(PS["Web.DOM.Comment"],PS["Web.DOM.DocumentFragment"],PS["Web.DOM.DocumentType"],PS["Web.DOM.Element"],PS["Web.DOM.HTMLCollection"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonElementParentNode"],PS["Web.DOM.ParentNode"],PS["Web.DOM.ProcessingInstruction"],PS["Web.DOM.Text"],PS["Web.Event.EventTarget"],PS["Web.Internal.FFI"],e.unsafeCoerce);n.toNonElementParentNode=t}(PS["Web.DOM.Document"]=PS["Web.DOM.Document"]||{}),function(n){"use strict";(PS["Web.HTML.HTMLElement"]=PS["Web.HTML.HTMLElement"]||{})._read=function(n,e,t){var r=Object.prototype.toString.call(t);return 0===r.indexOf("[object HTML")&&r.indexOf("Element]")===r.length-8?e(t):n}}(),function(n){"use strict";var e=PS["Web.HTML.HTMLElement"],t=(PS["Control.Semigroupoid"],PS["Data.Function.Uncurried"],PS["Data.Functor"],PS["Data.Maybe"]),r=(PS["Data.Nullable"],PS.Effect,PS.Prelude,PS["Unsafe.Coerce"]),a=(PS["Web.DOM"],PS["Web.DOM.DOMTokenList"],PS["Web.DOM.Element"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonDocumentTypeChildNode"],PS["Web.DOM.ParentNode"],PS["Web.Event.EventTarget"],r.unsafeCoerce),u=r.unsafeCoerce;n.fromElement=function(n){return e._read(t.Nothing.value,t.Just.create,n)},n.toElement=u,n.toNode=a}(PS["Web.HTML.HTMLElement"]=PS["Web.HTML.HTMLElement"]||{}),function(n){"use strict";var e=PS["Web.HTML.HTMLDocument"],t=(PS["Control.Semigroupoid"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Nullable"]),a=PS.Effect,u=(PS.Prelude,PS["Unsafe.Coerce"]),o=(PS["Web.DOM.Document"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonElementParentNode"],PS["Web.DOM.ParentNode"],PS["Web.Event.EventTarget"],PS["Web.HTML.HTMLDocument.ReadyState"],PS["Web.HTML.HTMLElement"],PS["Web.Internal.FFI"],u.unsafeCoerce),i=u.unsafeCoerce;n.toDocument=i,n.toParentNode=o,n.body=function(n){return t.map(a.functorEffect)(r.toMaybe)(e._body(n))}}(PS["Web.HTML.HTMLDocument"]=PS["Web.HTML.HTMLDocument"]||{}),function(n){"use strict";n.href=function(n){return function(){return n.href}},n.setHref=function(n){return function(e){return function(){e.href=n}}},n.search=function(n){return function(){return n.search}},n.reload=function(n){return function(){n.reload()}}}(PS["Web.HTML.Location"]=PS["Web.HTML.Location"]||{}),function(n){"use strict";var e=PS["Web.HTML.Location"];PS.Effect,PS.Prelude;n.setHref=e.setHref,n.search=e.search,n.reload=e.reload}(PS["Web.HTML.Location"]=PS["Web.HTML.Location"]||{}),function(n){"use strict";n.document=function(n){return function(){return n.document}},n.location=function(n){return function(){return n.location}}}(PS["Web.HTML.Window"]=PS["Web.HTML.Window"]||{}),function(n){"use strict";var e=PS["Web.HTML.Window"];PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Nullable"],PS["Data.Ord"],PS.Effect,PS.Prelude,PS["Unsafe.Coerce"],PS["Web.Event.EventTarget"],PS["Web.HTML.HTMLDocument"],PS["Web.HTML.History"],PS["Web.HTML.Location"],PS["Web.HTML.Navigator"],PS["Web.Storage.Storage"];n.document=e.document,n.location=e.location}(PS["Web.HTML.Window"]=PS["Web.HTML.Window"]||{}),function(n){"use strict";var e=PS["Web.HTML"];PS.Effect,PS["Web.HTML.HTMLAnchorElement"],PS["Web.HTML.HTMLAreaElement"],PS["Web.HTML.HTMLAudioElement"],PS["Web.HTML.HTMLBRElement"],PS["Web.HTML.HTMLBaseElement"],PS["Web.HTML.HTMLBodyElement"],PS["Web.HTML.HTMLButtonElement"],PS["Web.HTML.HTMLCanvasElement"],PS["Web.HTML.HTMLDListElement"],PS["Web.HTML.HTMLDataElement"],PS["Web.HTML.HTMLDataListElement"],PS["Web.HTML.HTMLDivElement"],PS["Web.HTML.HTMLDocument"],PS["Web.HTML.HTMLElement"],PS["Web.HTML.HTMLEmbedElement"],PS["Web.HTML.HTMLFieldSetElement"],PS["Web.HTML.HTMLFormElement"],PS["Web.HTML.HTMLHRElement"],PS["Web.HTML.HTMLHeadElement"],PS["Web.HTML.HTMLHeadingElement"],PS["Web.HTML.HTMLIFrameElement"],PS["Web.HTML.HTMLImageElement"],PS["Web.HTML.HTMLInputElement"],PS["Web.HTML.HTMLKeygenElement"],PS["Web.HTML.HTMLLIElement"],PS["Web.HTML.HTMLLabelElement"],PS["Web.HTML.HTMLLegendElement"],PS["Web.HTML.HTMLLinkElement"],PS["Web.HTML.HTMLMapElement"],PS["Web.HTML.HTMLMediaElement"],PS["Web.HTML.HTMLMetaElement"],PS["Web.HTML.HTMLMeterElement"],PS["Web.HTML.HTMLModElement"],PS["Web.HTML.HTMLOListElement"],PS["Web.HTML.HTMLObjectElement"],PS["Web.HTML.HTMLOptGroupElement"],PS["Web.HTML.HTMLOptionElement"],PS["Web.HTML.HTMLOutputElement"],PS["Web.HTML.HTMLParagraphElement"],PS["Web.HTML.HTMLParamElement"],PS["Web.HTML.HTMLPreElement"],PS["Web.HTML.HTMLProgressElement"],PS["Web.HTML.HTMLQuoteElement"],PS["Web.HTML.HTMLScriptElement"],PS["Web.HTML.HTMLSelectElement"],PS["Web.HTML.HTMLSourceElement"],PS["Web.HTML.HTMLSpanElement"],PS["Web.HTML.HTMLStyleElement"],PS["Web.HTML.HTMLTableCaptionElement"],PS["Web.HTML.HTMLTableCellElement"],PS["Web.HTML.HTMLTableColElement"],PS["Web.HTML.HTMLTableDataCellElement"],PS["Web.HTML.HTMLTableElement"],PS["Web.HTML.HTMLTableHeaderCellElement"],PS["Web.HTML.HTMLTableRowElement"],PS["Web.HTML.HTMLTableSectionElement"],PS["Web.HTML.HTMLTemplateElement"],PS["Web.HTML.HTMLTextAreaElement"],PS["Web.HTML.HTMLTimeElement"],PS["Web.HTML.HTMLTitleElement"],PS["Web.HTML.HTMLTrackElement"],PS["Web.HTML.HTMLUListElement"],PS["Web.HTML.HTMLVideoElement"],PS["Web.HTML.History"],PS["Web.HTML.Location"],PS["Web.HTML.Navigator"],PS["Web.HTML.Window"];n.window=e.window}(PS["Web.HTML"]=PS["Web.HTML"]||{}),function(n){"use strict";var e=PS.Globals,t=PS["Control.Applicative"],r=(PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.Maybe"]),a=PS["Data.Nullable"],u=PS["Data.Tuple"],o=PS.Effect;PS.Model,PS.Prelude,PS["Web.DOM"],PS["Web.HTML"],PS["Web.XHR.FormData"];n["app'"]=function(n){return e._app()},n.closest=function(n){return function(a){return t.pure(o.applicativeEffect)(e._closest(r.Just.create,r.Nothing.value,n,a))}},n.moment8601=function(n){return t.pure(o.applicativeEffect)(e._moment8601(u.Tuple.create,n))},n.mmoment8601=function(n){return e._mmoment8601(r.Just.create,r.Nothing.value,u.Tuple.create,n)},n.innerHtml=function(n){return t.pure(o.applicativeEffect)(e._innerHtml(n))},n.setInnerHtml=function(n){return function(r){return t.pure(o.applicativeEffect)(e._setInnerHtml(n,r))}},n.createFormData=function(n){return e._createFormData(n)},n.createFormString=function(n){return e._createFormString(n)},n.createFormArray=function(n){return e._createFormArray(n)},n.getDataAttribute=function(n){return function(r){return t.pure(o.applicativeEffect)(a.toMaybe(e._getDataAttribute(n,r)))}},n.setDataAttribute=function(n){return function(r){return function(a){return t.pure(o.applicativeEffect)(e._setDataAttribute(n,r,a))}}},n.closeWindow=function(n){return t.pure(o.applicativeEffect)(e._closeWindow(n))},n._app=e._app,n._closest=e._closest,n._moment8601=e._moment8601,n._mmoment8601=e._mmoment8601,n._innerHtml=e._innerHtml,n._setInnerHtml=e._setInnerHtml,n._createFormData=e._createFormData,n._createFormString=e._createFormString,n._createFormArray=e._createFormArray,n._getDataAttribute=e._getDataAttribute,n._setDataAttribute=e._setDataAttribute,n._closeWindow=e._closeWindow}(PS.Globals=PS.Globals||{}),function(n){"use strict";var e;(PS["Network.HTTP.Affjax"]=PS["Network.HTTP.Affjax"]||{})._ajax=(e={},"undefined"==typeof module||!module.require||"undefined"!=typeof process&&process.versions.electron?(e.newXHR=function(){return new XMLHttpRequest},e.fixupUrl=function(n){return n||"/"},e.getResponse=function(n){return n.response}):(e.newXHR=function(){return new(module.require("xhr2"))},e.fixupUrl=function(n){var e=module.require("url"),t=e.parse(n);return t.protocol=t.protocol||"http:",t.hostname=t.hostname||"localhost",e.format(t)},e.getResponse=function(n){return n.response}),function(n,t){return function(r,a){var u=e.newXHR(),o=e.fixupUrl(t.url);if(u.open(t.method||"GET",o,!0,t.username,t.password),t.headers)try{for(var i,l=0;null!=(i=t.headers[l]);l++)u.setRequestHeader(i.field,i.value)}catch(n){r(n)}return u.onerror=function(){r(new Error("AJAX request failed: "+t.method+" "+t.url))},u.onload=function(){a({status:u.status,statusText:u.statusText,headers:u.getAllResponseHeaders().split("\r\n").filter(function(n){return n.length>0}).map(function(e){var t=e.indexOf(":");return n(e.substring(0,t))(e.substring(t+2))}),response:e.getResponse(u)})},u.responseType=t.responseType,u.withCredentials=t.withCredentials,u.send(t.content),function(n,e,t){try{u.abort()}catch(n){return e(n)}return t()}}})}(),function(n){"use strict";n.fromObject=function(n){return n},n.stringify=function(n){return JSON.stringify(n)}}(PS["Data.Argonaut.Core"]=PS["Data.Argonaut.Core"]||{}),function(n){"use strict";var e=PS["Data.Argonaut.Core"],t=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Foreign.Object"]),r=(PS.Prelude,e.fromObject(t.empty));n.jsonEmptyObject=r,n.stringify=e.stringify}(PS["Data.Argonaut.Core"]=PS["Data.Argonaut.Core"]||{}),function(n){"use strict";(PS["Data.Argonaut.Parser"]=PS["Data.Argonaut.Parser"]||{})._jsonParser=function(n,e,t){try{return e(JSON.parse(t))}catch(e){return n(e.message)}}}(),function(n){"use strict";var e=PS["Data.Argonaut.Parser"],t=(PS["Data.Argonaut.Core"],PS["Data.Either"]);PS["Data.Function.Uncurried"];n.jsonParser=function(n){return e._jsonParser(t.Left.create,t.Right.create,n)}}(PS["Data.Argonaut.Parser"]=PS["Data.Argonaut.Parser"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Semigroupoid"];var e=PS["Data.Either"],t=(PS["Data.Function"],PS.Effect,PS["Effect.Aff"]);PS["Effect.Exception"],PS["Effect.Uncurried"],PS.Prelude;n.fromEffectFnAff=function(n){return t.makeAff(function(r){return function(){var a=n(function(n){return r(e.Left.create(n))()},function(n){return r(e.Right.create(n))()});return function(n){return t.makeAff(function(r){return function(){return a(n,function(n){return r(e.Left.create(n))()},function(n){return r(e.Right.create(n))()}),t.nonCanceler}})}}})}}(PS["Effect.Aff.Compat"]=PS["Effect.Aff.Compat"]||{}),function(n){"use strict";PS["Data.Argonaut.Core"],PS["Data.ArrayBuffer.Types"],PS["Data.FormURLEncoded"];var e=PS["Data.Maybe"],t=(PS["Data.MediaType"],PS["Data.MediaType.Common"]),r=(PS["Web.DOM.Document"],PS["Web.File.Blob"],PS["Web.XHR.FormData"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=o.create;n.ArrayView=r,n.Blob=a,n.Document=u,n.String=o,n.FormData=i,n.FormURLEncoded=l,n.Json=c,n.string=f,n.toMediaType=function(n){return n instanceof l?new e.Just(t.applicationFormURLEncoded):n instanceof c?new e.Just(t.applicationJSON):e.Nothing.value}}(PS["Network.HTTP.Affjax.Request"]=PS["Network.HTTP.Affjax.Request"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=(PS["Data.Argonaut.Core"],PS["Data.ArrayBuffer.Types"],PS["Data.Maybe"]),r=(PS["Data.MediaType"],PS["Data.MediaType.Common"]),a=(PS.Prelude,PS["Web.DOM.Document"],PS["Web.File.Blob"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=new c(e.identity(e.categoryFn));n.ArrayBuffer=a,n.Blob=u,n.Document=o,n.Json=i,n.String=l,n.Ignore=c,n.ignore=f,n.toResponseType=function(n){if(n instanceof a)return"arraybuffer";if(n instanceof u)return"blob";if(n instanceof o)return"document";if(n instanceof i)return"text";if(n instanceof l)return"text";if(n instanceof c)return"";throw new Error("Failed pattern match at Network.HTTP.Affjax.Response line 41, column 3 - line 49, column 1: "+[n.constructor.name])},n.toMediaType=function(n){return n instanceof i?new t.Just(r.applicationJSON):t.Nothing.value}}(PS["Network.HTTP.Affjax.Response"]=PS["Network.HTTP.Affjax.Response"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.HeytingAlgebra"];var e=PS["Data.MediaType"],t=PS["Data.Newtype"],r=(PS["Data.Semigroup"],PS["Data.Show"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();n.Accept=r,n.ContentType=a,n.RequestHeader=u,n.requestHeaderName=function(n){if(n instanceof r)return"Accept";if(n instanceof a)return"Content-Type";if(n instanceof u)return n.value0;throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 24, column 1 - line 24, column 45: "+[n.constructor.name])},n.requestHeaderValue=function(n){if(n instanceof r)return t.unwrap(e.newtypeMediaType)(n.value0);if(n instanceof a)return t.unwrap(e.newtypeMediaType)(n.value0);if(n instanceof u)return n.value1;throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 29, column 1 - line 29, column 46: "+[n.constructor.name])}}(PS["Network.HTTP.RequestHeader"]=PS["Network.HTTP.RequestHeader"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.HeytingAlgebra"],PS["Data.Semigroup"],PS["Data.Show"],PS.Prelude;var e=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();n.responseHeader=function(n){return function(t){return new e(n,t)}}}(PS["Network.HTTP.ResponseHeader"]=PS["Network.HTTP.ResponseHeader"]||{}),function(n){"use strict";var e=PS["Network.HTTP.Affjax"],t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.Error.Class"],u=PS["Control.Monad.Except"],o=PS["Control.Monad.Except.Trans"],i=(PS["Control.Parallel"],PS["Control.Semigroupoid"],PS["Data.Argonaut.Core"]),l=PS["Data.Argonaut.Parser"],c=PS["Data.Array"],f=PS["Data.Either"],s=PS["Data.Eq"],d=PS["Data.Foldable"],S=PS["Data.FormURLEncoded"],P=PS["Data.Function"],v=(PS["Data.Function.Uncurried"],PS["Data.Functor"]),p=PS["Data.HTTP.Method"],m=PS["Data.HeytingAlgebra"],D=PS["Data.Identity"],b=(PS["Data.Int"],PS["Data.List.Types"]),g=PS["Data.Maybe"],h=PS["Data.Monoid"],w=PS["Data.Nullable"],E=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semiring"],PS["Data.Time.Duration"],PS["Data.Unit"]),y=PS["Effect.Aff"],M=PS["Effect.Aff.Compat"],C=(PS["Effect.Class"],PS["Effect.Exception"]),T=(PS["Effect.Ref"],PS.Foreign),A=(PS.Math,PS["Network.HTTP.Affjax.Request"]),F=PS["Network.HTTP.Affjax.Response"],H=PS["Network.HTTP.RequestHeader"],L=PS["Network.HTTP.ResponseHeader"],_=(PS["Network.HTTP.StatusCode"],PS.Prelude,{method:new f.Left(p.GET.value),url:"/",headers:[],content:g.Nothing.value,username:g.Nothing.value,password:g.Nothing.value,withCredentials:!1});n.defaultRequest=_,n.affjax=function(n){return function(_){var O,I=function(){if(n instanceof F.ArrayBuffer)return T.unsafeReadTagged("ArrayBuffer");if(n instanceof F.Blob)return T.unsafeReadTagged("Blob");if(n instanceof F.Document)return T.unsafeReadTagged("Document");if(n instanceof F.Json)return r.composeKleisliFlipped(o.bindExceptT(D.monadIdentity))(function(e){return n.value0(""===(r=e)?t.pure(o.applicativeExceptT(D.monadIdentity))(i.jsonEmptyObject):f.either(function(n){return T.fail(T.ForeignError.create(n))})(t.pure(o.applicativeExceptT(D.monadIdentity)))(l.jsonParser(r)));var r})(T.unsafeReadTagged("String"));if(n instanceof F.String)return T.unsafeReadTagged("String");if(n instanceof F.Ignore)return P.const(n.value0(t.pure(o.applicativeExceptT(D.monadIdentity))(E.unit)));throw new Error("Failed pattern match at Network.HTTP.Affjax line 261, column 19 - line 267, column 51: "+[n.constructor.name])}(),W=function(n){return function(e){return n instanceof g.Just&&!d.any(d.foldableArray)(m.heytingAlgebraBoolean)(P.on(s.eq(s.eqString))(H.requestHeaderName)(n.value0))(e)?c.snoc(e)(n.value0):e}},N={method:p.print(_.method),url:_.url,headers:v.map(v.functorArray)(function(n){return{field:H.requestHeaderName(n),value:H.requestHeaderValue(n)}})((O=_.content,W(v.map(g.functorMaybe)(H.ContentType.create)(r.bindFlipped(g.bindMaybe)(A.toMediaType)(O)))(W(v.map(g.functorMaybe)(H.Accept.create)(F.toMediaType(n)))(_.headers)))),content:w.toNullable(v.map(g.functorMaybe)(function(n){if(n instanceof A.ArrayView)return n.value0(T.unsafeToForeign);if(n instanceof A.Blob)return T.unsafeToForeign(n.value0);if(n instanceof A.Document)return T.unsafeToForeign(n.value0);if(n instanceof A.String)return T.unsafeToForeign(n.value0);if(n instanceof A.FormData)return T.unsafeToForeign(n.value0);if(n instanceof A.FormURLEncoded)return T.unsafeToForeign(S.encode(n.value0));if(n instanceof A.Json)return T.unsafeToForeign(i.stringify(n.value0));throw new Error("Failed pattern match at Network.HTTP.Affjax line 235, column 20 - line 242, column 53: "+[n.constructor.name])})(_.content)),responseType:F.toResponseType(n),username:w.toNullable(_.username),password:w.toNullable(_.password),withCredentials:_.withCredentials};return r.bind(y.bindAff)(M.fromEffectFnAff(e._ajax(L.responseHeader,N)))(function(n){var e=u.runExcept(I(n.response));if(e instanceof f.Left)return a.throwError(y.monadThrowAff)(C.error(d.intercalate(b.foldableNonEmptyList)(h.monoidString)("\n")(v.map(b.functorNonEmptyList)(T.renderForeignError)(e.value0))));if(e instanceof f.Right)return t.pure(y.applicativeAff)({response:e.value0,headers:n.headers,status:n.status,statusText:n.statusText});throw new Error("Failed pattern match at Network.HTTP.Affjax line 217, column 3 - line 219, column 49: "+[e.constructor.name])})}}}(PS["Network.HTTP.Affjax"]=PS["Network.HTTP.Affjax"]||{}),function(n){"use strict";var e=PS["Control.Bind"],t=(PS["Control.Semigroupoid"],PS["Data.Array"]),r=PS["Data.Either"],a=(PS["Data.FormURLEncoded"],PS["Data.Function"],PS["Data.Functor"]),u=PS["Data.HTTP.Method"],o=PS["Data.Maybe"],i=PS["Data.MediaType.Common"],l=(PS["Data.Semigroup"],PS["Data.Show"]),c=PS["Data.Unit"],f=PS.Effect,s=PS["Effect.Aff"],d=PS["Effect.Class"],S=PS.Globals,P=PS.Model,v=PS["Network.HTTP.Affjax"],p=PS["Network.HTTP.Affjax.Request"],m=PS["Network.HTTP.Affjax.Response"],D=PS["Network.HTTP.RequestHeader"],b=(PS.Prelude,PS["Simple.JSON"]),g=PS["Web.Event.Event"],h=PS["Web.HTML"],w=PS["Web.HTML.Location"],E=PS["Web.HTML.Window"],y=function(){function n(){}return n.value=new n,n}(),M=function(){function n(){}return n.value=new n,n}(),C=new l.Show(function(n){if(n instanceof y)return"star";if(n instanceof M)return"unstar";throw new Error("Failed pattern match at App line 28, column 1 - line 28, column 37: "+[n.constructor.name])}),T=function(n){return function(e){return function(a){return function(u){return function(o){var i=S["app'"](c.unit);return v.affjax(o)({method:new r.Left(n),url:e,headers:t.cons(new D.RequestHeader(i.csrfHeaderName,i.csrfToken))(a),content:u,username:v.defaultRequest.username,password:v.defaultRequest.password,withCredentials:v.defaultRequest.withCredentials})}}}}},A=function(n){var t=S["app'"](n);return e.discard(e.discardUnit)(s.bindAff)(a.void(s.functorAff)(T(u.POST.value)(t.authRlogoutR)([])(o.Nothing.value)(m.ignore)))(function(){return d.liftEffect(s.monadEffectAff)(e.bind(f.bindEffect)(e.bind(f.bindEffect)(h.window)(E.location))(w.reload))})},F=function(n){return function(e){return function(t){return function(r){return function(a){return T(n)(S["app'"](c.unit).homeR+e)(t)(r)(a)}}}}},H=function(n){return function(e){return function(t){return function(r){return F(n)(e)([new D.ContentType(i.applicationFormURLEncoded)])(a.map(o.functorMaybe)(p.FormURLEncoded.create)(t))(r)}}}},L=function(n){return function(e){return function(t){return function(r){return function(u){return F(e)(t)([new D.ContentType(i.applicationJSON)])(a.map(o.functorMaybe)(function(e){return p.string(b.writeJSON(n)(e))})(r))(u)}}}}};n.Star=y,n.UnStar=M,n.toggleStar=function(n){return function(e){var t="bm/"+l.show(l.showInt)(n)+"/"+l.show(C)(e);return a.void(s.functorAff)(H(u.POST.value)(t)(o.Nothing.value)(m.ignore))}},n.destroy=function(n){return H(u.DELETE.value)("bm/"+l.show(l.showInt)(n))(o.Nothing.value)(m.ignore)},n.markRead=function(n){var e="bm/"+l.show(l.showInt)(n)+"/read";return H(u.POST.value)(e)(o.Nothing.value)(m.ignore)},n.editBookmark=function(n){return L(P.wfI)(u.POST.value)("api/add")(o.Just.create(n))(m.ignore)},n.logoutE=function(n){return e.bindFlipped(f.bindEffect)(function(n){return a.void(f.functorEffect)(s.launchAff(A(n)))})(g.preventDefault(n))},n.logout=A,n.fetchJson=L,n.fetchUrlEnc=H,n.fetchPath=F,n.fetchUrl=T,n.showStar=C}(PS.App=PS.App||{}),function(n){"use strict";var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}();n.ButtonButton=e,n.ButtonSubmit=t,n.ButtonReset=r,n.renderButtonType=function(n){if(n instanceof e)return"button";if(n instanceof t)return"submit";if(n instanceof r)return"reset";throw new Error("Failed pattern match at DOM.HTML.Indexed.ButtonType line 9, column 20 - line 12, column 18: "+[n.constructor.name])}}(PS["DOM.HTML.Indexed.ButtonType"]=PS["DOM.HTML.Indexed.ButtonType"]||{}),function(n){"use strict";var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}(),a=function(){function n(){}return n.value=new n,n}(),u=function(){function n(){}return n.value=new n,n}(),o=function(){function n(){}return n.value=new n,n}(),i=function(){function n(){}return n.value=new n,n}(),l=function(){function n(){}return n.value=new n,n}(),c=function(){function n(){}return n.value=new n,n}(),f=function(){function n(){}return n.value=new n,n}(),s=function(){function n(){}return n.value=new n,n}(),d=function(){function n(){}return n.value=new n,n}(),S=function(){function n(){}return n.value=new n,n}(),P=function(){function n(){}return n.value=new n,n}(),v=function(){function n(){}return n.value=new n,n}(),p=function(){function n(){}return n.value=new n,n}(),m=function(){function n(){}return n.value=new n,n}(),D=function(){function n(){}return n.value=new n,n}(),b=function(){function n(){}return n.value=new n,n}(),g=function(){function n(){}return n.value=new n,n}(),h=function(){function n(){}return n.value=new n,n}(),w=function(){function n(){}return n.value=new n,n}();n.InputButton=e,n.InputCheckbox=t,n.InputColor=r,n.InputDate=a,n.InputDatetimeLocal=u,n.InputEmail=o,n.InputFile=i,n.InputHidden=l,n.InputImage=c,n.InputMonth=f,n.InputNumber=s,n.InputPassword=d,n.InputRadio=S,n.InputRange=P,n.InputReset=v,n.InputSearch=p,n.InputSubmit=m,n.InputTel=D,n.InputText=b,n.InputTime=g,n.InputUrl=h,n.InputWeek=w,n.renderInputType=function(n){if(n instanceof e)return"button";if(n instanceof t)return"checkbox";if(n instanceof r)return"color";if(n instanceof a)return"date";if(n instanceof u)return"datetime-local";if(n instanceof o)return"email";if(n instanceof i)return"file";if(n instanceof l)return"hidden";if(n instanceof c)return"image";if(n instanceof f)return"month";if(n instanceof s)return"number";if(n instanceof d)return"password";if(n instanceof S)return"radio";if(n instanceof P)return"range";if(n instanceof v)return"reset";if(n instanceof p)return"search";if(n instanceof m)return"submit";if(n instanceof D)return"tel";if(n instanceof b)return"text";if(n instanceof g)return"time";if(n instanceof h)return"url";if(n instanceof w)return"week";throw new Error("Failed pattern match at DOM.HTML.Indexed.InputType line 28, column 19 - line 50, column 16: "+[n.constructor.name])}}(PS["DOM.HTML.Indexed.InputType"]=PS["DOM.HTML.Indexed.InputType"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=(PS["Control.Monad.Cont.Trans"],PS["Control.Monad.Except.Trans"],PS["Control.Monad.List.Trans"],PS["Control.Monad.Maybe.Trans"],PS["Control.Monad.RWS.Trans"],PS["Control.Monad.Reader.Trans"],PS["Control.Monad.State.Trans"],PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Trans"],PS["Control.Semigroupoid"],PS["Effect.Aff"]),r=(PS["Effect.Class"],PS.Prelude,function(n,e){this.MonadEffect0=n,this.liftAff=e}),a=new r(function(){return t.monadEffectAff},e.identity(e.categoryFn));n.liftAff=function(n){return n.liftAff},n.MonadAff=r,n.monadAffAff=a}(PS["Effect.Aff.Class"]=PS["Effect.Aff.Class"]||{}),function(n){"use strict";var e=PS["Data.Eq"],t=PS["Data.Ord"],r=(PS.Prelude,function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}()),a=new e.Eq(function(n){return function(e){return n.value0(n.value2)(e.value2)}}),u=new t.Ord(function(){return a},function(n){return function(e){return n.value1(n.value2)(e.value2)}});n.mkOrdBox=function(n){return r.create(e.eq(n.Eq0()))(t.compare(n))},n.unOrdBox=function(n){return n.value2},n.eqOrdBox=a,n.ordOrdBox=u}(PS["Halogen.Data.OrdBox"]=PS["Halogen.Data.OrdBox"]||{}),function(n){"use strict";var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}();n.On=e,n.Off=t,n.renderOnOff=function(n){if(n instanceof e)return"on";if(n instanceof t)return"off";throw new Error("Failed pattern match at DOM.HTML.Indexed.OnOff line 8, column 15 - line 10, column 10: "+[n.constructor.name])}}(PS["DOM.HTML.Indexed.OnOff"]=PS["DOM.HTML.Indexed.OnOff"]||{}),function(n){"use strict";var e=PS["Data.Bifunctor"],t=(PS["Data.Eq"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Ord"],PS.Prelude,PS["Web.DOM"],function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}()),a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=new e.Bifunctor(function(n){return function(e){return function(t){if(t instanceof r)return new r(t.value0,t.value1,n(t.value2));if(t instanceof a)return new a(e(t.value0));throw new Error("Failed pattern match at Halogen.Query.InputF line 21, column 15 - line 23, column 27: "+[t.constructor.name])}}}),o=new t.Functor(e.rmap(u));n.RefUpdate=r,n.Query=a,n.bifunctorInputF=u,n.functorInputF=o}(PS["Halogen.Query.InputF"]=PS["Halogen.Query.InputF"]||{}),function(n){"use strict";PS.Effect,PS["Effect.Uncurried"],PS.Prelude;var e=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}();n.Step=e,n.extract=function(n){return n.value0},n.step=function(n){return n.value1},n.halt=function(n){return n.value2}}(PS["Halogen.VDom.Machine"]=PS["Halogen.VDom.Machine"]||{}),function(n){"use strict";PS["Control.Category"],PS["Control.Semigroupoid"];var e=PS["Data.Bifunctor"],t=(PS["Data.Eq"],PS["Data.Functor"]),r=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Tuple"]),a=(PS.Prelude,PS["Unsafe.Coerce"]),u=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),l=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),s=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),d=function(n){return function(e){return n(e)}},S=a.unsafeCoerce,P=new t.Functor(function(n){return function(e){return new u(e.value0,e.value1,n(e.value2))}}),v=new e.Bifunctor(function(n){return function(e){return d(function(t){return S(new s(function(e){return n(t.value0(e))},function(n){return e(t.value1(n))},t.value2))})}}),p=new e.Bifunctor(function(n){return function(t){return function(r){return r instanceof o?new o(r.value0):new f(r instanceof f?e.bimap(v)(n)(t)(r.value0):S(new s(n,t,r)))}}}),m=d(function(n){var a=function(u){if(u instanceof o)return new o(u.value0);if(u instanceof i)return new i(t.map(P)(n.value0)(u.value0),t.map(t.functorArray)(a)(u.value1));if(u instanceof l)return new l(t.map(P)(n.value0)(u.value0),t.map(t.functorArray)(t.map(r.functorTuple)(a))(u.value1));if(u instanceof c)return new c(n.value1(u.value0));if(u instanceof f)return new f(e.bimap(v)(n.value0)(n.value1)(u.value0));throw new Error("Failed pattern match at Halogen.VDom.Types line 74, column 7 - line 74, column 27: "+[u.constructor.name])};return a(n.value2)});n.Text=o,n.Elem=i,n.Keyed=l,n.Widget=c,n.Grafted=f,n.Graft=s,n.graft=S,n.unGraft=d,n.runGraft=m,n.ElemSpec=u,n.bifunctorVDom=p,n.bifunctorGraft=v,n.functorElemSpec=P}(PS["Halogen.VDom.Types"]=PS["Halogen.VDom.Types"]||{}),function(n){"use strict";n.unsafeGetAny=function(n,e){return e[n]},n.unsafeHasAny=function(n,e){return e.hasOwnProperty(n)},n.unsafeSetAny=function(n,e,t){t[n]=e},n.forE=function(n,e){for(var t=[],r=0;r<n.length;r++)t.push(e(r,n[r]));return t},n.forInE=function(n,e){for(var t=Object.keys(n),r=0;r<t.length;r++){var a=t[r];e(a,n[a])}},n.diffWithIxE=function(n,e,t,r,a){for(var u=[],o=n.length,i=e.length,l=0;;){if(l<o)l<i?u.push(t(l,n[l],e[l])):r(l,n[l]);else{if(!(l<i))break;u.push(a(l,e[l]))}l++}return u},n.strMapWithIxE=function(n,e,t){for(var r={},a=0;a<n.length;a++){var u=n[a],o=e(u);r[o]=t(o,a,u)}return r},n.diffWithKeyAndIxE=function(n,e,t,r,a,u){for(var o={},i=0;i<e.length;i++){var l=e[i],c=t(l);n.hasOwnProperty(c)?o[c]=r(c,i,n[c],l):o[c]=u(c,i,l)}for(var c in n)c in o||a(c,n[c]);return o},n.refEq=function(n,e){return n===e},n.createTextNode=function(n,e){return e.createTextNode(n)},n.setTextContent=function(n,e){e.textContent=n},n.createElement=function(n,e,t){return null!=n?t.createElementNS(n,e):t.createElement(e)},n.insertChildIx=function(n,e,t){var r=t.childNodes.item(n)||null;r!==e&&t.insertBefore(e,r)},n.removeChild=function(n,e){e&&n.parentNode===e&&e.removeChild(n)},n.parentNode=function(n){return n.parentNode},n.setAttribute=function(n,e,t,r){null!=n?r.setAttributeNS(n,e,t):r.setAttribute(e,t)},n.removeAttribute=function(n,e,t){null!=n?t.removeAttributeNS(n,e):t.removeAttribute(e)},n.addEventListener=function(n,e,t){t.addEventListener(n,e,!1)},n.removeEventListener=function(n,e,t){t.removeEventListener(n,e,!1)},n.jsUndefined=void 0}(PS["Halogen.VDom.Util"]=PS["Halogen.VDom.Util"]||{}),function(n){"use strict";var e=function(n){return function(e){return function(){return e[n]}}};n._parentNode=e("parentNode"),n._nextSibling=e("nextSibling"),n.insertBefore=function(n){return function(e){return function(t){return function(){return t.insertBefore(n,e)}}}},n.appendChild=function(n){return function(e){return function(){return e.appendChild(n)}}},n.removeChild=function(n){return function(e){return function(){return e.removeChild(n)}}}}(PS["Web.DOM.Node"]=PS["Web.DOM.Node"]||{}),function(n){"use strict";var e=PS["Web.DOM.Node"],t=(PS["Control.Semigroupoid"],PS["Data.Enum"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Nullable"]),a=PS.Effect;PS.Prelude,PS["Unsafe.Coerce"],PS["Web.DOM.Document"],PS["Web.DOM.Element"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NodeType"],PS["Web.Event.EventTarget"],PS["Web.Internal.FFI"];n.parentNode=function(n){return t.map(a.functorEffect)(r.toMaybe)(e._parentNode(n))},n.nextSibling=function(n){return t.map(a.functorEffect)(r.toMaybe)(e._nextSibling(n))},n.insertBefore=e.insertBefore,n.appendChild=e.appendChild,n.removeChild=e.removeChild}(PS["Web.DOM.Node"]=PS["Web.DOM.Node"]||{}),function(n){"use strict";var e=PS["Halogen.VDom.Util"],t=PS["Control.Applicative"],r=(PS["Data.Function.Uncurried"],PS["Data.Nullable"],PS["Data.Unit"]),a=PS.Effect,u=(PS["Effect.Uncurried"],PS["Foreign.Object"],PS["Foreign.Object.ST"]),o=(PS["Halogen.VDom.Types"],PS.Prelude,PS["Unsafe.Coerce"]),i=(PS["Web.DOM.Document"],PS["Web.DOM.Element"],PS["Web.DOM.Node"],PS["Web.Event.EventTarget"],e.unsafeGetAny),l=o.unsafeCoerce,c=e.unsafeSetAny,f=u.new,s=t.pure(a.applicativeEffect)(r.unit);n.effectUnit=s,n.newMutMap=f,n.pokeMutMap=c,n.unsafeFreeze=l,n.unsafeLookup=i,n.unsafeGetAny=e.unsafeGetAny,n.unsafeHasAny=e.unsafeHasAny,n.unsafeSetAny=e.unsafeSetAny,n.forE=e.forE,n.forInE=e.forInE,n.diffWithIxE=e.diffWithIxE,n.diffWithKeyAndIxE=e.diffWithKeyAndIxE,n.strMapWithIxE=e.strMapWithIxE,n.refEq=e.refEq,n.createTextNode=e.createTextNode,n.setTextContent=e.setTextContent,n.createElement=e.createElement,n.insertChildIx=e.insertChildIx,n.removeChild=e.removeChild,n.parentNode=e.parentNode,n.setAttribute=e.setAttribute,n.removeAttribute=e.removeAttribute,n.addEventListener=e.addEventListener,n.removeEventListener=e.removeEventListener,n.jsUndefined=e.jsUndefined}(PS["Halogen.VDom.Util"]=PS["Halogen.VDom.Util"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Data.Eq"],PS["Data.Function.Uncurried"];var e=PS["Data.Functor"],t=PS["Data.Maybe"],r=PS["Data.Nullable"],a=(PS["Data.Semigroup"],PS["Data.Tuple"]),u=PS["Data.Unit"],o=(PS.Effect,PS["Effect.Ref"]),i=(PS["Effect.Uncurried"],PS.Foreign),l=PS["Foreign.Object"],c=(PS["Halogen.VDom"],PS["Halogen.VDom.Machine"]),f=(PS["Halogen.VDom.Types"],PS["Halogen.VDom.Util"]),s=(PS.Prelude,PS["Unsafe.Coerce"]),d=(PS["Web.DOM.Element"],PS["Web.Event.Event"],PS["Web.Event.EventTarget"]),S=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),P=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),v=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),p=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),m=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),D=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),b=f.unsafeGetAny,g=f.unsafeSetAny,h=function(n){if(n instanceof v&&n.value0 instanceof t.Just)return"attr/"+n.value0.value0+":"+n.value1;if(n instanceof v)return"attr/:"+n.value1;if(n instanceof p)return"prop/"+n.value0;if(n instanceof m)return"handler/"+n.value0;if(n instanceof D)return"ref";throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 178, column 16 - line 185, column 1: "+[n.constructor.name])},w=s.unsafeCoerce,E=s.unsafeCoerce,y=s.unsafeCoerce,M=new e.Functor(function(n){return function(r){return r instanceof m?new m(r.value0,e.map(e.functorFn)(e.map(t.functorMaybe)(n))(r.value1)):r instanceof D?new D(e.map(e.functorFn)(e.map(t.functorMaybe)(n))(r.value0)):r}});n.Attribute=v,n.Property=p,n.Handler=m,n.Ref=D,n.Created=S,n.Removed=P,n.propFromString=w,n.propFromBoolean=y,n.propFromInt=E,n.buildProp=function(n){return function(e){var s=function(n){return function(t,o){if(o instanceof v)return f.removeAttribute(r.toNullable(o.value0),o.value1,e);if(o instanceof p)return function(n,e){return"string"===i.typeOf(f.unsafeGetAny(n,e))?f.unsafeSetAny(n,"",e):"rowSpan"===n?f.unsafeSetAny(n,1,e):"colSpan"===n?f.unsafeSetAny(n,1,e):f.unsafeSetAny(n,f.jsUndefined,e)}(o.value0,e);if(o instanceof m){var l=f.unsafeLookup(o.value0,n);return f.removeEventListener(o.value0,a.fst(l),e)}if(o instanceof D)return u.unit;throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 165, column 5 - line 175, column 18: "+[o.constructor.name])}},w=function(e){return e instanceof t.Just?n(e.value0)():u.unit},E=function(n){var r=l.lookup("ref")(n);return r instanceof t.Just&&r.value0 instanceof D?function(){return w(r.value0.value0(new P(e)))}:f.effectUnit},y=function(n){return function(t,u,i){if(i instanceof v)return f.setAttribute(r.toNullable(i.value0),i.value1,i.value2,e),i;if(i instanceof p)return g(i.value0,i.value1,e),i;if(i instanceof m){var l=f.unsafeGetAny(i.value0,n);if(f.unsafeHasAny(i.value0,n))return o.write(i.value1)(a.snd(l))(),i;var c=o.new(i.value1)(),s=d.eventListener(function(n){return function(){var e=o.read(c)();return w(e(n))}})();return f.pokeMutMap(i.value0,new a.Tuple(s,c),n),f.addEventListener(i.value0,s,e),i}if(i instanceof D)return w(i.value0(new S(e))),i;throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 109, column 5 - line 131, column 15: "+[i.constructor.name])}},M=function(n,t){return function(i){var l=f.newMutMap(),d=s(n),S=function(n,t){return function(u,i,l,c){if(l instanceof v&&c instanceof v)return l.value2===c.value2?c:(f.setAttribute(r.toNullable(c.value0),c.value1,c.value2,e),c);if(l instanceof p&&c instanceof p){if(f.refEq(l.value1,c.value1))return c;if("value"===c.value0){var s=b("value",e);return f.refEq(s,c.value1)?c:(g(c.value0,c.value1,e),c)}return g(c.value0,c.value1,e),c}if(l instanceof m&&c instanceof m){var d=f.unsafeLookup(c.value0,n);return o.write(c.value1)(a.snd(d))(),f.pokeMutMap(c.value0,d,t),c}return c}}(n,l),P=y(l),D=f.diffWithKeyAndIxE(t,i,h,S,d,P);return new c.Step(u.unit,M(f.unsafeFreeze(l),D),E(D))}};return function(n){var e=f.newMutMap(),t=f.strMapWithIxE(n,h,y(e));return new c.Step(u.unit,M(f.unsafeFreeze(e),t),E(t))}}},n.functorProp=M}(PS["Halogen.VDom.DOM.Prop"]=PS["Halogen.VDom.DOM.Prop"]||{}),function(n){"use strict";PS["Control.Semigroupoid"];var e=PS["DOM.HTML.Indexed.ButtonType"],t=(PS["DOM.HTML.Indexed.CrossOriginValue"],PS["DOM.HTML.Indexed.DirValue"],PS["DOM.HTML.Indexed.FormMethod"],PS["DOM.HTML.Indexed.InputType"]),r=(PS["DOM.HTML.Indexed.KindValue"],PS["DOM.HTML.Indexed.MenuType"],PS["DOM.HTML.Indexed.MenuitemType"],PS["DOM.HTML.Indexed.OnOff"]),a=(PS["DOM.HTML.Indexed.OrderedListType"],PS["DOM.HTML.Indexed.PreloadValue"],PS["DOM.HTML.Indexed.ScopeValue"],PS["DOM.HTML.Indexed.StepValue"],PS["DOM.HTML.Indexed.WrapValue"],PS["Data.Bifunctor"]),u=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"]),o=(PS["Data.Maybe"],PS["Data.MediaType"],PS["Data.Newtype"]),i=(PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Tuple"],PS["Halogen.Query.InputF"]),l=(PS["Halogen.VDom"],PS["Halogen.VDom.DOM.Prop"]),c=PS["Halogen.VDom.Types"],f=(PS.Prelude,PS["Unsafe.Coerce"],PS["Web.DOM.Element"],PS["Web.Event.Event"],function(n){return n}),s=function(n){return n},d=function(n){this.toPropValue=n},S=function(n){return n.toPropValue},P=new d(l.propFromString),v=new d(function(n){return l.propFromString(r.renderOnOff(n))}),p=new o.Newtype(function(n){return n},s),m=new d(l.propFromInt),D=new d(function(n){return l.propFromString(t.renderInputType(n))}),b=l.Handler.create,g=new d(function(n){return l.propFromString(e.renderButtonType(n))}),h=new d(l.propFromBoolean),w=new a.Bifunctor(function(n){return function(e){return function(t){return a.bimap(c.bifunctorVDom)(u.map(u.functorArray)(u.map(l.functorProp)(u.map(i.functorInputF)(e))))(n)(t)}}});n.HTML=f,n.slot=function(n){return f(c.Widget.create(n))},n.text=function(n){return f(c.Text.create(n))},n.element=function(n){return function(e){return function(t){return function(r){return new c.Elem(new c.ElemSpec(n,e,t),r)}}}},n.prop=function(n){return function(e){return function(t){return l.Property.create(e)(S(n)(t))}}},n.attr=function(n){return function(e){return l.Attribute.create(n)(e)}},n.handler=b,n.IsProp=d,n.toPropValue=S,n.ClassName=s,n.bifunctorHTML=w,n.stringIsProp=P,n.intIsProp=m,n.booleanIsProp=h,n.buttonTypeIsProp=g,n.inputTypeIsProp=D,n.onOffIsProp=v,n.newtypeClassName=p}(PS["Halogen.HTML.Core"]=PS["Halogen.HTML.Core"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Category"],a=(PS["Control.Semigroupoid"],PS["Data.Const"],PS["Data.Either"]),u=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"]),o=(PS["Data.List"],PS["Data.List.NonEmpty"]),i=PS["Data.List.Types"],l=(PS["Data.Newtype"],PS["Data.NonEmpty"]),c=(PS["Data.Ring"],PS["Data.Semiring"],PS["Data.Tuple"]),f=(PS.Prelude,PS["Unsafe.Coerce"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),s=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),S=function(n){return function(e){return new d(n,e)}},P=s.create,v=function(n){return function(t){return function(r){return function(a){return function(u){return function(l){var S,P=n,v=t,p=r,m=a,D=u,b=!1;function g(n,t,r,a,u,S){if(u instanceof f)return b=!0,new c.Tuple(new i.Cons({func:e.pure(n)(u.value0),count:S},t),r);if(u instanceof s)return b=!0,new c.Tuple(new i.Cons({func:a(u.value0),count:S},t),r);if(u instanceof d)return P=n,v=t,p=o.cons(u.value1)(r),m=a,D=u.value0,void(l=S+1|0);throw new Error("Failed pattern match at Control.Applicative.Free line 102, column 41 - line 105, column 81: "+[u.constructor.name])}for(;!b;)S=g(P,v,p,m,D,l);return S}}}}}},p=function(n){return function(e){return function(r){return function(u){var o,f=n,s=e,d=r,S=!1;function P(n,e,r,o){if(e instanceof i.Nil)return S=!0,new a.Left(o);if(e instanceof i.Cons){var P=t.apply(n.Apply0())(e.value0.func)(o);if(1===e.value0.count)return e.value1 instanceof i.Nil?(S=!0,new a.Left(P)):(f=n,s=e.value1,d=r,void(u=P));if(r instanceof i.Nil)return S=!0,new a.Left(P);if(r instanceof i.Cons)return S=!0,a.Right.create(new c.Tuple(new i.Cons({func:P,count:e.value0.count-1|0},e.value1),new l.NonEmpty(r.value0,r.value1)));throw new Error("Failed pattern match at Control.Applicative.Free line 83, column 11 - line 88, column 50: "+[r.constructor.name])}throw new Error("Failed pattern match at Control.Applicative.Free line 72, column 3 - line 88, column 50: "+[e.constructor.name])}for(;!S;)o=P(f,s,d,u);return o}}}},m=new u.Functor(function(n){return function(e){return S(new f(n))(e)}}),D=function(n){return function(t){return function(r){return function(r){var u,o=!1;function i(u){if(u.value1.value0 instanceof f){if((i=p(n)(u.value0)(u.value1.value1)(e.pure(n)(u.value1.value0.value0)))instanceof a.Left)return o=!0,i.value0;if(i instanceof a.Right)return void(r=i.value0);throw new Error("Failed pattern match at Control.Applicative.Free line 54, column 17 - line 56, column 24: "+[i.constructor.name])}if(u.value1.value0 instanceof s){var i;if((i=p(n)(u.value0)(u.value1.value1)(t(u.value1.value0.value0)))instanceof a.Left)return o=!0,i.value0;if(i instanceof a.Right)return void(r=i.value0);throw new Error("Failed pattern match at Control.Applicative.Free line 57, column 17 - line 59, column 24: "+[i.constructor.name])}if(!(u.value1.value0 instanceof d))throw new Error("Failed pattern match at Control.Applicative.Free line 53, column 5 - line 64, column 1: "+[u.value1.value0.constructor.name]);var c=new l.NonEmpty(u.value1.value0.value1,u.value1.value1);r=v(n)(u.value0)(c)(t)(u.value1.value0.value0)(1)}for(;!o;)u=i(r);return u}(new c.Tuple(i.Nil.value,o.singleton(r)))}}},b=new t.Apply(function(){return m},function(n){return function(e){return S(n)(e)}}),g=new e.Applicative(function(){return b},f.create);n.liftFreeAp=P,n.retractFreeAp=function(n){return D(n)(r.identity(r.categoryFn))},n.foldFreeAp=D,n.hoistFreeAp=function(n){return D(g)(function(e){return P(n(e))})},n.functorFreeAp=m,n.applyFreeAp=b,n.applicativeFreeAp=g}(PS["Control.Applicative.Free"]=PS["Control.Applicative.Free"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"];var e=PS["Data.List"],t=PS["Data.List.Types"],r=PS["Data.Maybe"],a=(PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Tuple"]),u=(PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),o=new u(t.Nil.value,t.Nil.value);n.CatQueue=u,n.empty=o,n.null=function(n){return n.value0 instanceof t.Nil&&n.value1 instanceof t.Nil},n.snoc=function(n){return function(e){return new u(n.value0,new t.Cons(e,n.value1))}},n.uncons=function(n){var o,i=!1;function l(o){if(o.value0 instanceof t.Nil&&o.value1 instanceof t.Nil)return i=!0,r.Nothing.value;if(!(o.value0 instanceof t.Nil)){if(o.value0 instanceof t.Cons)return i=!0,new r.Just(new a.Tuple(o.value0.value0,new u(o.value0.value1,o.value1)));throw new Error("Failed pattern match at Data.CatQueue line 83, column 1 - line 83, column 63: "+[o.constructor.name])}n=new u(e.reverse(o.value1),t.Nil.value)}for(;!i;)o=l(n);return o}}(PS["Data.CatQueue"]=PS["Data.CatQueue"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"];var e=PS["Data.CatQueue"],t=(PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.List"],PS["Data.List.Types"]),r=PS["Data.Maybe"],a=(PS["Data.Monoid"],PS["Data.Semigroup"]),u=(PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Tuple"]),o=(PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),i=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),l=function(n){return function(t){if(n instanceof o)return t;if(n instanceof i)return new i(n.value0,e.snoc(n.value1)(t));throw new Error("Failed pattern match at Data.CatList line 111, column 1 - line 111, column 54: "+[n.constructor.name,t.constructor.name])}},c=o.value,f=function(n){return function(e){return e instanceof o?n:n instanceof o?e:l(n)(e)}},s=new a.Semigroup(f);n.CatNil=o,n.CatCons=i,n.empty=c,n.append=f,n.snoc=function(n){return function(t){return f(n)(new i(t,e.empty))}},n.uncons=function(n){if(n instanceof o)return r.Nothing.value;if(n instanceof i)return new r.Just(new u.Tuple(n.value0,e.null(n.value1)?o.value:(a=l,function(n){return function(u){var o,i=function(n){return function(e){return function(r){var a,u=n,o=e,i=!1;function l(n,e,a){if(a instanceof t.Nil)return i=!0,e;if(a instanceof t.Cons)return u=n,o=n(e)(a.value0),void(r=a.value1);throw new Error("Failed pattern match at Data.CatList line 126, column 3 - line 126, column 59: "+[n.constructor.name,e.constructor.name,a.constructor.name])}for(;!i;)a=l(u,o,r);return a}}};return(o=u,function(u){var l,c=o,f=!1;function s(o,l){var s=e.uncons(o);if(s instanceof r.Nothing)return f=!0,i(function(n){return function(e){return e(n)}})(n)(l);if(s instanceof r.Just)return c=s.value0.value1,void(u=new t.Cons(a(s.value0.value0),l));throw new Error("Failed pattern match at Data.CatList line 122, column 14 - line 124, column 67: "+[s.constructor.name])}for(;!f;)l=s(c,u);return l})(t.Nil.value)}})(o.value)(n.value1)));var a;throw new Error("Failed pattern match at Data.CatList line 102, column 1 - line 102, column 61: "+[n.constructor.name])},n.semigroupCatList=s}(PS["Data.CatList"]=PS["Data.CatList"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),u=PS["Control.Monad.Rec.Class"],o=(PS["Control.Monad.Trans.Class"],PS["Control.Semigroupoid"],PS["Data.CatList"]),i=(PS["Data.Either"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"]),l=PS["Data.Maybe"],c=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"]),f=(PS["Data.Traversable"],PS["Data.Tuple"],PS.Prelude,PS["Unsafe.Coerce"],function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),s=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),S=function(n){return new f(n,o.empty)},P=new a.Monad(function(){return D},function(){return p}),v=new i.Functor(function(n){return function(t){return r.bindFlipped(p)(function(t){return e.pure(D)(n(t))})(t)}}),p=new r.Bind(function(){return m},function(n){return function(e){return new f(n.value0,o.snoc(n.value1)(e))}}),m=new t.Apply(function(){return v},a.ap(P)),D=new e.Applicative(function(){return m},function(n){return S(s.create(n))});n.liftF=function(n){return S(new d(n,function(n){return e.pure(D)(n)}))},n.foldFree=function(n){return function(t){return u.tailRecM(n)(function(r){var a=function(n){var e,t=!1;function r(e){var r=function(n){return function(e){return new f(n.value0,c.append(o.semigroupCatList)(n.value1)(e))}};if(e.value0 instanceof s){var a=o.uncons(e.value1);if(a instanceof l.Nothing)return t=!0,new s(e.value0.value0);if(a instanceof l.Just)return void(n=r(function(n){return n}(a.value0.value0)(e.value0.value0))(a.value0.value1));throw new Error("Failed pattern match at Control.Monad.Free line 220, column 7 - line 224, column 64: "+[a.constructor.name])}if(e.value0 instanceof d)return t=!0,new d(e.value0.value0,function(n){return r(e.value0.value1(n))(e.value1)});throw new Error("Failed pattern match at Control.Monad.Free line 218, column 3 - line 226, column 56: "+[e.value0.constructor.name])}for(;!t;)e=r(n);return e}(r);if(a instanceof s)return i.map(n.Monad0().Bind1().Apply0().Functor0())(u.Done.create)(e.pure(n.Monad0().Applicative0())(a.value0));if(a instanceof d)return i.map(n.Monad0().Bind1().Apply0().Functor0())(function(n){return u.Loop.create(a.value1(n))})(t(a.value0));throw new Error("Failed pattern match at Control.Monad.Free line 151, column 10 - line 153, column 37: "+[a.constructor.name])})}},n.freeFunctor=v,n.freeBind=p,n.freeApplicative=D,n.freeApply=m,n.freeMonad=P}(PS["Control.Monad.Free"]=PS["Control.Monad.Free"]||{}),function(n){"use strict";var e=PS["Unsafe.Coerce"],t=e.unsafeCoerce,r=e.unsafeCoerce;n.mkExists=r,n.runExists=t}(PS["Data.Exists"]=PS["Data.Exists"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Monad"],PS["Control.Monad.Trans.Class"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Distributive"],PS["Data.Eq"];var e=PS["Data.Exists"];PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Functor.Invariant"],PS["Data.Ord"],PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Traversable"],PS.Prelude;n.unCoyoneda=function(n){return function(t){return e.runExists(function(e){return n(e.value0)(e.value1)})(t)}}}(PS["Data.Coyoneda"]=PS["Data.Coyoneda"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),u=(PS["Control.Monad.Error.Class"],PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"]),o=(PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"]),i=(PS["Control.Monad.Writer.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"]),l=PS["Data.Either"],c=PS["Data.Exists"],f=PS["Data.Functor"],s=(PS["Data.Monoid"],PS["Data.Semigroup"],PS["Data.Unit"]),d=(PS["Effect.Class"],PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),S=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),P=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),v=S.create,p=function(n){return function(e){return new P(c.mkExists(new d(n,e)))}},m=function(n){return function(e){return new f.Functor(function(t){return function(r){if(r instanceof S)return new S(function(a){return f.map(e)(i.bimap(l.bifunctorEither)(t)(f.map(n)(f.map(m(n)(e))(t))))(r.value0(s.unit))});if(r instanceof P)return c.runExists(function(r){return p(r.value0)(function(a){return f.map(m(n)(e))(t)(r.value1(a))})})(r.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans line 57, column 1 - line 57, column 71: "+[t.constructor.name,r.constructor.name])}})}},D=function(n){return function(e){return new a.Monad(function(){return h(n)(e)},function(){return b(n)(e)})}},b=function(n){return function(e){return new r.Bind(function(){return g(n)(e)},function(n){return function(e){return n instanceof P?c.runExists(function(n){return p(n.value0)(function(t){return p(function(e){return n.value1(t)})(e)})})(n.value0):p(function(e){return n})(e)}})}},g=function(n){return function(e){return new t.Apply(function(){return m(n)(e.Bind1().Apply0().Functor0())},a.ap(D(n)(e)))}},h=function(n){return function(t){return new e.Applicative(function(){return g(n)(t)},function(n){return new S(function(r){return e.pure(t.Applicative0())(new l.Left(n))})})}},w=function(n){return function(t){return u.tailRecM(t)(function(a){if(a instanceof S)return f.map(t.Monad0().Bind1().Apply0().Functor0())(u.Done.create)(a.value0(s.unit));if(a instanceof P)return c.runExists(function(a){var o=a.value0(s.unit);if(o instanceof S)return r.bind(t.Monad0().Bind1())(o.value0(s.unit))(function(o){if(o instanceof l.Left)return e.pure(t.Monad0().Applicative0())(new u.Loop(a.value1(o.value0)));if(o instanceof l.Right)return e.pure(t.Monad0().Applicative0())(new u.Done(new l.Right(f.map(n)(function(e){return r.bind(b(n)(t.Monad0()))(e)(a.value1)})(o.value0))));throw new Error("Failed pattern match at Control.Monad.Free.Trans line 52, column 20 - line 54, column 67: "+[o.constructor.name])});if(o instanceof P)return c.runExists(function(o){return e.pure(t.Monad0().Applicative0())(new u.Loop(r.bind(b(n)(t.Monad0()))(o.value0(s.unit))(function(e){return r.bind(b(n)(t.Monad0()))(o.value1(e))(a.value1)})))})(o.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans line 50, column 5 - line 55, column 98: "+[o.constructor.name])})(a.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans line 47, column 3 - line 47, column 75: "+[a.constructor.name])})}};n.freeT=v,n.liftFreeT=function(n){return function(t){return function(r){return new S(function(a){return e.pure(t.Applicative0())(new l.Right(f.map(n)(e.pure(h(n)(t)))(r)))})}}},n.resume=w,n.runFreeT=function(n){return function(t){return function(a){return u.tailRecM(t)(r.composeKleisliFlipped(t.Monad0().Bind1())(function(n){if(n instanceof l.Left)return e.pure(t.Monad0().Applicative0())(new u.Done(n.value0));if(n instanceof l.Right)return f.map(t.Monad0().Bind1().Apply0().Functor0())(u.Loop.create)(a(n.value0));throw new Error("Failed pattern match at Control.Monad.Free.Trans line 126, column 3 - line 126, column 63: "+[n.constructor.name])})(w(n)(t)))}}},n.functorFreeT=m,n.applyFreeT=g,n.applicativeFreeT=h,n.bindFreeT=b,n.monadFreeT=D,n.monadTransFreeT=function(n){return new o.MonadTrans(function(n){return function(e){return new S(function(t){return f.map(n.Bind1().Apply0().Functor0())(l.Left.create)(e)})}})},n.monadRecFreeT=function(n){return function(t){return new u.MonadRec(function(){return D(n)(t)},function(a){var o=function(i){return r.bind(b(n)(t))(a(i))(function(r){if(r instanceof u.Loop)return o(r.value0);if(r instanceof u.Done)return e.pure(h(n)(t))(r.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans line 80, column 15 - line 82, column 25: "+[r.constructor.name])})};return o})}}}(PS["Control.Monad.Free.Trans"]=PS["Control.Monad.Free.Trans"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=(PS["Control.Semigroupoid"],PS["Data.Newtype"],PS.Prelude,function(n){this.dimap=n}),r=new t(function(n){return function(e){return function(t){return function(r){return e(t(n(r)))}}}}),a=function(n){return n.dimap};n.dimap=a,n.Profunctor=t,n.rmap=function(n){return function(t){return a(n)(e.identity(e.categoryFn))(t)}},n.profunctorFn=r}(PS["Data.Profunctor"]=PS["Data.Profunctor"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=PS["Control.Category"],u=(PS["Control.Monad.Except"],PS["Control.Monad.Except.Trans"]),o=PS["Control.Monad.Free.Trans"],i=PS["Control.Monad.Rec.Class"],l=PS["Control.Monad.Trans.Class"],c=(PS["Control.Parallel"],PS["Control.Parallel.Class"]),f=(PS["Control.Semigroupoid"],PS["Data.Bifunctor"]),s=PS["Data.Either"],d=(PS["Data.Function"],PS["Data.Functor"]),S=PS["Data.Identity"],P=PS["Data.Maybe"],v=PS["Data.Newtype"],p=PS["Data.Profunctor"],m=PS["Data.Tuple"],D=PS["Data.Unit"],b=(PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),g=new p.Profunctor(function(n){return function(e){return function(t){return p.dimap(p.profunctorFn)(n)(e)(t)}}}),h=function(n){return function(e){return function(t){return i.tailRecM(o.monadRecFreeT(n)(e))(function(r){return d.map(o.functorFreeT(n)(e.Bind1().Apply0().Functor0()))(P.maybe(new i.Loop(D.unit))(i.Done.create))(t)})(D.unit)}}},w=function(n){return function(t){return function(a){return function(i){return function(l){return function(c){return function(f){var s=function(c){return u.runExceptT(r.bind(u.bindExceptT(i.Monad0()))(u.ExceptT(o.resume(n)(i)(c.value0)))(function(n){return r.bind(u.bindExceptT(i.Monad0()))(u.ExceptT(o.resume(t)(i)(c.value1)))(function(t){return e.pure(u.applicativeExceptT(i.Monad0()))(d.map(a)(function(n){return o.freeT(function(e){return s(n)})})(l(m.Tuple.create)(n)(t)))})}))};return o.freeT(function(n){return s(new m.Tuple(c,f))})}}}}}}},E=function(n){return function(a){return function(u){return function(i){return function(l){return function(f){return function(S){return function(P){var v=function(S){return r.bind(i.Monad0().Bind1())(c.sequential(l)(t.apply(l.Applicative1().Apply0())(d.map(l.Applicative1().Apply0().Functor0())(t.lift2(s.applyEither)(f(m.Tuple.create)))(c.parallel(l)(o.resume(n)(i)(S.value0))))(c.parallel(l)(o.resume(a)(i)(S.value1)))))(function(n){if(n instanceof s.Left)return e.pure(i.Monad0().Applicative0())(new s.Left(n.value0));if(n instanceof s.Right)return e.pure(i.Monad0().Applicative0())(new s.Right(d.map(u)(function(n){return o.freeT(function(e){return v(n)})})(n.value0)));throw new Error("Failed pattern match at Control.Coroutine line 79, column 5 - line 81, column 63: "+[n.constructor.name])})};return o.freeT(function(n){return v(new m.Tuple(S,P))})}}}}}}}},y=new d.Functor(p.rmap(g)),M=new f.Bifunctor(function(n){return function(e){return function(t){return new b(n(t.value0),e(t.value1))}}}),C=new d.Functor(f.rmap(M)),T=function(n){return function(e){return o.liftFreeT(C)(n)(new b(e,D.unit))}};n.loop=h,n.runProcess=function(n){return o.runFreeT(S.functorIdentity)(n)(function(t){return e.pure(n.Monad0().Applicative0())(v.unwrap(S.newtypeIdentity)(t))})},n.fuseWith=E,n.fuseWithL=w,n.Emit=b,n.emit=T,n.producer=function(n){return function(t){return h(C)(n)(r.bind(o.bindFreeT(C)(n))(l.lift(o.monadTransFreeT(C))(n)(t))(function(t){if(t instanceof s.Left)return d.voidLeft(o.functorFreeT(C)(n.Bind1().Apply0().Functor0()))(T(n)(t.value0))(P.Nothing.value);if(t instanceof s.Right)return e.pure(o.applicativeFreeT(C)(n))(new P.Just(t.value0));throw new Error("Failed pattern match at Control.Coroutine line 125, column 3 - line 127, column 29: "+[t.constructor.name])}))}},n.await=function(n){return o.liftFreeT(y)(n)(a.identity(a.categoryFn))},n.connect=function(n){return function(e){return E(C)(y)(S.functorIdentity)(n)(e)(function(n){return function(e){return function(t){return n(e.value1)(t(e.value0))}}})}},n.pullFrom=function(n){return w(y)(C)(S.functorIdentity)(n)(function(n){return function(t){return function(r){return e.pure(S.applicativeIdentity)(n(t(r.value0))(r.value1))}}})},n.bifunctorEmit=M,n.functorEmit=C,n.profunctorAwait=g,n.functorAwait=y}(PS["Control.Coroutine"]=PS["Control.Coroutine"]||{}),function(n){"use strict";var e=function(){function n(){this.head=null,this.last=null,this.size=0}function e(n,e){this.queue=n,this.value=e,this.next=null,this.prev=null}function t(e){this.draining=!1,this.error=null,this.value=e,this.takes=new n,this.reads=new n,this.puts=new n}var r={};function a(n){try{n()}catch(n){setTimeout(function(){throw n},0)}}function u(n){var e;switch(n.size){case 0:return null;case 1:e=n.head,n.head=null;break;case 2:e=n.last,n.head.next=null,n.last=null;break;default:e=n.last,n.last=e.prev,n.last.next=null}return e.prev=null,e.queue=null,n.size--,e.value}function o(n){var e;switch(n.size){case 0:return null;case 1:e=n.head,n.head=null;break;case 2:e=n.head,n.last.prev=null,n.head=n.last,n.last=null;break;default:e=n.head,n.head=e.next,n.head.prev=null}return e.next=null,e.queue=null,n.size--,e.value}return t.EMPTY=r,t.putLast=function(n,t){var r=new e(n,t);switch(n.size){case 0:n.head=r;break;case 1:r.prev=n.head,n.head.next=r,n.last=r;break;default:r.prev=n.last,n.last.next=r,n.last=r}return n.size++,r},t.takeLast=u,t.takeHead=o,t.deleteCell=function(n){null!==n.queue&&(n.queue.last!==n?n.queue.head!==n?(n.prev&&(n.prev.next=n.next),n.next&&(n.next.prev=n.prev),n.queue.size--,n.queue=null,n.value=null,n.next=null,n.prev=null):o(n.queue):u(n.queue))},t.drainVar=function(n,e){if(!e.draining){var t,u,i,l,c,f=e.puts,s=e.takes,d=e.reads;for(e.draining=!0;;){if(t=null,u=null,i=null,l=e.value,c=d.size,null!==e.error){for(l=n.left(e.error);t=o(f);)a(t.cb(l));for(;u=o(d);)a(u(l));for(;i=o(s);)a(i(l));break}if(l===r&&(t=o(f))&&(e.value=l=t.value),l!==r){for(i=o(s);c--&&(u=o(d));)a(u(n.right(l)));null!==i&&(e.value=r,a(i(n.right(l))))}if(null!==t&&a(t.cb(n.right(void 0))),e.value===r&&0===f.size||e.value!==r&&0===s.size)break}e.draining=!1}},t}();n.empty=function(){return new e(e.EMPTY)},n._killVar=function(n,t,r){return function(){null===r.error&&(r.error=t,r.value=e.EMPTY,e.drainVar(n,r))}},n._putVar=function(n,t,r,a){return function(){var u=e.putLast(r.puts,{cb:a,value:t});return e.drainVar(n,r),function(){e.deleteCell(u)}}},n._takeVar=function(n,t,r){return function(){var a=e.putLast(t.takes,r);return e.drainVar(n,t),function(){e.deleteCell(a)}}}}(PS["Effect.AVar"]=PS["Effect.AVar"]||{}),function(n){"use strict";var e=PS["Effect.AVar"],t=PS["Data.Either"],r=(PS["Data.Function.Uncurried"],PS["Data.Maybe"]),a=(PS.Effect,PS["Effect.Exception"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(){}return n.value=new n,n}(),i={left:t.Left.create,right:t.Right.create,nothing:r.Nothing.value,just:r.Just.create,killed:a.create,filled:u.create,empty:o.value};n.Killed=a,n.Filled=u,n.Empty=o,n.take=function(n){return function(t){return e._takeVar(i,n,t)}},n.put=function(n){return function(t){return function(r){return e._putVar(i,n,t,r)}}},n.kill=function(n){return function(t){return e._killVar(i,n,t)}},n.empty=e.empty}(PS["Effect.AVar"]=PS["Effect.AVar"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Semigroupoid"],PS["Data.Maybe"],PS.Effect;var e=PS["Effect.AVar"],t=PS["Effect.Aff"],r=PS["Effect.Class"],a=(PS["Effect.Exception"],PS.Prelude,r.liftEffect(t.monadEffectAff)(e.empty));n.empty=a,n.take=function(n){return t.makeAff(function(r){return function(){var a=e.take(n)(r)();return t.effectCanceler(a)}})},n.put=function(n){return function(r){return t.makeAff(function(a){return function(){var u=e.put(n)(r)(a)();return t.effectCanceler(u)}})}},n.kill=function(n){return function(a){return r.liftEffect(t.monadEffectAff)(e.kill(n)(a))}}}(PS["Effect.Aff.AVar"]=PS["Effect.Aff.AVar"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Coroutine"],PS["Control.Monad.Free.Trans"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Either"];var e=PS["Data.Eq"],t=(PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Unit"],PS.Effect,PS["Effect.Aff"],PS["Effect.Aff.AVar"],PS["Effect.Aff.Class"],PS["Effect.Class"],PS["Effect.Exception"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),r=function(){function n(){}return n.value=new n,n}(),a=new e.Eq(function(n){return function(e){return n instanceof t&&e instanceof t||n instanceof r&&e instanceof r}});n.Listening=t,n.Done=r,n.unEventSource=function(n){return n},n.eqSubscribeStatus=a}(PS["Halogen.Query.EventSource"]=PS["Halogen.Query.EventSource"]||{}),function(n){"use strict";PS["Control.Category"],PS["Data.Function"],PS["Data.Functor"],PS["Effect.Aff"],PS["Effect.Exception"],PS.Prelude;var e=PS["Unsafe.Coerce"].unsafeCoerce;n.unFork=e}(PS["Halogen.Query.ForkF"]=PS["Halogen.Query.ForkF"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Applicative.Free"],PS["Control.Apply"]),r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),u=PS["Control.Monad.Free"],o=(PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.State.Class"]),i=(PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Class"],PS["Control.Parallel.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Coyoneda"],PS["Data.Function"],PS["Data.Functor"]),l=(PS["Data.List"],PS["Data.List.Types"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Tuple"],PS["Data.Unit"]),c=PS["Effect.Aff.Class"],f=PS["Effect.Class"],s=(PS["Effect.Exception"],PS["Halogen.Query.EventSource"],PS["Halogen.Query.ForkF"],PS["Halogen.Query.InputF"],PS.Prelude,PS["Web.DOM"],function(n){return n}),d=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),S=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),P=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),v=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),p=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),m=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),D=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),b=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),g=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),h=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),w=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),E=new i.Functor(function(n){return function(e){return i.map(u.freeFunctor)(n)(e)}}),y=new t.Apply(function(){return E},function(n){return function(e){return t.apply(u.freeApply)(n)(e)}}),M=new r.Bind(function(){return y},function(n){return function(e){return r.bind(u.freeBind)(n)(function(n){return e(n)})}}),C=new e.Applicative(function(){return y},function(n){return e.pure(u.freeApplicative)(n)}),T=new a.Monad(function(){return C},function(){return M}),A=function(n){return new f.MonadEffect(function(){return T},function(e){return s(u.liftF(P.create(f.liftEffect(n)(e))))})},F=new o.MonadState(function(){return T},function(n){return s(u.liftF(d.create(n)))});n.State=d,n.Subscribe=S,n.Lift=P,n.Halt=v,n.GetSlots=p,n.CheckSlot=m,n.ChildQuery=D,n.Raise=b,n.Par=g,n.Fork=h,n.GetRef=w,n.HalogenM=s,n.raise=function(n){return s(u.liftF(new b(n,l.unit)))},n.functorHalogenM=E,n.applyHalogenM=y,n.applicativeHalogenM=C,n.bindHalogenM=M,n.monadHalogenM=T,n.monadEffectHalogenM=A,n.monadAffHalogenM=function(n){return new c.MonadAff(function(){return A(n.MonadEffect0())},function(e){return s(u.liftF(P.create(c.liftAff(n)(e))))})},n.monadStateHalogenM=F}(PS["Halogen.Query.HalogenM"]=PS["Halogen.Query.HalogenM"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Const"],PS["Data.Functor"];var e=PS["Data.Maybe"],t=PS["Data.Ord"],r=PS["Halogen.Data.OrdBox"],a=(PS["Halogen.HTML.Core"],PS["Halogen.Query.HalogenM"],PS.Prelude,PS["Unsafe.Coerce"]),u=function(){function n(n,e,t,r,a,u){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=u}return n.create=function(e){return function(t){return function(r){return function(a){return function(u){return function(o){return new n(e,t,r,a,u,o)}}}}}},n}(),o=a.unsafeCoerce,i=u.create,l=a.unsafeCoerce,c=function(n){return function(n){return l({initialState:n.initialState,render:n.render,eval:n.eval,receiver:n.receiver,initializer:n.initializer,finalizer:n.finalizer,mkOrdBox:r.mkOrdBox(t.ordVoid)})}};n.mkComponent=l,n.unComponent=o,n.component=function(n){return function(n){return c()({initialState:n.initialState,render:n.render,eval:n.eval,receiver:n.receiver,initializer:e.Nothing.value,finalizer:e.Nothing.value})}},n.lifecycleComponent=c,n.parentComponent=function(n){return function(t){return l({initialState:t.initialState,render:t.render,eval:t.eval,receiver:t.receiver,initializer:e.Nothing.value,finalizer:e.Nothing.value,mkOrdBox:r.mkOrdBox(n)})}},n.mkComponentSlot=i,n.unComponentSlot=function(n){return function(e){return n(e.value0)(e.value1)(e.value2)(e.value3)(e.value4)(e.value5)}}}(PS["Halogen.Component"]=PS["Halogen.Component"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed"],PS["DOM.HTML.Indexed.ButtonType"],PS["DOM.HTML.Indexed.FormMethod"],PS["DOM.HTML.Indexed.InputType"],PS["DOM.HTML.Indexed.MenuType"],PS["DOM.HTML.Indexed.MenuitemType"];var e=PS["DOM.HTML.Indexed.OnOff"],t=(PS["DOM.HTML.Indexed.OrderedListType"],PS["DOM.HTML.Indexed.PreloadValue"],PS["DOM.HTML.Indexed.StepValue"],PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),r=(PS["Data.MediaType"],PS["Data.Newtype"]),a=(PS["Data.String"],PS["Data.String.Common"],PS["Data.Unit"],PS["Halogen.HTML.Core"]),u=(PS["Halogen.Query.InputF"],PS["Halogen.VDom.DOM.Prop"],PS.Prelude,PS["Unsafe.Coerce"],PS["Web.DOM.Element"],function(n){return a.prop(n)}),o=u(a.booleanIsProp)("required"),i=u(a.intIsProp)("rows"),l=u(a.stringIsProp)("target"),c=u(a.stringIsProp)("title"),f=u(a.stringIsProp)("value"),s=u(a.stringIsProp)("name"),d=u(a.stringIsProp)("id"),S=u(a.stringIsProp)("href"),P=u(a.stringIsProp)("htmlFor"),v=u(a.booleanIsProp)("checked"),p=a.attr(t.Nothing.value);n.prop=u,n.attr=p,n.class_=function(n){return u(a.stringIsProp)("className")(r.unwrap(a.newtypeClassName)(n))},n.rows=i,n.for=P,n.href=S,n.id_=d,n.name=s,n.target=l,n.title=c,n.type_=function(n){return u(n)("type")},n.value=f,n.required=o,n.checked=v,n.autocomplete=function(n){return u(a.onOffIsProp)("autocomplete")(n?e.On.value:e.Off.value)}}(PS["Halogen.HTML.Properties"]=PS["Halogen.HTML.Properties"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed"],PS["Data.Function"];var e=PS["Data.Maybe"],t=(PS["Data.Tuple"],PS["Halogen.HTML.Core"]),r=(PS["Halogen.HTML.Properties"],PS["Halogen.Query.InputF"],PS["Halogen.VDom"],PS["Halogen.VDom.Types"],PS.Prelude,PS["Unsafe.Coerce"],t.element(e.Nothing.value)),a=r("form"),u=r("label"),o=r("p"),i=r("span"),l=r("table"),c=l([]),f=r("tbody"),s=f([]),d=r("td"),S=d([]),P=r("tr"),v=P([]),p=r("div"),m=p([]),D=r("button"),b=function(n){return r("br")(n)([])},g=b([]),h=r("a");n.element=r,n.a=h,n.br=b,n.br_=g,n.button=D,n.div=p,n.div_=m,n.form=a,n.input=function(n){return r("input")(n)([])},n.label=u,n.p=o,n.span=i,n.table=l,n.table_=c,n.tbody=f,n.tbody_=s,n.td=d,n.td_=S,n.textarea=function(n){return r("textarea")(n)([])},n.tr=P,n.tr_=v}(PS["Halogen.HTML.Elements"]=PS["Halogen.HTML.Elements"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Functor"];var e=PS["Data.Maybe"],t=PS["Halogen.Component"],r=(PS["Halogen.Component.ChildPath"],PS["Halogen.HTML.Core"]);PS["Halogen.HTML.Elements"],PS["Halogen.HTML.Properties"],PS.Prelude,PS["Unsafe.Coerce"];n.slot=function(n){return function(a){return function(u){return function(o){var i=t.unComponent(function(n){return n.receiver})(a);return r.slot(t.mkComponentSlot(n)(a)(u)(i)(o)(e.Just.create))}}}}}(PS["Halogen.HTML"]=PS["Halogen.HTML"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Apply"],PS["Control.Category"],PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"]),r=(PS["Data.FoldableWithIndex"],PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.List"],PS["Data.List.Lazy"],PS["Data.List.Lazy.Types"],PS["Data.List.Types"]),u=PS["Data.Maybe"],o=(PS["Data.Monoid"],PS["Data.Ord"]),i=PS["Data.Ordering"],l=PS["Data.Semigroup"],c=(PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"]),f=(PS["Data.Unfoldable"],PS["Partial.Unsafe"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),s=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(a){return new n(e,t,r,a)}}}},n}(),d=function(){function n(n,e,t,r,a,u,o){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=u,this.value6=o}return n.create=function(e){return function(t){return function(r){return function(a){return function(u){return function(o){return function(i){return new n(e,t,r,a,u,o,i)}}}}}}},n}(),S=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),P=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),v=function(){function n(n,e,t,r,a,u){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=u}return n.create=function(e){return function(t){return function(r){return function(a){return function(u){return function(o){return new n(e,t,r,a,u,o)}}}}}},n}(),p=function(){function n(n,e,t,r,a,u){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=u}return n.create=function(e){return function(t){return function(r){return function(a){return function(u){return function(o){return new n(e,t,r,a,u,o)}}}}}},n}(),m=function(){function n(n,e,t,r,a,u){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=u}return n.create=function(e){return function(t){return function(r){return function(a){return function(u){return function(o){return new n(e,t,r,a,u,o)}}}}}},n}(),D=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(a){return new n(e,t,r,a)}}}},n}(),b=function(n){if(n instanceof f)return a.Nil.value;if(n instanceof s)return l.append(a.semigroupList)(b(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value2))(b(n.value3)));if(n instanceof d)return l.append(a.semigroupList)(b(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value2))(l.append(a.semigroupList)(b(n.value3))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value5))(b(n.value6)))));throw new Error("Failed pattern match at Data.Map.Internal line 594, column 1 - line 594, column 40: "+[n.constructor.name])},g=function(n){return function(e){var t=o.compare(n);return function(n){var r,a=!1;function o(r){if(r instanceof f)return a=!0,u.Nothing.value;if(r instanceof s){var o=t(e)(r.value1);return o instanceof i.EQ?(a=!0,new u.Just(r.value2)):o instanceof i.LT?void(n=r.value0):void(n=r.value3)}if(r instanceof d){var l=t(e)(r.value1);if(l instanceof i.EQ)return a=!0,new u.Just(r.value2);var c=t(e)(r.value4);return c instanceof i.EQ?(a=!0,new u.Just(r.value5)):l instanceof i.LT?void(n=r.value0):c instanceof i.GT?void(n=r.value6):void(n=r.value3)}throw new Error("Failed pattern match at Data.Map.Internal line 193, column 5 - line 193, column 22: "+[r.constructor.name])}for(;!a;)r=o(n);return r}}},h=function(n){if(n instanceof f)return a.Nil.value;if(n instanceof s)return l.append(a.semigroupList)(h(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value1))(h(n.value3)));if(n instanceof d)return l.append(a.semigroupList)(h(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value1))(l.append(a.semigroupList)(h(n.value3))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value4))(h(n.value6)))));throw new Error("Failed pattern match at Data.Map.Internal line 588, column 1 - line 588, column 38: "+[n.constructor.name])},w=new r.Functor(function(n){return function(e){if(e instanceof f)return f.value;if(e instanceof s)return new s(r.map(w)(n)(e.value0),e.value1,n(e.value2),r.map(w)(n)(e.value3));if(e instanceof d)return new d(r.map(w)(n)(e.value0),e.value1,n(e.value2),r.map(w)(n)(e.value3),e.value4,n(e.value5),r.map(w)(n)(e.value6));throw new Error("Failed pattern match at Data.Map.Internal line 89, column 1 - line 89, column 39: "+[n.constructor.name,e.constructor.name])}}),E=function(n){return function(e){return function(t){var r,u=n,o=e,i=!1;function l(n,e,r){if(e instanceof a.Nil)return i=!0,r;if(e instanceof a.Cons){if(e.value0 instanceof S)return u=n,o=e.value1,void(t=new s(r,e.value0.value0,e.value0.value1,e.value0.value2));if(e.value0 instanceof P)return u=n,o=e.value1,void(t=new s(e.value0.value0,e.value0.value1,e.value0.value2,r));if(e.value0 instanceof v)return u=n,o=e.value1,void(t=new d(r,e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p)return u=n,o=e.value1,void(t=new d(e.value0.value0,e.value0.value1,e.value0.value2,r,e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof m)return u=n,o=e.value1,void(t=new d(e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5,r));throw new Error("Failed pattern match at Data.Map.Internal line 411, column 3 - line 416, column 88: "+[e.value0.constructor.name])}throw new Error("Failed pattern match at Data.Map.Internal line 408, column 1 - line 408, column 80: "+[e.constructor.name,r.constructor.name])}for(;!i;)r=l(u,o,t);return r}}},y=function(n){return function(e){return function(t){var r,u=function(e){return function(t){var r,u=e,o=!1;function i(e,r){if(e instanceof a.Nil)return o=!0,new s(r.value0,r.value1,r.value2,r.value3);if(e instanceof a.Cons){if(e.value0 instanceof S)return o=!0,E(n)(e.value1)(new d(r.value0,r.value1,r.value2,r.value3,e.value0.value0,e.value0.value1,e.value0.value2));if(e.value0 instanceof P)return o=!0,E(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,r.value0,r.value1,r.value2,r.value3));if(e.value0 instanceof v)return u=e.value1,void(t=new D(new s(r.value0,r.value1,r.value2,r.value3),e.value0.value0,e.value0.value1,new s(e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5)));if(e.value0 instanceof p)return u=e.value1,void(t=new D(new s(e.value0.value0,e.value0.value1,e.value0.value2,r.value0),r.value1,r.value2,new s(r.value3,e.value0.value3,e.value0.value4,e.value0.value5)));if(e.value0 instanceof m)return u=e.value1,void(t=new D(new s(e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3),e.value0.value4,e.value0.value5,new s(r.value0,r.value1,r.value2,r.value3)));throw new Error("Failed pattern match at Data.Map.Internal line 447, column 5 - line 452, column 108: "+[e.value0.constructor.name,r.constructor.name])}throw new Error("Failed pattern match at Data.Map.Internal line 444, column 3 - line 444, column 56: "+[e.constructor.name,r.constructor.name])}for(;!o;)r=i(u,t);return r}},l=o.compare(n);return r=a.Nil.value,function(o){var c,b=r,g=!1;function h(r,c){if(c instanceof f)return g=!0,u(r)(new D(f.value,e,t,f.value));if(c instanceof s){var h=l(e)(c.value1);return h instanceof i.EQ?(g=!0,E(n)(r)(new s(c.value0,e,t,c.value3))):h instanceof i.LT?(b=new a.Cons(new S(c.value1,c.value2,c.value3),r),void(o=c.value0)):(b=new a.Cons(new P(c.value0,c.value1,c.value2),r),void(o=c.value3))}if(c instanceof d){var w=l(e)(c.value1);if(w instanceof i.EQ)return g=!0,E(n)(r)(new d(c.value0,e,t,c.value3,c.value4,c.value5,c.value6));var y=l(e)(c.value4);return y instanceof i.EQ?(g=!0,E(n)(r)(new d(c.value0,c.value1,c.value2,c.value3,e,t,c.value6))):w instanceof i.LT?(b=new a.Cons(new v(c.value1,c.value2,c.value3,c.value4,c.value5,c.value6),r),void(o=c.value0)):w instanceof i.GT&&y instanceof i.LT?(b=new a.Cons(new p(c.value0,c.value1,c.value2,c.value4,c.value5,c.value6),r),void(o=c.value3)):(b=new a.Cons(new m(c.value0,c.value1,c.value2,c.value3,c.value4,c.value5),r),void(o=c.value6))}throw new Error("Failed pattern match at Data.Map.Internal line 427, column 3 - line 427, column 55: "+[r.constructor.name,c.constructor.name])}for(;!g;)c=h(b,o);return c}}}},M=function(n){return function(e){var t,r=function(e){return function(t){if(e instanceof a.Nil)return t;if(e instanceof a.Cons){return function(){if(e.value0 instanceof S&&e.value0.value2 instanceof f&&t instanceof f)return E(n)(e.value1)(new s(f.value,e.value0.value0,e.value0.value1,f.value));if(e.value0 instanceof P&&e.value0.value0 instanceof f&&t instanceof f)return E(n)(e.value1)(new s(f.value,e.value0.value1,e.value0.value2,f.value));if(e.value0 instanceof S&&e.value0.value2 instanceof s)return r(e.value1)(new d(t,e.value0.value0,e.value0.value1,e.value0.value2.value0,e.value0.value2.value1,e.value0.value2.value2,e.value0.value2.value3));if(e.value0 instanceof P&&e.value0.value0 instanceof s)return r(e.value1)(new d(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3,e.value0.value1,e.value0.value2,t));if(e.value0 instanceof S&&e.value0.value2 instanceof d)return E(n)(e.value1)(new s(new s(t,e.value0.value0,e.value0.value1,e.value0.value2.value0),e.value0.value2.value1,e.value0.value2.value2,new s(e.value0.value2.value3,e.value0.value2.value4,e.value0.value2.value5,e.value0.value2.value6)));if(e.value0 instanceof P&&e.value0.value0 instanceof d)return E(n)(e.value1)(new s(new s(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3),e.value0.value0.value4,e.value0.value0.value5,new s(e.value0.value0.value6,e.value0.value1,e.value0.value2,t)));if(e.value0 instanceof v&&e.value0.value2 instanceof f&&e.value0.value5 instanceof f&&t instanceof f)return E(n)(e.value1)(new d(f.value,e.value0.value0,e.value0.value1,f.value,e.value0.value3,e.value0.value4,f.value));if(e.value0 instanceof p&&e.value0.value0 instanceof f&&e.value0.value5 instanceof f&&t instanceof f)return E(n)(e.value1)(new d(f.value,e.value0.value1,e.value0.value2,f.value,e.value0.value3,e.value0.value4,f.value));if(e.value0 instanceof m&&e.value0.value0 instanceof f&&e.value0.value3 instanceof f&&t instanceof f)return E(n)(e.value1)(new d(f.value,e.value0.value1,e.value0.value2,f.value,e.value0.value4,e.value0.value5,f.value));if(e.value0 instanceof v&&e.value0.value2 instanceof s)return E(n)(e.value1)(new s(new d(t,e.value0.value0,e.value0.value1,e.value0.value2.value0,e.value0.value2.value1,e.value0.value2.value2,e.value0.value2.value3),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value0 instanceof s)return E(n)(e.value1)(new s(new d(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3,e.value0.value1,e.value0.value2,t),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value5 instanceof s)return E(n)(e.value1)(new s(e.value0.value0,e.value0.value1,e.value0.value2,new d(t,e.value0.value3,e.value0.value4,e.value0.value5.value0,e.value0.value5.value1,e.value0.value5.value2,e.value0.value5.value3)));if(e.value0 instanceof m&&e.value0.value3 instanceof s)return E(n)(e.value1)(new s(e.value0.value0,e.value0.value1,e.value0.value2,new d(e.value0.value3.value0,e.value0.value3.value1,e.value0.value3.value2,e.value0.value3.value3,e.value0.value4,e.value0.value5,t)));if(e.value0 instanceof v&&e.value0.value2 instanceof d)return E(n)(e.value1)(new d(new s(t,e.value0.value0,e.value0.value1,e.value0.value2.value0),e.value0.value2.value1,e.value0.value2.value2,new s(e.value0.value2.value3,e.value0.value2.value4,e.value0.value2.value5,e.value0.value2.value6),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value0 instanceof d)return E(n)(e.value1)(new d(new s(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3),e.value0.value0.value4,e.value0.value0.value5,new s(e.value0.value0.value6,e.value0.value1,e.value0.value2,t),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value5 instanceof d)return E(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,new s(t,e.value0.value3,e.value0.value4,e.value0.value5.value0),e.value0.value5.value1,e.value0.value5.value2,new s(e.value0.value5.value3,e.value0.value5.value4,e.value0.value5.value5,e.value0.value5.value6)));if(e.value0 instanceof m&&e.value0.value3 instanceof d)return E(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,new s(e.value0.value3.value0,e.value0.value3.value1,e.value0.value3.value2,e.value0.value3.value3),e.value0.value3.value4,e.value0.value3.value5,new s(e.value0.value3.value6,e.value0.value4,e.value0.value5,t)));throw new Error("Failed pattern match at Data.Map.Internal line 497, column 9 - line 514, column 136: "+[e.value0.constructor.name,t.constructor.name])}()}throw new Error("Failed pattern match at Data.Map.Internal line 494, column 5 - line 514, column 136: "+[e.constructor.name])}},l=function(n){return function(e){return function(){if(e instanceof s&&e.value0 instanceof f&&e.value3 instanceof f)return r(n)(f.value);if(e instanceof s)return l(new a.Cons(new P(e.value0,e.value1,e.value2),n))(e.value3);if(e instanceof d&&e.value0 instanceof f&&e.value3 instanceof f&&e.value6 instanceof f)return r(new a.Cons(new P(f.value,e.value1,e.value2),n))(f.value);if(e instanceof d)return l(new a.Cons(new m(e.value0,e.value1,e.value2,e.value3,e.value4,e.value5),n))(e.value6);throw new Error("Failed pattern match at Data.Map.Internal line 526, column 5 - line 530, column 107: "+[e.constructor.name])}()}},D=function(n){return function(){if(n instanceof s&&n.value3 instanceof f)return{key:n.value1,value:n.value2};if(n instanceof s)return D(n.value3);if(n instanceof d&&n.value6 instanceof f)return{key:n.value4,value:n.value5};if(n instanceof d)return D(n.value6);throw new Error("Failed pattern match at Data.Map.Internal line 517, column 33 - line 521, column 45: "+[n.constructor.name])}()},b=o.compare(n);return t=a.Nil.value,function(o){var g,h=t,w=!1;function y(t,g){if(g instanceof f)return w=!0,u.Nothing.value;if(g instanceof s){var y=b(e)(g.value1);if(g.value3 instanceof f&&y instanceof i.EQ)return w=!0,new u.Just(new c.Tuple(g.value2,r(t)(f.value)));if(y instanceof i.EQ){var M=D(g.value0);return w=!0,new u.Just(new c.Tuple(g.value2,l(new a.Cons(new S(M.key,M.value,g.value3),t))(g.value0)))}return y instanceof i.LT?(h=new a.Cons(new S(g.value1,g.value2,g.value3),t),void(o=g.value0)):(h=new a.Cons(new P(g.value0,g.value1,g.value2),t),void(o=g.value3))}if(g instanceof d){var C=g.value0 instanceof f&&g.value3 instanceof f&&g.value6 instanceof f,T=(y=b(e)(g.value4),b(e)(g.value1));return C&&T instanceof i.EQ?(w=!0,new u.Just(new c.Tuple(g.value2,E(n)(t)(new s(f.value,g.value4,g.value5,f.value))))):C&&y instanceof i.EQ?(w=!0,new u.Just(new c.Tuple(g.value5,E(n)(t)(new s(f.value,g.value1,g.value2,f.value))))):T instanceof i.EQ?(M=D(g.value0),w=!0,new u.Just(new c.Tuple(g.value2,l(new a.Cons(new v(M.key,M.value,g.value3,g.value4,g.value5,g.value6),t))(g.value0)))):y instanceof i.EQ?(M=D(g.value3),w=!0,new u.Just(new c.Tuple(g.value5,l(new a.Cons(new p(g.value0,g.value1,g.value2,M.key,M.value,g.value6),t))(g.value3)))):T instanceof i.LT?(h=new a.Cons(new v(g.value1,g.value2,g.value3,g.value4,g.value5,g.value6),t),void(o=g.value0)):T instanceof i.GT&&y instanceof i.LT?(h=new a.Cons(new p(g.value0,g.value1,g.value2,g.value4,g.value5,g.value6),t),void(o=g.value3)):(h=new a.Cons(new m(g.value0,g.value1,g.value2,g.value3,g.value4,g.value5),t),void(o=g.value6))}throw new Error("Failed pattern match at Data.Map.Internal line 467, column 34 - line 490, column 80: "+[g.constructor.name])}for(;!w;)g=y(h,o);return g}}},C=new t.Foldable(function(n){return function(e){return function(r){return t.foldMap(a.foldableList)(n)(e)(b(r))}}},function(n){return function(e){return function(r){return t.foldl(a.foldableList)(n)(e)(b(r))}}},function(n){return function(e){return function(r){return t.foldr(a.foldableList)(n)(e)(b(r))}}}),T=f.value,A=function(n){return function(e){return function(t){return u.maybe(t)(c.snd)(M(n)(e)(t))}}};n.empty=T,n.insert=y,n.lookup=g,n.delete=A,n.pop=M,n.member=function(n){return function(e){return function(t){return u.isJust(g(n)(e)(t))}}},n.alter=function(n){return function(e){return function(t){return function(r){var a=e(g(n)(t)(r));if(a instanceof u.Nothing)return A(n)(t)(r);if(a instanceof u.Just)return y(n)(t)(a.value0)(r);throw new Error("Failed pattern match at Data.Map.Internal line 535, column 15 - line 537, column 25: "+[a.constructor.name])}}}},n.keys=h,n.values=b,n.functorMap=w,n.foldableMap=C}(PS["Data.Map.Internal"]=PS["Data.Map.Internal"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.ST"],PS["Control.Monad.ST.Internal"],PS["Control.Semigroupoid"],PS["Data.Array"],PS["Data.Array.ST"],PS["Data.Eq"];var e=PS["Data.Foldable"],t=(PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.List"],PS["Data.List.Types"]),r=PS["Data.Map.Internal"],a=(PS["Data.Maybe"],PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Unfoldable"],PS["Data.Unit"],PS["Partial.Unsafe"],PS.Prelude,function(n){return r.keys(n)}),u=new e.Foldable(function(n){return function(r){return function(u){return e.foldMap(t.foldableList)(n)(r)(a(u))}}},function(n){return function(r){return function(u){return e.foldl(t.foldableList)(n)(r)(a(u))}}},function(n){return function(r){return function(u){return e.foldr(t.foldableList)(n)(r)(a(u))}}});n.foldableSet=u}(PS["Data.Set"]=PS["Data.Set"]||{}),function(n){"use strict";PS["Control.Semigroupoid"];var e=PS["Data.Functor"],t=PS["Data.Map.Internal"];PS["Data.Set"],PS.Prelude,PS["Unsafe.Coerce"];n.keys=function(n){return e.void(t.functorMap)(n)}}(PS["Data.Map"]=PS["Data.Map"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Parallel"],PS["Control.Semigroupoid"],PS["Data.Functor"],PS["Data.List"],PS["Data.List.Types"],PS["Data.Map"],PS["Data.Map.Internal"],PS["Data.Maybe"],PS["Data.Tuple"];var e=PS["Data.Unit"];PS["Effect.Aff.Class"],PS["Effect.Class"],PS["Halogen.Component.ChildPath"],PS["Halogen.Query.EventSource"],PS["Halogen.Query.HalogenM"],PS["Halogen.Query.InputF"],PS.Prelude,PS["Web.HTML.HTMLElement"];n.action=function(n){return n(e.unit)}}(PS["Halogen.Query"]=PS["Halogen.Query"]||{}),function(n){"use strict";PS["Web.Event.Event"];n.change="change"}(PS["Web.HTML.Event.EventTypes"]=PS["Web.HTML.Event.EventTypes"]||{}),function(n){"use strict";PS["Web.Event.Event"];n.click="click"}(PS["Web.UIEvent.MouseEvent.EventTypes"]=PS["Web.UIEvent.MouseEvent.EventTypes"]||{}),function(n){"use strict";var e=PS["Control.Bind"],t=PS["Control.Monad.Except"],r=PS["Control.Monad.Except.Trans"],a=(PS["Control.Semigroupoid"],PS["Data.Either"]),u=PS["Data.Function"],o=PS["Data.Functor"],i=PS["Data.Identity"],l=PS["Data.Maybe"],c=PS.Foreign,f=PS["Foreign.Index"],s=PS["Halogen.HTML.Core"],d=(PS["Halogen.HTML.Properties"],PS["Halogen.Query"]),S=PS["Halogen.Query.InputF"],P=(PS.Prelude,PS["Unsafe.Coerce"]),v=(PS["Web.Clipboard.ClipboardEvent"],PS["Web.Clipboard.ClipboardEvent.EventTypes"],PS["Web.Event.Event"]),p=(PS["Web.HTML.Event.DragEvent"],PS["Web.HTML.Event.DragEvent.EventTypes"],PS["Web.HTML.Event.EventTypes"]),m=(PS["Web.TouchEvent.TouchEvent"],PS["Web.UIEvent.FocusEvent"],PS["Web.UIEvent.FocusEvent.EventTypes"],PS["Web.UIEvent.KeyboardEvent"],PS["Web.UIEvent.KeyboardEvent.EventTypes"],PS["Web.UIEvent.MouseEvent"],PS["Web.UIEvent.MouseEvent.EventTypes"]),D=(PS["Web.UIEvent.WheelEvent"],PS["Web.UIEvent.WheelEvent.EventTypes"],P.unsafeCoerce),b=function(n){return function(e){return s.handler(n)(o.map(o.functorFn)(o.map(l.functorMaybe)(S.Query.create))(e))}},g=b("submit"),h=function(n){return function(o){return function(s){return function(d){return b(n)(e.composeKleisli(l.bindMaybe)(v.currentTarget)(function(n){return a.either(u.const(l.Nothing.value))(d)(t.runExcept((S=n,e.composeKleisliFlipped(r.bindExceptT(i.monadIdentity))(s)(f.readProp(o))(c.unsafeToForeign(S)))));var S}))}}}},w=h(p.change)("checked")(c.readBoolean),E=h(p.change)("value")(c.readString);n.input=function(n){return function(e){return l.Just.create(d.action(n(e)))}},n.input_=function(n){return function(e){return l.Just.create(d.action(n))}},n.handler=b,n.onSubmit=g,n.onClick=function(n){return b(m.click)(D(n))},n.onValueChange=E,n.onChecked=w}(PS["Halogen.HTML.Events"]=PS["Halogen.HTML.Events"]||{}),function(n){"use strict";var e="function"==typeof Array.from,t="undefined"!=typeof Symbol&&null!=Symbol&&void 0!==Symbol.iterator&&"function"==typeof String.prototype[Symbol.iterator],r="function"==typeof String.prototype.fromCodePoint,a="function"==typeof String.prototype.codePointAt;n._unsafeCodePointAt0=function(n){return a?function(n){return n.codePointAt(0)}:n},n._singleton=function(n){return r?String.fromCodePoint:n},n._take=function(n){return function(e){return t?function(n){for(var t="",r=n[Symbol.iterator](),a=0;a<e;++a){var u=r.next();if(u.done)return t;t+=u.value}return t}:n(e)}},n._toCodePointArray=function(n){return function(t){return e?function(n){return Array.from(n,t)}:n}}}(PS["Data.String.CodePoints"]=PS["Data.String.CodePoints"]||{}),function(n){"use strict";var e=PS["Data.String.CodePoints"],t=(PS["Control.Semigroupoid"],PS["Data.Array"]),r=(PS["Data.Boolean"],PS["Data.Bounded"]),a=PS["Data.Enum"],u=(PS["Data.Eq"],PS["Data.EuclideanRing"]),o=PS["Data.Functor"],i=(PS["Data.HeytingAlgebra"],PS["Data.Int"],PS["Data.Maybe"]),l=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.String.CodeUnits"]),c=(PS["Data.String.Common"],PS["Data.String.Pattern"],PS["Data.String.Unsafe"]),f=PS["Data.Tuple"],s=PS["Data.Unfoldable"],d=(PS.Prelude,function(n){return function(e){return 65536+((1024*(n-55296|0)|0)+(e-56320|0)|0)|0}}),S=function(n){return 56320<=n&&n<=57343},P=function(n){return 55296<=n&&n<=56319},v=function(n){var e=l.length(n);if(0===e)return i.Nothing.value;if(1===e)return new i.Just({head:a.fromEnum(a.boundedEnumChar)(c.charAt(0)(n)),tail:""});var t=a.fromEnum(a.boundedEnumChar)(c.charAt(1)(n)),r=a.fromEnum(a.boundedEnumChar)(c.charAt(0)(n));return P(r)&&S(t)?new i.Just({head:d(r)(t),tail:l.drop(2)(n)}):new i.Just({head:r,tail:l.drop(1)(n)})},p=function(n){return o.map(i.functorMaybe)(function(n){return new f.Tuple(n.head,n.tail)})(v(n))},m=e._unsafeCodePointAt0(function(n){var e=a.fromEnum(a.boundedEnumChar)(c.charAt(1)(n)),t=a.fromEnum(a.boundedEnumChar)(c.charAt(0)(n));return P(t)&&S(e)?d(t)(e):t}),D=e._toCodePointArray(function(n){return s.unfoldr(s.unfoldableArray)(p)(n)})(m),b=function(n){return l.singleton(a.toEnumWithDefaults(a.boundedEnumChar)(r.bottom(r.boundedChar))(r.top(r.boundedChar))(n))},g=e._singleton(function(n){if(n<=65535)return b(n);var e=u.div(u.euclideanRingInt)(n-65536|0)(1024)+55296|0,t=u.mod(u.euclideanRingInt)(n-65536|0)(1024)+56320|0;return b(e)+b(t)}),h=function(n){return function(e){if(n<1)return"";var t=v(e);return t instanceof i.Just?g(t.value0.head)+h(n-1|0)(t.value0.tail):e}},w=e._take(h);n.singleton=g,n.toCodePointArray=D,n.uncons=v,n.length=function(n){return t.length(D(n))},n.take=w,n.drop=function(n){return function(e){return l.drop(l.length(w(n)(e)))(e)}}}(PS["Data.String.CodePoints"]=PS["Data.String.CodePoints"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=PS["Control.Monad.Maybe.Trans"],a=(PS["Control.Semigroupoid"],PS["Data.Array"]),u=(PS["Data.Eq"],PS["Data.Foldable"]),o=(PS["Data.Function"],PS["Data.Functor"]),i=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),l=(PS["Data.String"],PS["Data.String.CodePoints"]),c=PS["Data.String.Common"],f=(PS["Data.String.Pattern"],PS["Data.Tuple"]),s=PS.Effect,d=PS["Global.Unsafe"],S=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),P=PS["Halogen.HTML.Properties"],v=(PS["Partial.Unsafe"],PS.Prelude,PS["Web.DOM"],PS["Web.DOM.Document"]),p=PS["Web.DOM.Element"],m=PS["Web.DOM.NodeList"],D=PS["Web.DOM.NonElementParentNode"],b=PS["Web.DOM.ParentNode"],g=PS["Web.HTML"],h=PS["Web.HTML.HTMLDocument"],w=PS["Web.HTML.HTMLElement"],E=PS["Web.HTML.Location"],y=PS["Web.HTML.Window"],M=function(n){return function(e){return t.bindFlipped(s.bindEffect)(m.toArray)(b.querySelectorAll(n)(p.toParentNode(e)))}},C=function(n){return function(e){return b.querySelector(n)(p.toParentNode(e))}},T=function(n){var e,t=function(n){return d.unsafeDecodeURIComponent(c.replaceAll("+")(" ")(n))},r="#"===(e=l.take(1)(n))||"?"===e?l.drop(1)(n):n;return a.mapMaybe(function(n){var e=c.split("=")(n);return 1===e.length?new i.Just(new f.Tuple(t(e[0]),i.Nothing.value)):2===e.length?new i.Just(new f.Tuple(t(e[0]),new i.Just(t(e[1])))):i.Nothing.value})(a.filter(function(n){return""!==n})(c.split("&")(r)))},A=r.MaybeT,F=t.bindFlipped(s.bindEffect)(y.location)(g.window),H=t.bindFlipped(s.bindEffect)(y.document)(g.window),L=t.bindFlipped(s.bindEffect)(function(n){return e.pure(s.applicativeEffect)(i.fromJust()(n))})(t.bindFlipped(s.bindEffect)(h.body)(H));n.class_=function(n){return P.class_(S.ClassName(n))},n.attr=function(n){return P.attr(n)},n._queryBoth=function(n){return function(e){return function(t){return function(){var r=C(n.value0)(n.value1)(),a=C(e.value0)(e.value1)();return u.for_(s.applicativeEffect)(u.foldableMaybe)(r)(function(n){return u.for_(s.applicativeEffect)(u.foldableMaybe)(a)(function(e){return t(n)(e)})})()}}}},n["_queryBoth'"]=function(n){return function(e){return function(t){return function(){var r=C(n.value0)(n.value1)(),a=M(e.value0)(e.value1)();return u.for_(s.applicativeEffect)(u.foldableMaybe)(r)(function(n){return t(n)(a)})()}}}},n["_queryBoth''"]=function(n){return function(e){return function(t){return function(){var r=M(n.value0)(n.value1)(),a=M(e.value0)(e.value1)();return t(r)(a)()}}}},n._querySelector=C,n._querySelectorAll=M,n._fromNode=function(n){return i.fromJust()(p.fromNode(n))},n._fromElement=function(n){return i.fromJust()(w.fromElement(n))},n._getElementById=function(n){return function(e){return D.getElementById(n)(v.toNonElementParentNode(h.toDocument(e)))}},n._doc=H,n._loc=F,n._curQuerystring=function(){var n=F(),e=E.search(n)();return T(e)},n._parseQueryString=T,n._lookupQueryStringValue=function(n){return function(e){return t.join(i.bindMaybe)(o.map(i.functorMaybe)(f.snd)(u.find(u.foldableArray)(function(n){return f.fst(n)===e})(n)))}},n._body=L,n._mt=A,n._mt_pure=function(n){return r.MaybeT(e.pure(s.applicativeEffect)(n))}}(PS.Util=PS.Util||{}),function(n){"use strict";var e=PS.App,t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],u=(PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed.ButtonType"]),o=PS["DOM.HTML.Indexed.InputType"],i=(PS["Data.Array"],PS["Data.Foldable"],PS["Data.Function"]),l=PS["Data.Functor"],c=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),f=PS["Data.Monoid"],s=(PS["Data.Ord"],PS["Data.Semigroup"]),d=(PS["Data.String"],PS["Data.String.Common"],PS["Data.String.Pattern"],PS["Data.Tuple"]),S=PS["Data.Unit"],P=PS["Effect.Aff"],v=PS["Effect.Aff.Class"],p=PS["Effect.Class"],m=PS.Globals,D=(PS.Halogen,PS["Halogen.Component"]),b=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),g=PS["Halogen.HTML.Elements"],h=PS["Halogen.HTML.Events"],w=PS["Halogen.HTML.Properties"],E=PS["Halogen.Query.HalogenM"],y=(PS.Model,PS.Prelude,PS.Util),M=PS["Web.Event.Event"],C=PS["Web.HTML"],T=PS["Web.HTML.Location"],A=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),F=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),H=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),L=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),_=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),O=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),I=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),W=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),N=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),x=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}();n.BEditField=I,n.BEditSubmit=W,n.BDeleteAsk=N,n.BDestroy=x,n.Eurl=A,n.Etitle=F,n.Edescription=H,n.Etags=L,n.Eprivate=_,n.Etoread=O,n.addbmark=function(n){var U;m["app'"](S.unit);return D.component(b.bifunctorHTML)({initialState:i.const((U=n,{bm:U,edit_bm:U,deleteAsk:!1,destroyed:!1})),render:function(n){var e=m.mmoment8601(n.bm.time),t=g.div([y.class_("alert")])([b.text("previously saved "),g.span([y.class_("when js-moment"),w.title(c.maybe(n.bm.time)(d.snd)(e)),y.attr("data-iso8601")(n.bm.time)])([b.text(c.maybe(" ")(d.fst)(e))]),g.div([y.class_("edit_links"),y.attr("style")("display: inline-block; margin-left: 5px;")])([g.div([y.class_("delete_link")])([g.button(s.append(s.semigroupArray)([w.type_(b.buttonTypeIsProp)(u.ButtonButton.value),h.onClick(h.input_(N.create(!0))),y.class_("delete")])(f.guard(f.monoidArray)(n.deleteAsk)([y.attr("hidden")("hidden")])))([b.text("delete")]),g.span(s.append(s.semigroupArray)([y.class_("confirm")])(f.guard(f.monoidArray)(!n.deleteAsk)([y.attr("hidden")("hidden")])))([g.button([w.type_(b.buttonTypeIsProp)(u.ButtonButton.value),h.onClick(h.input_(N.create(!1)))])([b.text("cancel / ")]),g.button([w.type_(b.buttonTypeIsProp)(u.ButtonButton.value),h.onClick(h.input_(x.create)),y.class_("destroy")])([b.text("destroy")])])])])]),r=g.form([h.onSubmit(h.input(W.create))])([g.table_([g.tbody_([g.tr_([g.td_([]),g.td_(f.guard(f.monoidArray)(n.bm.bid>0)([t]))]),g.tr_([g.td_([g.label([w.for("url")])([b.text("URL")])]),g.td_([g.input([w.type_(b.inputTypeIsProp)(o.InputUrl.value),w.id_("url"),y.class_("url"),w.required(!0),w.name("url"),y.attr("size")("70"),w.value(n.edit_bm.url),h.onValueChange(function(n){return h.input(I.create)(A.create(n))})])])]),g.tr_([g.td_([g.label([w.for("title")])([b.text("title")])]),g.td_([g.input([w.type_(b.inputTypeIsProp)(o.InputText.value),w.id_("title"),y.class_("title"),w.name("title"),y.attr("size")("70"),w.value(n.edit_bm.title),h.onValueChange(function(n){return h.input(I.create)(F.create(n))})])])]),g.tr_([g.td_([g.label([w.for("description")])([b.text("description")])]),g.td_([g.textarea([y.class_("description"),w.id_("description"),w.name("description"),y.attr("cols")("70"),w.rows(4),w.value(n.edit_bm.description),h.onValueChange(function(n){return h.input(I.create)(H.create(n))})])])]),g.tr_([g.td_([g.label([w.for("tags")])([b.text("tags")])]),g.td_([g.input([w.type_(b.inputTypeIsProp)(o.InputText.value),w.id_("tags"),y.class_("tags"),w.name("tags"),y.attr("size")("70"),w.autocomplete(!1),y.attr("autocapitalize")("off"),w.value(n.edit_bm.tags),h.onValueChange(function(n){return h.input(I.create)(L.create(n))})])])]),g.tr_([g.td_([g.label([w.for("private")])([b.text("private")])]),g.td_([g.input([w.type_(b.inputTypeIsProp)(o.InputCheckbox.value),w.id_("private"),y.class_("private"),w.name("private"),w.checked(n.edit_bm.private),h.onChecked(function(n){return h.input(I.create)(_.create(n))})])])]),g.tr_([g.td_([g.label([w.for("toread")])([b.text("read later")])]),g.td_([g.input([w.type_(b.inputTypeIsProp)(o.InputCheckbox.value),w.id_("toread"),y.class_("toread"),w.name("toread"),w.checked(n.edit_bm.toread),h.onChecked(function(n){return h.input(I.create)(O.create(n))})])])]),g.tr_([g.td_([]),g.td_([g.input([w.type_(b.inputTypeIsProp)(o.InputSubmit.value),y.class_("submit"),w.value(n.bm.bid>0?"update bookmark":"add bookmark")])])])])])]),a=g.p([y.class_("error")])([b.text("you killed this bookmark")]);return g.div_([n.destroyed?a:r])},eval:function(n){if(n instanceof N)return r.discard(r.discardUnit)(E.bindHalogenM)(a.modify_(E.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t}))(function(){return t.pure(E.applicativeHalogenM)(n.value1)});if(n instanceof x)return r.bind(E.bindHalogenM)(a.gets(E.monadStateHalogenM)(function(n){return n.bm.bid}))(function(u){return r.discard(r.discardUnit)(E.bindHalogenM)(l.void(E.functorHalogenM)(v.liftAff(E.monadAffHalogenM(v.monadAffAff))(e.destroy(u))))(function(){return r.discard(r.discardUnit)(E.bindHalogenM)(a.modify_(E.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.destroyed=!0,e}))(function(){return t.pure(E.applicativeHalogenM)(n.value0)})})});if(n instanceof I)return r.bind(E.bindHalogenM)(a.get(E.monadStateHalogenM))(function(e){return r.discard(r.discardUnit)(E.bindHalogenM)(function(){if(n.value0 instanceof A)return a.put(E.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.url=n.value0.value0,t}(),t}());if(n.value0 instanceof F)return a.put(E.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.title=n.value0.value0,t}(),t}());if(n.value0 instanceof H)return a.put(E.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.description=n.value0.value0,t}(),t}());if(n.value0 instanceof L)return a.put(E.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.tags=n.value0.value0,t}(),t}());if(n.value0 instanceof _)return a.put(E.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.private=n.value0.value0,t}(),t}());if(n.value0 instanceof O)return a.put(E.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.toread=n.value0.value0,t}(),t}());throw new Error("Failed pattern match at Component.Add line 153, column 5 - line 159, column 68: "+[n.value0.constructor.name])}())(function(){return t.pure(E.applicativeHalogenM)(n.value1)})});if(n instanceof W)return r.discard(r.discardUnit)(E.bindHalogenM)(p.liftEffect(E.monadEffectHalogenM(P.monadEffectAff))(M.preventDefault(n.value0)))(function(){return r.bind(E.bindHalogenM)(a.get(E.monadStateHalogenM))(function(u){return r.discard(r.discardUnit)(E.bindHalogenM)(l.void(E.functorHalogenM)(v.liftAff(E.monadAffHalogenM(v.monadAffAff))(e.editBookmark(u.edit_bm))))(function(){return r.discard(r.discardUnit)(E.bindHalogenM)(a.put(E.monadStateHalogenM)(function(){var n={};for(var e in u)({}).hasOwnProperty.call(u,e)&&(n[e]=u[e]);return n.bm=u.edit_bm,n}()))(function(){return r.bind(E.bindHalogenM)(p.liftEffect(E.monadEffectHalogenM(P.monadEffectAff))(y._loc))(function(e){return r.bind(E.bindHalogenM)(p.liftEffect(E.monadEffectHalogenM(P.monadEffectAff))(C.window))(function(a){return r.bind(E.bindHalogenM)(p.liftEffect(E.monadEffectHalogenM(P.monadEffectAff))(y._curQuerystring))(function(u){return r.discard(r.discardUnit)(E.bindHalogenM)((o=y._lookupQueryStringValue(u)("next"))instanceof c.Just?p.liftEffect(E.monadEffectHalogenM(P.monadEffectAff))(T.setHref(o.value0)(e)):p.liftEffect(E.monadEffectHalogenM(P.monadEffectAff))(m.closeWindow(a)))(function(){return t.pure(E.applicativeHalogenM)(n.value1)});var o})})})})})})});throw new Error("Failed pattern match at Component.Add line 142, column 3 - line 142, column 58: "+[n.constructor.name])},receiver:i.const(c.Nothing.value)})}}(PS["Component.Add"]=PS["Component.Add"]||{}),function(n){"use strict";var e=PS.App,t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],u=(PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed.ButtonType"]),o=PS["DOM.HTML.Indexed.InputType"],i=PS["Data.Array"],l=(PS["Data.Eq"],PS["Data.Foldable"]),c=PS["Data.Function"],f=PS["Data.Functor"],s=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),d=PS["Data.Monoid"],S=PS["Data.Semigroup"],P=PS["Data.Show"],v=(PS["Data.String"],PS["Data.String.CodePoints"]),p=PS["Data.String.Common"],m=(PS["Data.String.Pattern"],PS["Data.Tuple"]),D=PS["Data.Unit"],b=PS["Effect.Aff"],g=PS["Effect.Aff.Class"],h=PS["Effect.Class"],w=PS.Globals,E=(PS.Halogen,PS["Halogen.Component"]),y=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),M=PS["Halogen.HTML.Elements"],C=PS["Halogen.HTML.Events"],T=PS["Halogen.HTML.Properties"],A=PS["Halogen.Query.HalogenM"],F=(PS.Model,PS.Prelude,PS.Util),H=PS["Web.Event.Event"],L=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),_=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),O=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),I=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),W=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),N=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),x=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),U=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),R=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),k=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),B=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),q=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),j=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),V=function(){function n(){}return n.value=new n,n}();n.BStar=x,n.BDeleteAsk=U,n.BDestroy=R,n.BEdit=k,n.BEditField=B,n.BEditSubmit=q,n.BMarkRead=j,n.Eurl=L,n.Etitle=_,n.Edescription=O,n.Etags=I,n.Eprivate=W,n.Etoread=N,n.BNotifyRemove=V,n.bmark=function(n){var J,Q=w["app'"](D.unit);return E.component(y.bifunctorHTML)({initialState:c.const((J=n,{bm:J,edit_bm:J,deleteAsk:!1,edit:!1})),render:function(n){var e,t,r=d.guard(d.monoidArray)(Q.dat.isowner)([M.div([F.class_("star"+d.guard(d.monoidString)(n.bm.selected)(" selected_star"))])([M.button([C.onClick(C.input_(x.create(!n.bm.selected)))])([y.text("✭")])])]),a=w.mmoment8601(n.bm.time),c=d.guard(d.monoidArray)(Q.dat.isowner)([M.div([F.class_("edit_links")])([M.button([T.type_(y.buttonTypeIsProp)(u.ButtonButton.value),C.onClick(C.input_(k.create(!0))),F.class_("edit")])([y.text("edit  ")]),M.div([F.class_("delete_link")])([M.button(S.append(S.semigroupArray)([T.type_(y.buttonTypeIsProp)(u.ButtonButton.value),C.onClick(C.input_(U.create(!0))),F.class_("delete")])(d.guard(d.monoidArray)(n.deleteAsk)([F.attr("hidden")("hidden")])))([y.text("delete")]),M.span(S.append(S.semigroupArray)([F.class_("confirm")])(d.guard(d.monoidArray)(!n.deleteAsk)([F.attr("hidden")("hidden")])))([M.button([T.type_(y.buttonTypeIsProp)(u.ButtonButton.value),C.onClick(C.input_(U.create(!1)))])([y.text("cancel / ")]),M.button([T.type_(y.buttonTypeIsProp)(u.ButtonButton.value),C.onClick(C.input_(R.create)),F.class_("destroy")])([y.text("destroy")])])])]),M.div([F.class_("read")])(d.guard(d.monoidArray)(n.bm.toread)([y.text("  "),M.button([C.onClick(C.input_(j.create)),F.class_("mark_read")])([y.text("mark as read")])]))]),D=[M.div([F.class_("edit_bookmark_form active")])([M.form([C.onSubmit(C.input(q.create))])([M.input([T.type_(y.inputTypeIsProp)(o.InputUrl.value),F.class_("url edit_form_input"),T.required(!0),T.name("url"),T.value(n.edit_bm.url),C.onValueChange(function(n){return C.input(B.create)(L.create(n))})]),M.br_,M.input([T.type_(y.inputTypeIsProp)(o.InputText.value),F.class_("title edit_form_input"),T.name("title"),T.value(n.edit_bm.title),C.onValueChange(function(n){return C.input(B.create)(_.create(n))})]),M.br_,M.p([F.attr("style")("margin-top:10px;margin-bottom:5px;")])([y.text(" description:")]),M.textarea([F.class_("description edit_form_input"),T.name("description"),T.rows(5),T.value(n.edit_bm.description),C.onValueChange(function(n){return C.input(B.create)(O.create(n))})]),M.br_,M.div([T.id_("tags_input_box")])([M.p([F.attr("style")("margin-top:10px")])([y.text(" tags:"),M.input([T.type_(y.inputTypeIsProp)(o.InputText.value),F.class_("tags edit_form_input"),T.name("tags"),T.autocomplete(!1),F.attr("autocapitalize")("off"),T.value(n.edit_bm.tags),C.onValueChange(function(n){return C.input(B.create)(I.create(n))})]),M.br_])]),M.div([T.id_("edit_form_checkboxes")])([M.input([T.type_(y.inputTypeIsProp)(o.InputCheckbox.value),F.class_("private"),T.id_("edit_private"),T.name("private"),T.checked(n.edit_bm.private),C.onChecked(function(n){return C.input(B.create)(W.create(n))})]),y.text(" "),M.label([T.for("edit_private")])([y.text("private")]),y.text(" "),M.input([T.type_(y.inputTypeIsProp)(o.InputCheckbox.value),F.class_("toread"),T.id_("edit_toread"),T.name("toread"),T.checked(n.edit_bm.toread),C.onChecked(function(n){return C.input(B.create)(N.create(n))})]),y.text(" "),M.label([T.for("edit_toread")])([y.text("toread")]),M.br_]),M.input([T.type_(y.inputTypeIsProp)(o.InputSubmit.value),F.class_("submit edit-button"),T.value("save")]),y.text(" "),M.input([T.type_(y.inputTypeIsProp)(o.InputReset.value),F.class_("reset edit-button"),T.value("cancel"),C.onClick(C.input_(k.create(!1)))])])])],b=[M.div([F.class_("display")])(S.append(S.semigroupArray)([M.a([T.href(n.bm.url),T.target("_blank"),F.class_("bookmark_title"+d.guard(d.monoidString)(n.bm.toread)(" unread"))])([y.text(p.null(n.bm.title)?"[no title]":n.bm.title)]),M.br_,M.a([T.href(n.bm.url),F.class_("url_display")])([y.text(n.bm.url)]),M.br_,M.div([F.class_("description")])((t=n.bm.description,i.drop(1)(l.foldMap(l.foldableArray)(d.monoidArray)(function(n){return[M.br_,y.text(n)]})(p.split("\n")(t))))),M.div([F.class_("tags")])(d.guard(d.monoidFn(d.monoidFn(d.monoidArray)))(!p.null(n.bm.tags))(f.map(f.functorArray))(function(n){return M.a([F.class_("tag"+d.guard(d.monoidString)("."===v.take(1)(n))(" private")),T.href(function(n){return Q.userR+"/t:"+n}(n))])([y.text(n)])})(p.split(" ")(n.bm.tags))),M.a([F.class_("when js-moment"),T.title(s.maybe(n.bm.time)(m.snd)(a)),F.attr("data-iso8601")(n.bm.time),T.href((e=n.bm.bid,Q.userR+"/b:"+P.show(P.showInt)(e)))])([y.text(s.maybe(" ")(m.fst)(a))])])(c))],g=[M.div([F.attr("style")("clear:both")])([])],h=M.div([T.id_(P.show(P.showInt)(n.bm.bid)),F.class_("bookmark"+d.guard(d.monoidString)(n.bm.private)(" private"))])(S.append(S.semigroupArray)(r)(n.edit?D:S.append(S.semigroupArray)(b)(g)));return M.div_(S.append(S.semigroupArray)([h])(g))},eval:function(n){if(n instanceof x)return r.bind(A.bindHalogenM)(a.get(A.monadStateHalogenM))(function(u){return r.discard(r.discardUnit)(A.bindHalogenM)(g.liftAff(A.monadAffHalogenM(g.monadAffAff))(e.toggleStar(u.bm.bid)(n.value0?e.Star.value:e.UnStar.value)))(function(){return r.discard(r.discardUnit)(A.bindHalogenM)(a.put(A.monadStateHalogenM)(function(){var e={};for(var t in u)({}).hasOwnProperty.call(u,t)&&(e[t]=u[t]);return e.bm=function(){var e={};for(var t in u.bm)({}).hasOwnProperty.call(u.bm,t)&&(e[t]=u.bm[t]);return e.selected=n.value0,e}(),e.edit_bm=function(){var e={};for(var t in u.edit_bm)({}).hasOwnProperty.call(u.edit_bm,t)&&(e[t]=u.edit_bm[t]);return e.selected=n.value0,e}(),e}()))(function(){return t.pure(A.applicativeHalogenM)(n.value1)})})});if(n instanceof U)return r.discard(r.discardUnit)(A.bindHalogenM)(a.modify_(A.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t}))(function(){return t.pure(A.applicativeHalogenM)(n.value1)});if(n instanceof R)return r.bind(A.bindHalogenM)(a.gets(A.monadStateHalogenM)(function(n){return n.bm.bid}))(function(a){return r.discard(r.discardUnit)(A.bindHalogenM)(f.void(A.functorHalogenM)(g.liftAff(A.monadAffHalogenM(g.monadAffAff))(e.destroy(a))))(function(){return r.discard(r.discardUnit)(A.bindHalogenM)(A.raise(V.value))(function(){return t.pure(A.applicativeHalogenM)(n.value0)})})});if(n instanceof j)return r.bind(A.bindHalogenM)(a.get(A.monadStateHalogenM))(function(u){return r.discard(r.discardUnit)(A.bindHalogenM)(f.void(A.functorHalogenM)(g.liftAff(A.monadAffHalogenM(g.monadAffAff))(e.markRead(u.bm.bid))))(function(){return r.discard(r.discardUnit)(A.bindHalogenM)(a.put(A.monadStateHalogenM)(function(){var n={};for(var e in u)({}).hasOwnProperty.call(u,e)&&(n[e]=u[e]);return n.bm=function(){var n={};for(var e in u.bm)({}).hasOwnProperty.call(u.bm,e)&&(n[e]=u.bm[e]);return n.toread=!1,n}(),n}()))(function(){return t.pure(A.applicativeHalogenM)(n.value0)})})});if(n instanceof k)return r.bind(A.bindHalogenM)(a.get(A.monadStateHalogenM))(function(e){return r.discard(r.discardUnit)(A.bindHalogenM)(a.put(A.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit=n.value0,t.edit_bm=e.bm,t}()))(function(){return t.pure(A.applicativeHalogenM)(n.value1)})});if(n instanceof B)return r.bind(A.bindHalogenM)(a.get(A.monadStateHalogenM))(function(e){return r.discard(r.discardUnit)(A.bindHalogenM)(function(){if(n.value0 instanceof L)return a.put(A.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.url=n.value0.value0,t}(),t}());if(n.value0 instanceof _)return a.put(A.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.title=n.value0.value0,t}(),t}());if(n.value0 instanceof O)return a.put(A.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.description=n.value0.value0,t}(),t}());if(n.value0 instanceof I)return a.put(A.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.tags=n.value0.value0,t}(),t}());if(n.value0 instanceof W)return a.put(A.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.private=n.value0.value0,t}(),t}());if(n.value0 instanceof N)return a.put(A.monadStateHalogenM)(function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=function(){var t={};for(var r in e.edit_bm)({}).hasOwnProperty.call(e.edit_bm,r)&&(t[r]=e.edit_bm[r]);return t.toread=n.value0.value0,t}(),t}());throw new Error("Failed pattern match at Component.BMark line 212, column 5 - line 218, column 68: "+[n.value0.constructor.name])}())(function(){return t.pure(A.applicativeHalogenM)(n.value1)})});if(n instanceof q)return r.discard(r.discardUnit)(A.bindHalogenM)(h.liftEffect(A.monadEffectHalogenM(b.monadEffectAff))(H.preventDefault(n.value0)))(function(){return r.bind(A.bindHalogenM)(a.get(A.monadStateHalogenM))(function(u){return r.discard(r.discardUnit)(A.bindHalogenM)(f.void(A.functorHalogenM)(g.liftAff(A.monadAffHalogenM(g.monadAffAff))(e.editBookmark(u.edit_bm))))(function(){return r.discard(r.discardUnit)(A.bindHalogenM)(a.put(A.monadStateHalogenM)(function(){var n={};for(var e in u)({}).hasOwnProperty.call(u,e)&&(n[e]=u[e]);return n.edit=!1,n.bm=u.edit_bm,n}()))(function(){return t.pure(A.applicativeHalogenM)(n.value1)})})})});throw new Error("Failed pattern match at Component.BMark line 187, column 3 - line 187, column 62: "+[n.constructor.name])},receiver:c.const(s.Nothing.value)})}}(PS["Component.BMark"]=PS["Component.BMark"]||{}),function(n){"use strict";var e=PS["Component.BMark"],t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],u=PS["Data.Array"],o=(PS["Data.Eq"],PS["Data.Function"]),i=PS["Data.Functor"],l=PS["Data.Maybe"],c=PS["Data.Ord"],f=PS["Data.Unit"],s=(PS["Effect.Aff"],PS.Halogen,PS["Halogen.Component"]),d=PS["Halogen.HTML"],S=PS["Halogen.HTML.Elements"],P=PS["Halogen.HTML.Events"],v=PS["Halogen.Query.HalogenM"],p=(PS.Model,PS.Prelude,function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}()),m=function(n){return function(e){return u.filter(function(e){return e.bid!==n})(e)}};n.HandleBMessage=p,n.blist=function(n){var u=function(n){return d.slot(n.bid)(e.bmark(n))(f.unit)(P.input(p.create(n.bid)))};return s.parentComponent(c.ordInt)({initialState:o.const(n),render:function(n){return S.div_(i.map(i.functorArray)(u)(n))},eval:function(n){return r.discard(r.discardUnit)(v.bindHalogenM)(a.modify_(v.monadStateHalogenM)(m(n.value0)))(function(){return t.pure(v.applicativeHalogenM)(n.value2)})},receiver:o.const(l.Nothing.value)})},n.removeBookmark=m}(PS["Component.BList"]=PS["Component.BList"]||{}),function(n){"use strict";PS["Control.Monad.Error.Class"],PS["Control.Monad.Reader.Trans"],PS["Control.Monad.Trans.Class"],PS["Control.Semigroupoid"];var e=PS["Effect.Aff"],t=(PS.Prelude,function(n,e,t,r,a){this.Functor1=n,this.Monad0=e,this.fork=t,this.join=r,this.suspend=a}),r=new t(function(){return e.functorFiber},function(){return e.monadAff},e.forkAff,e.joinFiber,e.suspendAff);n.fork=function(n){return n.fork},n.join=function(n){return n.join},n.suspend=function(n){return n.suspend},n.MonadFork=t,n.monadForkAff=r}(PS["Control.Monad.Fork.Class"]=PS["Control.Monad.Fork.Class"]||{}),function(n){"use strict";(PS["Effect.Console"]=PS["Effect.Console"]||{}).warn=function(n){return function(){return console.warn(n),{}}}}(),function(n){"use strict";var e=PS["Effect.Console"];PS["Data.Show"],PS["Data.Unit"],PS.Effect;n.warn=e.warn}(PS["Effect.Console"]=PS["Effect.Console"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"];var e=PS["Data.Foldable"],t=(PS["Data.Function"],PS["Data.Functor"]),r=(PS["Data.List"],PS["Data.List.Types"]),a=(PS["Data.Map"],PS["Data.Map.Internal"]),u=PS["Data.Maybe"],o=(PS["Data.Traversable"],PS.Effect,PS["Effect.Aff"],PS["Effect.Ref"]),i=(PS["Halogen.Component"],PS["Halogen.Data.OrdBox"],PS.Prelude,PS["Unsafe.Coerce"]),l=(PS["Web.DOM"],i.unsafeCoerce),c=i.unsafeCoerce,f=i.unsafeCoerce;n.unDriverStateX=c,n.mkDriverStateXRef=f,n.renderStateX=function(n){return function(n){return c(function(e){return(e.prjQuery,i.unsafeCoerce)(n(e.rendering))})}},n.renderStateX_=function(n){return function(t){return c(function(r){return e.traverse_(n)(e.foldableMaybe)(t)(r.rendering)})}},n.unRenderStateX=l,n.initDriverState=function(n){return function(e){return function(i){return function(l){return function(c){return function(){var s=o.new({})(),d=o.new(a.empty)(),S=o.new(a.empty)(),P=o.new(t.voidLeft(u.functorMaybe)(n.initializer)(r.Nil.value))(),v=o.new(new u.Just(r.Nil.value))(),p=o.new(u.Nothing.value)(),m=o.new(0)(),D=o.new(new u.Just(a.empty))(),b={component:n,state:n.initialState(e),refs:a.empty,children:a.empty,childrenIn:d,childrenOut:S,selfRef:s,handler:i,pendingQueries:P,pendingOuts:v,pendingHandlers:p,rendering:u.Nothing.value,prjQuery:l,fresh:m,subscriptions:D,lifecycleHandlers:c};return o.write(b)(s)(),f(s)}}}}}}}(PS["Halogen.Aff.Driver.State"]=PS["Halogen.Aff.Driver.State"]||{}),function(n){"use strict";(PS["Unsafe.Reference"]=PS["Unsafe.Reference"]||{}).reallyUnsafeRefEq=function(n){return function(e){return n===e}}}(),function(n){"use strict";var e=PS["Unsafe.Reference"].reallyUnsafeRefEq;n.unsafeRefEq=e}(PS["Unsafe.Reference"]=PS["Unsafe.Reference"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Applicative.Free"],r=PS["Control.Bind"],a=PS["Control.Coroutine"],u=PS["Control.Monad.Error.Class"],o=PS["Control.Monad.Fork.Class"],i=PS["Control.Monad.Free"],l=PS["Control.Monad.Free.Trans"],c=PS["Control.Monad.Trans.Class"],f=PS["Control.Parallel"],s=PS["Control.Parallel.Class"],d=(PS["Control.Semigroupoid"],PS["Data.Boolean"]),S=PS["Data.Coyoneda"],P=PS["Data.Eq"],v=PS["Data.Foldable"],p=PS["Data.Function"],m=PS["Data.Functor"],D=PS["Data.List"],b=PS["Data.List.Types"],g=PS["Data.Map"],h=PS["Data.Map.Internal"],w=PS["Data.Maybe"],E=PS["Data.Ord"],y=(PS["Data.Semiring"],PS["Data.Set"]),M=(PS["Data.Tuple"],PS.Effect,PS["Effect.Aff"]),C=PS["Effect.Class"],T=PS["Effect.Exception"],A=PS["Effect.Ref"],F=PS["Halogen.Aff.Driver.State"],H=PS["Halogen.Data.OrdBox"],L=PS["Halogen.Query.EventSource"],_=PS["Halogen.Query.ForkF"],O=PS["Halogen.Query.HalogenM"],I=PS["Halogen.Query.InputF"],W=(PS.Prelude,PS["Unsafe.Reference"]),N=function(n){return function(e){return function(t){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(e)))(function(r){if(r instanceof w.Nothing)return n(t);if(r instanceof w.Just)return C.liftEffect(M.monadEffectAff)(A.write(new w.Just(new b.Cons(n(t),r.value0)))(e));throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 171, column 3 - line 175, column 59: "+[r.constructor.name])})}}},x=function(n){return function(t){return r.discard(r.discardUnit)(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.write({initializers:b.Nil.value,finalizers:b.Nil.value})(n)))(function(){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(t))(function(t){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(n)))(function(n){return r.discard(r.discardUnit)(M.bindAff)(v.traverse_(M.applicativeAff)(b.foldableList)(o.fork(o.monadForkAff))(n.finalizers))(function(){return r.discard(r.discardUnit)(M.bindAff)(f.parSequence_(M.parallelAff)(b.foldableList)(n.initializers))(function(){return e.pure(M.applicativeAff)(t)})})})})})}};n.handleLifecycle=x,n.eval=function(n){return function(f){var v=function(i){return function(f){if(f instanceof O.State)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(t){var a=f.value0(t.state);if(W.unsafeRefEq(t.state)(a.value1))return e.pure(M.applicativeAff)(a.value0);if(d.otherwise)return r.discard(r.discardUnit)(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.write({component:t.component,state:a.value1,refs:t.refs,children:t.children,childrenIn:t.childrenIn,childrenOut:t.childrenOut,selfRef:t.selfRef,handler:t.handler,pendingQueries:t.pendingQueries,pendingOuts:t.pendingOuts,pendingHandlers:t.pendingHandlers,rendering:t.rendering,prjQuery:t.prjQuery,fresh:t.fresh,subscriptions:t.subscriptions,lifecycleHandlers:t.lifecycleHandlers})(i)))(function(){return r.discard(r.discardUnit)(M.bindAff)(x(t.lifecycleHandlers)(n(t.lifecycleHandlers)(i)))(function(){return e.pure(M.applicativeAff)(a.value0)})});throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 76, column 7 - line 82, column 21: "+[a.constructor.name])});if(f instanceof O.Subscribe)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(n){return r.bind(M.bindAff)(o.fork(o.monadForkAff)(r.bind(M.bindAff)(L.unEventSource(f.value0))(function(t){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A["modify'"](function(n){return{state:n+1|0,value:n}})(n.fresh)))(function(u){var o=r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(n.subscriptions)))(function(t){return e.when(M.applicativeAff)(w.maybe(!1)(h.member(E.ordInt)(u))(t))(C.liftEffect(M.monadEffectAff)(A.modify_(m.map(w.functorMaybe)(h.delete(E.ordInt)(u)))(n.subscriptions)))});return r.discard(r.discardUnit)(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.modify_(m.map(w.functorMaybe)(h.insert(E.ordInt)(u)(o)))(n.subscriptions)))(function(){var u=r.bind(l.bindFreeT(a.functorAwait)(M.monadAff))(a.await(M.monadAff))(function(t){return r.bind(l.bindFreeT(a.functorAwait)(M.monadAff))(c.lift(l.monadTransFreeT(a.functorAwait))(M.monadAff)(C.liftEffect(M.monadEffectAff)(A.read(n.subscriptions))))(function(n){return e.when(l.applicativeFreeT(a.functorAwait)(M.monadAff))(w.isJust(n))(r.bind(l.bindFreeT(a.functorAwait)(M.monadAff))(c.lift(l.monadTransFreeT(a.functorAwait))(M.monadAff)(R(i)(t)))(function(n){return e.when(l.applicativeFreeT(a.functorAwait)(M.monadAff))(P.eq(L.eqSubscribeStatus)(n)(L.Listening.value))(u)}))})});return r.discard(r.discardUnit)(M.bindAff)(a.runProcess(M.monadRecAff)(a.pullFrom(M.monadRecAff)(u)(t.producer)))(function(){return o})})})})))(function(n){return e.pure(M.applicativeAff)(f.value1)})});if(f instanceof O.Lift)return f.value0;if(f instanceof O.Halt)return u.throwError(M.monadThrowAff)(T.error(f.value0));if(f instanceof O.GetSlots)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(n){return e.pure(M.applicativeAff)(f.value0(m.map(b.functorList)(H.unOrdBox)(D.fromFoldable(y.foldableSet)(g.keys(n.children)))))});if(f instanceof O.CheckSlot)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(n){return e.pure(M.applicativeAff)(f.value1(h.member(H.ordOrdBox)(n.component.mkOrdBox(f.value0))(n.children)))});if(f instanceof O.ChildQuery)return k(i)(f.value0)(f.value1);if(f instanceof O.Raise)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(n){return r.discard(r.discardUnit)(M.bindAff)(N(n.handler)(n.pendingOuts)(f.value0))(function(){return e.pure(M.applicativeAff)(f.value1)})});if(f instanceof O.Par)return s.sequential(M.parallelAff)(t.retractFreeAp(M.applicativeParAff)(t.hoistFreeAp(function(n){return s.parallel(M.parallelAff)(U(i)(n))})(f.value0)));if(f instanceof O.Fork)return _.unFork(function(n){return r.bind(M.bindAff)(o.fork(o.monadForkAff)(U(i)(n.value0)))(function(t){return e.pure(M.applicativeAff)(n.value1(p.flip(M.killFiber)(t)))})})(f.value0);if(f instanceof O.GetRef)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(n){return e.pure(M.applicativeAff)(f.value1(h.lookup(E.ordString)(f.value0)(n.refs)))});throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 73, column 12 - line 128, column 33: "+[f.constructor.name])}},U=function(n){return function(e){return i.foldFree(M.monadRecAff)(v(n))(e)}},R=function(n){return function(e){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(n)))(function(t){var r=t.component.eval(e);return i.foldFree(M.monadRecAff)(v(n))(r)})}},k=function(n){return function(e){return S.unCoyoneda(function(t){return function(a){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(n)))(function(n){var o=h.lookup(H.ordOrdBox)(n.component.mkOrdBox(e))(n.children);if(o instanceof w.Just)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(o.value0)))(function(n){return F.unDriverStateX(function(n){var e=n.prjQuery(a);if(e instanceof w.Just)return m.map(M.functorAff)(t)(R(n.selfRef)(e.value0));if(e instanceof w.Nothing)return u.throwError(M.monadThrowAff)(T.error("Query projection failed for child query"));throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 141, column 32 - line 143, column 82: "+[e.constructor.name])})(n)});if(o instanceof w.Nothing)return u.throwError(M.monadThrowAff)(T.error("Slot lookup failed for child query"));throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 138, column 5 - line 144, column 73: "+[o.constructor.name])})}})}};return function(n){if(n instanceof I.RefUpdate)return r.discard(r.discardUnit)(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.modify_(function(e){return{component:e.component,state:e.state,refs:h.alter(E.ordString)(p.const(n.value1))(n.value0)(e.refs),children:e.children,childrenIn:e.childrenIn,childrenOut:e.childrenOut,selfRef:e.selfRef,handler:e.handler,pendingQueries:e.pendingQueries,pendingOuts:e.pendingOuts,pendingHandlers:e.pendingHandlers,rendering:e.rendering,prjQuery:e.prjQuery,fresh:e.fresh,subscriptions:e.subscriptions,lifecycleHandlers:e.lifecycleHandlers}})(f)))(function(){return e.pure(M.applicativeAff)(n.value2)});if(n instanceof I.Query)return R(f)(n.value0);throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 59, column 3 - line 64, column 25: "+[n.constructor.name])}}},n.queuingHandler=N}(PS["Halogen.Aff.Driver.Eval"]=PS["Halogen.Aff.Driver.Eval"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=PS["Control.Coroutine"],a=PS["Control.Monad.Fork.Class"],u=PS["Control.Monad.Rec.Class"],o=PS["Control.Parallel"],i=(PS["Control.Semigroupoid"],PS["Data.Either"]),l=PS["Data.Foldable"],c=PS["Data.Function"],f=PS["Data.Functor"],s=PS["Data.List"],d=PS["Data.List.Types"],S=(PS["Data.Map"],PS["Data.Map.Internal"]),P=PS["Data.Maybe"],v=PS["Data.Ord"],p=(PS["Data.Semiring"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unit"]),m=PS.Effect,D=PS["Effect.Aff"],b=PS["Effect.Aff.AVar"],g=PS["Effect.Class"],h=PS["Effect.Console"],w=PS["Effect.Exception"],E=PS["Effect.Ref"],y=(PS.Halogen,PS["Halogen.Aff.Driver.Eval"]),M=PS["Halogen.Aff.Driver.State"],C=PS["Halogen.Component"],T=PS["Halogen.Data.OrdBox"],A=PS["Halogen.Query.InputF"],F=(PS.Prelude,E.new({initializers:d.Nil.value,finalizers:d.Nil.value})),H=D.runAff_(i.either(w.throwException)(c.const(e.pure(m.applicativeEffect)(p.unit))));n.runUI=function(n){return function(L){return function(_){var O=function(n){return function(){var e=E.read(n)();return E.write(P.Nothing.value)(n)(),l.for_(m.applicativeEffect)(l.foldableMaybe)(e)(function(n){return H(l.traverse_(D.applicativeAff)(d.foldableList)(a.fork(a.monadForkAff))(s.reverse(n)))})()}},I=function(n){return function(e){return function(r){return function(a){return C.unComponent(function(u){return function(){var i=F(),c=M.initDriverState(u)(r)(e)(a)(i)(),S=E.read(n)();return E.write({initializers:d.Nil.value,finalizers:S.finalizers})(n)(),t.bindFlipped(m.bindEffect)(M.unDriverStateX(function(e){return W(n)(e.selfRef)}))(E.read(c))(),t.bindFlipped(m.bindEffect)(function(n){return function(e){return M.unDriverStateX(function(r){var a=f.map(P.functorMaybe)(function(n){return x(r.selfRef)(A.Query.create(n))})(r.component.initializer);return E.modify_(function(n){return{initializers:new d.Cons(t.discard(t.discardUnit)(D.bindAff)(o.parSequence_(D.parallelAff)(d.foldableList)(s.reverse(n.initializers)))(function(){return t.discard(t.discardUnit)(D.bindAff)(l.sequence_(D.applicativeAff)(l.foldableMaybe)(a))(function(){return g.liftEffect(D.monadEffectAff)(function(){return O(r.pendingQueries)(),O(r.pendingOuts)()})})}),e),finalizers:n.finalizers}})(n)})}}(n)(S.initializers))(E.read(c))(),c}})}}}},W=function(r){return function(o){return function(){var i=E.read(o)(),v=f.map(m.functorEffect)(P.isNothing)(E.read(i.pendingHandlers))();e.when(m.applicativeEffect)(v)(E.write(new P.Just(d.Nil.value))(i.pendingHandlers))(),E.write(S.empty)(i.childrenOut)(),E.write(i.children)(i.childrenIn)();var b=y.queuingHandler(function(n){return f.void(D.functorAff)(x(i.selfRef)(n))})(i.pendingHandlers),g=y.queuingHandler(function(n){return b(A.Query.create(n))})(i.pendingQueries),F=n.render(function(n){return H(b(n))})(function(r){return function(a){return function(u){return function(o){return function(i){return C.unComponentSlot(function(c){return function(s){return function(d){return function(v){return function(b){return function(g){var y=u(c);return function(){var u=E.read(o)(),c=function(){var n=S.pop(T.ordOrdBox)(y)(u);if(n instanceof P.Just)return E.write(n.value0.value1)(o)(),l.for_(m.applicativeEffect)(l.foldableMaybe)(v(d))(function(e){return function(){var t=E.read(n.value0.value0)();return M.unDriverStateX(function(n){return l.for_(m.applicativeEffect)(l.foldableMaybe)(n.prjQuery(e))(function(e){return H(x(n.selfRef)(A.Query.create(e)))})})(t)()}})(),n.value0.value0;if(n instanceof P.Nothing)return I(r)(function(n){return P.maybe(e.pure(D.applicativeAff)(p.unit))(a)(b(n))})(d)(g)(s)();throw new Error("Failed pattern match at Halogen.Aff.Driver line 258, column 14 - line 266, column 92: "+[n.constructor.name])}(),C=f.map(m.functorEffect)(S.member(T.ordOrdBox)(y))(E.read(i))();return e.when(m.applicativeEffect)(C)(h.warn("Halogen: Duplicate slot address was detected during rendering, unexpected results may occur"))(),E.modify_(S.insert(T.ordOrdBox)(y)(c))(i)(),t.bind(m.bindEffect)(E.read(c))(M.renderStateX(m.functorEffect)(function(t){if(t instanceof P.Nothing)return w.throw("Halogen internal error: child was not initialized in renderChild");if(t instanceof P.Just)return e.pure(m.applicativeEffect)(n.renderChild(t.value0));throw new Error("Failed pattern match at Halogen.Aff.Driver line 271, column 37 - line 273, column 50: "+[t.constructor.name])}))()}}}}}}})}}}}}(r)(g)(i.component.mkOrdBox)(i.childrenIn)(i.childrenOut))(i.component.render(i.state))(i.rendering)(),L=E.read(i.childrenOut)();return t.bind(m.bindEffect)(E.read(i.childrenIn))(l.traverse_(m.applicativeEffect)(S.foldableMap)(function(e){return function(){var t=E.read(e)();return M.renderStateX_(m.applicativeEffect)(n.removeChild)(t)(),N(r)(t)()}}))(),E.modify_(function(n){return{rendering:new P.Just(F),children:L,component:n.component,state:n.state,refs:n.refs,childrenIn:n.childrenIn,childrenOut:n.childrenOut,selfRef:n.selfRef,handler:n.handler,pendingQueries:n.pendingQueries,pendingOuts:n.pendingOuts,pendingHandlers:n.pendingHandlers,prjQuery:n.prjQuery,fresh:n.fresh,subscriptions:n.subscriptions,lifecycleHandlers:n.lifecycleHandlers}})(i.selfRef)(),e.when(m.applicativeEffect)(v)(c.flip(u.tailRecM(u.monadRecEffect))(p.unit)(function(n){return function(){var n=E.read(i.pendingHandlers)();E.write(new P.Just(d.Nil.value))(i.pendingHandlers)(),l.traverse_(m.applicativeEffect)(l.foldableMaybe)(function(n){return H(l.traverse_(D.applicativeAff)(d.foldableList)(a.fork(a.monadForkAff))(s.reverse(n)))})(n)();var e=E.read(i.pendingHandlers)();return P.maybe(!1)(s.null)(e)?f.voidLeft(m.functorEffect)(E.write(P.Nothing.value)(i.pendingHandlers))(new u.Done(p.unit))():new u.Loop(p.unit)}}))()}}},N=function(n){return M.unDriverStateX(function(e){return function(){var r;return(r=e,function(){return t.bindFlipped(m.bindEffect)(l.traverse_(m.applicativeEffect)(l.foldableMaybe)(function(n){return H(l.traverse_(D.applicativeAff)(S.foldableMap)(a.fork(a.monadForkAff))(n))}))(E.read(r.subscriptions))(),E.write(P.Nothing.value)(r.subscriptions)()})(),l.for_(m.applicativeEffect)(l.foldableMaybe)(f.map(P.functorMaybe)(function(n){return x(e.selfRef)(A.Query.create(n))})(e.component.finalizer))(function(e){return E.modify_(function(n){return{initializers:n.initializers,finalizers:new d.Cons(e,n.finalizers)}})(n)})(),l.for_(m.applicativeEffect)(S.foldableMap)(e.children)(t.composeKleisliFlipped(m.bindEffect)(N(n))(E.read))()}})},x=function(n){return y.eval(W)(n)};return t.bind(D.bindAff)(g.liftEffect(D.monadEffectAff)(F))(function(n){return t.bind(D.bindAff)(g.liftEffect(D.monadEffectAff)(E.new(0)))(function(u){return y.handleLifecycle(n)(function(){var o,c=E.new(S.empty)();return t.bind(m.bindEffect)(t.bind(m.bindEffect)(I(n)((o=c,function(n){return t.bind(D.bindAff)(g.liftEffect(D.monadEffectAff)(E.read(o)))(function(e){return l.traverse_(D.applicativeAff)(S.foldableMap)(a.fork(a.monadForkAff))(f.map(S.functorMap)(b.put(n))(e))})}))(_)(P.Just.create)(L))(E.read))(M.unDriverStateX(function(n){return e.pure(m.applicativeEffect)({query:(l=n.selfRef,function(n){return function(e){var t=n(e);if(t instanceof P.Just)return x(l)(new A.Query(t.value0));if(t instanceof P.Nothing)return g.liftEffect(D.monadEffectAff)(w.throwException(w.error("Halogen internal error: query projection failed in runUI'")));throw new Error("Failed pattern match at Halogen.Aff.Driver line 136, column 5 - line 138, column 113: "+[t.constructor.name])}})(n.prjQuery),subscribe:(o=u,function(n){return function(e){return t.bind(D.bindAff)(b.empty)(function(u){return t.bind(D.bindAff)(g.liftEffect(D.monadEffectAff)(function(){var e=E.read(o)();return E.modify_(function(n){return n+1|0})(o)(),E.modify_(S.insert(v.ordInt)(e)(u))(n)(),e}))(function(o){var l=r.producer(D.monadAff)(f.map(D.functorAff)(i.Left.create)(b.take(u)));return f.void(D.functorAff)(a.fork(a.monadForkAff)(t.discard(t.discardUnit)(D.bindAff)(r.runProcess(D.monadRecAff)(r.connect(D.monadRecAff)(D.parallelAff)(l)(e)))(function(){return t.discard(t.discardUnit)(D.bindAff)(g.liftEffect(D.monadEffectAff)(E.modify_(S.delete(v.ordInt)(o))(n)))(function(){return b.kill(w.error("ended"))(u)})})))})})}})(c)});var o,l}))()})})})}}}}(PS["Halogen.Aff.Driver"]=PS["Halogen.Aff.Driver"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=(PS["Control.Monad.Error.Class"],PS["Control.Semigroupoid"],PS["Data.Either"]),a=PS["Data.Function"],u=(PS["Data.Functor"],PS["Data.Maybe"]),o=PS["Data.Unit"],i=PS.Effect,l=PS["Effect.Aff"],c=PS["Effect.Class"],f=PS["Effect.Exception"],s=(PS.Prelude,PS["Web.DOM.ParentNode"]),d=(PS["Web.Event.EventTarget"],PS["Web.HTML"]),S=(PS["Web.HTML.Event.EventTypes"],PS["Web.HTML.HTMLDocument"]),P=(PS["Web.HTML.HTMLDocument.ReadyState"],PS["Web.HTML.HTMLElement"]),v=PS["Web.HTML.Window"],p=l.runAff_(r.either(f.throwException)(a.const(e.pure(i.applicativeEffect)(o.unit))));n.selectElement=function(n){return t.bind(l.bindAff)(c.liftEffect(l.monadEffectAff)(t.bindFlipped(i.bindEffect)(t.composeKleisliFlipped(i.bindEffect)(function(e){return s.querySelector(n)(S.toParentNode(e))})(v.document))(d.window)))(function(n){return e.pure(l.applicativeAff)(t.bindFlipped(u.bindMaybe)(P.fromElement)(n))})},n.runHalogenAff=p}(PS["Halogen.Aff.Util"]=PS["Halogen.Aff.Util"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"];var e,t=PS["Data.Array"],r=(PS["Data.Eq"],PS["Data.Function.Uncurried"],PS["Data.Maybe"]),a=PS["Data.Nullable"],u=PS["Data.Tuple"],o=PS.Effect,i=(PS["Effect.Uncurried"],PS["Halogen.VDom.Machine"]),l=PS["Halogen.VDom.Types"],c=PS["Halogen.VDom.Util"],f=(PS.Prelude,PS["Web.DOM.Document"],PS["Web.DOM.Element"]),s=(PS["Web.DOM.Node"],function(n,e){return n.value1===e.value1&&(n.value0 instanceof r.Just&&e.value0 instanceof r.Just&&n.value0.value0===e.value0.value0||n.value0 instanceof r.Nothing&&e.value0 instanceof r.Nothing)}),d=(e=function(n,t){return function(r){if(r instanceof l.Grafted)return e(n,t)(l.runGraft(r.value0));if(r instanceof l.Widget){var a=t.value1(r.value0);return new i.Step(a.value0,e(n,a),a.value2)}return t.value2(),n(r)}},function(n,t,r){var a=n.buildWidget(n)(r);return new i.Step(a.value0,e(t,a),a.value2)}),S=function(){var n=function(e,t,r,a){return function(u){if(u instanceof l.Grafted)return n(e,t,r,a)(l.runGraft(u.value0));if(u instanceof l.Text){var o=new i.Step(r,n(e,t,r,u.value0),t);return a===u.value0?o:(c.setTextContent(u.value0,r),o)}return t(),e(u)}};return function(e,t,r){var a,u=c.createTextNode(r,e.document),o=(a=u,function(){var n=c.parentNode(a);return c.removeChild(a,n)});return new i.Step(u,n(t,o,u,r),o)}}(),P=function(){var n=function(n,e,t){return function(){var r=c.parentNode(n);return c.removeChild(n,r),c.forInE(t,function(n,e){return e.value2()}),i.halt(e)()}},e=function(r,a,o,f,d,S,P){return function(v){if(v instanceof l.Grafted)return e(r,a,o,f,d,S,P)(l.runGraft(v.value0));if(v instanceof l.Keyed&&s(d,v.value0)){var p=t.length(v.value1);if(0===P&&0===p){var m=i.step(f)(v.value0.value2),D=n(o,m,S);return new i.Step(o,e(r,D,o,m,v.value0,S,0),D)}m=c.diffWithKeyAndIxE(S,v.value1,u.fst,function(n,e,t,r){var a=t.value1(r.value1);return c.insertChildIx(e,a.value0,o),a},function(n,e){return e.value2()},function(n,e,t){var a=r(t.value1);return c.insertChildIx(e,a.value0,o),a});var b=i.step(f)(v.value0.value2);D=n(o,b,m);return new i.Step(o,e(r,D,o,b,v.value0,m,p),D)}return a(),r(v)}};return function(r,o,l,s){var d=c.createElement(a.toNullable(l.value0),l.value1,r.document),S=f.toNode(d),P=c.strMapWithIxE(s,u.fst,function(n,e,t){var r=o(t.value1);return c.insertChildIx(e,r.value0,S),r}),v=r.buildAttributes(d)(l.value2),p=n(S,v,P);return new i.Step(S,e(o,p,S,v,l,P,t.length(s)),p)}}(),v=function(){var n=function(n,e,t){return function(){var r=c.parentNode(n);return c.removeChild(n,r),o.foreachE(t)(i.halt)(),i.halt(e)()}},e=function(r,a,u,o,f,d){return function(S){if(S instanceof l.Grafted)return e(r,a,u,o,f,d)(l.runGraft(S.value0));if(S instanceof l.Elem&&s(f,S.value0)){var P=t.length(S.value1);if(0===t.length(d)&&0===P){var v=i.step(o)(S.value0.value2),p=n(u,v,d);return new i.Step(u,e(r,p,u,v,S.value0,d),p)}v=c.diffWithIxE(d,S.value1,function(n,e,t){var r=e.value1(t);return c.insertChildIx(n,r.value0,u),r},function(n,e){return e.value2()},function(n,e){var t=r(e);return c.insertChildIx(n,t.value0,u),t});var m=i.step(o)(S.value0.value2);p=n(u,m,v);return new i.Step(u,e(r,p,u,m,S.value0,v),p)}return a(),r(S)}};return function(t,r,u,o){var l=c.createElement(a.toNullable(u.value0),u.value1,t.document),s=f.toNode(l),d=c.forE(o,function(n,e){var t=r(e);return c.insertChildIx(n,t.value0,s),t}),S=t.buildAttributes(l)(u.value2),P=n(s,S,d);return new i.Step(s,e(r,P,s,S,u,d),P)}}();n.buildVDom=function(n){var e=function(t){if(t instanceof l.Text)return S(n,e,t.value0);if(t instanceof l.Elem)return v(n,e,t.value0,t.value1);if(t instanceof l.Keyed)return P(n,e,t.value0,t.value1);if(t instanceof l.Widget)return d(n,e,t.value0);if(t instanceof l.Grafted)return e(l.runGraft(t.value0));throw new Error("Failed pattern match at Halogen.VDom.DOM line 58, column 27 - line 63, column 52: "+[t.constructor.name])};return e},n.buildText=S,n.buildElem=v,n.buildKeyed=P,n.buildWidget=d}(PS["Halogen.VDom.DOM"]=PS["Halogen.VDom.DOM"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=PS["Control.Category"],a=PS["Data.Foldable"],u=(PS["Data.Function"],PS["Data.Functor"]),o=PS["Data.HeytingAlgebra"],i=PS["Data.Maybe"],l=PS["Data.Unit"],c=PS.Effect,f=PS["Effect.Aff"],s=PS["Effect.Class"],d=PS["Effect.Ref"],S=(PS["Effect.Uncurried"],PS["Halogen.Aff.Driver"]),P=PS["Halogen.Aff.Driver.State"],v=(PS["Halogen.Component"],PS["Halogen.HTML.Core"],PS["Halogen.Query.InputF"],PS["Halogen.VDom"],PS["Halogen.VDom.DOM"]),p=PS["Halogen.VDom.DOM.Prop"],m=PS["Halogen.VDom.Machine"],D=(PS.Prelude,PS["Unsafe.Reference"]),b=(PS["Web.DOM.Document"],PS["Web.DOM.Element"],PS["Web.DOM.Node"]),g=PS["Web.HTML"],h=PS["Web.HTML.HTMLDocument"],w=PS["Web.HTML.HTMLElement"],E=PS["Web.HTML.Window"],y=function(n){return function(){var e=b.parentNode(n.node)();return a.traverse_(c.applicativeEffect)(a.foldableMaybe)(function(e){return b.removeChild(n.node)(e)})(e)()}},M=function(n){return function(t){return{render:function(r){return function(a){return function(f){return function(s){if(s instanceof i.Nothing)return function(){var o=d.new(a)(),i=function(n){return function(t){return function(r){var a=P.unRenderStateX(function(n){return n.node}),u=e.pure(c.applicativeEffect)(l.unit),o=function(n){var e=d.read(t)()(n)(),r=a(e);return new m.Step(r,o,u)};return{buildWidget:function(n){return function(n){var e=d.read(t)()(n)(),r=a(e);return new m.Step(r,o,u)}},buildAttributes:p.buildProp(n),document:r}}}}(r)(o)(n),s=v.buildVDom(i)(f),S=m.extract(s);return u.void(c.functorEffect)(b.appendChild(S)(w.toNode(t)))(),{machine:s,node:S,renderChildRef:o}};if(s instanceof i.Just)return function(){d.write(a)(s.value0.renderChildRef)();var n=b.parentNode(s.value0.node)(),t=b.nextSibling(s.value0.node)(),r=m.step(s.value0.machine)(f),S=m.extract(r);return e.when(c.applicativeEffect)(o.not(o.heytingAlgebraFunction(o.heytingAlgebraFunction(o.heytingAlgebraBoolean)))(D.unsafeRefEq)(s.value0.node)(S))(function(n){return function(t){return function(r){return t instanceof i.Just&&r instanceof i.Just?u.void(c.functorEffect)(b.insertBefore(n)(t.value0)(r.value0)):t instanceof i.Nothing&&r instanceof i.Just?u.void(c.functorEffect)(b.appendChild(n)(r.value0)):e.pure(c.applicativeEffect)(l.unit)}}}(S)(t)(n))(),{machine:r,node:S,renderChildRef:s.value0.renderChildRef}};throw new Error("Failed pattern match at Halogen.VDom.Driver line 118, column 5 - line 134, column 80: "+[s.constructor.name])}}}},renderChild:r.identity(r.categoryFn),removeChild:y}}};n.runUI=function(n){return function(e){return function(r){return t.bind(f.bindAff)(s.liftEffect(f.monadEffectAff)(u.map(c.functorEffect)(h.toDocument)(t.bindFlipped(c.bindEffect)(E.document)(g.window))))(function(t){return S.runUI(M(t)(r))(n)(e)})}}}}(PS["Halogen.VDom.Driver"]=PS["Halogen.VDom.Driver"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Data.Unit"],r=PS.Effect,a=(PS.Prelude,e.pure(r.applicativeEffect)(t.unit));n.main=a}(PS.Main=PS.Main||{}),function(n){"use strict";var e=PS["Component.Add"],t=PS["Component.BList"],r=PS["Control.Bind"],a=PS["Data.Foldable"],u=(PS["Data.Function"],PS["Data.Functor"]),o=PS["Data.Unit"],i=(PS.Effect,PS["Effect.Aff"]),l=PS["Effect.Class"],c=(PS["Halogen.Aff"],PS["Halogen.Aff.Util"]),f=PS["Halogen.VDom.Driver"],s=(PS.Model,PS.Prelude,PS["Web.DOM.Element"]),d=(PS["Web.DOM.ParentNode"],PS["Web.HTML.HTMLElement"]),S=r.bind(i.bindAff)(c.selectElement(".user_footer"))(a.traverse_(i.applicativeAff)(a.foldableMaybe)(function(n){return l.liftEffect(i.monadEffectAff)(s.removeAttribute("hidden")(d.toElement(n)))}));n.renderBookmarks=function(n){return function(e){return c.runHalogenAff(r.bind(i.bindAff)(c.selectElement(n))(a.traverse_(i.applicativeAff)(a.foldableMaybe)(function(n){return r.discard(r.discardUnit)(i.bindAff)(u.void(i.functorAff)(f.runUI(t.blist(e))(o.unit)(n)))(function(){return S})})))}},n.renderAddForm=function(n){return function(t){return c.runHalogenAff(r.bind(i.bindAff)(c.selectElement(n))(a.traverse_(i.applicativeAff)(a.foldableMaybe)(function(n){return f.runUI(e.addbmark(t))(o.unit)(n)})))}},n.showFooter=S}(PS.User=PS.User||{});
+var PS={};!function(n){"use strict";(PS["Control.Bind"]=PS["Control.Bind"]||{}).arrayBind=function(n){return function(e){for(var t=[],r=0,a=n.length;r<a;r++)Array.prototype.push.apply(t,e(n[r]));return t}}}(),function(n){"use strict";(PS["Control.Apply"]=PS["Control.Apply"]||{}).arrayApply=function(n){return function(e){for(var t=n.length,r=e.length,a=new Array(t*r),u=0,o=0;o<t;o++)for(var i=n[o],l=0;l<r;l++)a[u++]=i(e[l]);return a}}}(),function(n){"use strict";var e=function(n){this.compose=n},t=new e(function(n){return function(e){return function(t){return n(e(t))}}});n.compose=function(n){return n.compose},n.Semigroupoid=e,n.semigroupoidFn=t}(PS["Control.Semigroupoid"]=PS["Control.Semigroupoid"]||{}),function(n){"use strict";var e=PS["Control.Semigroupoid"],t=function(n,e){this.Semigroupoid0=n,this.identity=e},r=new t(function(){return e.semigroupoidFn},function(n){return n});n.Category=t,n.identity=function(n){return n.identity},n.categoryFn=r}(PS["Control.Category"]=PS["Control.Category"]||{}),function(n){"use strict";(PS["Data.Boolean"]=PS["Data.Boolean"]||{}).otherwise=!0}(),function(n){"use strict";(PS["Data.Eq"]=PS["Data.Eq"]||{}).refEq=function(n){return function(e){return n===e}}}(),function(n){"use strict";n.boolConj=function(n){return function(e){return n&&e}},n.boolDisj=function(n){return function(e){return n||e}},n.boolNot=function(n){return!n}}(PS["Data.HeytingAlgebra"]=PS["Data.HeytingAlgebra"]||{}),function(n){"use strict";PS["Data.Symbol"];var e=function(){function n(){}return n.value=new n,n}();n.IsSymbol=function(n){this.reflectSymbol=n},n.reflectSymbol=function(n){return n.reflectSymbol},n.SProxy=e}(PS["Data.Symbol"]=PS["Data.Symbol"]||{}),function(n){"use strict";(PS["Data.Unit"]=PS["Data.Unit"]||{}).unit={}}(),function(n){"use strict";n.showIntImpl=function(n){return n.toString()},n.showStringImpl=function(n){var e=n.length;return'"'+n.replace(/[\0-\x1F\x7F"\\]/g,function(t,r){switch(t){case'"':case"\\":return"\\"+t;case"":return"\\a";case"\b":return"\\b";case"\f":return"\\f";case"\n":return"\\n";case"\r":return"\\r";case"\t":return"\\t";case"\v":return"\\v"}var a=r+1,u=a<e&&n[a]>="0"&&n[a]<="9"?"\\&":"";return"\\"+t.charCodeAt(0).toString(10)+u})+'"'}}(PS["Data.Show"]=PS["Data.Show"]||{}),function(n){"use strict";(PS["Record.Unsafe"]=PS["Record.Unsafe"]||{}).unsafeGet=function(n){return function(e){return e[n]}}}(),function(n){"use strict";var e=PS["Record.Unsafe"];n.unsafeGet=e.unsafeGet}(PS["Record.Unsafe"]=PS["Record.Unsafe"]||{}),function(n){"use strict";var e=PS["Data.Show"],t=(PS["Data.Symbol"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n){this.show=n}),r=new t(e.showStringImpl),a=new t(e.showIntImpl);n.Show=t,n.show=function(n){return n.show},n.showInt=a,n.showString=r}(PS["Data.Show"]=PS["Data.Show"]||{}),function(n){"use strict";var e=PS["Data.Unit"];PS["Data.Show"];n.unit=e.unit}(PS["Data.Unit"]=PS["Data.Unit"]||{}),function(n){"use strict";var e=PS["Data.HeytingAlgebra"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.Row"],PS["Type.Data.RowList"],function(n,e,t,r,a,u){this.conj=n,this.disj=e,this.ff=t,this.implies=r,this.not=a,this.tt=u}),r=function(n){return n.tt},a=function(n){return n.not},u=function(n){return n.implies},o=function(n){return n.ff},i=function(n){return n.disj},l=new t(e.boolConj,e.boolDisj,!1,function(n){return function(e){return i(l)(a(l)(n))(e)}},e.boolNot,!0),c=function(n){return n.conj};n.HeytingAlgebra=t,n.tt=r,n.ff=o,n.implies=u,n.conj=c,n.disj=i,n.not=a,n.heytingAlgebraBoolean=l,n.heytingAlgebraFunction=function(n){return new t(function(e){return function(t){return function(r){return c(n)(e(r))(t(r))}}},function(e){return function(t){return function(r){return i(n)(e(r))(t(r))}}},function(e){return o(n)},function(e){return function(t){return function(r){return u(n)(e(r))(t(r))}}},function(e){return function(t){return a(n)(e(t))}},function(e){return r(n)})}}(PS["Data.HeytingAlgebra"]=PS["Data.HeytingAlgebra"]||{}),function(n){"use strict";var e=PS["Data.Eq"],t=(PS["Data.HeytingAlgebra"],PS["Data.Symbol"],PS["Data.Unit"],PS["Data.Void"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n){this.eq=n}),r=new t(function(n){return function(n){return!0}}),a=new t(e.refEq),u=new t(e.refEq),o=new t(e.refEq);n.Eq=t,n.eq=function(n){return n.eq},n.eqInt=u,n.eqChar=o,n.eqString=a,n.eqVoid=r}(PS["Data.Eq"]=PS["Data.Eq"]||{}),function(n){"use strict";(PS["Data.Ord.Unsafe"]=PS["Data.Ord.Unsafe"]||{}).unsafeCompareImpl=function(n){return function(e){return function(t){return function(r){return function(a){return r<a?n:r===a?e:t}}}}}}(),function(n){"use strict";n.concatString=function(n){return function(e){return n+e}},n.concatArray=function(n){return function(e){return 0===n.length?e:0===e.length?n:n.concat(e)}}}(PS["Data.Semigroup"]=PS["Data.Semigroup"]||{}),function(n){"use strict";var e=PS["Data.Semigroup"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Data.Void"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n){this.append=n}),r=new t(e.concatString),a=new t(e.concatArray),u=function(n){return n.append};n.Semigroup=t,n.append=u,n.semigroupString=r,n.semigroupFn=function(n){return new t(function(e){return function(t){return function(r){return u(n)(e(r))(t(r))}}})},n.semigroupArray=a}(PS["Data.Semigroup"]=PS["Data.Semigroup"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.Semigroup"],PS["Data.Show"];var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}();n.LT=e,n.GT=t,n.EQ=r}(PS["Data.Ordering"]=PS["Data.Ordering"]||{}),function(n){"use strict";var e=PS["Data.Ord.Unsafe"],t=PS["Data.Ordering"],r=e.unsafeCompareImpl(t.LT.value)(t.EQ.value)(t.GT.value);n.unsafeCompare=r}(PS["Data.Ord.Unsafe"]=PS["Data.Ord.Unsafe"]||{}),function(n){"use strict";(PS["Data.Ring"]=PS["Data.Ring"]||{}).intSub=function(n){return function(e){return n-e|0}}}(),function(n){"use strict";n.intAdd=function(n){return function(e){return n+e|0}},n.intMul=function(n){return function(e){return n*e|0}}}(PS["Data.Semiring"]=PS["Data.Semiring"]||{}),function(n){"use strict";var e=PS["Data.Semiring"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.Row"],PS["Type.Data.RowList"],function(n,e,t,r){this.add=n,this.mul=e,this.one=t,this.zero=r}),r=new t(e.intAdd,e.intMul,1,0);n.Semiring=t,n.add=function(n){return n.add},n.zero=function(n){return n.zero},n.mul=function(n){return n.mul},n.one=function(n){return n.one},n.semiringInt=r}(PS["Data.Semiring"]=PS["Data.Semiring"]||{}),function(n){"use strict";var e=PS["Data.Ring"],t=PS["Data.Semiring"],r=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n,e){this.Semiring0=n,this.sub=e}),a=new r(function(){return t.semiringInt},e.intSub);n.Ring=r,n.sub=function(n){return n.sub},n.ringInt=a}(PS["Data.Ring"]=PS["Data.Ring"]||{}),function(n){"use strict";PS["Data.Ord"];var e=PS["Data.Eq"],t=PS["Data.Ord.Unsafe"],r=PS["Data.Ordering"],a=(PS["Data.Ring"],PS["Data.Semiring"],PS["Data.Unit"],PS["Data.Void"],function(n,e){this.Eq0=n,this.compare=e}),u=new a(function(){return e.eqVoid},function(n){return function(n){return r.EQ.value}}),o=new a(function(){return e.eqString},t.unsafeCompare),i=new a(function(){return e.eqInt},t.unsafeCompare),l=new a(function(){return e.eqChar},t.unsafeCompare);n.Ord=a,n.compare=function(n){return n.compare},n.ordInt=i,n.ordString=o,n.ordChar=l,n.ordVoid=u}(PS["Data.Ord"]=PS["Data.Ord"]||{}),function(n){"use strict";PS["Control.Category"],PS["Data.Boolean"],PS["Data.Ord"],PS["Data.Ring"];n.flip=function(n){return function(e){return function(t){return n(t)(e)}}},n.const=function(n){return function(e){return n}},n.on=function(n){return function(e){return function(t){return function(r){return n(e(t))(e(r))}}}}}(PS["Data.Function"]=PS["Data.Function"]||{}),function(n){"use strict";(PS["Data.Functor"]=PS["Data.Functor"]||{}).arrayMap=function(n){return function(e){for(var t=e.length,r=new Array(t),a=0;a<t;a++)r[a]=n(e[a]);return r}}}(),function(n){"use strict";var e=PS["Data.Functor"],t=PS["Control.Semigroupoid"],r=PS["Data.Function"],a=PS["Data.Unit"],u=function(n){this.map=n},o=function(n){return n.map},i=new u(t.compose(t.semigroupoidFn)),l=new u(e.arrayMap);n.Functor=u,n.map=o,n.void=function(n){return o(n)(r.const(a.unit))},n.voidLeft=function(n){return function(e){return function(t){return o(n)(r.const(t))(e)}}},n.functorFn=i,n.functorArray=l}(PS["Data.Functor"]=PS["Data.Functor"]||{}),function(n){"use strict";var e=PS["Control.Apply"],t=PS["Control.Category"],r=PS["Data.Function"],a=PS["Data.Functor"],u=function(n,e){this.Functor0=n,this.apply=e},o=new u(function(){return a.functorArray},e.arrayApply),i=function(n){return n.apply};n.Apply=u,n.apply=i,n.applySecond=function(n){return function(e){return function(u){return i(n)(a.map(n.Functor0())(r.const(t.identity(t.categoryFn)))(e))(u)}}},n.lift2=function(n){return function(e){return function(t){return function(r){return i(n)(a.map(n.Functor0())(e)(t))(r)}}}},n.applyArray=o}(PS["Control.Apply"]=PS["Control.Apply"]||{}),function(n){"use strict";var e=PS["Control.Apply"],t=(PS["Data.Functor"],PS["Data.Unit"]),r=function(n){return n.pure};n.Applicative=function(n,e){this.Apply0=n,this.pure=e},n.pure=r,n.liftA1=function(n){return function(t){return function(a){return e.apply(n.Apply0())(r(n)(t))(a)}}},n.when=function(n){return function(e){return function(a){if(e)return a;if(!e)return r(n)(t.unit);throw new Error("Failed pattern match at Control.Applicative line 57, column 1 - line 57, column 63: "+[e.constructor.name,a.constructor.name])}}}}(PS["Control.Applicative"]=PS["Control.Applicative"]||{}),function(n){"use strict";var e=PS["Control.Bind"],t=(PS["Control.Applicative"],PS["Control.Apply"]),r=PS["Control.Category"],a=PS["Data.Function"],u=(PS["Data.Functor"],PS["Data.Unit"],function(n,e){this.Apply0=n,this.bind=e}),o=function(n){this.discard=n},i=new u(function(){return t.applyArray},e.arrayBind),l=function(n){return n.bind},c=function(n){return a.flip(l(n))},f=new o(function(n){return l(n)});n.Bind=u,n.bind=l,n.bindFlipped=c,n.Discard=o,n.discard=function(n){return n.discard},n.join=function(n){return function(e){return l(n)(e)(r.identity(r.categoryFn))}},n.composeKleisli=function(n){return function(e){return function(t){return function(r){return l(n)(e(r))(t)}}}},n.composeKleisliFlipped=function(n){return function(e){return function(t){return function(r){return c(n)(e)(t(r))}}}},n.bindArray=i,n.discardUnit=f}(PS["Control.Bind"]=PS["Control.Bind"]||{}),function(n){"use strict";n.length=function(n){return n.length},n.cons=function(n){return function(e){return[n].concat(e)}},n.snoc=function(n){return function(e){var t=n.slice();return t.push(e),t}},n.concat=function(n){if(n.length<=1e4)return Array.prototype.concat.apply([],n);for(var e=[],t=0,r=n.length;t<r;t++)for(var a=n[t],u=0,o=a.length;u<o;u++)e.push(a[u]);return e},n.filter=function(n){return function(e){return e.filter(n)}},n.slice=function(n){return function(e){return function(t){return t.slice(n,e)}}},n.drop=function(n){return function(e){return n<1?e:e.slice(n)}}}(PS["Data.Array"]=PS["Data.Array"]||{}),function(n){"use strict";PS["Data.Functor"],PS["Data.Semigroup"];n.Alt=function(n,e){this.Functor0=n,this.alt=e},n.alt=function(n){return n.alt}}(PS["Control.Alt"]=PS["Control.Alt"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Apply"],PS["Control.Bind"]);PS["Data.Functor"],PS["Data.Unit"];n.Monad=function(n,e){this.Applicative0=n,this.Bind1=e},n.ap=function(n){return function(r){return function(a){return t.bind(n.Bind1())(r)(function(r){return t.bind(n.Bind1())(a)(function(t){return e.pure(n.Applicative0())(r(t))})})}}}}(PS["Control.Monad"]=PS["Control.Monad"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=function(n){return n.bimap};n.bimap=t,n.Bifunctor=function(n){this.bimap=n},n.rmap=function(n){return t(n)(e.identity(e.categoryFn))}}(PS["Data.Bifunctor"]=PS["Data.Bifunctor"]||{}),function(n){"use strict";n.topInt=2147483647,n.bottomInt=-2147483648,n.topChar=String.fromCharCode(65535),n.bottomChar=String.fromCharCode(0)}(PS["Data.Bounded"]=PS["Data.Bounded"]||{}),function(n){"use strict";var e=PS["Data.Bounded"],t=PS["Data.Ord"],r=(PS["Data.Ordering"],PS["Data.Unit"],function(n,e,t){this.Ord0=n,this.bottom=e,this.top=t}),a=new r(function(){return t.ordInt},e.bottomInt,e.topInt),u=new r(function(){return t.ordChar},e.bottomChar,e.topChar);n.Bounded=r,n.bottom=function(n){return n.bottom},n.top=function(n){return n.top},n.boundedInt=a,n.boundedChar=u}(PS["Data.Bounded"]=PS["Data.Bounded"]||{}),function(n){"use strict";n.foldrArray=function(n){return function(e){return function(t){for(var r=e,a=t.length-1;a>=0;a--)r=n(t[a])(r);return r}}},n.foldlArray=function(n){return function(e){return function(t){for(var r=e,a=t.length,u=0;u<a;u++)r=n(r)(t[u]);return r}}}}(PS["Data.Foldable"]=PS["Data.Foldable"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Data.Functor"];n.Plus=function(n,e){this.Alt0=n,this.empty=e},n.empty=function(n){return n.empty}}(PS["Control.Plus"]=PS["Control.Plus"]||{}),function(n){"use strict";n.intDegree=function(n){return Math.min(Math.abs(n),2147483647)},n.intDiv=function(n){return function(e){return 0===e?0:e>0?Math.floor(n/e):-Math.floor(n/-e)}},n.intMod=function(n){return function(e){if(0===e)return 0;var t=Math.abs(e);return(n%t+t)%t}}}(PS["Data.EuclideanRing"]=PS["Data.EuclideanRing"]||{}),function(n){"use strict";var e=PS["Data.Ring"],t=(PS["Data.Semiring"],PS["Data.Symbol"],PS["Data.Unit"],function(n){this.Ring0=n}),r=new t(function(){return e.ringInt});n.CommutativeRing=t,n.commutativeRingInt=r}(PS["Data.CommutativeRing"]=PS["Data.CommutativeRing"]||{}),function(n){"use strict";var e=PS["Data.EuclideanRing"],t=(PS["Data.BooleanAlgebra"],PS["Data.CommutativeRing"]),r=(PS["Data.Eq"],PS["Data.HeytingAlgebra"],PS["Data.Ring"],PS["Data.Semiring"],function(n,e,t,r){this.CommutativeRing0=n,this.degree=e,this.div=t,this.mod=r}),a=new r(function(){return t.commutativeRingInt},e.intDegree,e.intDiv,e.intMod);n.EuclideanRing=r,n.degree=function(n){return n.degree},n.div=function(n){return n.div},n.mod=function(n){return n.mod},n.euclideanRingInt=a}(PS["Data.EuclideanRing"]=PS["Data.EuclideanRing"]||{}),function(n){"use strict";PS["Data.Boolean"],PS["Data.Eq"],PS["Data.EuclideanRing"],PS["Data.Ord"],PS["Data.Ordering"];var e=PS["Data.Semigroup"],t=(PS["Data.Symbol"],PS["Data.Unit"],PS["Record.Unsafe"],PS["Type.Data.RowList"],function(n,e){this.Semigroup0=n,this.mempty=e}),r=new t(function(){return e.semigroupString},""),a=new t(function(){return e.semigroupArray},[]),u=function(n){return n.mempty};n.Monoid=t,n.mempty=u,n.guard=function(n){return function(e){return function(t){if(e)return t;if(!e)return u(n);throw new Error("Failed pattern match at Data.Monoid line 74, column 1 - line 74, column 49: "+[e.constructor.name,t.constructor.name])}}},n.monoidFn=function(n){return new t(function(){return e.semigroupFn(n.Semigroup0())},function(e){return u(n)})},n.monoidString=r,n.monoidArray=a}(PS["Data.Monoid"]=PS["Data.Monoid"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"];var e=PS["Control.Apply"],t=PS["Control.Bind"],r=PS["Control.Category"],a=(PS["Control.Extend"],PS["Control.Monad"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Data.Bounded"],PS["Data.Eq"],PS["Data.Function"]),u=PS["Data.Functor"],o=(PS["Data.Functor.Invariant"],PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.Unit"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(n){return function(e){return function(t){if(t instanceof o)return n;if(t instanceof i)return e(t.value0);throw new Error("Failed pattern match at Data.Maybe line 218, column 1 - line 218, column 51: "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},c=l(!0)(a.const(!1)),f=l(!1)(a.const(!0)),s=new u.Functor(function(n){return function(e){return e instanceof i?new i(n(e.value0)):o.value}}),d=new e.Apply(function(){return s},function(n){return function(e){if(n instanceof i)return u.map(s)(n.value0)(e);if(n instanceof o)return o.value;throw new Error("Failed pattern match at Data.Maybe line 67, column 1 - line 67, column 35: "+[n.constructor.name,e.constructor.name])}}),S=new t.Bind(function(){return d},function(n){return function(e){if(n instanceof i)return e(n.value0);if(n instanceof o)return o.value;throw new Error("Failed pattern match at Data.Maybe line 126, column 1 - line 126, column 33: "+[n.constructor.name,e.constructor.name])}});n.Nothing=o,n.Just=i,n.maybe=l,n.fromMaybe=function(n){return l(n)(r.identity(r.categoryFn))},n.isJust=f,n.isNothing=c,n.fromJust=function(n){return function(n){return function(){if(n instanceof i)return n.value0;throw new Error("Failed pattern match at Data.Maybe line 269, column 1 - line 269, column 46: "+[n.constructor.name])}()}},n.functorMaybe=s,n.applyMaybe=d,n.bindMaybe=S}(PS["Data.Maybe"]=PS["Data.Maybe"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad"],PS["Data.Bounded"],PS["Data.Eq"],PS["Data.Functor"];var e=PS["Data.HeytingAlgebra"],t=PS["Data.Monoid"],r=(PS["Data.Ord"],PS["Data.Semigroup"]),a=(PS["Data.Semiring"],PS["Data.Show"],PS.Prelude,function(n){return new r.Semigroup(function(t){return function(r){return e.disj(n)(t)(r)}})});n.Disj=function(n){return n},n.semigroupDisj=a,n.monoidDisj=function(n){return new t.Monoid(function(){return a(n)},e.ff(n))}}(PS["Data.Monoid.Disj"]=PS["Data.Monoid.Disj"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Function"];var e=PS["Data.Functor"],t=(PS["Data.Monoid.Additive"],PS["Data.Monoid.Conj"],PS["Data.Monoid.Disj"]),r=(PS["Data.Monoid.Dual"],PS["Data.Monoid.Endo"],PS["Data.Monoid.Multiplicative"],PS["Data.Semigroup.First"],PS["Data.Semigroup.Last"],PS.Prelude,function(n,e){this.unwrap=n,this.wrap=e}),a=function(n){return n.wrap},u=function(n){return n.unwrap},o=new r(function(n){return n},t.Disj);n.unwrap=u,n.wrap=a,n.Newtype=r,n.alaF=function(n){return function(t){return function(r){return function(o){return function(i){return function(i){return function(l){return e.map(t)(u(o))(i(e.map(n)(a(r))(l)))}}}}}}},n.newtypeDisj=o}(PS["Data.Newtype"]=PS["Data.Newtype"]||{}),function(n){"use strict";var e=PS["Data.Foldable"],t=(PS["Control.Alt"],PS["Control.Applicative"]),r=PS["Control.Apply"],a=(PS["Control.Bind"],PS["Control.Category"]),u=(PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Function"]),o=PS["Data.Functor"],i=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),l=(PS["Data.Maybe.First"],PS["Data.Maybe.Last"],PS["Data.Monoid"]),c=(PS["Data.Monoid.Additive"],PS["Data.Monoid.Conj"],PS["Data.Monoid.Disj"]),f=(PS["Data.Monoid.Dual"],PS["Data.Monoid.Endo"],PS["Data.Monoid.Multiplicative"],PS["Data.Newtype"]),s=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"]),d=(PS["Data.Semiring"],PS["Data.Unit"]),S=(PS.Prelude,function(n,e,t){this.foldMap=n,this.foldl=e,this.foldr=t}),P=function(n){return n.foldr},v=function(n){return function(e){return function(a){return P(e)(function(e){return r.applySecond(n.Apply0())(a(e))})(t.pure(n)(d.unit))}}},p=function(n){return n.foldl},m=new S(function(n){return function(e){return function(t){if(t instanceof i.Nothing)return l.mempty(n);if(t instanceof i.Just)return e(t.value0);throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: "+[e.constructor.name,t.constructor.name])}}},function(n){return function(e){return function(t){if(t instanceof i.Nothing)return e;if(t instanceof i.Just)return n(e)(t.value0);throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},function(n){return function(e){return function(t){if(t instanceof i.Nothing)return e;if(t instanceof i.Just)return n(t.value0)(e);throw new Error("Failed pattern match at Data.Foldable line 129, column 1 - line 129, column 41: "+[n.constructor.name,e.constructor.name,t.constructor.name])}}}),D=function(n){return function(e){return function(t){return P(n)(function(n){return function(r){return s.append(e.Semigroup0())(t(n))(r)}})(l.mempty(e))}}},b=new S(function(n){return D(b)(n)},e.foldlArray,e.foldrArray),g=function(n){return n.foldMap};n.Foldable=S,n.foldr=P,n.foldl=p,n.foldMap=g,n.foldMapDefaultR=D,n.traverse_=v,n.for_=function(n){return function(e){return u.flip(v(n)(e))}},n.sequence_=function(n){return function(e){return v(n)(e)(a.identity(a.categoryFn))}},n.intercalate=function(n){return function(e){return function(t){return function(r){return p(n)(function(n){return function(r){return n.init?{init:!1,acc:r}:{init:!1,acc:s.append(e.Semigroup0())(n.acc)(s.append(e.Semigroup0())(t)(r))}}})({init:!0,acc:l.mempty(e)})(r).acc}}}},n.any=function(n){return function(e){return f.alaF(o.functorFn)(o.functorFn)(f.newtypeDisj)(f.newtypeDisj)(c.Disj)(g(n)(c.monoidDisj(e)))}},n.find=function(n){return function(e){return p(n)(function(n){return function(t){return n instanceof i.Nothing&&e(t)?new i.Just(t):n}})(i.Nothing.value)}},n.foldableArray=b,n.foldableMaybe=m}(PS["Data.Foldable"]=PS["Data.Foldable"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Applicative"];var e=PS["Control.Apply"],t=(PS["Control.Bind"],PS["Control.Extend"],PS["Control.Monad"],PS["Control.Semigroupoid"],PS["Data.Bifoldable"],PS["Data.Bifunctor"]),r=(PS["Data.Bitraversable"],PS["Data.Bounded"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.Functor.Invariant"],PS["Data.Maybe"],PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.Traversable"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=new r.Functor(function(n){return function(e){if(e instanceof a)return new a(e.value0);if(e instanceof u)return new u(n(e.value0));throw new Error("Failed pattern match at Data.Either line 35, column 8 - line 35, column 52: "+[e.constructor.name])}}),i=new t.Bifunctor(function(n){return function(e){return function(t){if(t instanceof a)return new a(n(t.value0));if(t instanceof u)return new u(e(t.value0));throw new Error("Failed pattern match at Data.Either line 40, column 1 - line 40, column 45: "+[n.constructor.name,e.constructor.name,t.constructor.name])}}}),l=new e.Apply(function(){return o},function(n){return function(e){if(n instanceof a)return new a(n.value0);if(n instanceof u)return r.map(o)(n.value0)(e);throw new Error("Failed pattern match at Data.Either line 76, column 1 - line 76, column 41: "+[n.constructor.name,e.constructor.name])}});n.Left=a,n.Right=u,n.either=function(n){return function(e){return function(t){if(t instanceof a)return n(t.value0);if(t instanceof u)return e(t.value0);throw new Error("Failed pattern match at Data.Either line 220, column 1 - line 220, column 64: "+[n.constructor.name,e.constructor.name,t.constructor.name])}}},n.functorEither=o,n.bifunctorEither=i,n.applyEither=l}(PS["Data.Either"]=PS["Data.Either"]||{}),function(n){"use strict";PS["Control.Alt"];var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Lazy"],PS["Control.Monad"]),u=(PS["Data.BooleanAlgebra"],PS["Data.Bounded"],PS["Data.CommutativeRing"],PS["Data.Eq"],PS["Data.EuclideanRing"],PS["Data.Foldable"],PS["Data.Functor"]),o=(PS["Data.Functor.Invariant"],PS["Data.HeytingAlgebra"],PS["Data.Monoid"],PS["Data.Newtype"]),i=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS.Prelude,function(n){return n}),l=new o.Newtype(function(n){return n},i),c=new u.Functor(function(n){return function(e){return n(e)}}),f=new t.Apply(function(){return c},function(n){return function(e){return n(e)}}),s=new r.Bind(function(){return f},function(n){return function(e){return e(n)}}),d=new e.Applicative(function(){return f},i),S=new a.Monad(function(){return d},function(){return s});n.Identity=i,n.newtypeIdentity=l,n.functorIdentity=c,n.applyIdentity=f,n.applicativeIdentity=d,n.bindIdentity=s,n.monadIdentity=S}(PS["Data.Identity"]=PS["Data.Identity"]||{}),function(n){"use strict";n.pureE=function(n){return function(){return n}},n.bindE=function(n){return function(e){return function(){return e(n())()}}},n.foreachE=function(n){return function(e){return function(){for(var t=0,r=n.length;t<r;t++)e(n[t])()}}}}(PS.Effect=PS.Effect||{}),function(n){"use strict";var e=PS.Effect,t=PS["Control.Applicative"],r=PS["Control.Apply"],a=PS["Control.Bind"],u=PS["Control.Monad"],o=PS["Data.Functor"],i=(PS["Data.Monoid"],PS["Data.Semigroup"],PS.Prelude,new u.Monad(function(){return f},function(){return l})),l=new a.Bind(function(){return c},e.bindE),c=new r.Apply(function(){return s},u.ap(i)),f=new t.Applicative(function(){return c},e.pureE),s=new o.Functor(t.liftA1(f));n.functorEffect=s,n.applyEffect=c,n.applicativeEffect=f,n.bindEffect=l,n.monadEffect=i,n.foreachE=e.foreachE}(PS.Effect=PS.Effect||{}),function(n){"use strict";n.new=function(n){return function(){return{value:n}}},n.read=function(n){return function(){return n.value}},n["modify'"]=function(n){return function(e){return function(){var t=n(e.value);return e.value=t.state,t.value}}},n.write=function(n){return function(e){return function(){return e.value=n,{}}}}}(PS["Effect.Ref"]=PS["Effect.Ref"]||{}),function(n){"use strict";var e=PS["Effect.Ref"],t=(PS["Data.Function"],PS["Data.Functor"]),r=PS.Effect,a=(PS.Prelude,function(n){return e["modify'"](function(e){var t=n(e);return{state:t,value:t}})});n.modify=a,n.modify_=function(n){return function(e){return t.void(r.functorEffect)(a(n)(e))}},n.new=e.new,n.read=e.read,n["modify'"]=e["modify'"],n.write=e.write}(PS["Effect.Ref"]=PS["Effect.Ref"]||{}),function(n){"use strict";(PS["Partial.Unsafe"]=PS["Partial.Unsafe"]||{}).unsafePartial=function(n){return n()}}(),function(n){"use strict";(PS["Partial"]=PS["Partial"]||{}).crashWith=function(){return function(n){throw new Error(n)}}}(),function(n){"use strict";var e=PS.Partial;n.crashWith=e.crashWith}(PS.Partial=PS.Partial||{}),function(n){"use strict";var e=PS["Partial.Unsafe"],t=PS.Partial;n.unsafeCrashWith=function(n){return e.unsafePartial(function(e){return t.crashWith(e)(n)})}}(PS["Partial.Unsafe"]=PS["Partial.Unsafe"]||{}),function(n){"use strict";PS["Control.Applicative"];var e=PS["Control.Bind"],t=(PS["Control.Monad"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Either"],PS["Data.Functor"]),r=(PS["Data.Identity"],PS["Data.Maybe"],PS["Data.Unit"],PS.Effect),a=PS["Effect.Ref"],u=(PS["Partial.Unsafe"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(n,e){this.Monad0=n,this.tailRecM=e},l=new i(function(){return r.monadEffect},function(n){return function(i){var l=function(n){return function(){if(n instanceof o)return n.value0;throw new Error("Failed pattern match at Control.Monad.Rec.Class line 111, column 30 - line 111, column 44: "+[n.constructor.name])}()};return function(){var c=e.bindFlipped(r.bindEffect)(a.new)(n(i))();return function(){for(;!function(){var e=a.read(c)();if(e instanceof u){var t=n(e.value0)();a.write(t)(c)();return!1}if(e instanceof o)return!0;throw new Error("Failed pattern match at Control.Monad.Rec.Class line 102, column 22 - line 107, column 28: "+[e.constructor.name])}(););}(),t.map(r.functorEffect)(l)(a.read(c))()}}});n.Loop=u,n.Done=o,n.MonadRec=i,n.tailRecM=function(n){return n.tailRecM},n.monadRecEffect=l}(PS["Control.Monad.Rec.Class"]=PS["Control.Monad.Rec.Class"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Biapplicative"],PS["Control.Biapply"],PS["Control.Bind"],PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Lazy"],PS["Control.Monad"],PS["Control.Semigroupoid"],PS["Data.Bifoldable"],PS["Data.Bifunctor"],PS["Data.Bitraversable"],PS["Data.BooleanAlgebra"],PS["Data.Bounded"],PS["Data.CommutativeRing"],PS["Data.Distributive"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"];var e=PS["Data.Functor"],t=(PS["Data.Functor.Invariant"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Maybe.First"],PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Unit"],PS.Prelude,PS["Type.Equality"],function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),r=new e.Functor(function(n){return function(e){return new t(e.value0,n(e.value1))}});n.Tuple=t,n.fst=function(n){return n.value0},n.snd=function(n){return n.value1},n.functorTuple=r}(PS["Data.Tuple"]=PS["Data.Tuple"]||{}),function(n){"use strict";(PS["Data.Unfoldable"]=PS["Data.Unfoldable"]||{}).unfoldrArrayImpl=function(n){return function(e){return function(t){return function(r){return function(a){return function(u){for(var o=[],i=u;;){var l=a(i);if(n(l))return o;var c=e(l);o.push(t(c)),i=r(c)}}}}}}}}(),function(n){"use strict";(PS["Data.Unfoldable1"]=PS["Data.Unfoldable1"]||{}).unfoldr1ArrayImpl=function(n){return function(e){return function(t){return function(r){return function(a){return function(u){for(var o=[],i=u;;){var l=a(i);o.push(t(l));var c=r(l);if(n(c))return o;i=e(c)}}}}}}}}(),function(n){"use strict";var e=PS["Data.Unfoldable1"],t=(PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Maybe"]),r=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Tuple"]),a=(PS["Partial.Unsafe"],PS.Prelude,function(n){this.unfoldr1=n}),u=new a(e.unfoldr1ArrayImpl(t.isNothing)(t.fromJust())(r.fst)(r.snd));n.Unfoldable1=a,n.unfoldr1=function(n){return n.unfoldr1},n.unfoldable1Array=u}(PS["Data.Unfoldable1"]=PS["Data.Unfoldable1"]||{}),function(n){"use strict";var e=PS["Data.Unfoldable"],t=(PS["Data.Function"],PS["Data.Functor"],PS["Data.Maybe"]),r=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Traversable"],PS["Data.Tuple"]),a=PS["Data.Unfoldable1"],u=(PS["Data.Unit"],PS["Partial.Unsafe"],PS.Prelude,function(n,e){this.Unfoldable10=n,this.unfoldr=e}),o=new u(function(){return a.unfoldable1Array},e.unfoldrArrayImpl(t.isNothing)(t.fromJust())(r.fst)(r.snd));n.Unfoldable=u,n.unfoldr=function(n){return n.unfoldr},n.unfoldableArray=o}(PS["Data.Unfoldable"]=PS["Data.Unfoldable"]||{}),function(n){"use strict";(PS["Unsafe.Coerce"]=PS["Unsafe.Coerce"]||{}).unsafeCoerce=function(n){return n}}(),function(n){"use strict";var e=PS["Unsafe.Coerce"];n.unsafeCoerce=e.unsafeCoerce}(PS["Unsafe.Coerce"]=PS["Unsafe.Coerce"]||{}),function(n){"use strict";var e=PS["Data.Array"],t=(PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"]),r=(PS["Control.Category"],PS["Control.Lazy"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.ST"],PS["Control.Monad.ST.Internal"],PS["Control.Semigroupoid"],PS["Data.Array.NonEmpty.Internal"],PS["Data.Array.ST"],PS["Data.Array.ST.Iterator"],PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"]),a=(PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),u=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Partial.Unsafe"],PS.Prelude,PS["Unsafe.Coerce"],function(n){return[n]}),o=r.flip(t.bind(t.bindArray));n.singleton=u,n.concatMap=o,n.mapMaybe=function(n){return o(function(e){return a.maybe([])(u)(n(e))})},n.length=e.length,n.cons=e.cons,n.snoc=e.snoc,n.filter=e.filter,n.drop=e.drop}(PS["Data.Array"]=PS["Data.Array"]||{}),function(n){"use strict";n.replace=function(n){return function(e){return function(t){return t.replace(n,e)}}},n.replaceAll=function(n){return function(e){return function(t){return t.replace(new RegExp(n.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),e)}}},n.split=function(n){return function(e){return e.split(n)}},n.joinWith=function(n){return function(e){return e.join(n)}}}(PS["Data.String.Common"]=PS["Data.String.Common"]||{}),function(n){"use strict";var e=PS["Data.String.Common"];PS["Data.Eq"],PS["Data.Ordering"],PS["Data.String.Pattern"],PS.Prelude;n.null=function(n){return""===n},n.replaceAll=e.replaceAll,n.split=e.split,n.joinWith=e.joinWith}(PS["Data.String.Common"]=PS["Data.String.Common"]||{}),function(n){"use strict";n.unsafeStringify=function(n){return JSON.stringify(n)},n.unsafeDecodeURIComponent=decodeURIComponent,n.unsafeEncodeURIComponent=encodeURIComponent}(PS["Global.Unsafe"]=PS["Global.Unsafe"]||{}),function(n){"use strict";var e=PS["Global.Unsafe"];n.unsafeStringify=e.unsafeStringify,n.unsafeDecodeURIComponent=e.unsafeDecodeURIComponent,n.unsafeEncodeURIComponent=e.unsafeEncodeURIComponent}(PS["Global.Unsafe"]=PS["Global.Unsafe"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Eq"];var e,t=PS["Data.Functor"],r=PS["Data.Maybe"],a=(PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.String"],PS["Data.String.Common"]),u=(PS["Data.Tuple"],PS["Global.Unsafe"]),o=(PS.Prelude,function(n){return n}),i=(e=function(n){if(n.value1 instanceof r.Nothing)return u.unsafeEncodeURIComponent(n.value0);if(n.value1 instanceof r.Just)return u.unsafeEncodeURIComponent(n.value0)+"="+u.unsafeEncodeURIComponent(n.value1.value0);throw new Error("Failed pattern match at Data.FormURLEncoded line 35, column 18 - line 37, column 89: "+[n.constructor.name])},function(n){return a.joinWith("&")(t.map(t.functorArray)(e)(o(n)))});n.toArray=o,n.encode=i}(PS["Data.FormURLEncoded"]=PS["Data.FormURLEncoded"]||{}),function(n){"use strict";var e=PS["Data.Either"],t=(PS["Data.Eq"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"]),r=(PS["Data.String"],PS["Data.String.Common"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),a=function(){function n(){}return n.value=new n,n}(),u=function(){function n(){}return n.value=new n,n}(),o=function(){function n(){}return n.value=new n,n}(),i=function(){function n(){}return n.value=new n,n}(),l=function(){function n(){}return n.value=new n,n}(),c=function(){function n(){}return n.value=new n,n}(),f=function(){function n(){}return n.value=new n,n}(),s=function(){function n(){}return n.value=new n,n}(),d=function(){function n(){}return n.value=new n,n}(),S=function(){function n(){}return n.value=new n,n}(),P=function(){function n(){}return n.value=new n,n}(),v=function(){function n(){}return n.value=new n,n}(),p=function(){function n(){}return n.value=new n,n}(),m=function(){function n(){}return n.value=new n,n}(),D=function(){function n(){}return n.value=new n,n}(),b=function(n){return n},g=new t.Show(function(n){if(n instanceof r)return"OPTIONS";if(n instanceof a)return"GET";if(n instanceof u)return"HEAD";if(n instanceof o)return"POST";if(n instanceof i)return"PUT";if(n instanceof l)return"DELETE";if(n instanceof c)return"TRACE";if(n instanceof f)return"CONNECT";if(n instanceof s)return"PROPFIND";if(n instanceof d)return"PROPPATCH";if(n instanceof S)return"MKCOL";if(n instanceof P)return"COPY";if(n instanceof v)return"MOVE";if(n instanceof p)return"LOCK";if(n instanceof m)return"UNLOCK";if(n instanceof D)return"PATCH";throw new Error("Failed pattern match at Data.HTTP.Method line 40, column 1 - line 40, column 35: "+[n.constructor.name])}),h=e.either(t.show(g))(b);n.OPTIONS=r,n.GET=a,n.HEAD=u,n.POST=o,n.PUT=i,n.DELETE=l,n.TRACE=c,n.CONNECT=f,n.PROPFIND=s,n.PROPPATCH=d,n.MKCOL=S,n.COPY=P,n.MOVE=v,n.LOCK=p,n.UNLOCK=m,n.PATCH=D,n.unCustomMethod=b,n.print=h,n.showMethod=g}(PS["Data.HTTP.Method"]=PS["Data.HTTP.Method"]||{}),function(n){"use strict";PS["Data.Eq"];var e=PS["Data.Newtype"],t=(PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Show"],PS.Prelude,function(n){return n}),r=new e.Newtype(function(n){return n},t);n.MediaType=t,n.newtypeMediaType=r}(PS["Data.MediaType"]=PS["Data.MediaType"]||{}),function(n){"use strict";PS["Data.MediaType"];n.applicationFormURLEncoded="application/x-www-form-urlencoded",n.applicationJSON="application/json"}(PS["Data.MediaType.Common"]=PS["Data.MediaType.Common"]||{}),function(n){"use strict";var e=function(){var n={},e="Pure",t="Throw",r="Catch",a="Sync",u="Async",o="Bind",i="Bracket",l="Fork",c="Sequential",f="Map",s="Apply",d="Alt",S="Cons",P="Resume",v="Release",p="Finalizer",m="Finalized",D="Forked";function b(n,e,t,r){this.tag=n,this._1=e,this._2=t,this._3=r}function g(n){var e=function(e,t,r){return new b(n,e,t,r)};return e.tag=n,e}function h(n){return new b(e,void 0)}function w(n){try{n()}catch(n){setTimeout(function(){throw n},0)}}function y(n,e,t){try{return e(t())}catch(e){return n(e)}}function E(n,e,t){try{return e(t)()}catch(e){return t(n(e))(),h}}var M=function(){var n=1024,e=0,t=0,r=new Array(n),a=!1;function u(){var u;for(a=!0;0!==e;)e--,u=r[t],r[t]=void 0,t=(t+1)%n,u();a=!1}return{isDraining:function(){return a},enqueue:function(o){var i;e===n&&(i=a,u(),a=i),r[(t+e)%n]=o,e++,a||u()}}}();var C=0,T=1,A=2,F=3,H=4,L=5,_=6;function I(n,f,s){var d=0,D=C,g=s,h=null,O=null,W=null,x=null,U=null,R=0,k=0,B=null,q=!0;function j(s){for(var k,J,V;;)switch(k=null,J=null,V=null,null,D){case A:D=T,g=W(g),null===x?W=null:(W=x._1,x=x._2);break;case F:n.isLeft(g)?(D=L,h=g,g=null):null===W?D=L:(D=A,g=n.fromRight(g));break;case T:switch(g.tag){case o:W&&(x=new b(S,W,x)),W=g._2,D=T,g=g._1;break;case e:null===W?(D=L,g=n.right(g._1)):(D=A,g=g._1);break;case a:D=F,g=y(n.left,n.right,g._1);break;case u:return D=H,void(g=E(n.left,g._1,function(n){return function(){d===s&&(d++,M.enqueue(function(){D=F,g=n,j(d)}))}}));case t:D=L,h=n.left(g._1),g=null;break;case r:U=new b(S,g,null===W?U:new b(S,new b(P,W,x),U,O),O),W=null,x=null,D=T,g=g._1;break;case i:R++,U=new b(S,g,null===W?U:new b(S,new b(P,W,x),U,O),O),W=null,x=null,D=T,g=g._1;break;case l:D=F,k=I(n,f,g._2),f&&f.register(k),g._1&&k.run(),g=n.right(k);break;case c:D=T,g=N(n,f,g._1)}break;case L:if(W=null,x=null,null===U)D=_,g=O||h||g;else switch(k=U._3,V=U._1,U=U._2,V.tag){case r:O&&O!==k?D=L:h&&(D=T,g=V._2(n.fromLeft(h)),h=null);break;case P:O&&O!==k||h?D=L:(W=V._1,x=V._2,D=A,g=n.fromRight(g));break;case i:R--,null===h&&(J=n.fromRight(g),U=new b(S,new b(v,V._2,J),U,k),(O===k||R>0)&&(D=T,g=V._3(J)));break;case v:R++,U=new b(S,new b(m,g),U,O),D=T,g=O&&O!==k?V._1.killed(n.fromLeft(O))(V._2):h?V._1.failed(n.fromLeft(h))(V._2):V._1.completed(n.fromRight(g))(V._2);break;case p:R++,U=new b(S,new b(m,g),U,O),D=T,g=V._1;break;case m:R--,D=L,g=V._1}break;case _:for(var Q in B)B.hasOwnProperty(Q)&&(q=q&&B[Q].rethrow,w(B[Q].handler(g)));return B=null,void(O&&h?setTimeout(function(){throw n.fromLeft(h)},0):n.isLeft(g)&&q&&setTimeout(function(){if(q)throw n.fromLeft(g)},0));case C:D=T;break;case H:return}}function J(n){return function(){if(D===_)return q=q&&n.rethrow,n.handler(g)(),function(){};var e=k++;return(B=B||{})[e]=n,function(){null!==B&&delete B[e]}}}return{kill:function(e,t){return function(){if(D===_)return t(n.right(void 0))(),function(){};var r=J({rethrow:!1,handler:function(){return t(n.right(void 0))}})();switch(D){case C:O=n.left(e),D=_,g=O,j(d);break;case H:null===O&&(O=n.left(e)),0===R&&(D===H&&(U=new b(S,new b(p,g(e)),U,O)),D=L,g=null,h=null,j(++d));break;default:null===O&&(O=n.left(e)),0===R&&(D=L,g=null,h=null)}return r}},join:function(n){return function(){var e=J({rethrow:!1,handler:n})();return D===C&&j(d),e}},onComplete:J,isSuspended:function(){return D===C},run:function(){D===C&&(M.isDraining()?j(d):M.enqueue(function(){j(d)}))}}}function O(e,t,r,a){var o=0,i={},l=0,c={},P=new Error("[ParAff] Early exit"),v=null,p=n;function m(t,r,a){var u,o,l=r,c=null,P=null,v=0,p={};n:for(;;)switch(u=null,l.tag){case D:if(l._3===n&&(u=i[l._1],p[v++]=u.kill(t,function(n){return function(){0===--v&&a(n)()}})),null===c)break n;l=c._2,null===P?c=null:(c=P._1,P=P._2);break;case f:l=l._2;break;case s:case d:c&&(P=new b(S,c,P)),c=l,l=l._1}if(0===v)a(e.right(void 0))();else for(o=0,u=v;o<u;o++)p[o]=p[o]();return p}function g(t){return function(r){return function(){delete i[t._1],t._3=r,function t(r,u,o){var i,S,p,D,b,g;for(e.isLeft(r)?(i=r,S=null):(S=r,i=null);;){if(p=null,D=null,b=null,g=null,null!==v)return;if(null===u)return void a(i||S)();if(u._3!==n)return;switch(u.tag){case f:null===i?(u._3=e.right(u._1(e.fromRight(S))),S=u._3):u._3=i;break;case s:if(p=u._1._3,D=u._2._3,i){if(u._3=i,b=!0,g=l++,c[g]=m(P,i===p?u._2:u._1,function(){return function(){delete c[g],b?b=!1:null===o?t(S,null,null):t(S,o._1,o._2)}}),b)return void(b=!1)}else{if(p===n||D===n)return;S=e.right(e.fromRight(p)(e.fromRight(D))),u._3=S}break;case d:if(p=u._1._3,D=u._2._3,p===n&&e.isLeft(D)||D===n&&e.isLeft(p))return;if(p!==n&&e.isLeft(p)&&D!==n&&e.isLeft(D))i=S===p?D:p,S=null,u._3=i;else if(u._3=S,b=!0,g=l++,c[g]=m(P,S===p?u._2:u._1,function(){return function(){delete c[g],b?b=!1:null===o?t(S,null,null):t(S,o._1,o._2)}}),b)return void(b=!1)}null===o?u=null:(u=o._1,o=o._2)}}(r,t._2._1,t._2._2)}}}return function(){var a,u,l=T,c=r,P=null,v=null;n:for(;;)switch(a=null,u=null,l){case T:switch(c.tag){case f:P&&(v=new b(S,P,v)),P=new b(f,c._1,n,n),c=c._2;break;case s:P&&(v=new b(S,P,v)),P=new b(s,n,c._2,n),c=c._1;break;case d:P&&(v=new b(S,P,v)),P=new b(d,n,c._2,n),c=c._1;break;default:u=o++,l=L,a=c,c=new b(D,u,new b(S,P,v),n),(a=I(e,t,a)).onComplete({rethrow:!1,handler:g(c)})(),i[u]=a,t&&t.register(a)}break;case L:if(null===P)break n;P._1===n?(P._1=c,l=T,c=P._2,P._2=n):(P._2=c,c=P,null===v?P=null:(P=v._1,v=v._2))}for(p=c,u=0;u<o;u++)i[u].run()}(),function(n){return new b(u,function(t){return function(){return function(n,t){var r;for(var a in v=e.left(n),c)if(c.hasOwnProperty(a))for(a in r=c[a])r.hasOwnProperty(a)&&r[a]();c=null;var o=m(n,p,t);return function(n){return new b(u,function(n){return function(){for(var n in o)o.hasOwnProperty(n)&&o[n]();return h}})}}(n,t)}})}}function N(n,e,t){return new b(u,function(r){return function(){return O(n,e,t,r)}})}return b.EMPTY=n,b.Pure=g(e),b.Throw=g(t),b.Catch=g(r),b.Sync=g(a),b.Async=g(u),b.Bind=g(o),b.Bracket=g(i),b.Fork=g(l),b.Seq=g(c),b.ParMap=g(f),b.ParApply=g(s),b.ParAlt=g(d),b.Fiber=I,b.Supervisor=function(n){var e={},t=0,r=0;return{register:function(n){var a=t++;n.onComplete({rethrow:!0,handler:function(n){return function(){r--,delete e[a]}}}),e[a]=n,r++},isEmpty:function(){return 0===r},killAll:function(u,o){return function(){var i=0,l={};function c(t){l[t]=e[t].kill(u,function(e){return function(){delete l[t],i--,n.isLeft(e)&&n.fromLeft(e)&&setTimeout(function(){throw n.fromLeft(e)},0),0===i&&o()}})()}for(var f in e)e.hasOwnProperty(f)&&(i++,c(f));return e={},t=0,r=0,function(n){return new b(a,function(){for(var n in l)l.hasOwnProperty(n)&&l[n]()})}}}}},b.Scheduler=M,b.nonCanceler=h,b}();n._pure=e.Pure,n._throwError=e.Throw,n._catchError=function(n){return function(t){return e.Catch(n,t)}},n._map=function(n){return function(t){return t.tag===e.Pure.tag?e.Pure(n(t._1)):e.Bind(t,function(t){return e.Pure(n(t))})}},n._bind=function(n){return function(t){return e.Bind(n,t)}},n._fork=function(n){return function(t){return e.Fork(n,t)}},n._liftEffect=e.Sync,n._parAffMap=function(n){return function(t){return e.ParMap(n,t)}},n._parAffApply=function(n){return function(t){return e.ParApply(n,t)}},n.makeAff=e.Async,n._makeFiber=function(n,t){return function(){return e.Fiber(n,null,t)}},n._sequential=e.Seq}(PS["Effect.Aff"]=PS["Effect.Aff"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Bind"],PS["Control.Semigroupoid"],PS["Data.Either"]),r=(PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.Maybe"],PS["Data.Unit"],PS.Prelude,function(n){return n.catchError});n.catchError=a,n.throwError=function(n){return n.throwError},n.MonadThrow=function(n,e){this.Monad0=n,this.throwError=e},n.MonadError=function(n,e){this.MonadThrow0=n,this.catchError=e},n.try=function(n){return function(u){return a(n)(r.map(n.MonadThrow0().Monad0().Bind1().Apply0().Functor0())(t.Right.create)(u))(function(r){return e.pure(n.MonadThrow0().Monad0().Applicative0())(t.Left.create(r))})}}}(PS["Control.Monad.Error.Class"]=PS["Control.Monad.Error.Class"]||{}),function(n){"use strict";var e=PS["Data.Tuple"],t=PS["Data.Unit"],r=(PS.Prelude,function(n){return n.state});n.state=r,n.MonadState=function(n,e){this.Monad0=n,this.state=e},n.get=function(n){return r(n)(function(n){return new e.Tuple(n,n)})},n.gets=function(n){return function(t){return r(n)(function(n){return new e.Tuple(t(n),n)})}},n.put=function(n){return function(a){return r(n)(function(n){return new e.Tuple(t.unit,a)})}},n.modify_=function(n){return function(a){return r(n)(function(n){return new e.Tuple(t.unit,a(n))})}}}(PS["Control.Monad.State.Class"]=PS["Control.Monad.State.Class"]||{}),function(n){"use strict";PS.Prelude;n.lift=function(n){return n.lift},n.MonadTrans=function(n){this.lift=n}}(PS["Control.Monad.Trans.Class"]=PS["Control.Monad.Trans.Class"]||{}),function(n){"use strict";PS["Control.Category"],PS["Control.Monad"],PS.Effect;n.liftEffect=function(n){return n.liftEffect},n.MonadEffect=function(n,e){this.Monad0=n,this.liftEffect=e}}(PS["Effect.Class"]=PS["Effect.Class"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"];var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),u=(PS["Control.Monad.Cont.Class"],PS["Control.Monad.Error.Class"]),o=(PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Class"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Either"]),i=(PS["Data.Function"],PS["Data.Functor"]),l=(PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Semigroup"],PS["Data.Tuple"],PS["Effect.Class"],PS.Prelude,function(n){return n}),c=function(n){return function(e){return n(e)}},f=function(n){return new i.Functor(function(e){return c(i.map(n)(i.map(o.functorEither)(e)))})},s=function(n){return new a.Monad(function(){return P(n)},function(){return d(n)})},d=function(n){return new r.Bind(function(){return S(n)},function(t){return function(a){return r.bind(n.Bind1())(t)(o.either(function(t){return e.pure(n.Applicative0())(o.Left.create(t))})(function(n){return a(n)}))}})},S=function(n){return new t.Apply(function(){return f(n.Bind1().Apply0().Functor0())},a.ap(s(n)))},P=function(n){return new e.Applicative(function(){return S(n)},function(t){return l(e.pure(n.Applicative0())(o.Right.create(t)))})};n.ExceptT=l,n.runExceptT=function(n){return n},n.mapExceptT=c,n.functorExceptT=f,n.applyExceptT=S,n.applicativeExceptT=P,n.bindExceptT=d,n.monadExceptT=s,n.monadThrowExceptT=function(n){return new u.MonadThrow(function(){return s(n)},function(t){return l(e.pure(n.Applicative0())(o.Left.create(t)))})}}(PS["Control.Monad.Except.Trans"]=PS["Control.Monad.Except.Trans"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Monad"],PS["Control.Monad.Cont.Class"],PS["Control.Monad.Error.Class"],PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Class"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Tuple"],PS["Effect.Class"],PS.Prelude;n.MaybeT=function(n){return n}}(PS["Control.Monad.Maybe.Trans"]=PS["Control.Monad.Maybe.Trans"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad.Cont.Trans"],PS["Control.Monad.Except.Trans"],PS["Control.Monad.Maybe.Trans"],PS["Control.Monad.Reader.Trans"],PS["Control.Monad.Writer.Trans"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Either"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Functor.Compose"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Unit"],PS["Effect.Class"],PS["Effect.Ref"],PS.Prelude;n.parallel=function(n){return n.parallel},n.sequential=function(n){return n.sequential},n.Parallel=function(n,e,t,r){this.Applicative1=n,this.Monad0=e,this.parallel=t,this.sequential=r}}(PS["Control.Parallel.Class"]=PS["Control.Parallel.Class"]||{}),function(n){"use strict";PS["Control.Alternative"],PS["Control.Apply"];var e=PS["Control.Category"],t=PS["Control.Parallel.Class"],r=(PS["Control.Semigroupoid"],PS["Data.Foldable"]),a=(PS["Data.Traversable"],PS.Prelude,function(n){return function(e){return function(a){return function(u){return t.sequential(n)(r.traverse_(n.Applicative1())(e)(function(e){return t.parallel(n)(a(e))})(u))}}}});n.parTraverse_=a,n.parSequence_=function(n){return function(t){return a(n)(t)(e.identity(e.categoryFn))}}}(PS["Control.Parallel"]=PS["Control.Parallel"]||{}),function(n){"use strict";(PS["Data.Function.Uncurried"]=PS["Data.Function.Uncurried"]||{}).runFn4=function(n){return function(e){return function(t){return function(r){return function(a){return n(e,t,r,a)}}}}}}(),function(n){"use strict";var e=PS["Data.Function.Uncurried"];PS["Data.Unit"];n.runFn4=e.runFn4}(PS["Data.Function.Uncurried"]=PS["Data.Function.Uncurried"]||{}),function(n){"use strict";n.error=function(n){return new Error(n)},n.throwException=function(n){return function(){throw n}}}(PS["Effect.Exception"]=PS["Effect.Exception"]||{}),function(n){"use strict";var e=PS["Effect.Exception"];PS["Control.Applicative"],PS["Control.Semigroupoid"],PS["Data.Either"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Show"],PS.Effect,PS.Prelude;n.throw=function(n){return e.throwException(e.error(n))},n.error=e.error,n.throwException=e.throwException}(PS["Effect.Exception"]=PS["Effect.Exception"]||{}),function(n){"use strict";(PS["Effect.Unsafe"]=PS["Effect.Unsafe"]||{}).unsafePerformEffect=function(n){return n()}}(),function(n){"use strict";var e=PS["Effect.Unsafe"];PS.Effect;n.unsafePerformEffect=e.unsafePerformEffect}(PS["Effect.Unsafe"]=PS["Effect.Unsafe"]||{}),function(n){"use strict";var e=PS["Effect.Aff"],t=(PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"]),r=PS["Control.Apply"],a=PS["Control.Bind"],u=(PS["Control.Lazy"],PS["Control.Monad"]),o=PS["Control.Monad.Error.Class"],i=PS["Control.Monad.Rec.Class"],l=(PS["Control.Parallel"],PS["Control.Parallel.Class"]),c=(PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Either"]),f=(PS["Data.Foldable"],PS["Data.Function"]),s=(PS["Data.Function.Uncurried"],PS["Data.Functor"]),d=(PS["Data.Monoid"],PS["Data.Newtype"],PS["Data.Semigroup"],PS["Data.Time.Duration"],PS["Data.Unit"]),S=PS.Effect,P=PS["Effect.Class"],v=(PS["Effect.Exception"],PS["Effect.Unsafe"]),p=PS["Partial.Unsafe"],m=(PS.Prelude,PS["Unsafe.Coerce"]),D=function(n){return n},b=e._fork(!1),g=new s.Functor(e._parAffMap),h=new s.Functor(e._map),w=e._fork(!0),y={isLeft:function(n){if(n instanceof c.Left)return!0;if(n instanceof c.Right)return!1;throw new Error("Failed pattern match at Effect.Aff line 385, column 12 - line 387, column 20: "+[n.constructor.name])},fromLeft:function(n){if(n instanceof c.Left)return n.value0;if(n instanceof c.Right)return p.unsafeCrashWith("unsafeFromLeft: Right");throw new Error("Failed pattern match at Effect.Aff line 390, column 20 - line 394, column 3: "+[n.constructor.name])},fromRight:function(n){if(n instanceof c.Right)return n.value0;if(n instanceof c.Left)return p.unsafeCrashWith("unsafeFromRight: Left");throw new Error("Failed pattern match at Effect.Aff line 395, column 21 - line 397, column 31: "+[n.constructor.name])},left:c.Left.create,right:c.Right.create},E=function(n){return e._makeFiber(y,n)},M=function(n){return function(){var e=E(n)();return e.run(),e}},C=new r.Apply(function(){return g},e._parAffApply),T=new u.Monad(function(){return H},function(){return A}),A=new a.Bind(function(){return F},e._bind),F=new r.Apply(function(){return h},u.ap(T)),H=new t.Applicative(function(){return F},e._pure),L=new P.MonadEffect(function(){return T},e._liftEffect),_=function(n){return D(f.const(P.liftEffect(L)(n)))},I=function(n){return e.makeAff(function(e){return s.map(S.functorEffect)(_)(n.join(e))})},O=new s.Functor(function(n){return function(e){return v.unsafePerformEffect(E(s.map(h)(n)(I(e))))}}),N=new o.MonadThrow(function(){return T},e._throwError),W=new o.MonadError(function(){return N},e._catchError),x=function(n){return function(e){return M(a.bindFlipped(A)(function(e){return P.liftEffect(L)(n(e))})(o.try(W)(e)))}},U=new l.Parallel(function(){return R},function(){return T},m.unsafeCoerce,e._sequential),R=new t.Applicative(function(){return C},function(n){return l.parallel(U)(t.pure(H)(n))}),k=new i.MonadRec(function(){return T},function(n){var e=function(r){return a.bind(A)(n(r))(function(n){if(n instanceof i.Done)return t.pure(H)(n.value0);if(n instanceof i.Loop)return e(n.value0);throw new Error("Failed pattern match at Effect.Aff line 99, column 7 - line 101, column 22: "+[n.constructor.name])})};return e}),B=f.const(t.pure(H)(d.unit));n.Canceler=D,n.launchAff=M,n.runAff=x,n.runAff_=function(n){return function(e){return s.void(S.functorEffect)(x(n)(e))}},n.forkAff=w,n.suspendAff=b,n.killFiber=function(n){return function(r){return a.bind(A)(P.liftEffect(L)(r.isSuspended))(function(a){return a?P.liftEffect(L)(s.void(S.functorEffect)(r.kill(n,f.const(t.pure(S.applicativeEffect)(d.unit))))):e.makeAff(function(e){return s.map(S.functorEffect)(_)(r.kill(n,e))})})}},n.joinFiber=I,n.nonCanceler=B,n.effectCanceler=_,n.functorAff=h,n.applyAff=F,n.applicativeAff=H,n.bindAff=A,n.monadAff=T,n.monadRecAff=k,n.monadThrowAff=N,n.monadErrorAff=W,n.monadEffectAff=L,n.functorParAff=g,n.applyParAff=C,n.applicativeParAff=R,n.parallelAff=U,n.functorFiber=O,n.makeAff=e.makeAff}(PS["Effect.Aff"]=PS["Effect.Aff"]||{}),function(n){"use strict";n._app=function(){return app},n._closest=function(n,e,t,r){var a=r.closest(t);return a?n(a):e},n._innerHtml=function(n){return n.innerHTML},n._setInnerHtml=function(n,e){return e.innerHTML=n,e},n._createFormData=function(n){return new FormData(n)},n._createFormString=function(n){return new URLSearchParams(new FormData(n)).toString()},n._createFormArray=function(n){return Array.from(new FormData(n))},n._getDataAttribute=function(n,e){return e.dataset[n]},n._setDataAttribute=function(n,e,t){return t.dataset[n]=e},n._moment8601=function(n,e){var t=moment(e,moment.ISO_8601),r=t.fromNow(),a=t.format("MMMM D YYYY, h:mm a")+" ("+t.format()+") ";return n(r)(a)},n._mmoment8601=function(n,e,t,r){try{var a=moment(r,moment.ISO_8601),u=a.fromNow(),o=a.format("MMMM D YYYY, h:mm a")+" ("+a.format()+") ";return n(t(u)(o))}catch(n){return e}},n._closeWindow=function(n){n.close()}}(PS.Globals=PS.Globals||{}),function(n){"use strict";n.null=null,n.nullable=function(n,e,t){return null==n?e:t(n)},n.notNull=function(n){return n}}(PS["Data.Nullable"]=PS["Data.Nullable"]||{}),function(n){"use strict";var e=PS["Data.Nullable"],t=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.Maybe"]),r=(PS["Data.Ord"],PS["Data.Show"],PS.Prelude,t.maybe(e.null)(e.notNull));n.toMaybe=function(n){return e.nullable(n,t.Nothing.value,t.Just.create)},n.toNullable=r}(PS["Data.Nullable"]=PS["Data.Nullable"]||{}),function(n){"use strict";PS["Control.Monad.Error.Class"];var e=PS["Control.Monad.Except.Trans"],t=(PS["Control.Semigroupoid"],PS["Data.Either"],PS["Data.Identity"]),r=PS["Data.Newtype"];PS.Prelude;n.runExcept=function(n){return r.unwrap(t.newtypeIdentity)(e.runExceptT(n))}}(PS["Control.Monad.Except"]=PS["Control.Monad.Except"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Category"];var e=PS["Control.Plus"],t=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"]),r=(PS["Data.FoldableWithIndex"],PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"]),u=(PS["Data.Semigroup.Foldable"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}());n.NonEmpty=u,n.singleton=function(n){return function(t){return new u(t,e.empty(n))}},n.functorNonEmpty=function(n){return new r.Functor(function(e){return function(t){return new u(e(t.value0),r.map(n)(e)(t.value1))}})},n.foldableNonEmpty=function(n){return new t.Foldable(function(e){return function(r){return function(u){return a.append(e.Semigroup0())(r(u.value0))(t.foldMap(n)(e)(r)(u.value1))}}},function(e){return function(r){return function(a){return t.foldl(n)(e)(e(r)(a.value0))(a.value1)}}},function(e){return function(r){return function(a){return e(a.value0)(t.foldr(n)(e)(r)(a.value1))}}})}}(PS["Data.NonEmpty"]=PS["Data.NonEmpty"]||{}),function(n){"use strict";var e=PS["Control.Alt"],t=(PS["Control.Alternative"],PS["Control.Applicative"]),r=PS["Control.Apply"],a=(PS["Control.Bind"],PS["Control.Category"],PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Monad"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"]),u=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"]),o=(PS["Data.FoldableWithIndex"],PS["Data.Function"]),i=PS["Data.Functor"],l=(PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Monoid"]),c=(PS["Data.Newtype"],PS["Data.NonEmpty"]),f=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"]),s=(PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),S=new u.Foldable(function(n){return function(e){return u.foldl(S)(function(t){return function(r){return f.append(n.Semigroup0())(t)(e(r))}})(l.mempty(n))}},function(n){return function(e){return function(t){var r,a=e,u=!1;function o(e,r){if(r instanceof s)return u=!0,e;if(r instanceof d)return a=n(e)(r.value0),void(t=r.value1);throw new Error("Failed pattern match at Data.List.Types line 81, column 12 - line 83, column 30: "+[r.constructor.name])}for(;!u;)r=o(a,t);return r}}},function(n){return function(e){var t=u.foldl(S)(o.flip(d.create))(s.value);return function(r){return u.foldl(S)(o.flip(n))(e)(t(r))}}}),P=c.foldableNonEmpty(S),v=new i.Functor(function(n){return u.foldr(S)(function(e){return function(t){return new d(n(e),t)}})(s.value)}),p=c.functorNonEmpty(v),m=new f.Semigroup(function(n){return function(e){return u.foldr(S)(d.create)(e)(n)}}),D=new r.Apply(function(){return v},function(n){return function(e){if(n instanceof s)return s.value;if(n instanceof d)return f.append(m)(i.map(v)(n.value0)(e))(r.apply(D)(n.value1)(e));throw new Error("Failed pattern match at Data.List.Types line 127, column 1 - line 127, column 33: "+[n.constructor.name,e.constructor.name])}}),b=new t.Applicative(function(){return D},function(n){return new d(n,s.value)}),g=new e.Alt(function(){return v},f.append(m)),h=new a.Plus(function(){return g},s.value);n.Nil=s,n.Cons=d,n.NonEmptyList=function(n){return n},n.semigroupList=m,n.functorList=v,n.foldableList=S,n.applyList=D,n.applicativeList=b,n.altList=g,n.plusList=h,n.functorNonEmptyList=p,n.foldableNonEmptyList=P}(PS["Data.List.Types"]=PS["Data.List.Types"]||{}),function(n){"use strict";n.unsafeToForeign=function(n){return n},n.unsafeFromForeign=function(n){return n},n.typeOf=function(n){return typeof n},n.tagOf=function(n){return Object.prototype.toString.call(n).slice(8,-1)}}(PS.Foreign=PS.Foreign||{}),function(n){"use strict";(PS["Data.Int"]=PS["Data.Int"]||{}).fromNumberImpl=function(n){return function(e){return function(t){return(0|t)===t?n(t):e}}}}(),function(n){"use strict";var e=PS["Data.Int"],t=(PS["Control.Category"],PS["Control.Semigroupoid"],PS["Data.Boolean"],PS["Data.Bounded"],PS["Data.CommutativeRing"],PS["Data.DivisionRing"],PS["Data.Eq"],PS["Data.EuclideanRing"],PS["Data.HeytingAlgebra"],PS["Data.Int.Bits"],PS["Data.Maybe"]),r=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semiring"],PS["Data.Show"],PS.Global,PS.Math,PS.Prelude,e.fromNumberImpl(t.Just.create)(t.Nothing.value));n.fromNumber=r}(PS["Data.Int"]=PS["Data.Int"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Lazy"],PS["Control.Monad.Rec.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Boolean"],PS["Data.Eq"];var e,t=PS["Data.Foldable"],r=(PS["Data.Function"],PS["Data.Functor"],PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.List.Types"]),a=(PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.NonEmpty"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unit"],PS.Prelude,e=r.Nil.value,function(n){var t,a=e,u=!1;function o(e,t){if(t instanceof r.Nil)return u=!0,e;if(t instanceof r.Cons)return a=new r.Cons(t.value0,e),void(n=t.value1);throw new Error("Failed pattern match at Data.List line 368, column 3 - line 368, column 19: "+[e.constructor.name,t.constructor.name])}for(;!u;)t=o(a,n);return t});n.fromFoldable=function(n){return t.foldr(n)(r.Cons.create)(r.Nil.value)},n.null=function(n){return n instanceof r.Nil},n.reverse=a}(PS["Data.List"]=PS["Data.List"]||{}),function(n){"use strict";PS["Control.Bind"],PS["Control.Category"],PS["Control.Semigroupoid"],PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.List"];var e=PS["Data.List.Types"],t=(PS["Data.Maybe"],PS["Data.NonEmpty"]);PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Semiring"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Partial.Unsafe"],PS.Prelude;n.singleton=function(n){return e.NonEmptyList(t.singleton(e.plusList)(n))},n.cons=function(n){return function(r){return new t.NonEmpty(n,new e.Cons(r.value0,r.value1))}}}(PS["Data.List.NonEmpty"]=PS["Data.List.NonEmpty"]||{}),function(n){"use strict";n.singleton=function(n){return n},n.length=function(n){return n.length},n.drop=function(n){return function(e){return e.substring(n)}}}(PS["Data.String.CodeUnits"]=PS["Data.String.CodeUnits"]||{}),function(n){"use strict";(PS["Data.String.Unsafe"]=PS["Data.String.Unsafe"]||{}).charAt=function(n){return function(e){if(n>=0&&n<e.length)return e.charAt(n);throw new Error("Data.String.Unsafe.charAt: Invalid index.")}}}(),function(n){"use strict";var e=PS["Data.String.Unsafe"];n.charAt=e.charAt}(PS["Data.String.Unsafe"]=PS["Data.String.Unsafe"]||{}),function(n){"use strict";var e=PS["Data.String.CodeUnits"];PS["Control.Semigroupoid"],PS["Data.Boolean"],PS["Data.Eq"],PS["Data.Function"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semiring"],PS["Data.String.Pattern"],PS["Data.String.Unsafe"],PS.Prelude;n.singleton=e.singleton,n.length=e.length,n.drop=e.drop}(PS["Data.String.CodeUnits"]=PS["Data.String.CodeUnits"]||{}),function(n){"use strict";var e=PS.Foreign,t=PS["Control.Applicative"],r=PS["Control.Monad.Error.Class"],a=(PS["Control.Monad.Except"],PS["Control.Monad.Except.Trans"]),u=(PS["Control.Semigroupoid"],PS["Data.Boolean"]),o=(PS["Data.Either"],PS["Data.Eq"],PS["Data.Function"],PS["Data.HeytingAlgebra"],PS["Data.Identity"]),i=(PS["Data.Int"],PS["Data.List.NonEmpty"]),l=(PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Show"]),c=(PS["Data.String.CodeUnits"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),f=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),s=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),S=function(n){if(n instanceof c)return n.value0;if(n instanceof s)return"Error at array index "+l.show(l.showInt)(n.value0)+": "+S(n.value1);if(n instanceof d)return"Error at property "+l.show(l.showString)(n.value0)+": "+S(n.value1);if(n instanceof f)return"Type mismatch: expected "+n.value0+", found "+n.value1;throw new Error("Failed pattern match at Foreign line 72, column 1 - line 72, column 45: "+[n.constructor.name])},P=function(n){return r.throwError(a.monadThrowExceptT(o.monadIdentity))(i.singleton(n))},v=function(n){return function(r){if(e.tagOf(r)===n)return t.pure(a.applicativeExceptT(o.monadIdentity))(e.unsafeFromForeign(r));if(u.otherwise)return P(new f(n,e.tagOf(r)));throw new Error("Failed pattern match at Foreign line 106, column 1 - line 106, column 55: "+[n.constructor.name,r.constructor.name])}},p=v("Boolean"),m=v("String");n.ForeignError=c,n.TypeMismatch=f,n.ErrorAtIndex=s,n.ErrorAtProperty=d,n.renderForeignError=S,n.unsafeReadTagged=v,n.readString=m,n.readBoolean=p,n.fail=P,n.unsafeToForeign=e.unsafeToForeign,n.typeOf=e.typeOf}(PS.Foreign=PS.Foreign||{}),function(n){"use strict";(PS["Foreign.Index"]=PS["Foreign.Index"]||{}).unsafeReadPropImpl=function(n,e,t,r){return null==r?n:e(r[t])}}(),function(n){"use strict";var e=PS["Foreign.Index"],t=PS["Control.Applicative"],r=(PS["Control.Bind"],PS["Control.Monad.Except.Trans"]),a=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.HeytingAlgebra"],PS["Data.Identity"]),u=(PS["Data.List.NonEmpty"],PS.Foreign),o=(PS.Prelude,function(n){return function(o){return e.unsafeReadPropImpl(u.fail(new u.TypeMismatch("object",u.typeOf(o))),t.pure(r.applicativeExceptT(a.monadIdentity)),n,o)}});n.readProp=o}(PS["Foreign.Index"]=PS["Foreign.Index"]||{}),function(n){"use strict";n.empty={},n._lookup=function(n,e,t,r){return t in r?e(r[t]):n}}(PS["Foreign.Object"]=PS["Foreign.Object"]||{}),function(n){"use strict";(PS["Foreign.Object.ST"]=PS["Foreign.Object.ST"]||{}).new=function(){return{}}}(),function(n){"use strict";var e=PS["Foreign.Object.ST"];PS["Control.Monad.ST"],PS["Data.Maybe"];n.new=e.new}(PS["Foreign.Object.ST"]=PS["Foreign.Object.ST"]||{}),function(n){"use strict";var e=PS["Foreign.Object"],t=(PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Monad.ST"],PS["Control.Monad.ST.Internal"],PS["Control.Semigroupoid"],PS["Data.Array"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.FoldableWithIndex"],PS["Data.Function"],PS["Data.Function.Uncurried"]),r=(PS["Data.Functor"],PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),a=(PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Foreign.Object.ST"],PS.Prelude,t.runFn4(e._lookup)(r.Nothing.value)(r.Just.create));n.lookup=a,n.empty=e.empty}(PS["Foreign.Object"]=PS["Foreign.Object"]||{}),function(n){"use strict";PS["Type.Data.Boolean"],PS["Type.Data.Symbol"],PS["Type.Equality"];var e=function(){function n(){}return n.value=new n,n}();n.RLProxy=e}(PS["Type.Row"]=PS["Type.Row"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.Function.Uncurried"],PS["Data.HeytingAlgebra"];var e=PS["Data.Symbol"],t=(PS.Prelude,PS["Record.Unsafe"]);PS["Record.Unsafe.Union"],PS["Type.Row"],PS["Unsafe.Coerce"];n.get=function(n){return function(r){return function(r){return function(a){return t.unsafeGet(e.reflectSymbol(n)(r))(a)}}}}}(PS.Record=PS.Record||{}),function(n){"use strict";n.copyRecord=function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e},n.unsafeInsert=function(n){return function(e){return function(t){return t[n]=e,t}}}}(PS["Record.Builder"]=PS["Record.Builder"]||{}),function(n){"use strict";var e=PS["Record.Builder"],t=PS["Control.Category"],r=PS["Control.Semigroupoid"],a=(PS["Data.Function.Uncurried"],PS["Data.Symbol"]),u=(PS.Prelude,PS["Record.Unsafe.Union"],PS["Type.Row"],PS["Unsafe.Coerce"],r.semigroupoidFn),o=t.categoryFn;n.build=function(n){return function(t){return n(e.copyRecord(t))}},n.insert=function(n){return function(n){return function(n){return function(t){return function(r){return function(u){return e.unsafeInsert(a.reflectSymbol(n)(t))(r)(u)}}}}}},n.semigroupoidBuilder=u,n.categoryBuilder=o}(PS["Record.Builder"]=PS["Record.Builder"]||{}),function(n){"use strict";PS["Simple.JSON"],PS["Control.Alt"],PS["Control.Applicative"],PS["Control.Bind"];var e=PS["Control.Category"],t=(PS["Control.Monad.Except"],PS["Control.Monad.Except.Trans"],PS["Control.Semigroupoid"]),r=(PS["Data.Bifunctor"],PS["Data.Boolean"],PS["Data.Either"],PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Identity"],PS["Data.List.Types"],PS["Data.Maybe"],PS["Data.Nullable"],PS["Data.Semigroup"],PS["Data.Symbol"]),a=(PS["Data.Traversable"],PS["Data.Variant"],PS["Effect.Exception"],PS["Effect.Uncurried"],PS["Effect.Unsafe"],PS.Foreign),u=(PS["Foreign.Index"],PS["Foreign.Object"],PS["Global.Unsafe"]),o=(PS["Partial.Unsafe"],PS.Prelude,PS.Record),i=PS["Record.Builder"],l=(PS["Type.Prelude"],PS["Type.Row"]),c=function(n){this.writeImpl=n},f=function(n){this.writeImplFields=n},s=function(n){return n.writeImplFields},d=function(n){return n.writeImpl},S=new c(a.unsafeToForeign),P=new c(a.unsafeToForeign),v=new c(a.unsafeToForeign),p=new f(function(n){return function(n){return e.identity(i.categoryBuilder)}});n.writeJSON=function(n){return function(e){return u.unsafeStringify(d(n)(e))}},n.WriteForeign=c,n.writeImpl=d,n.WriteForeignFields=f,n.writeImplFields=s,n.writeForeignString=S,n.writeForeignInt=P,n.writeForeignBoolean=v,n.recordWriteForeign=function(n){return function(n){return new c(function(e){var t=s(n)(l.RLProxy.value)(e);return a.unsafeToForeign(i.build(t)({}))})}},n.consWriteForeignFields=function(n){return function(e){return function(a){return function(u){return function(c){return function(S){return new f(function(f){return function(f){var P=s(a)(l.RLProxy.value)(f),v=d(e)(o.get(n)(u)(r.SProxy.value)(f));return t.compose(i.semigroupoidBuilder)(i.insert(S)(c)(n)(r.SProxy.value)(v))(P)}})}}}}}},n.nilWriteForeignFields=p}(PS["Simple.JSON"]=PS["Simple.JSON"]||{}),function(n){"use strict";var e=PS["Data.Symbol"],t=PS["Simple.JSON"],r=t.recordWriteForeign()(t.consWriteForeignFields(new e.IsSymbol(function(){return"created"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"id"}))(t.writeForeignInt)(t.consWriteForeignFields(new e.IsSymbol(function(){return"length"}))(t.writeForeignInt)(t.consWriteForeignFields(new e.IsSymbol(function(){return"text"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"title"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"updated"}))(t.writeForeignString)(t.nilWriteForeignFields)()()())()()())()()())()()())()()())()()()),a=t.recordWriteForeign()(t.consWriteForeignFields(new e.IsSymbol(function(){return"bid"}))(t.writeForeignInt)(t.consWriteForeignFields(new e.IsSymbol(function(){return"description"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"private"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"selected"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"tags"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"time"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"title"}))(t.writeForeignString)(t.consWriteForeignFields(new e.IsSymbol(function(){return"toread"}))(t.writeForeignBoolean)(t.consWriteForeignFields(new e.IsSymbol(function(){return"url"}))(t.writeForeignString)(t.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()());n.bookmark_wfI=a,n.note_wfI=r}(PS.Model=PS.Model||{}),function(n){"use strict";(PS["Web.HTML"]=PS["Web.HTML"]||{}).window=function(){return window}}(),function(n){"use strict";(PS["Web.HTML.HTMLDocument"]=PS["Web.HTML.HTMLDocument"]||{})._body=function(n){return function(){return n.body}}}(),function(n){"use strict";(PS["Web.DOM.Element"]=PS["Web.DOM.Element"]||{}).removeAttribute=function(n){return function(e){return function(){return e.removeAttribute(n),{}}}}}(),function(n){"use strict";n._querySelector=function(n){return function(e){return function(){return e.querySelector(n)}}},n.querySelectorAll=function(n){return function(e){return function(){return e.querySelectorAll(n)}}}}(PS["Web.DOM.ParentNode"]=PS["Web.DOM.ParentNode"]||{}),function(n){"use strict";(PS["Web.DOM.NodeList"]=PS["Web.DOM.NodeList"]||{}).toArray=function(n){return function(){return[].slice.call(n)}}}(),function(n){"use strict";var e=PS["Web.DOM.NodeList"];PS["Control.Semigroupoid"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Nullable"],PS.Effect,PS.Prelude,PS["Web.DOM.Internal.Types"];n.toArray=e.toArray}(PS["Web.DOM.NodeList"]=PS["Web.DOM.NodeList"]||{}),function(n){"use strict";var e=PS["Web.DOM.ParentNode"],t=(PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Nullable"]),a=(PS["Data.Ord"],PS.Effect);PS.Prelude,PS["Web.DOM.HTMLCollection"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NodeList"];n.querySelector=function(n){return function(u){return t.map(a.functorEffect)(r.toMaybe)(e._querySelector(n)(u))}},n.querySelectorAll=e.querySelectorAll}(PS["Web.DOM.ParentNode"]=PS["Web.DOM.ParentNode"]||{}),function(n){"use strict";(PS["Web.Event.EventTarget"]=PS["Web.Event.EventTarget"]||{}).eventListener=function(n){return function(){return function(e){return n(e)()}}}}(),function(n){"use strict";n._currentTarget=function(n){return n.currentTarget},n.preventDefault=function(n){return function(){return n.preventDefault()}}}(PS["Web.Event.Event"]=PS["Web.Event.Event"]||{}),function(n){"use strict";n.toCharCode=function(n){return n.charCodeAt(0)},n.fromCharCode=function(n){return String.fromCharCode(n)}}(PS["Data.Enum"]=PS["Data.Enum"]||{}),function(n){"use strict";var e=PS["Data.Enum"],t=(PS["Control.Apply"],PS["Control.Bind"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Semigroupoid"],PS["Data.Boolean"],PS["Data.Bounded"]),r=(PS["Data.Either"],PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),a=(PS["Data.Newtype"],PS["Data.Ord"]),u=(PS["Data.Ordering"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Tuple"],PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS["Data.Unit"],PS["Partial.Unsafe"],PS.Prelude,function(n,e,t){this.Ord0=n,this.pred=e,this.succ=t}),o=function(n,e,t,r,a){this.Bounded0=n,this.Enum1=e,this.cardinality=t,this.fromEnum=r,this.toEnum=a},i=function(n){return n.toEnum},l=function(n){return n.fromEnum},c=function(n){return function(e){return function(t){return n(e(t)+1|0)}}},f=function(n){return function(e){return function(t){return n(e(t)-1|0)}}},s=function(n){return n>=t.bottom(t.boundedInt)&&n<=t.top(t.boundedInt)?new r.Just(e.fromCharCode(n)):r.Nothing.value},d=new u(function(){return a.ordChar},f(s)(e.toCharCode),c(s)(e.toCharCode)),S=new o(function(){return t.boundedChar},function(){return d},e.toCharCode(t.top(t.boundedChar))-e.toCharCode(t.bottom(t.boundedChar))|0,e.toCharCode,s);n.Enum=u,n.succ=function(n){return n.succ},n.pred=function(n){return n.pred},n.BoundedEnum=o,n.cardinality=function(n){return n.cardinality},n.toEnum=i,n.fromEnum=l,n.toEnumWithDefaults=function(n){return function(e){return function(a){return function(u){var o=i(n)(u);if(o instanceof r.Just)return o.value0;if(o instanceof r.Nothing)return u<l(n)(t.bottom(n.Bounded0()))?e:a;throw new Error("Failed pattern match at Data.Enum line 158, column 33 - line 160, column 62: "+[o.constructor.name])}}}},n.defaultSucc=c,n.defaultPred=f,n.enumChar=d,n.boundedEnumChar=S}(PS["Data.Enum"]=PS["Data.Enum"]||{}),function(n){"use strict";var e=PS["Web.Event.Event"],t=(PS["Control.Semigroupoid"],PS["Data.DateTime.Instant"],PS["Data.Enum"],PS["Data.Eq"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Nullable"]);PS["Data.Ord"],PS.Effect,PS.Prelude,PS["Web.Event.EventPhase"],PS["Web.Event.Internal.Types"];n.currentTarget=function(n){return t.toMaybe(e._currentTarget(n))},n.preventDefault=e.preventDefault}(PS["Web.Event.Event"]=PS["Web.Event.Event"]||{}),function(n){"use strict";var e=PS["Web.Event.EventTarget"];PS.Effect,PS.Prelude,PS["Web.Event.Event"],PS["Web.Event.Internal.Types"];n.eventListener=e.eventListener}(PS["Web.Event.EventTarget"]=PS["Web.Event.EventTarget"]||{}),function(n){"use strict";(PS["Web.Internal.FFI"]=PS["Web.Internal.FFI"]||{})._unsafeReadProtoTagged=function(n,e,t,r){for(var a=r;null!=a;){var u=Object.getPrototypeOf(a),o=u.constructor.name;if(o===t)return e(r);if("Object"===o)return n;a=u}return n}}(),function(n){"use strict";var e=PS["Web.Internal.FFI"],t=(PS["Data.Function.Uncurried"],PS["Data.Maybe"]);n.unsafeReadProtoTagged=function(n){return function(r){return e._unsafeReadProtoTagged(t.Nothing.value,t.Just.create,n,r)}}}(PS["Web.Internal.FFI"]=PS["Web.Internal.FFI"]||{}),function(n){"use strict";var e=PS["Web.DOM.Element"],t=(PS["Control.Semigroupoid"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Nullable"],PS.Effect,PS.Prelude,PS["Unsafe.Coerce"]),r=(PS["Web.DOM.ChildNode"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonDocumentTypeChildNode"],PS["Web.DOM.ParentNode"],PS["Web.Event.EventTarget"],PS["Web.Internal.FFI"]),a=t.unsafeCoerce,u=t.unsafeCoerce,o=r.unsafeReadProtoTagged("Element");n.fromNode=o,n.toNode=u,n.toParentNode=a,n.removeAttribute=e.removeAttribute}(PS["Web.DOM.Element"]=PS["Web.DOM.Element"]||{}),function(n){"use strict";(PS["Web.DOM.NonElementParentNode"]=PS["Web.DOM.NonElementParentNode"]||{})._getElementById=function(n){return function(e){return function(){return e.getElementById(n)}}}}(),function(n){"use strict";var e=PS["Web.DOM.NonElementParentNode"],t=(PS["Control.Semigroupoid"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Nullable"]),a=PS.Effect;PS.Prelude,PS["Web.DOM.Element"];n.getElementById=function(n){return function(u){return t.map(a.functorEffect)(r.toMaybe)(e._getElementById(n)(u))}}}(PS["Web.DOM.NonElementParentNode"]=PS["Web.DOM.NonElementParentNode"]||{}),function(n){"use strict";PS["Web.DOM.Document"],PS["Control.Semigroupoid"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Nullable"],PS.Effect,PS.Prelude;var e=PS["Unsafe.Coerce"],t=(PS["Web.DOM.Comment"],PS["Web.DOM.DocumentFragment"],PS["Web.DOM.DocumentType"],PS["Web.DOM.Element"],PS["Web.DOM.HTMLCollection"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonElementParentNode"],PS["Web.DOM.ParentNode"],PS["Web.DOM.ProcessingInstruction"],PS["Web.DOM.Text"],PS["Web.Event.EventTarget"],PS["Web.Internal.FFI"],e.unsafeCoerce);n.toNonElementParentNode=t}(PS["Web.DOM.Document"]=PS["Web.DOM.Document"]||{}),function(n){"use strict";(PS["Web.HTML.HTMLElement"]=PS["Web.HTML.HTMLElement"]||{})._read=function(n,e,t){var r=Object.prototype.toString.call(t);return 0===r.indexOf("[object HTML")&&r.indexOf("Element]")===r.length-8?e(t):n}}(),function(n){"use strict";var e=PS["Web.HTML.HTMLElement"],t=(PS["Control.Semigroupoid"],PS["Data.Function.Uncurried"],PS["Data.Functor"],PS["Data.Maybe"]),r=(PS["Data.Nullable"],PS.Effect,PS.Prelude,PS["Unsafe.Coerce"]),a=(PS["Web.DOM"],PS["Web.DOM.DOMTokenList"],PS["Web.DOM.Element"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonDocumentTypeChildNode"],PS["Web.DOM.ParentNode"],PS["Web.Event.EventTarget"],r.unsafeCoerce),u=r.unsafeCoerce;n.fromElement=function(n){return e._read(t.Nothing.value,t.Just.create,n)},n.toElement=u,n.toNode=a}(PS["Web.HTML.HTMLElement"]=PS["Web.HTML.HTMLElement"]||{}),function(n){"use strict";var e=PS["Web.HTML.HTMLDocument"],t=(PS["Control.Semigroupoid"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Nullable"]),a=PS.Effect,u=(PS.Prelude,PS["Unsafe.Coerce"]),o=(PS["Web.DOM.Document"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NonElementParentNode"],PS["Web.DOM.ParentNode"],PS["Web.Event.EventTarget"],PS["Web.HTML.HTMLDocument.ReadyState"],PS["Web.HTML.HTMLElement"],PS["Web.Internal.FFI"],u.unsafeCoerce),i=u.unsafeCoerce;n.toDocument=i,n.toParentNode=o,n.body=function(n){return t.map(a.functorEffect)(r.toMaybe)(e._body(n))}}(PS["Web.HTML.HTMLDocument"]=PS["Web.HTML.HTMLDocument"]||{}),function(n){"use strict";n.href=function(n){return function(){return n.href}},n.setHref=function(n){return function(e){return function(){e.href=n}}},n.search=function(n){return function(){return n.search}},n.reload=function(n){return function(){n.reload()}}}(PS["Web.HTML.Location"]=PS["Web.HTML.Location"]||{}),function(n){"use strict";var e=PS["Web.HTML.Location"];PS.Effect,PS.Prelude;n.setHref=e.setHref,n.search=e.search,n.reload=e.reload}(PS["Web.HTML.Location"]=PS["Web.HTML.Location"]||{}),function(n){"use strict";n.document=function(n){return function(){return n.document}},n.location=function(n){return function(){return n.location}}}(PS["Web.HTML.Window"]=PS["Web.HTML.Window"]||{}),function(n){"use strict";var e=PS["Web.HTML.Window"];PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Nullable"],PS["Data.Ord"],PS.Effect,PS.Prelude,PS["Unsafe.Coerce"],PS["Web.Event.EventTarget"],PS["Web.HTML.HTMLDocument"],PS["Web.HTML.History"],PS["Web.HTML.Location"],PS["Web.HTML.Navigator"],PS["Web.Storage.Storage"];n.document=e.document,n.location=e.location}(PS["Web.HTML.Window"]=PS["Web.HTML.Window"]||{}),function(n){"use strict";var e=PS["Web.HTML"];PS.Effect,PS["Web.HTML.HTMLAnchorElement"],PS["Web.HTML.HTMLAreaElement"],PS["Web.HTML.HTMLAudioElement"],PS["Web.HTML.HTMLBRElement"],PS["Web.HTML.HTMLBaseElement"],PS["Web.HTML.HTMLBodyElement"],PS["Web.HTML.HTMLButtonElement"],PS["Web.HTML.HTMLCanvasElement"],PS["Web.HTML.HTMLDListElement"],PS["Web.HTML.HTMLDataElement"],PS["Web.HTML.HTMLDataListElement"],PS["Web.HTML.HTMLDivElement"],PS["Web.HTML.HTMLDocument"],PS["Web.HTML.HTMLElement"],PS["Web.HTML.HTMLEmbedElement"],PS["Web.HTML.HTMLFieldSetElement"],PS["Web.HTML.HTMLFormElement"],PS["Web.HTML.HTMLHRElement"],PS["Web.HTML.HTMLHeadElement"],PS["Web.HTML.HTMLHeadingElement"],PS["Web.HTML.HTMLIFrameElement"],PS["Web.HTML.HTMLImageElement"],PS["Web.HTML.HTMLInputElement"],PS["Web.HTML.HTMLKeygenElement"],PS["Web.HTML.HTMLLIElement"],PS["Web.HTML.HTMLLabelElement"],PS["Web.HTML.HTMLLegendElement"],PS["Web.HTML.HTMLLinkElement"],PS["Web.HTML.HTMLMapElement"],PS["Web.HTML.HTMLMediaElement"],PS["Web.HTML.HTMLMetaElement"],PS["Web.HTML.HTMLMeterElement"],PS["Web.HTML.HTMLModElement"],PS["Web.HTML.HTMLOListElement"],PS["Web.HTML.HTMLObjectElement"],PS["Web.HTML.HTMLOptGroupElement"],PS["Web.HTML.HTMLOptionElement"],PS["Web.HTML.HTMLOutputElement"],PS["Web.HTML.HTMLParagraphElement"],PS["Web.HTML.HTMLParamElement"],PS["Web.HTML.HTMLPreElement"],PS["Web.HTML.HTMLProgressElement"],PS["Web.HTML.HTMLQuoteElement"],PS["Web.HTML.HTMLScriptElement"],PS["Web.HTML.HTMLSelectElement"],PS["Web.HTML.HTMLSourceElement"],PS["Web.HTML.HTMLSpanElement"],PS["Web.HTML.HTMLStyleElement"],PS["Web.HTML.HTMLTableCaptionElement"],PS["Web.HTML.HTMLTableCellElement"],PS["Web.HTML.HTMLTableColElement"],PS["Web.HTML.HTMLTableDataCellElement"],PS["Web.HTML.HTMLTableElement"],PS["Web.HTML.HTMLTableHeaderCellElement"],PS["Web.HTML.HTMLTableRowElement"],PS["Web.HTML.HTMLTableSectionElement"],PS["Web.HTML.HTMLTemplateElement"],PS["Web.HTML.HTMLTextAreaElement"],PS["Web.HTML.HTMLTimeElement"],PS["Web.HTML.HTMLTitleElement"],PS["Web.HTML.HTMLTrackElement"],PS["Web.HTML.HTMLUListElement"],PS["Web.HTML.HTMLVideoElement"],PS["Web.HTML.History"],PS["Web.HTML.Location"],PS["Web.HTML.Navigator"],PS["Web.HTML.Window"];n.window=e.window}(PS["Web.HTML"]=PS["Web.HTML"]||{}),function(n){"use strict";var e=PS.Globals,t=PS["Control.Applicative"],r=(PS["Data.Function"],PS["Data.Function.Uncurried"],PS["Data.Maybe"]),a=PS["Data.Nullable"],u=PS["Data.Tuple"],o=PS.Effect;PS.Model,PS.Prelude,PS["Web.DOM"],PS["Web.HTML"],PS["Web.XHR.FormData"];n["app'"]=function(n){return e._app()},n.closest=function(n){return function(a){return t.pure(o.applicativeEffect)(e._closest(r.Just.create,r.Nothing.value,n,a))}},n.moment8601=function(n){return t.pure(o.applicativeEffect)(e._moment8601(u.Tuple.create,n))},n.mmoment8601=function(n){return e._mmoment8601(r.Just.create,r.Nothing.value,u.Tuple.create,n)},n.innerHtml=function(n){return t.pure(o.applicativeEffect)(e._innerHtml(n))},n.setInnerHtml=function(n){return function(r){return t.pure(o.applicativeEffect)(e._setInnerHtml(n,r))}},n.createFormData=function(n){return e._createFormData(n)},n.createFormString=function(n){return e._createFormString(n)},n.createFormArray=function(n){return e._createFormArray(n)},n.getDataAttribute=function(n){return function(r){return t.pure(o.applicativeEffect)(a.toMaybe(e._getDataAttribute(n,r)))}},n.setDataAttribute=function(n){return function(r){return function(a){return t.pure(o.applicativeEffect)(e._setDataAttribute(n,r,a))}}},n.closeWindow=function(n){return t.pure(o.applicativeEffect)(e._closeWindow(n))},n._app=e._app,n._closest=e._closest,n._moment8601=e._moment8601,n._mmoment8601=e._mmoment8601,n._innerHtml=e._innerHtml,n._setInnerHtml=e._setInnerHtml,n._createFormData=e._createFormData,n._createFormString=e._createFormString,n._createFormArray=e._createFormArray,n._getDataAttribute=e._getDataAttribute,n._setDataAttribute=e._setDataAttribute,n._closeWindow=e._closeWindow}(PS.Globals=PS.Globals||{}),function(n){"use strict";var e;(PS["Network.HTTP.Affjax"]=PS["Network.HTTP.Affjax"]||{})._ajax=(e={},"undefined"==typeof module||!module.require||"undefined"!=typeof process&&process.versions.electron?(e.newXHR=function(){return new XMLHttpRequest},e.fixupUrl=function(n){return n||"/"},e.getResponse=function(n){return n.response}):(e.newXHR=function(){return new(module.require("xhr2"))},e.fixupUrl=function(n){var e=module.require("url"),t=e.parse(n);return t.protocol=t.protocol||"http:",t.hostname=t.hostname||"localhost",e.format(t)},e.getResponse=function(n){return n.response}),function(n,t){return function(r,a){var u=e.newXHR(),o=e.fixupUrl(t.url);if(u.open(t.method||"GET",o,!0,t.username,t.password),t.headers)try{for(var i,l=0;null!=(i=t.headers[l]);l++)u.setRequestHeader(i.field,i.value)}catch(n){r(n)}return u.onerror=function(){r(new Error("AJAX request failed: "+t.method+" "+t.url))},u.onload=function(){a({status:u.status,statusText:u.statusText,headers:u.getAllResponseHeaders().split("\r\n").filter(function(n){return n.length>0}).map(function(e){var t=e.indexOf(":");return n(e.substring(0,t))(e.substring(t+2))}),response:e.getResponse(u)})},u.responseType=t.responseType,u.withCredentials=t.withCredentials,u.send(t.content),function(n,e,t){try{u.abort()}catch(n){return e(n)}return t()}}})}(),function(n){"use strict";n.fromObject=function(n){return n},n.stringify=function(n){return JSON.stringify(n)};var e=Object.prototype.toString;n._caseJson=function(n,t,r,a,u,o,i){return null==i?n():"boolean"==typeof i?t(i):"number"==typeof i?r(i):"string"==typeof i?a(i):"[object Array]"===e.call(i)?u(i):o(i)}}(PS["Data.Argonaut.Core"]=PS["Data.Argonaut.Core"]||{}),function(n){"use strict";var e,t=PS["Data.Argonaut.Core"],r=(PS["Data.Eq"],PS["Data.Function"]),a=(PS["Data.Function.Uncurried"],PS["Data.Maybe"]),u=(PS["Data.Ord"],PS["Data.Ordering"],PS["Foreign.Object"]),o=(PS.Prelude,(e=a.Nothing.value,function(n){return function(t){return t(e)(n)}})(a.Just.create)),i=t.fromObject(u.empty),l=function(n){return function(e){return function(a){return t._caseJson(r.const(n),r.const(n),e,r.const(n),r.const(n),r.const(n),a)}}},c=o(l);n.caseJsonNumber=l,n.toNumber=c,n.jsonEmptyObject=i,n.stringify=t.stringify}(PS["Data.Argonaut.Core"]=PS["Data.Argonaut.Core"]||{}),function(n){"use strict";(PS["Data.Argonaut.Parser"]=PS["Data.Argonaut.Parser"]||{})._jsonParser=function(n,e,t){try{return e(JSON.parse(t))}catch(e){return n(e.message)}}}(),function(n){"use strict";var e=PS["Data.Argonaut.Parser"],t=(PS["Data.Argonaut.Core"],PS["Data.Either"]);PS["Data.Function.Uncurried"];n.jsonParser=function(n){return e._jsonParser(t.Left.create,t.Right.create,n)}}(PS["Data.Argonaut.Parser"]=PS["Data.Argonaut.Parser"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Semigroupoid"];var e=PS["Data.Either"],t=(PS["Data.Function"],PS.Effect,PS["Effect.Aff"]);PS["Effect.Exception"],PS["Effect.Uncurried"],PS.Prelude;n.fromEffectFnAff=function(n){return t.makeAff(function(r){return function(){var a=n(function(n){return r(e.Left.create(n))()},function(n){return r(e.Right.create(n))()});return function(n){return t.makeAff(function(r){return function(){return a(n,function(n){return r(e.Left.create(n))()},function(n){return r(e.Right.create(n))()}),t.nonCanceler}})}}})}}(PS["Effect.Aff.Compat"]=PS["Effect.Aff.Compat"]||{}),function(n){"use strict";PS["Data.Argonaut.Core"],PS["Data.ArrayBuffer.Types"],PS["Data.FormURLEncoded"];var e=PS["Data.Maybe"],t=(PS["Data.MediaType"],PS["Data.MediaType.Common"]),r=(PS["Web.DOM.Document"],PS["Web.File.Blob"],PS["Web.XHR.FormData"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=o.create;n.ArrayView=r,n.Blob=a,n.Document=u,n.String=o,n.FormData=i,n.FormURLEncoded=l,n.Json=c,n.string=f,n.toMediaType=function(n){return n instanceof l?new e.Just(t.applicationFormURLEncoded):n instanceof c?new e.Just(t.applicationJSON):e.Nothing.value}}(PS["Network.HTTP.Affjax.Request"]=PS["Network.HTTP.Affjax.Request"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=(PS["Data.Argonaut.Core"],PS["Data.ArrayBuffer.Types"],PS["Data.Maybe"]),r=(PS["Data.MediaType"],PS["Data.MediaType.Common"]),a=(PS.Prelude,PS["Web.DOM.Document"],PS["Web.File.Blob"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),l=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=new i(e.identity(e.categoryFn)),s=new c(e.identity(e.categoryFn));n.ArrayBuffer=a,n.Blob=u,n.Document=o,n.Json=i,n.String=l,n.Ignore=c,n.json=f,n.ignore=s,n.toResponseType=function(n){if(n instanceof a)return"arraybuffer";if(n instanceof u)return"blob";if(n instanceof o)return"document";if(n instanceof i)return"text";if(n instanceof l)return"text";if(n instanceof c)return"";throw new Error("Failed pattern match at Network.HTTP.Affjax.Response line 41, column 3 - line 49, column 1: "+[n.constructor.name])},n.toMediaType=function(n){return n instanceof i?new t.Just(r.applicationJSON):t.Nothing.value}}(PS["Network.HTTP.Affjax.Response"]=PS["Network.HTTP.Affjax.Response"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.HeytingAlgebra"];var e=PS["Data.MediaType"],t=PS["Data.Newtype"],r=(PS["Data.Semigroup"],PS["Data.Show"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();n.Accept=r,n.ContentType=a,n.RequestHeader=u,n.requestHeaderName=function(n){if(n instanceof r)return"Accept";if(n instanceof a)return"Content-Type";if(n instanceof u)return n.value0;throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 24, column 1 - line 24, column 45: "+[n.constructor.name])},n.requestHeaderValue=function(n){if(n instanceof r)return t.unwrap(e.newtypeMediaType)(n.value0);if(n instanceof a)return t.unwrap(e.newtypeMediaType)(n.value0);if(n instanceof u)return n.value1;throw new Error("Failed pattern match at Network.HTTP.RequestHeader line 29, column 1 - line 29, column 46: "+[n.constructor.name])}}(PS["Network.HTTP.RequestHeader"]=PS["Network.HTTP.RequestHeader"]||{}),function(n){"use strict";PS["Data.Eq"],PS["Data.HeytingAlgebra"],PS["Data.Semigroup"],PS["Data.Show"],PS.Prelude;var e=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}();n.responseHeader=function(n){return function(t){return new e(n,t)}}}(PS["Network.HTTP.ResponseHeader"]=PS["Network.HTTP.ResponseHeader"]||{}),function(n){"use strict";var e=PS["Network.HTTP.Affjax"],t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.Error.Class"],u=PS["Control.Monad.Except"],o=PS["Control.Monad.Except.Trans"],i=(PS["Control.Parallel"],PS["Control.Semigroupoid"],PS["Data.Argonaut.Core"]),l=PS["Data.Argonaut.Parser"],c=PS["Data.Array"],f=PS["Data.Either"],s=PS["Data.Eq"],d=PS["Data.Foldable"],S=PS["Data.FormURLEncoded"],P=PS["Data.Function"],v=(PS["Data.Function.Uncurried"],PS["Data.Functor"]),p=PS["Data.HTTP.Method"],m=PS["Data.HeytingAlgebra"],D=PS["Data.Identity"],b=(PS["Data.Int"],PS["Data.List.Types"]),g=PS["Data.Maybe"],h=PS["Data.Monoid"],w=PS["Data.Nullable"],y=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semiring"],PS["Data.Time.Duration"],PS["Data.Unit"]),E=PS["Effect.Aff"],M=PS["Effect.Aff.Compat"],C=(PS["Effect.Class"],PS["Effect.Exception"]),T=(PS["Effect.Ref"],PS.Foreign),A=(PS.Math,PS["Network.HTTP.Affjax.Request"]),F=PS["Network.HTTP.Affjax.Response"],H=PS["Network.HTTP.RequestHeader"],L=PS["Network.HTTP.ResponseHeader"],_=(PS["Network.HTTP.StatusCode"],PS.Prelude,{method:new f.Left(p.GET.value),url:"/",headers:[],content:g.Nothing.value,username:g.Nothing.value,password:g.Nothing.value,withCredentials:!1});n.defaultRequest=_,n.affjax=function(n){return function(_){var I,O=function(){if(n instanceof F.ArrayBuffer)return T.unsafeReadTagged("ArrayBuffer");if(n instanceof F.Blob)return T.unsafeReadTagged("Blob");if(n instanceof F.Document)return T.unsafeReadTagged("Document");if(n instanceof F.Json)return r.composeKleisliFlipped(o.bindExceptT(D.monadIdentity))(function(e){return n.value0(""===(r=e)?t.pure(o.applicativeExceptT(D.monadIdentity))(i.jsonEmptyObject):f.either(function(n){return T.fail(T.ForeignError.create(n))})(t.pure(o.applicativeExceptT(D.monadIdentity)))(l.jsonParser(r)));var r})(T.unsafeReadTagged("String"));if(n instanceof F.String)return T.unsafeReadTagged("String");if(n instanceof F.Ignore)return P.const(n.value0(t.pure(o.applicativeExceptT(D.monadIdentity))(y.unit)));throw new Error("Failed pattern match at Network.HTTP.Affjax line 261, column 19 - line 267, column 51: "+[n.constructor.name])}(),N=function(n){return function(e){return n instanceof g.Just&&!d.any(d.foldableArray)(m.heytingAlgebraBoolean)(P.on(s.eq(s.eqString))(H.requestHeaderName)(n.value0))(e)?c.snoc(e)(n.value0):e}},W={method:p.print(_.method),url:_.url,headers:v.map(v.functorArray)(function(n){return{field:H.requestHeaderName(n),value:H.requestHeaderValue(n)}})((I=_.content,N(v.map(g.functorMaybe)(H.ContentType.create)(r.bindFlipped(g.bindMaybe)(A.toMediaType)(I)))(N(v.map(g.functorMaybe)(H.Accept.create)(F.toMediaType(n)))(_.headers)))),content:w.toNullable(v.map(g.functorMaybe)(function(n){if(n instanceof A.ArrayView)return n.value0(T.unsafeToForeign);if(n instanceof A.Blob)return T.unsafeToForeign(n.value0);if(n instanceof A.Document)return T.unsafeToForeign(n.value0);if(n instanceof A.String)return T.unsafeToForeign(n.value0);if(n instanceof A.FormData)return T.unsafeToForeign(n.value0);if(n instanceof A.FormURLEncoded)return T.unsafeToForeign(S.encode(n.value0));if(n instanceof A.Json)return T.unsafeToForeign(i.stringify(n.value0));throw new Error("Failed pattern match at Network.HTTP.Affjax line 235, column 20 - line 242, column 53: "+[n.constructor.name])})(_.content)),responseType:F.toResponseType(n),username:w.toNullable(_.username),password:w.toNullable(_.password),withCredentials:_.withCredentials};return r.bind(E.bindAff)(M.fromEffectFnAff(e._ajax(L.responseHeader,W)))(function(n){var e=u.runExcept(O(n.response));if(e instanceof f.Left)return a.throwError(E.monadThrowAff)(C.error(d.intercalate(b.foldableNonEmptyList)(h.monoidString)("\n")(v.map(b.functorNonEmptyList)(T.renderForeignError)(e.value0))));if(e instanceof f.Right)return t.pure(E.applicativeAff)({response:e.value0,headers:n.headers,status:n.status,statusText:n.statusText});throw new Error("Failed pattern match at Network.HTTP.Affjax line 217, column 3 - line 219, column 49: "+[e.constructor.name])})}}}(PS["Network.HTTP.Affjax"]=PS["Network.HTTP.Affjax"]||{}),function(n){"use strict";var e=PS["Control.Bind"],t=(PS["Control.Semigroupoid"],PS["Data.Argonaut"],PS["Data.Array"]),r=PS["Data.Either"],a=(PS["Data.FormURLEncoded"],PS["Data.Functor"]),u=PS["Data.HTTP.Method"],o=PS["Data.Maybe"],i=PS["Data.MediaType.Common"],l=(PS["Data.Semigroup"],PS["Data.Show"]),c=PS["Data.Unit"],f=PS.Effect,s=PS["Effect.Aff"],d=PS["Effect.Class"],S=PS.Globals,P=PS.Model,v=PS["Network.HTTP.Affjax"],p=PS["Network.HTTP.Affjax.Request"],m=PS["Network.HTTP.Affjax.Response"],D=PS["Network.HTTP.RequestHeader"],b=(PS.Prelude,PS["Simple.JSON"]),g=PS["Web.Event.Event"],h=PS["Web.HTML"],w=PS["Web.HTML.Location"],y=PS["Web.HTML.Window"],E=function(){function n(){}return n.value=new n,n}(),M=function(){function n(){}return n.value=new n,n}(),C=new l.Show(function(n){if(n instanceof E)return"star";if(n instanceof M)return"unstar";throw new Error("Failed pattern match at App line 31, column 1 - line 31, column 37: "+[n.constructor.name])}),T=function(n){return function(e){return function(a){return function(u){return function(o){var i=S["app'"](c.unit);return v.affjax(o)({method:new r.Left(n),url:e,headers:t.cons(new D.RequestHeader(i.csrfHeaderName,i.csrfToken))(a),content:u,username:v.defaultRequest.username,password:v.defaultRequest.password,withCredentials:v.defaultRequest.withCredentials})}}}}},A=function(n){var t=S["app'"](n);return e.discard(e.discardUnit)(s.bindAff)(a.void(s.functorAff)(T(u.POST.value)(t.authRlogoutR)([])(o.Nothing.value)(m.ignore)))(function(){return d.liftEffect(s.monadEffectAff)(e.bind(f.bindEffect)(e.bind(f.bindEffect)(h.window)(y.location))(w.reload))})},F=function(n){return function(e){return function(t){return function(r){return function(a){return T(n)(S["app'"](c.unit).homeR+e)(t)(r)(a)}}}}},H=function(n){return function(e){return function(t){return function(r){return F(n)(e)([new D.ContentType(i.applicationFormURLEncoded)])(a.map(o.functorMaybe)(p.FormURLEncoded.create)(t))(r)}}}},L=function(n){return function(e){return function(t){return function(r){return function(u){return F(e)(t)([new D.ContentType(i.applicationJSON)])(a.map(o.functorMaybe)(function(e){return p.string(b.writeJSON(n)(e))})(r))(u)}}}}};n.Star=E,n.UnStar=M,n.toggleStar=function(n){return function(e){var t="bm/"+l.show(l.showInt)(n)+"/"+l.show(C)(e);return a.void(s.functorAff)(H(u.POST.value)(t)(o.Nothing.value)(m.ignore))}},n.destroy=function(n){return H(u.DELETE.value)("bm/"+l.show(l.showInt)(n))(o.Nothing.value)(m.ignore)},n.markRead=function(n){var e="bm/"+l.show(l.showInt)(n)+"/read";return H(u.POST.value)(e)(o.Nothing.value)(m.ignore)},n.editBookmark=function(n){return L(P.bookmark_wfI)(u.POST.value)("api/add")(new o.Just(n))(m.ignore)},n.editNote=function(n){return L(P.note_wfI)(u.POST.value)("api/note/add")(new o.Just(n))(m.json)},n.destroyNote=function(n){return H(u.DELETE.value)("api/note/"+l.show(l.showInt)(n))(o.Nothing.value)(m.ignore)},n.logoutE=function(n){return e.bindFlipped(f.bindEffect)(function(n){return a.void(f.functorEffect)(s.launchAff(A(n)))})(g.preventDefault(n))},n.logout=A,n.fetchJson=L,n.fetchUrlEnc=H,n.fetchPath=F,n.fetchUrl=T,n.showStar=C}(PS.App=PS.App||{}),function(n){"use strict";var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}();n.ButtonButton=e,n.ButtonSubmit=t,n.ButtonReset=r,n.renderButtonType=function(n){if(n instanceof e)return"button";if(n instanceof t)return"submit";if(n instanceof r)return"reset";throw new Error("Failed pattern match at DOM.HTML.Indexed.ButtonType line 9, column 20 - line 12, column 18: "+[n.constructor.name])}}(PS["DOM.HTML.Indexed.ButtonType"]=PS["DOM.HTML.Indexed.ButtonType"]||{}),function(n){"use strict";var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}(),r=function(){function n(){}return n.value=new n,n}(),a=function(){function n(){}return n.value=new n,n}(),u=function(){function n(){}return n.value=new n,n}(),o=function(){function n(){}return n.value=new n,n}(),i=function(){function n(){}return n.value=new n,n}(),l=function(){function n(){}return n.value=new n,n}(),c=function(){function n(){}return n.value=new n,n}(),f=function(){function n(){}return n.value=new n,n}(),s=function(){function n(){}return n.value=new n,n}(),d=function(){function n(){}return n.value=new n,n}(),S=function(){function n(){}return n.value=new n,n}(),P=function(){function n(){}return n.value=new n,n}(),v=function(){function n(){}return n.value=new n,n}(),p=function(){function n(){}return n.value=new n,n}(),m=function(){function n(){}return n.value=new n,n}(),D=function(){function n(){}return n.value=new n,n}(),b=function(){function n(){}return n.value=new n,n}(),g=function(){function n(){}return n.value=new n,n}(),h=function(){function n(){}return n.value=new n,n}(),w=function(){function n(){}return n.value=new n,n}();n.InputButton=e,n.InputCheckbox=t,n.InputColor=r,n.InputDate=a,n.InputDatetimeLocal=u,n.InputEmail=o,n.InputFile=i,n.InputHidden=l,n.InputImage=c,n.InputMonth=f,n.InputNumber=s,n.InputPassword=d,n.InputRadio=S,n.InputRange=P,n.InputReset=v,n.InputSearch=p,n.InputSubmit=m,n.InputTel=D,n.InputText=b,n.InputTime=g,n.InputUrl=h,n.InputWeek=w,n.renderInputType=function(n){if(n instanceof e)return"button";if(n instanceof t)return"checkbox";if(n instanceof r)return"color";if(n instanceof a)return"date";if(n instanceof u)return"datetime-local";if(n instanceof o)return"email";if(n instanceof i)return"file";if(n instanceof l)return"hidden";if(n instanceof c)return"image";if(n instanceof f)return"month";if(n instanceof s)return"number";if(n instanceof d)return"password";if(n instanceof S)return"radio";if(n instanceof P)return"range";if(n instanceof v)return"reset";if(n instanceof p)return"search";if(n instanceof m)return"submit";if(n instanceof D)return"tel";if(n instanceof b)return"text";if(n instanceof g)return"time";if(n instanceof h)return"url";if(n instanceof w)return"week";throw new Error("Failed pattern match at DOM.HTML.Indexed.InputType line 28, column 19 - line 50, column 16: "+[n.constructor.name])}}(PS["DOM.HTML.Indexed.InputType"]=PS["DOM.HTML.Indexed.InputType"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=(PS["Control.Monad.Cont.Trans"],PS["Control.Monad.Except.Trans"],PS["Control.Monad.List.Trans"],PS["Control.Monad.Maybe.Trans"],PS["Control.Monad.RWS.Trans"],PS["Control.Monad.Reader.Trans"],PS["Control.Monad.State.Trans"],PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Trans"],PS["Control.Semigroupoid"],PS["Effect.Aff"]),r=(PS["Effect.Class"],PS.Prelude,function(n,e){this.MonadEffect0=n,this.liftAff=e}),a=new r(function(){return t.monadEffectAff},e.identity(e.categoryFn));n.liftAff=function(n){return n.liftAff},n.MonadAff=r,n.monadAffAff=a}(PS["Effect.Aff.Class"]=PS["Effect.Aff.Class"]||{}),function(n){"use strict";var e=PS["Data.Eq"],t=PS["Data.Ord"],r=(PS.Prelude,function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}()),a=new e.Eq(function(n){return function(e){return n.value0(n.value2)(e.value2)}}),u=new t.Ord(function(){return a},function(n){return function(e){return n.value1(n.value2)(e.value2)}});n.mkOrdBox=function(n){return r.create(e.eq(n.Eq0()))(t.compare(n))},n.unOrdBox=function(n){return n.value2},n.eqOrdBox=a,n.ordOrdBox=u}(PS["Halogen.Data.OrdBox"]=PS["Halogen.Data.OrdBox"]||{}),function(n){"use strict";var e=function(){function n(){}return n.value=new n,n}(),t=function(){function n(){}return n.value=new n,n}();n.On=e,n.Off=t,n.renderOnOff=function(n){if(n instanceof e)return"on";if(n instanceof t)return"off";throw new Error("Failed pattern match at DOM.HTML.Indexed.OnOff line 8, column 15 - line 10, column 10: "+[n.constructor.name])}}(PS["DOM.HTML.Indexed.OnOff"]=PS["DOM.HTML.Indexed.OnOff"]||{}),function(n){"use strict";var e=PS["Data.Bifunctor"],t=(PS["Data.Eq"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Ord"],PS.Prelude,PS["Web.DOM"],function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}()),a=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),u=new e.Bifunctor(function(n){return function(e){return function(t){if(t instanceof r)return new r(t.value0,t.value1,n(t.value2));if(t instanceof a)return new a(e(t.value0));throw new Error("Failed pattern match at Halogen.Query.InputF line 21, column 15 - line 23, column 27: "+[t.constructor.name])}}}),o=new t.Functor(e.rmap(u));n.RefUpdate=r,n.Query=a,n.bifunctorInputF=u,n.functorInputF=o}(PS["Halogen.Query.InputF"]=PS["Halogen.Query.InputF"]||{}),function(n){"use strict";PS.Effect,PS["Effect.Uncurried"],PS.Prelude;var e=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}();n.Step=e,n.extract=function(n){return n.value0},n.step=function(n){return n.value1},n.halt=function(n){return n.value2}}(PS["Halogen.VDom.Machine"]=PS["Halogen.VDom.Machine"]||{}),function(n){"use strict";PS["Control.Category"],PS["Control.Semigroupoid"];var e=PS["Data.Bifunctor"],t=(PS["Data.Eq"],PS["Data.Functor"]),r=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Tuple"]),a=(PS.Prelude,PS["Unsafe.Coerce"]),u=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),o=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),i=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),l=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),c=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),f=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),s=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),d=function(n){return function(e){return n(e)}},S=a.unsafeCoerce,P=new t.Functor(function(n){return function(e){return new u(e.value0,e.value1,n(e.value2))}}),v=new e.Bifunctor(function(n){return function(e){return d(function(t){return S(new s(function(e){return n(t.value0(e))},function(n){return e(t.value1(n))},t.value2))})}}),p=new e.Bifunctor(function(n){return function(t){return function(r){return r instanceof o?new o(r.value0):new f(r instanceof f?e.bimap(v)(n)(t)(r.value0):S(new s(n,t,r)))}}}),m=d(function(n){var a=function(u){if(u instanceof o)return new o(u.value0);if(u instanceof i)return new i(t.map(P)(n.value0)(u.value0),t.map(t.functorArray)(a)(u.value1));if(u instanceof l)return new l(t.map(P)(n.value0)(u.value0),t.map(t.functorArray)(t.map(r.functorTuple)(a))(u.value1));if(u instanceof c)return new c(n.value1(u.value0));if(u instanceof f)return new f(e.bimap(v)(n.value0)(n.value1)(u.value0));throw new Error("Failed pattern match at Halogen.VDom.Types line 74, column 7 - line 74, column 27: "+[u.constructor.name])};return a(n.value2)});n.Text=o,n.Elem=i,n.Keyed=l,n.Widget=c,n.Grafted=f,n.Graft=s,n.graft=S,n.unGraft=d,n.runGraft=m,n.ElemSpec=u,n.bifunctorVDom=p,n.bifunctorGraft=v,n.functorElemSpec=P}(PS["Halogen.VDom.Types"]=PS["Halogen.VDom.Types"]||{}),function(n){"use strict";n.unsafeGetAny=function(n,e){return e[n]},n.unsafeHasAny=function(n,e){return e.hasOwnProperty(n)},n.unsafeSetAny=function(n,e,t){t[n]=e},n.forE=function(n,e){for(var t=[],r=0;r<n.length;r++)t.push(e(r,n[r]));return t},n.forInE=function(n,e){for(var t=Object.keys(n),r=0;r<t.length;r++){var a=t[r];e(a,n[a])}},n.diffWithIxE=function(n,e,t,r,a){for(var u=[],o=n.length,i=e.length,l=0;;){if(l<o)l<i?u.push(t(l,n[l],e[l])):r(l,n[l]);else{if(!(l<i))break;u.push(a(l,e[l]))}l++}return u},n.strMapWithIxE=function(n,e,t){for(var r={},a=0;a<n.length;a++){var u=n[a],o=e(u);r[o]=t(o,a,u)}return r},n.diffWithKeyAndIxE=function(n,e,t,r,a,u){for(var o={},i=0;i<e.length;i++){var l=e[i],c=t(l);n.hasOwnProperty(c)?o[c]=r(c,i,n[c],l):o[c]=u(c,i,l)}for(var c in n)c in o||a(c,n[c]);return o},n.refEq=function(n,e){return n===e},n.createTextNode=function(n,e){return e.createTextNode(n)},n.setTextContent=function(n,e){e.textContent=n},n.createElement=function(n,e,t){return null!=n?t.createElementNS(n,e):t.createElement(e)},n.insertChildIx=function(n,e,t){var r=t.childNodes.item(n)||null;r!==e&&t.insertBefore(e,r)},n.removeChild=function(n,e){e&&n.parentNode===e&&e.removeChild(n)},n.parentNode=function(n){return n.parentNode},n.setAttribute=function(n,e,t,r){null!=n?r.setAttributeNS(n,e,t):r.setAttribute(e,t)},n.removeAttribute=function(n,e,t){null!=n?t.removeAttributeNS(n,e):t.removeAttribute(e)},n.addEventListener=function(n,e,t){t.addEventListener(n,e,!1)},n.removeEventListener=function(n,e,t){t.removeEventListener(n,e,!1)},n.jsUndefined=void 0}(PS["Halogen.VDom.Util"]=PS["Halogen.VDom.Util"]||{}),function(n){"use strict";var e=function(n){return function(e){return function(){return e[n]}}};n._parentNode=e("parentNode"),n._nextSibling=e("nextSibling"),n.insertBefore=function(n){return function(e){return function(t){return function(){return t.insertBefore(n,e)}}}},n.appendChild=function(n){return function(e){return function(){return e.appendChild(n)}}},n.removeChild=function(n){return function(e){return function(){return e.removeChild(n)}}}}(PS["Web.DOM.Node"]=PS["Web.DOM.Node"]||{}),function(n){"use strict";var e=PS["Web.DOM.Node"],t=(PS["Control.Semigroupoid"],PS["Data.Enum"],PS["Data.Functor"]),r=(PS["Data.Maybe"],PS["Data.Nullable"]),a=PS.Effect;PS.Prelude,PS["Unsafe.Coerce"],PS["Web.DOM.Document"],PS["Web.DOM.Element"],PS["Web.DOM.Internal.Types"],PS["Web.DOM.NodeType"],PS["Web.Event.EventTarget"],PS["Web.Internal.FFI"];n.parentNode=function(n){return t.map(a.functorEffect)(r.toMaybe)(e._parentNode(n))},n.nextSibling=function(n){return t.map(a.functorEffect)(r.toMaybe)(e._nextSibling(n))},n.insertBefore=e.insertBefore,n.appendChild=e.appendChild,n.removeChild=e.removeChild}(PS["Web.DOM.Node"]=PS["Web.DOM.Node"]||{}),function(n){"use strict";var e=PS["Halogen.VDom.Util"],t=PS["Control.Applicative"],r=(PS["Data.Function.Uncurried"],PS["Data.Nullable"],PS["Data.Unit"]),a=PS.Effect,u=(PS["Effect.Uncurried"],PS["Foreign.Object"],PS["Foreign.Object.ST"]),o=(PS["Halogen.VDom.Types"],PS.Prelude,PS["Unsafe.Coerce"]),i=(PS["Web.DOM.Document"],PS["Web.DOM.Element"],PS["Web.DOM.Node"],PS["Web.Event.EventTarget"],e.unsafeGetAny),l=o.unsafeCoerce,c=e.unsafeSetAny,f=u.new,s=t.pure(a.applicativeEffect)(r.unit);n.effectUnit=s,n.newMutMap=f,n.pokeMutMap=c,n.unsafeFreeze=l,n.unsafeLookup=i,n.unsafeGetAny=e.unsafeGetAny,n.unsafeHasAny=e.unsafeHasAny,n.unsafeSetAny=e.unsafeSetAny,n.forE=e.forE,n.forInE=e.forInE,n.diffWithIxE=e.diffWithIxE,n.diffWithKeyAndIxE=e.diffWithKeyAndIxE,n.strMapWithIxE=e.strMapWithIxE,n.refEq=e.refEq,n.createTextNode=e.createTextNode,n.setTextContent=e.setTextContent,n.createElement=e.createElement,n.insertChildIx=e.insertChildIx,n.removeChild=e.removeChild,n.parentNode=e.parentNode,n.setAttribute=e.setAttribute,n.removeAttribute=e.removeAttribute,n.addEventListener=e.addEventListener,n.removeEventListener=e.removeEventListener,n.jsUndefined=e.jsUndefined}(PS["Halogen.VDom.Util"]=PS["Halogen.VDom.Util"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Data.Eq"],PS["Data.Function.Uncurried"];var e=PS["Data.Functor"],t=PS["Data.Maybe"],r=PS["Data.Nullable"],a=(PS["Data.Semigroup"],PS["Data.Tuple"]),u=PS["Data.Unit"],o=(PS.Effect,PS["Effect.Ref"]),i=(PS["Effect.Uncurried"],PS.Foreign),l=PS["Foreign.Object"],c=(PS["Halogen.VDom"],PS["Halogen.VDom.Machine"]),f=(PS["Halogen.VDom.Types"],PS["Halogen.VDom.Util"]),s=(PS.Prelude,PS["Unsafe.Coerce"]),d=(PS["Web.DOM.Element"],PS["Web.Event.Event"],PS["Web.Event.EventTarget"]),S=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),P=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),v=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),p=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),m=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),D=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),b=f.unsafeGetAny,g=f.unsafeSetAny,h=function(n){if(n instanceof v&&n.value0 instanceof t.Just)return"attr/"+n.value0.value0+":"+n.value1;if(n instanceof v)return"attr/:"+n.value1;if(n instanceof p)return"prop/"+n.value0;if(n instanceof m)return"handler/"+n.value0;if(n instanceof D)return"ref";throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 178, column 16 - line 185, column 1: "+[n.constructor.name])},w=s.unsafeCoerce,y=s.unsafeCoerce,E=s.unsafeCoerce,M=new e.Functor(function(n){return function(r){return r instanceof m?new m(r.value0,e.map(e.functorFn)(e.map(t.functorMaybe)(n))(r.value1)):r instanceof D?new D(e.map(e.functorFn)(e.map(t.functorMaybe)(n))(r.value0)):r}});n.Attribute=v,n.Property=p,n.Handler=m,n.Ref=D,n.Created=S,n.Removed=P,n.propFromString=w,n.propFromBoolean=E,n.propFromInt=y,n.buildProp=function(n){return function(e){var s=function(n){return function(t,o){if(o instanceof v)return f.removeAttribute(r.toNullable(o.value0),o.value1,e);if(o instanceof p)return function(n,e){return"string"===i.typeOf(f.unsafeGetAny(n,e))?f.unsafeSetAny(n,"",e):"rowSpan"===n?f.unsafeSetAny(n,1,e):"colSpan"===n?f.unsafeSetAny(n,1,e):f.unsafeSetAny(n,f.jsUndefined,e)}(o.value0,e);if(o instanceof m){var l=f.unsafeLookup(o.value0,n);return f.removeEventListener(o.value0,a.fst(l),e)}if(o instanceof D)return u.unit;throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 165, column 5 - line 175, column 18: "+[o.constructor.name])}},w=function(e){return e instanceof t.Just?n(e.value0)():u.unit},y=function(n){var r=l.lookup("ref")(n);return r instanceof t.Just&&r.value0 instanceof D?function(){return w(r.value0.value0(new P(e)))}:f.effectUnit},E=function(n){return function(t,u,i){if(i instanceof v)return f.setAttribute(r.toNullable(i.value0),i.value1,i.value2,e),i;if(i instanceof p)return g(i.value0,i.value1,e),i;if(i instanceof m){var l=f.unsafeGetAny(i.value0,n);if(f.unsafeHasAny(i.value0,n))return o.write(i.value1)(a.snd(l))(),i;var c=o.new(i.value1)(),s=d.eventListener(function(n){return function(){var e=o.read(c)();return w(e(n))}})();return f.pokeMutMap(i.value0,new a.Tuple(s,c),n),f.addEventListener(i.value0,s,e),i}if(i instanceof D)return w(i.value0(new S(e))),i;throw new Error("Failed pattern match at Halogen.VDom.DOM.Prop line 109, column 5 - line 131, column 15: "+[i.constructor.name])}},M=function(n,t){return function(i){var l=f.newMutMap(),d=s(n),S=function(n,t){return function(u,i,l,c){if(l instanceof v&&c instanceof v)return l.value2===c.value2?c:(f.setAttribute(r.toNullable(c.value0),c.value1,c.value2,e),c);if(l instanceof p&&c instanceof p){if(f.refEq(l.value1,c.value1))return c;if("value"===c.value0){var s=b("value",e);return f.refEq(s,c.value1)?c:(g(c.value0,c.value1,e),c)}return g(c.value0,c.value1,e),c}if(l instanceof m&&c instanceof m){var d=f.unsafeLookup(c.value0,n);return o.write(c.value1)(a.snd(d))(),f.pokeMutMap(c.value0,d,t),c}return c}}(n,l),P=E(l),D=f.diffWithKeyAndIxE(t,i,h,S,d,P);return new c.Step(u.unit,M(f.unsafeFreeze(l),D),y(D))}};return function(n){var e=f.newMutMap(),t=f.strMapWithIxE(n,h,E(e));return new c.Step(u.unit,M(f.unsafeFreeze(e),t),y(t))}}},n.functorProp=M}(PS["Halogen.VDom.DOM.Prop"]=PS["Halogen.VDom.DOM.Prop"]||{}),function(n){"use strict";PS["Control.Semigroupoid"];var e=PS["DOM.HTML.Indexed.ButtonType"],t=(PS["DOM.HTML.Indexed.CrossOriginValue"],PS["DOM.HTML.Indexed.DirValue"],PS["DOM.HTML.Indexed.FormMethod"],PS["DOM.HTML.Indexed.InputType"]),r=(PS["DOM.HTML.Indexed.KindValue"],PS["DOM.HTML.Indexed.MenuType"],PS["DOM.HTML.Indexed.MenuitemType"],PS["DOM.HTML.Indexed.OnOff"]),a=(PS["DOM.HTML.Indexed.OrderedListType"],PS["DOM.HTML.Indexed.PreloadValue"],PS["DOM.HTML.Indexed.ScopeValue"],PS["DOM.HTML.Indexed.StepValue"],PS["DOM.HTML.Indexed.WrapValue"],PS["Data.Bifunctor"]),u=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"]),o=(PS["Data.Maybe"],PS["Data.MediaType"],PS["Data.Newtype"]),i=(PS["Data.Ord"],PS["Data.Semigroup"],PS["Data.Tuple"],PS["Halogen.Query.InputF"]),l=(PS["Halogen.VDom"],PS["Halogen.VDom.DOM.Prop"]),c=PS["Halogen.VDom.Types"],f=(PS.Prelude,PS["Unsafe.Coerce"],PS["Web.DOM.Element"],PS["Web.Event.Event"],function(n){return n}),s=function(n){return n},d=function(n){this.toPropValue=n},S=function(n){return n.toPropValue},P=new d(l.propFromString),v=new d(function(n){return l.propFromString(r.renderOnOff(n))}),p=new o.Newtype(function(n){return n},s),m=new d(l.propFromInt),D=new d(function(n){return l.propFromString(t.renderInputType(n))}),b=l.Handler.create,g=new d(function(n){return l.propFromString(e.renderButtonType(n))}),h=new d(l.propFromBoolean),w=new a.Bifunctor(function(n){return function(e){return function(t){return a.bimap(c.bifunctorVDom)(u.map(u.functorArray)(u.map(l.functorProp)(u.map(i.functorInputF)(e))))(n)(t)}}});n.HTML=f,n.slot=function(n){return f(c.Widget.create(n))},n.text=function(n){return f(c.Text.create(n))},n.element=function(n){return function(e){return function(t){return function(r){return new c.Elem(new c.ElemSpec(n,e,t),r)}}}},n.prop=function(n){return function(e){return function(t){return l.Property.create(e)(S(n)(t))}}},n.attr=function(n){return function(e){return l.Attribute.create(n)(e)}},n.handler=b,n.IsProp=d,n.toPropValue=S,n.ClassName=s,n.bifunctorHTML=w,n.stringIsProp=P,n.intIsProp=m,n.booleanIsProp=h,n.buttonTypeIsProp=g,n.inputTypeIsProp=D,n.onOffIsProp=v,n.newtypeClassName=p}(PS["Halogen.HTML.Core"]=PS["Halogen.HTML.Core"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Category"],a=(PS["Control.Semigroupoid"],PS["Data.Const"],PS["Data.Either"]),u=(PS["Data.Eq"],PS["Data.Function"],PS["Data.Functor"]),o=(PS["Data.List"],PS["Data.List.NonEmpty"]),i=PS["Data.List.Types"],l=(PS["Data.Newtype"],PS["Data.NonEmpty"]),c=(PS["Data.Ring"],PS["Data.Semiring"],PS["Data.Tuple"]),f=(PS.Prelude,PS["Unsafe.Coerce"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),s=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),S=function(n){return function(e){return new d(n,e)}},P=s.create,v=function(n){return function(t){return function(r){return function(a){return function(u){return function(l){var S,P=n,v=t,p=r,m=a,D=u,b=!1;function g(n,t,r,a,u,S){if(u instanceof f)return b=!0,new c.Tuple(new i.Cons({func:e.pure(n)(u.value0),count:S},t),r);if(u instanceof s)return b=!0,new c.Tuple(new i.Cons({func:a(u.value0),count:S},t),r);if(u instanceof d)return P=n,v=t,p=o.cons(u.value1)(r),m=a,D=u.value0,void(l=S+1|0);throw new Error("Failed pattern match at Control.Applicative.Free line 102, column 41 - line 105, column 81: "+[u.constructor.name])}for(;!b;)S=g(P,v,p,m,D,l);return S}}}}}},p=function(n){return function(e){return function(r){return function(u){var o,f=n,s=e,d=r,S=!1;function P(n,e,r,o){if(e instanceof i.Nil)return S=!0,new a.Left(o);if(e instanceof i.Cons){var P=t.apply(n.Apply0())(e.value0.func)(o);if(1===e.value0.count)return e.value1 instanceof i.Nil?(S=!0,new a.Left(P)):(f=n,s=e.value1,d=r,void(u=P));if(r instanceof i.Nil)return S=!0,new a.Left(P);if(r instanceof i.Cons)return S=!0,a.Right.create(new c.Tuple(new i.Cons({func:P,count:e.value0.count-1|0},e.value1),new l.NonEmpty(r.value0,r.value1)));throw new Error("Failed pattern match at Control.Applicative.Free line 83, column 11 - line 88, column 50: "+[r.constructor.name])}throw new Error("Failed pattern match at Control.Applicative.Free line 72, column 3 - line 88, column 50: "+[e.constructor.name])}for(;!S;)o=P(f,s,d,u);return o}}}},m=new u.Functor(function(n){return function(e){return S(new f(n))(e)}}),D=function(n){return function(t){return function(r){return function(r){var u,o=!1;function i(u){if(u.value1.value0 instanceof f){if((i=p(n)(u.value0)(u.value1.value1)(e.pure(n)(u.value1.value0.value0)))instanceof a.Left)return o=!0,i.value0;if(i instanceof a.Right)return void(r=i.value0);throw new Error("Failed pattern match at Control.Applicative.Free line 54, column 17 - line 56, column 24: "+[i.constructor.name])}if(u.value1.value0 instanceof s){var i;if((i=p(n)(u.value0)(u.value1.value1)(t(u.value1.value0.value0)))instanceof a.Left)return o=!0,i.value0;if(i instanceof a.Right)return void(r=i.value0);throw new Error("Failed pattern match at Control.Applicative.Free line 57, column 17 - line 59, column 24: "+[i.constructor.name])}if(!(u.value1.value0 instanceof d))throw new Error("Failed pattern match at Control.Applicative.Free line 53, column 5 - line 64, column 1: "+[u.value1.value0.constructor.name]);var c=new l.NonEmpty(u.value1.value0.value1,u.value1.value1);r=v(n)(u.value0)(c)(t)(u.value1.value0.value0)(1)}for(;!o;)u=i(r);return u}(new c.Tuple(i.Nil.value,o.singleton(r)))}}},b=new t.Apply(function(){return m},function(n){return function(e){return S(n)(e)}}),g=new e.Applicative(function(){return b},f.create);n.liftFreeAp=P,n.retractFreeAp=function(n){return D(n)(r.identity(r.categoryFn))},n.foldFreeAp=D,n.hoistFreeAp=function(n){return D(g)(function(e){return P(n(e))})},n.functorFreeAp=m,n.applyFreeAp=b,n.applicativeFreeAp=g}(PS["Control.Applicative.Free"]=PS["Control.Applicative.Free"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"];var e=PS["Data.List"],t=PS["Data.List.Types"],r=PS["Data.Maybe"],a=(PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Tuple"]),u=(PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),o=new u(t.Nil.value,t.Nil.value);n.CatQueue=u,n.empty=o,n.null=function(n){return n.value0 instanceof t.Nil&&n.value1 instanceof t.Nil},n.snoc=function(n){return function(e){return new u(n.value0,new t.Cons(e,n.value1))}},n.uncons=function(n){var o,i=!1;function l(o){if(o.value0 instanceof t.Nil&&o.value1 instanceof t.Nil)return i=!0,r.Nothing.value;if(!(o.value0 instanceof t.Nil)){if(o.value0 instanceof t.Cons)return i=!0,new r.Just(new a.Tuple(o.value0.value0,new u(o.value0.value1,o.value1)));throw new Error("Failed pattern match at Data.CatQueue line 83, column 1 - line 83, column 63: "+[o.constructor.name])}n=new u(e.reverse(o.value1),t.Nil.value)}for(;!i;)o=l(n);return o}}(PS["Data.CatQueue"]=PS["Data.CatQueue"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Monad"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"];var e=PS["Data.CatQueue"],t=(PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.List"],PS["Data.List.Types"]),r=PS["Data.Maybe"],a=(PS["Data.Monoid"],PS["Data.Semigroup"]),u=(PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.Tuple"]),o=(PS["Data.Unfoldable"],PS["Data.Unfoldable1"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),i=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),l=function(n){return function(t){if(n instanceof o)return t;if(n instanceof i)return new i(n.value0,e.snoc(n.value1)(t));throw new Error("Failed pattern match at Data.CatList line 111, column 1 - line 111, column 54: "+[n.constructor.name,t.constructor.name])}},c=o.value,f=function(n){return function(e){return e instanceof o?n:n instanceof o?e:l(n)(e)}},s=new a.Semigroup(f);n.CatNil=o,n.CatCons=i,n.empty=c,n.append=f,n.snoc=function(n){return function(t){return f(n)(new i(t,e.empty))}},n.uncons=function(n){if(n instanceof o)return r.Nothing.value;if(n instanceof i)return new r.Just(new u.Tuple(n.value0,e.null(n.value1)?o.value:(a=l,function(n){return function(u){var o,i=function(n){return function(e){return function(r){var a,u=n,o=e,i=!1;function l(n,e,a){if(a instanceof t.Nil)return i=!0,e;if(a instanceof t.Cons)return u=n,o=n(e)(a.value0),void(r=a.value1);throw new Error("Failed pattern match at Data.CatList line 126, column 3 - line 126, column 59: "+[n.constructor.name,e.constructor.name,a.constructor.name])}for(;!i;)a=l(u,o,r);return a}}};return(o=u,function(u){var l,c=o,f=!1;function s(o,l){var s=e.uncons(o);if(s instanceof r.Nothing)return f=!0,i(function(n){return function(e){return e(n)}})(n)(l);if(s instanceof r.Just)return c=s.value0.value1,void(u=new t.Cons(a(s.value0.value0),l));throw new Error("Failed pattern match at Data.CatList line 122, column 14 - line 124, column 67: "+[s.constructor.name])}for(;!f;)l=s(c,u);return l})(t.Nil.value)}})(o.value)(n.value1)));var a;throw new Error("Failed pattern match at Data.CatList line 102, column 1 - line 102, column 61: "+[n.constructor.name])},n.semigroupCatList=s}(PS["Data.CatList"]=PS["Data.CatList"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),u=PS["Control.Monad.Rec.Class"],o=(PS["Control.Monad.Trans.Class"],PS["Control.Semigroupoid"],PS["Data.CatList"]),i=(PS["Data.Either"],PS["Data.Eq"],PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"]),l=PS["Data.Maybe"],c=(PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"]),f=(PS["Data.Traversable"],PS["Data.Tuple"],PS.Prelude,PS["Unsafe.Coerce"],function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),s=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),d=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),S=function(n){return new f(n,o.empty)},P=new a.Monad(function(){return D},function(){return p}),v=new i.Functor(function(n){return function(t){return r.bindFlipped(p)(function(t){return e.pure(D)(n(t))})(t)}}),p=new r.Bind(function(){return m},function(n){return function(e){return new f(n.value0,o.snoc(n.value1)(e))}}),m=new t.Apply(function(){return v},a.ap(P)),D=new e.Applicative(function(){return m},function(n){return S(s.create(n))});n.liftF=function(n){return S(new d(n,function(n){return e.pure(D)(n)}))},n.foldFree=function(n){return function(t){return u.tailRecM(n)(function(r){var a=function(n){var e,t=!1;function r(e){var r=function(n){return function(e){return new f(n.value0,c.append(o.semigroupCatList)(n.value1)(e))}};if(e.value0 instanceof s){var a=o.uncons(e.value1);if(a instanceof l.Nothing)return t=!0,new s(e.value0.value0);if(a instanceof l.Just)return void(n=r(function(n){return n}(a.value0.value0)(e.value0.value0))(a.value0.value1));throw new Error("Failed pattern match at Control.Monad.Free line 220, column 7 - line 224, column 64: "+[a.constructor.name])}if(e.value0 instanceof d)return t=!0,new d(e.value0.value0,function(n){return r(e.value0.value1(n))(e.value1)});throw new Error("Failed pattern match at Control.Monad.Free line 218, column 3 - line 226, column 56: "+[e.value0.constructor.name])}for(;!t;)e=r(n);return e}(r);if(a instanceof s)return i.map(n.Monad0().Bind1().Apply0().Functor0())(u.Done.create)(e.pure(n.Monad0().Applicative0())(a.value0));if(a instanceof d)return i.map(n.Monad0().Bind1().Apply0().Functor0())(function(n){return u.Loop.create(a.value1(n))})(t(a.value0));throw new Error("Failed pattern match at Control.Monad.Free line 151, column 10 - line 153, column 37: "+[a.constructor.name])})}},n.freeFunctor=v,n.freeBind=p,n.freeApplicative=D,n.freeApply=m,n.freeMonad=P}(PS["Control.Monad.Free"]=PS["Control.Monad.Free"]||{}),function(n){"use strict";var e=PS["Unsafe.Coerce"],t=e.unsafeCoerce,r=e.unsafeCoerce;n.mkExists=r,n.runExists=t}(PS["Data.Exists"]=PS["Data.Exists"]||{}),function(n){"use strict";PS["Control.Alt"],PS["Control.Alternative"],PS["Control.Applicative"],PS["Control.Apply"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Comonad"],PS["Control.Extend"],PS["Control.Monad"],PS["Control.Monad.Trans.Class"],PS["Control.MonadPlus"],PS["Control.MonadZero"],PS["Control.Plus"],PS["Control.Semigroupoid"],PS["Data.Distributive"],PS["Data.Eq"];var e=PS["Data.Exists"];PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Functor.Invariant"],PS["Data.Ord"],PS["Data.Semigroup.Foldable"],PS["Data.Semigroup.Traversable"],PS["Data.Traversable"],PS.Prelude;n.unCoyoneda=function(n){return function(t){return e.runExists(function(e){return n(e.value0)(e.value1)})(t)}}}(PS["Data.Coyoneda"]=PS["Data.Coyoneda"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),u=(PS["Control.Monad.Error.Class"],PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"]),o=(PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"]),i=(PS["Control.Monad.Writer.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"]),l=PS["Data.Either"],c=PS["Data.Exists"],f=PS["Data.Functor"],s=(PS["Data.Monoid"],PS["Data.Semigroup"],PS["Data.Unit"]),d=(PS["Effect.Class"],PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),S=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),P=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),v=S.create,p=function(n){return function(e){return new P(c.mkExists(new d(n,e)))}},m=function(n){return function(e){return new f.Functor(function(t){return function(r){if(r instanceof S)return new S(function(a){return f.map(e)(i.bimap(l.bifunctorEither)(t)(f.map(n)(f.map(m(n)(e))(t))))(r.value0(s.unit))});if(r instanceof P)return c.runExists(function(r){return p(r.value0)(function(a){return f.map(m(n)(e))(t)(r.value1(a))})})(r.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans line 57, column 1 - line 57, column 71: "+[t.constructor.name,r.constructor.name])}})}},D=function(n){return function(e){return new a.Monad(function(){return h(n)(e)},function(){return b(n)(e)})}},b=function(n){return function(e){return new r.Bind(function(){return g(n)(e)},function(n){return function(e){return n instanceof P?c.runExists(function(n){return p(n.value0)(function(t){return p(function(e){return n.value1(t)})(e)})})(n.value0):p(function(e){return n})(e)}})}},g=function(n){return function(e){return new t.Apply(function(){return m(n)(e.Bind1().Apply0().Functor0())},a.ap(D(n)(e)))}},h=function(n){return function(t){return new e.Applicative(function(){return g(n)(t)},function(n){return new S(function(r){return e.pure(t.Applicative0())(new l.Left(n))})})}},w=function(n){return function(t){return u.tailRecM(t)(function(a){if(a instanceof S)return f.map(t.Monad0().Bind1().Apply0().Functor0())(u.Done.create)(a.value0(s.unit));if(a instanceof P)return c.runExists(function(a){var o=a.value0(s.unit);if(o instanceof S)return r.bind(t.Monad0().Bind1())(o.value0(s.unit))(function(o){if(o instanceof l.Left)return e.pure(t.Monad0().Applicative0())(new u.Loop(a.value1(o.value0)));if(o instanceof l.Right)return e.pure(t.Monad0().Applicative0())(new u.Done(new l.Right(f.map(n)(function(e){return r.bind(b(n)(t.Monad0()))(e)(a.value1)})(o.value0))));throw new Error("Failed pattern match at Control.Monad.Free.Trans line 52, column 20 - line 54, column 67: "+[o.constructor.name])});if(o instanceof P)return c.runExists(function(o){return e.pure(t.Monad0().Applicative0())(new u.Loop(r.bind(b(n)(t.Monad0()))(o.value0(s.unit))(function(e){return r.bind(b(n)(t.Monad0()))(o.value1(e))(a.value1)})))})(o.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans line 50, column 5 - line 55, column 98: "+[o.constructor.name])})(a.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans line 47, column 3 - line 47, column 75: "+[a.constructor.name])})}};n.freeT=v,n.liftFreeT=function(n){return function(t){return function(r){return new S(function(a){return e.pure(t.Applicative0())(new l.Right(f.map(n)(e.pure(h(n)(t)))(r)))})}}},n.resume=w,n.runFreeT=function(n){return function(t){return function(a){return u.tailRecM(t)(r.composeKleisliFlipped(t.Monad0().Bind1())(function(n){if(n instanceof l.Left)return e.pure(t.Monad0().Applicative0())(new u.Done(n.value0));if(n instanceof l.Right)return f.map(t.Monad0().Bind1().Apply0().Functor0())(u.Loop.create)(a(n.value0));throw new Error("Failed pattern match at Control.Monad.Free.Trans line 126, column 3 - line 126, column 63: "+[n.constructor.name])})(w(n)(t)))}}},n.functorFreeT=m,n.applyFreeT=g,n.applicativeFreeT=h,n.bindFreeT=b,n.monadFreeT=D,n.monadTransFreeT=function(n){return new o.MonadTrans(function(n){return function(e){return new S(function(t){return f.map(n.Bind1().Apply0().Functor0())(l.Left.create)(e)})}})},n.monadRecFreeT=function(n){return function(t){return new u.MonadRec(function(){return D(n)(t)},function(a){var o=function(i){return r.bind(b(n)(t))(a(i))(function(r){if(r instanceof u.Loop)return o(r.value0);if(r instanceof u.Done)return e.pure(h(n)(t))(r.value0);throw new Error("Failed pattern match at Control.Monad.Free.Trans line 80, column 15 - line 82, column 25: "+[r.constructor.name])})};return o})}}}(PS["Control.Monad.Free.Trans"]=PS["Control.Monad.Free.Trans"]||{}),function(n){"use strict";var e=PS["Control.Category"],t=(PS["Control.Semigroupoid"],PS["Data.Newtype"],PS.Prelude,function(n){this.dimap=n}),r=new t(function(n){return function(e){return function(t){return function(r){return e(t(n(r)))}}}}),a=function(n){return n.dimap};n.dimap=a,n.Profunctor=t,n.rmap=function(n){return function(t){return a(n)(e.identity(e.categoryFn))(t)}},n.profunctorFn=r}(PS["Data.Profunctor"]=PS["Data.Profunctor"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Apply"],r=PS["Control.Bind"],a=PS["Control.Category"],u=(PS["Control.Monad.Except"],PS["Control.Monad.Except.Trans"]),o=PS["Control.Monad.Free.Trans"],i=PS["Control.Monad.Rec.Class"],l=PS["Control.Monad.Trans.Class"],c=(PS["Control.Parallel"],PS["Control.Parallel.Class"]),f=(PS["Control.Semigroupoid"],PS["Data.Bifunctor"]),s=PS["Data.Either"],d=(PS["Data.Function"],PS["Data.Functor"]),S=PS["Data.Identity"],P=PS["Data.Maybe"],v=PS["Data.Newtype"],p=PS["Data.Profunctor"],m=PS["Data.Tuple"],D=PS["Data.Unit"],b=(PS.Prelude,function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}()),g=new p.Profunctor(function(n){return function(e){return function(t){return p.dimap(p.profunctorFn)(n)(e)(t)}}}),h=function(n){return function(e){return function(t){return i.tailRecM(o.monadRecFreeT(n)(e))(function(r){return d.map(o.functorFreeT(n)(e.Bind1().Apply0().Functor0()))(P.maybe(new i.Loop(D.unit))(i.Done.create))(t)})(D.unit)}}},w=function(n){return function(t){return function(a){return function(i){return function(l){return function(c){return function(f){var s=function(c){return u.runExceptT(r.bind(u.bindExceptT(i.Monad0()))(u.ExceptT(o.resume(n)(i)(c.value0)))(function(n){return r.bind(u.bindExceptT(i.Monad0()))(u.ExceptT(o.resume(t)(i)(c.value1)))(function(t){return e.pure(u.applicativeExceptT(i.Monad0()))(d.map(a)(function(n){return o.freeT(function(e){return s(n)})})(l(m.Tuple.create)(n)(t)))})}))};return o.freeT(function(n){return s(new m.Tuple(c,f))})}}}}}}},y=function(n){return function(a){return function(u){return function(i){return function(l){return function(f){return function(S){return function(P){var v=function(S){return r.bind(i.Monad0().Bind1())(c.sequential(l)(t.apply(l.Applicative1().Apply0())(d.map(l.Applicative1().Apply0().Functor0())(t.lift2(s.applyEither)(f(m.Tuple.create)))(c.parallel(l)(o.resume(n)(i)(S.value0))))(c.parallel(l)(o.resume(a)(i)(S.value1)))))(function(n){if(n instanceof s.Left)return e.pure(i.Monad0().Applicative0())(new s.Left(n.value0));if(n instanceof s.Right)return e.pure(i.Monad0().Applicative0())(new s.Right(d.map(u)(function(n){return o.freeT(function(e){return v(n)})})(n.value0)));throw new Error("Failed pattern match at Control.Coroutine line 79, column 5 - line 81, column 63: "+[n.constructor.name])})};return o.freeT(function(n){return v(new m.Tuple(S,P))})}}}}}}}},E=new d.Functor(p.rmap(g)),M=new f.Bifunctor(function(n){return function(e){return function(t){return new b(n(t.value0),e(t.value1))}}}),C=new d.Functor(f.rmap(M)),T=function(n){return function(e){return o.liftFreeT(C)(n)(new b(e,D.unit))}};n.loop=h,n.runProcess=function(n){return o.runFreeT(S.functorIdentity)(n)(function(t){return e.pure(n.Monad0().Applicative0())(v.unwrap(S.newtypeIdentity)(t))})},n.fuseWith=y,n.fuseWithL=w,n.Emit=b,n.emit=T,n.producer=function(n){return function(t){return h(C)(n)(r.bind(o.bindFreeT(C)(n))(l.lift(o.monadTransFreeT(C))(n)(t))(function(t){if(t instanceof s.Left)return d.voidLeft(o.functorFreeT(C)(n.Bind1().Apply0().Functor0()))(T(n)(t.value0))(P.Nothing.value);if(t instanceof s.Right)return e.pure(o.applicativeFreeT(C)(n))(new P.Just(t.value0));throw new Error("Failed pattern match at Control.Coroutine line 125, column 3 - line 127, column 29: "+[t.constructor.name])}))}},n.await=function(n){return o.liftFreeT(E)(n)(a.identity(a.categoryFn))},n.connect=function(n){return function(e){return y(C)(E)(S.functorIdentity)(n)(e)(function(n){return function(e){return function(t){return n(e.value1)(t(e.value0))}}})}},n.pullFrom=function(n){return w(E)(C)(S.functorIdentity)(n)(function(n){return function(t){return function(r){return e.pure(S.applicativeIdentity)(n(t(r.value0))(r.value1))}}})},n.bifunctorEmit=M,n.functorEmit=C,n.profunctorAwait=g,n.functorAwait=E}(PS["Control.Coroutine"]=PS["Control.Coroutine"]||{}),function(n){"use strict";var e=function(){function n(){this.head=null,this.last=null,this.size=0}function e(n,e){this.queue=n,this.value=e,this.next=null,this.prev=null}function t(e){this.draining=!1,this.error=null,this.value=e,this.takes=new n,this.reads=new n,this.puts=new n}var r={};function a(n){try{n()}catch(n){setTimeout(function(){throw n},0)}}function u(n){var e;switch(n.size){case 0:return null;case 1:e=n.head,n.head=null;break;case 2:e=n.last,n.head.next=null,n.last=null;break;default:e=n.last,n.last=e.prev,n.last.next=null}return e.prev=null,e.queue=null,n.size--,e.value}function o(n){var e;switch(n.size){case 0:return null;case 1:e=n.head,n.head=null;break;case 2:e=n.head,n.last.prev=null,n.head=n.last,n.last=null;break;default:e=n.head,n.head=e.next,n.head.prev=null}return e.next=null,e.queue=null,n.size--,e.value}return t.EMPTY=r,t.putLast=function(n,t){var r=new e(n,t);switch(n.size){case 0:n.head=r;break;case 1:r.prev=n.head,n.head.next=r,n.last=r;break;default:r.prev=n.last,n.last.next=r,n.last=r}return n.size++,r},t.takeLast=u,t.takeHead=o,t.deleteCell=function(n){null!==n.queue&&(n.queue.last!==n?n.queue.head!==n?(n.prev&&(n.prev.next=n.next),n.next&&(n.next.prev=n.prev),n.queue.size--,n.queue=null,n.value=null,n.next=null,n.prev=null):o(n.queue):u(n.queue))},t.drainVar=function(n,e){if(!e.draining){var t,u,i,l,c,f=e.puts,s=e.takes,d=e.reads;for(e.draining=!0;;){if(t=null,u=null,i=null,l=e.value,c=d.size,null!==e.error){for(l=n.left(e.error);t=o(f);)a(t.cb(l));for(;u=o(d);)a(u(l));for(;i=o(s);)a(i(l));break}if(l===r&&(t=o(f))&&(e.value=l=t.value),l!==r){for(i=o(s);c--&&(u=o(d));)a(u(n.right(l)));null!==i&&(e.value=r,a(i(n.right(l))))}if(null!==t&&a(t.cb(n.right(void 0))),e.value===r&&0===f.size||e.value!==r&&0===s.size)break}e.draining=!1}},t}();n.empty=function(){return new e(e.EMPTY)},n._killVar=function(n,t,r){return function(){null===r.error&&(r.error=t,r.value=e.EMPTY,e.drainVar(n,r))}},n._putVar=function(n,t,r,a){return function(){var u=e.putLast(r.puts,{cb:a,value:t});return e.drainVar(n,r),function(){e.deleteCell(u)}}},n._takeVar=function(n,t,r){return function(){var a=e.putLast(t.takes,r);return e.drainVar(n,t),function(){e.deleteCell(a)}}}}(PS["Effect.AVar"]=PS["Effect.AVar"]||{}),function(n){"use strict";var e=PS["Effect.AVar"],t=PS["Data.Either"],r=(PS["Data.Function.Uncurried"],PS["Data.Maybe"]),a=(PS.Effect,PS["Effect.Exception"],PS.Prelude,function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),u=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),o=function(){function n(){}return n.value=new n,n}(),i={left:t.Left.create,right:t.Right.create,nothing:r.Nothing.value,just:r.Just.create,killed:a.create,filled:u.create,empty:o.value};n.Killed=a,n.Filled=u,n.Empty=o,n.take=function(n){return function(t){return e._takeVar(i,n,t)}},n.put=function(n){return function(t){return function(r){return e._putVar(i,n,t,r)}}},n.kill=function(n){return function(t){return e._killVar(i,n,t)}},n.empty=e.empty}(PS["Effect.AVar"]=PS["Effect.AVar"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Semigroupoid"],PS["Data.Maybe"],PS.Effect;var e=PS["Effect.AVar"],t=PS["Effect.Aff"],r=PS["Effect.Class"],a=(PS["Effect.Exception"],PS.Prelude,r.liftEffect(t.monadEffectAff)(e.empty));n.empty=a,n.take=function(n){return t.makeAff(function(r){return function(){var a=e.take(n)(r)();return t.effectCanceler(a)}})},n.put=function(n){return function(r){return t.makeAff(function(a){return function(){var u=e.put(n)(r)(a)();return t.effectCanceler(u)}})}},n.kill=function(n){return function(a){return r.liftEffect(t.monadEffectAff)(e.kill(n)(a))}}}(PS["Effect.Aff.AVar"]=PS["Effect.Aff.AVar"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Coroutine"],PS["Control.Monad.Free.Trans"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Either"];var e=PS["Data.Eq"],t=(PS["Data.Foldable"],PS["Data.Function"],PS["Data.Functor"],PS["Data.Maybe"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Unit"],PS.Effect,PS["Effect.Aff"],PS["Effect.Aff.AVar"],PS["Effect.Aff.Class"],PS["Effect.Class"],PS["Effect.Exception"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),r=function(){function n(){}return n.value=new n,n}(),a=new e.Eq(function(n){return function(e){return n instanceof t&&e instanceof t||n instanceof r&&e instanceof r}});n.Listening=t,n.Done=r,n.unEventSource=function(n){return n},n.eqSubscribeStatus=a}(PS["Halogen.Query.EventSource"]=PS["Halogen.Query.EventSource"]||{}),function(n){"use strict";PS["Control.Category"],PS["Data.Function"],PS["Data.Functor"],PS["Effect.Aff"],PS["Effect.Exception"],PS.Prelude;var e=PS["Unsafe.Coerce"].unsafeCoerce;n.unFork=e}(PS["Halogen.Query.ForkF"]=PS["Halogen.Query.ForkF"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Applicative.Free"],PS["Control.Apply"]),r=PS["Control.Bind"],a=(PS["Control.Category"],PS["Control.Monad"]),u=PS["Control.Monad.Free"],o=(PS["Control.Monad.Reader.Class"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.State.Class"]),i=(PS["Control.Monad.Trans.Class"],PS["Control.Monad.Writer.Class"],PS["Control.Parallel.Class"],PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Coyoneda"],PS["Data.Function"],PS["Data.Functor"]),l=(PS["Data.List"],PS["Data.List.Types"],PS["Data.Maybe"],PS["Data.Newtype"],PS["Data.Tuple"],PS["Data.Unit"]),c=PS["Effect.Aff.Class"],f=PS["Effect.Class"],s=(PS["Effect.Exception"],PS["Halogen.Query.EventSource"],PS["Halogen.Query.ForkF"],PS["Halogen.Query.InputF"],PS.Prelude,PS["Web.DOM"],function(n){return n}),d=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),S=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),P=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),v=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),p=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),m=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),D=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),b=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),g=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),h=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),w=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),y=new i.Functor(function(n){return function(e){return i.map(u.freeFunctor)(n)(e)}}),E=new t.Apply(function(){return y},function(n){return function(e){return t.apply(u.freeApply)(n)(e)}}),M=new r.Bind(function(){return E},function(n){return function(e){return r.bind(u.freeBind)(n)(function(n){return e(n)})}}),C=new e.Applicative(function(){return E},function(n){return e.pure(u.freeApplicative)(n)}),T=new a.Monad(function(){return C},function(){return M}),A=function(n){return new f.MonadEffect(function(){return T},function(e){return s(u.liftF(P.create(f.liftEffect(n)(e))))})},F=new o.MonadState(function(){return T},function(n){return s(u.liftF(d.create(n)))});n.State=d,n.Subscribe=S,n.Lift=P,n.Halt=v,n.GetSlots=p,n.CheckSlot=m,n.ChildQuery=D,n.Raise=b,n.Par=g,n.Fork=h,n.GetRef=w,n.HalogenM=s,n.raise=function(n){return s(u.liftF(new b(n,l.unit)))},n.functorHalogenM=y,n.applyHalogenM=E,n.applicativeHalogenM=C,n.bindHalogenM=M,n.monadHalogenM=T,n.monadEffectHalogenM=A,n.monadAffHalogenM=function(n){return new c.MonadAff(function(){return A(n.MonadEffect0())},function(e){return s(u.liftF(P.create(c.liftAff(n)(e))))})},n.monadStateHalogenM=F}(PS["Halogen.Query.HalogenM"]=PS["Halogen.Query.HalogenM"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Bifunctor"],PS["Data.Const"],PS["Data.Functor"];var e=PS["Data.Maybe"],t=PS["Data.Ord"],r=PS["Halogen.Data.OrdBox"],a=(PS["Halogen.HTML.Core"],PS["Halogen.Query.HalogenM"],PS.Prelude,PS["Unsafe.Coerce"]),u=function(){function n(n,e,t,r,a,u){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=u}return n.create=function(e){return function(t){return function(r){return function(a){return function(u){return function(o){return new n(e,t,r,a,u,o)}}}}}},n}(),o=a.unsafeCoerce,i=u.create,l=a.unsafeCoerce,c=function(n){return function(n){return l({initialState:n.initialState,render:n.render,eval:n.eval,receiver:n.receiver,initializer:n.initializer,finalizer:n.finalizer,mkOrdBox:r.mkOrdBox(t.ordVoid)})}};n.mkComponent=l,n.unComponent=o,n.component=function(n){return function(n){return c()({initialState:n.initialState,render:n.render,eval:n.eval,receiver:n.receiver,initializer:e.Nothing.value,finalizer:e.Nothing.value})}},n.lifecycleComponent=c,n.parentComponent=function(n){return function(t){return l({initialState:t.initialState,render:t.render,eval:t.eval,receiver:t.receiver,initializer:e.Nothing.value,finalizer:e.Nothing.value,mkOrdBox:r.mkOrdBox(n)})}},n.mkComponentSlot=i,n.unComponentSlot=function(n){return function(e){return n(e.value0)(e.value1)(e.value2)(e.value3)(e.value4)(e.value5)}}}(PS["Halogen.Component"]=PS["Halogen.Component"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed"],PS["DOM.HTML.Indexed.ButtonType"],PS["DOM.HTML.Indexed.FormMethod"],PS["DOM.HTML.Indexed.InputType"],PS["DOM.HTML.Indexed.MenuType"],PS["DOM.HTML.Indexed.MenuitemType"];var e=PS["DOM.HTML.Indexed.OnOff"],t=(PS["DOM.HTML.Indexed.OrderedListType"],PS["DOM.HTML.Indexed.PreloadValue"],PS["DOM.HTML.Indexed.StepValue"],PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),r=(PS["Data.MediaType"],PS["Data.Newtype"]),a=(PS["Data.String"],PS["Data.String.Common"],PS["Data.Unit"],PS["Halogen.HTML.Core"]),u=(PS["Halogen.Query.InputF"],PS["Halogen.VDom.DOM.Prop"],PS.Prelude,PS["Unsafe.Coerce"],PS["Web.DOM.Element"],function(n){return a.prop(n)}),o=u(a.booleanIsProp)("required"),i=u(a.intIsProp)("rows"),l=u(a.stringIsProp)("target"),c=u(a.stringIsProp)("title"),f=u(a.stringIsProp)("value"),s=u(a.stringIsProp)("name"),d=u(a.stringIsProp)("id"),S=u(a.stringIsProp)("href"),P=u(a.stringIsProp)("htmlFor"),v=u(a.booleanIsProp)("checked"),p=u(a.booleanIsProp)("autofocus"),m=a.attr(t.Nothing.value);n.prop=u,n.attr=m,n.class_=function(n){return u(a.stringIsProp)("className")(r.unwrap(a.newtypeClassName)(n))},n.rows=i,n.for=P,n.href=S,n.id_=d,n.name=s,n.target=l,n.title=c,n.type_=function(n){return u(n)("type")},n.value=f,n.required=o,n.checked=v,n.autocomplete=function(n){return u(a.onOffIsProp)("autocomplete")(n?e.On.value:e.Off.value)},n.autofocus=p}(PS["Halogen.HTML.Properties"]=PS["Halogen.HTML.Properties"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed"],PS["Data.Function"];var e=PS["Data.Maybe"],t=(PS["Data.Tuple"],PS["Halogen.HTML.Core"]),r=(PS["Halogen.HTML.Properties"],PS["Halogen.Query.InputF"],PS["Halogen.VDom"],PS["Halogen.VDom.Types"],PS.Prelude,PS["Unsafe.Coerce"],t.element(e.Nothing.value)),a=r("form"),u=r("label"),o=r("p"),i=o([]),l=r("span"),c=r("table"),f=r("tbody"),s=f([]),d=r("td"),S=d([]),P=r("tr"),v=P([]),p=r("div"),m=p([]),D=r("button"),b=function(n){return r("br")(n)([])},g=b([]),h=r("a");n.element=r,n.a=h,n.br=b,n.br_=g,n.button=D,n.div=p,n.div_=m,n.form=a,n.input=function(n){return r("input")(n)([])},n.label=u,n.p=o,n.p_=i,n.span=l,n.table=c,n.tbody=f,n.tbody_=s,n.td=d,n.td_=S,n.textarea=function(n){return r("textarea")(n)([])},n.tr=P,n.tr_=v}(PS["Halogen.HTML.Elements"]=PS["Halogen.HTML.Elements"]||{}),function(n){"use strict";PS["Control.Semigroupoid"],PS["Data.Functor"];var e=PS["Data.Maybe"],t=PS["Halogen.Component"],r=(PS["Halogen.Component.ChildPath"],PS["Halogen.HTML.Core"]);PS["Halogen.HTML.Elements"],PS["Halogen.HTML.Properties"],PS.Prelude,PS["Unsafe.Coerce"];n.slot=function(n){return function(a){return function(u){return function(o){var i=t.unComponent(function(n){return n.receiver})(a);return r.slot(t.mkComponentSlot(n)(a)(u)(i)(o)(e.Just.create))}}}}}(PS["Halogen.HTML"]=PS["Halogen.HTML"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=(PS["Control.Apply"],PS["Control.Category"],PS["Control.Semigroupoid"],PS["Data.Eq"],PS["Data.Foldable"]),r=(PS["Data.FoldableWithIndex"],PS["Data.Function"],PS["Data.Functor"]),a=(PS["Data.FunctorWithIndex"],PS["Data.HeytingAlgebra"],PS["Data.List"],PS["Data.List.Lazy"],PS["Data.List.Lazy.Types"],PS["Data.List.Types"]),u=PS["Data.Maybe"],o=(PS["Data.Monoid"],PS["Data.Ord"]),i=PS["Data.Ordering"],l=PS["Data.Semigroup"],c=(PS["Data.Semiring"],PS["Data.Show"],PS["Data.Traversable"],PS["Data.TraversableWithIndex"],PS["Data.Tuple"]),f=(PS["Data.Unfoldable"],PS["Partial.Unsafe"],PS.Prelude,function(){function n(){}return n.value=new n,n}()),s=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(a){return new n(e,t,r,a)}}}},n}(),d=function(){function n(n,e,t,r,a,u,o){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=u,this.value6=o}return n.create=function(e){return function(t){return function(r){return function(a){return function(u){return function(o){return function(i){return new n(e,t,r,a,u,o,i)}}}}}}},n}(),S=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),P=function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}(),v=function(){function n(n,e,t,r,a,u){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=u}return n.create=function(e){return function(t){return function(r){return function(a){return function(u){return function(o){return new n(e,t,r,a,u,o)}}}}}},n}(),p=function(){function n(n,e,t,r,a,u){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=u}return n.create=function(e){return function(t){return function(r){return function(a){return function(u){return function(o){return new n(e,t,r,a,u,o)}}}}}},n}(),m=function(){function n(n,e,t,r,a,u){this.value0=n,this.value1=e,this.value2=t,this.value3=r,this.value4=a,this.value5=u}return n.create=function(e){return function(t){return function(r){return function(a){return function(u){return function(o){return new n(e,t,r,a,u,o)}}}}}},n}(),D=function(){function n(n,e,t,r){this.value0=n,this.value1=e,this.value2=t,this.value3=r}return n.create=function(e){return function(t){return function(r){return function(a){return new n(e,t,r,a)}}}},n}(),b=function(n){if(n instanceof f)return a.Nil.value;if(n instanceof s)return l.append(a.semigroupList)(b(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value2))(b(n.value3)));if(n instanceof d)return l.append(a.semigroupList)(b(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value2))(l.append(a.semigroupList)(b(n.value3))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value5))(b(n.value6)))));throw new Error("Failed pattern match at Data.Map.Internal line 594, column 1 - line 594, column 40: "+[n.constructor.name])},g=function(n){return function(e){var t=o.compare(n);return function(n){var r,a=!1;function o(r){if(r instanceof f)return a=!0,u.Nothing.value;if(r instanceof s){var o=t(e)(r.value1);return o instanceof i.EQ?(a=!0,new u.Just(r.value2)):o instanceof i.LT?void(n=r.value0):void(n=r.value3)}if(r instanceof d){var l=t(e)(r.value1);if(l instanceof i.EQ)return a=!0,new u.Just(r.value2);var c=t(e)(r.value4);return c instanceof i.EQ?(a=!0,new u.Just(r.value5)):l instanceof i.LT?void(n=r.value0):c instanceof i.GT?void(n=r.value6):void(n=r.value3)}throw new Error("Failed pattern match at Data.Map.Internal line 193, column 5 - line 193, column 22: "+[r.constructor.name])}for(;!a;)r=o(n);return r}}},h=function(n){if(n instanceof f)return a.Nil.value;if(n instanceof s)return l.append(a.semigroupList)(h(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value1))(h(n.value3)));if(n instanceof d)return l.append(a.semigroupList)(h(n.value0))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value1))(l.append(a.semigroupList)(h(n.value3))(l.append(a.semigroupList)(e.pure(a.applicativeList)(n.value4))(h(n.value6)))));throw new Error("Failed pattern match at Data.Map.Internal line 588, column 1 - line 588, column 38: "+[n.constructor.name])},w=new r.Functor(function(n){return function(e){if(e instanceof f)return f.value;if(e instanceof s)return new s(r.map(w)(n)(e.value0),e.value1,n(e.value2),r.map(w)(n)(e.value3));if(e instanceof d)return new d(r.map(w)(n)(e.value0),e.value1,n(e.value2),r.map(w)(n)(e.value3),e.value4,n(e.value5),r.map(w)(n)(e.value6));throw new Error("Failed pattern match at Data.Map.Internal line 89, column 1 - line 89, column 39: "+[n.constructor.name,e.constructor.name])}}),y=function(n){return function(e){return function(t){var r,u=n,o=e,i=!1;function l(n,e,r){if(e instanceof a.Nil)return i=!0,r;if(e instanceof a.Cons){if(e.value0 instanceof S)return u=n,o=e.value1,void(t=new s(r,e.value0.value0,e.value0.value1,e.value0.value2));if(e.value0 instanceof P)return u=n,o=e.value1,void(t=new s(e.value0.value0,e.value0.value1,e.value0.value2,r));if(e.value0 instanceof v)return u=n,o=e.value1,void(t=new d(r,e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p)return u=n,o=e.value1,void(t=new d(e.value0.value0,e.value0.value1,e.value0.value2,r,e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof m)return u=n,o=e.value1,void(t=new d(e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5,r));throw new Error("Failed pattern match at Data.Map.Internal line 411, column 3 - line 416, column 88: "+[e.value0.constructor.name])}throw new Error("Failed pattern match at Data.Map.Internal line 408, column 1 - line 408, column 80: "+[e.constructor.name,r.constructor.name])}for(;!i;)r=l(u,o,t);return r}}},E=function(n){return function(e){return function(t){var r,u=function(e){return function(t){var r,u=e,o=!1;function i(e,r){if(e instanceof a.Nil)return o=!0,new s(r.value0,r.value1,r.value2,r.value3);if(e instanceof a.Cons){if(e.value0 instanceof S)return o=!0,y(n)(e.value1)(new d(r.value0,r.value1,r.value2,r.value3,e.value0.value0,e.value0.value1,e.value0.value2));if(e.value0 instanceof P)return o=!0,y(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,r.value0,r.value1,r.value2,r.value3));if(e.value0 instanceof v)return u=e.value1,void(t=new D(new s(r.value0,r.value1,r.value2,r.value3),e.value0.value0,e.value0.value1,new s(e.value0.value2,e.value0.value3,e.value0.value4,e.value0.value5)));if(e.value0 instanceof p)return u=e.value1,void(t=new D(new s(e.value0.value0,e.value0.value1,e.value0.value2,r.value0),r.value1,r.value2,new s(r.value3,e.value0.value3,e.value0.value4,e.value0.value5)));if(e.value0 instanceof m)return u=e.value1,void(t=new D(new s(e.value0.value0,e.value0.value1,e.value0.value2,e.value0.value3),e.value0.value4,e.value0.value5,new s(r.value0,r.value1,r.value2,r.value3)));throw new Error("Failed pattern match at Data.Map.Internal line 447, column 5 - line 452, column 108: "+[e.value0.constructor.name,r.constructor.name])}throw new Error("Failed pattern match at Data.Map.Internal line 444, column 3 - line 444, column 56: "+[e.constructor.name,r.constructor.name])}for(;!o;)r=i(u,t);return r}},l=o.compare(n);return r=a.Nil.value,function(o){var c,b=r,g=!1;function h(r,c){if(c instanceof f)return g=!0,u(r)(new D(f.value,e,t,f.value));if(c instanceof s){var h=l(e)(c.value1);return h instanceof i.EQ?(g=!0,y(n)(r)(new s(c.value0,e,t,c.value3))):h instanceof i.LT?(b=new a.Cons(new S(c.value1,c.value2,c.value3),r),void(o=c.value0)):(b=new a.Cons(new P(c.value0,c.value1,c.value2),r),void(o=c.value3))}if(c instanceof d){var w=l(e)(c.value1);if(w instanceof i.EQ)return g=!0,y(n)(r)(new d(c.value0,e,t,c.value3,c.value4,c.value5,c.value6));var E=l(e)(c.value4);return E instanceof i.EQ?(g=!0,y(n)(r)(new d(c.value0,c.value1,c.value2,c.value3,e,t,c.value6))):w instanceof i.LT?(b=new a.Cons(new v(c.value1,c.value2,c.value3,c.value4,c.value5,c.value6),r),void(o=c.value0)):w instanceof i.GT&&E instanceof i.LT?(b=new a.Cons(new p(c.value0,c.value1,c.value2,c.value4,c.value5,c.value6),r),void(o=c.value3)):(b=new a.Cons(new m(c.value0,c.value1,c.value2,c.value3,c.value4,c.value5),r),void(o=c.value6))}throw new Error("Failed pattern match at Data.Map.Internal line 427, column 3 - line 427, column 55: "+[r.constructor.name,c.constructor.name])}for(;!g;)c=h(b,o);return c}}}},M=function(n){return function(e){var t,r=function(e){return function(t){if(e instanceof a.Nil)return t;if(e instanceof a.Cons){return function(){if(e.value0 instanceof S&&e.value0.value2 instanceof f&&t instanceof f)return y(n)(e.value1)(new s(f.value,e.value0.value0,e.value0.value1,f.value));if(e.value0 instanceof P&&e.value0.value0 instanceof f&&t instanceof f)return y(n)(e.value1)(new s(f.value,e.value0.value1,e.value0.value2,f.value));if(e.value0 instanceof S&&e.value0.value2 instanceof s)return r(e.value1)(new d(t,e.value0.value0,e.value0.value1,e.value0.value2.value0,e.value0.value2.value1,e.value0.value2.value2,e.value0.value2.value3));if(e.value0 instanceof P&&e.value0.value0 instanceof s)return r(e.value1)(new d(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3,e.value0.value1,e.value0.value2,t));if(e.value0 instanceof S&&e.value0.value2 instanceof d)return y(n)(e.value1)(new s(new s(t,e.value0.value0,e.value0.value1,e.value0.value2.value0),e.value0.value2.value1,e.value0.value2.value2,new s(e.value0.value2.value3,e.value0.value2.value4,e.value0.value2.value5,e.value0.value2.value6)));if(e.value0 instanceof P&&e.value0.value0 instanceof d)return y(n)(e.value1)(new s(new s(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3),e.value0.value0.value4,e.value0.value0.value5,new s(e.value0.value0.value6,e.value0.value1,e.value0.value2,t)));if(e.value0 instanceof v&&e.value0.value2 instanceof f&&e.value0.value5 instanceof f&&t instanceof f)return y(n)(e.value1)(new d(f.value,e.value0.value0,e.value0.value1,f.value,e.value0.value3,e.value0.value4,f.value));if(e.value0 instanceof p&&e.value0.value0 instanceof f&&e.value0.value5 instanceof f&&t instanceof f)return y(n)(e.value1)(new d(f.value,e.value0.value1,e.value0.value2,f.value,e.value0.value3,e.value0.value4,f.value));if(e.value0 instanceof m&&e.value0.value0 instanceof f&&e.value0.value3 instanceof f&&t instanceof f)return y(n)(e.value1)(new d(f.value,e.value0.value1,e.value0.value2,f.value,e.value0.value4,e.value0.value5,f.value));if(e.value0 instanceof v&&e.value0.value2 instanceof s)return y(n)(e.value1)(new s(new d(t,e.value0.value0,e.value0.value1,e.value0.value2.value0,e.value0.value2.value1,e.value0.value2.value2,e.value0.value2.value3),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value0 instanceof s)return y(n)(e.value1)(new s(new d(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3,e.value0.value1,e.value0.value2,t),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value5 instanceof s)return y(n)(e.value1)(new s(e.value0.value0,e.value0.value1,e.value0.value2,new d(t,e.value0.value3,e.value0.value4,e.value0.value5.value0,e.value0.value5.value1,e.value0.value5.value2,e.value0.value5.value3)));if(e.value0 instanceof m&&e.value0.value3 instanceof s)return y(n)(e.value1)(new s(e.value0.value0,e.value0.value1,e.value0.value2,new d(e.value0.value3.value0,e.value0.value3.value1,e.value0.value3.value2,e.value0.value3.value3,e.value0.value4,e.value0.value5,t)));if(e.value0 instanceof v&&e.value0.value2 instanceof d)return y(n)(e.value1)(new d(new s(t,e.value0.value0,e.value0.value1,e.value0.value2.value0),e.value0.value2.value1,e.value0.value2.value2,new s(e.value0.value2.value3,e.value0.value2.value4,e.value0.value2.value5,e.value0.value2.value6),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value0 instanceof d)return y(n)(e.value1)(new d(new s(e.value0.value0.value0,e.value0.value0.value1,e.value0.value0.value2,e.value0.value0.value3),e.value0.value0.value4,e.value0.value0.value5,new s(e.value0.value0.value6,e.value0.value1,e.value0.value2,t),e.value0.value3,e.value0.value4,e.value0.value5));if(e.value0 instanceof p&&e.value0.value5 instanceof d)return y(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,new s(t,e.value0.value3,e.value0.value4,e.value0.value5.value0),e.value0.value5.value1,e.value0.value5.value2,new s(e.value0.value5.value3,e.value0.value5.value4,e.value0.value5.value5,e.value0.value5.value6)));if(e.value0 instanceof m&&e.value0.value3 instanceof d)return y(n)(e.value1)(new d(e.value0.value0,e.value0.value1,e.value0.value2,new s(e.value0.value3.value0,e.value0.value3.value1,e.value0.value3.value2,e.value0.value3.value3),e.value0.value3.value4,e.value0.value3.value5,new s(e.value0.value3.value6,e.value0.value4,e.value0.value5,t)));throw new Error("Failed pattern match at Data.Map.Internal line 497, column 9 - line 514, column 136: "+[e.value0.constructor.name,t.constructor.name])}()}throw new Error("Failed pattern match at Data.Map.Internal line 494, column 5 - line 514, column 136: "+[e.constructor.name])}},l=function(n){return function(e){return function(){if(e instanceof s&&e.value0 instanceof f&&e.value3 instanceof f)return r(n)(f.value);if(e instanceof s)return l(new a.Cons(new P(e.value0,e.value1,e.value2),n))(e.value3);if(e instanceof d&&e.value0 instanceof f&&e.value3 instanceof f&&e.value6 instanceof f)return r(new a.Cons(new P(f.value,e.value1,e.value2),n))(f.value);if(e instanceof d)return l(new a.Cons(new m(e.value0,e.value1,e.value2,e.value3,e.value4,e.value5),n))(e.value6);throw new Error("Failed pattern match at Data.Map.Internal line 526, column 5 - line 530, column 107: "+[e.constructor.name])}()}},D=function(n){return function(){if(n instanceof s&&n.value3 instanceof f)return{key:n.value1,value:n.value2};if(n instanceof s)return D(n.value3);if(n instanceof d&&n.value6 instanceof f)return{key:n.value4,value:n.value5};if(n instanceof d)return D(n.value6);throw new Error("Failed pattern match at Data.Map.Internal line 517, column 33 - line 521, column 45: "+[n.constructor.name])}()},b=o.compare(n);return t=a.Nil.value,function(o){var g,h=t,w=!1;function E(t,g){if(g instanceof f)return w=!0,u.Nothing.value;if(g instanceof s){var E=b(e)(g.value1);if(g.value3 instanceof f&&E instanceof i.EQ)return w=!0,new u.Just(new c.Tuple(g.value2,r(t)(f.value)));if(E instanceof i.EQ){var M=D(g.value0);return w=!0,new u.Just(new c.Tuple(g.value2,l(new a.Cons(new S(M.key,M.value,g.value3),t))(g.value0)))}return E instanceof i.LT?(h=new a.Cons(new S(g.value1,g.value2,g.value3),t),void(o=g.value0)):(h=new a.Cons(new P(g.value0,g.value1,g.value2),t),void(o=g.value3))}if(g instanceof d){var C=g.value0 instanceof f&&g.value3 instanceof f&&g.value6 instanceof f,T=(E=b(e)(g.value4),b(e)(g.value1));return C&&T instanceof i.EQ?(w=!0,new u.Just(new c.Tuple(g.value2,y(n)(t)(new s(f.value,g.value4,g.value5,f.value))))):C&&E instanceof i.EQ?(w=!0,new u.Just(new c.Tuple(g.value5,y(n)(t)(new s(f.value,g.value1,g.value2,f.value))))):T instanceof i.EQ?(M=D(g.value0),w=!0,new u.Just(new c.Tuple(g.value2,l(new a.Cons(new v(M.key,M.value,g.value3,g.value4,g.value5,g.value6),t))(g.value0)))):E instanceof i.EQ?(M=D(g.value3),w=!0,new u.Just(new c.Tuple(g.value5,l(new a.Cons(new p(g.value0,g.value1,g.value2,M.key,M.value,g.value6),t))(g.value3)))):T instanceof i.LT?(h=new a.Cons(new v(g.value1,g.value2,g.value3,g.value4,g.value5,g.value6),t),void(o=g.value0)):T instanceof i.GT&&E instanceof i.LT?(h=new a.Cons(new p(g.value0,g.value1,g.value2,g.value4,g.value5,g.value6),t),void(o=g.value3)):(h=new a.Cons(new m(g.value0,g.value1,g.value2,g.value3,g.value4,g.value5),t),void(o=g.value6))}throw new Error("Failed pattern match at Data.Map.Internal line 467, column 34 - line 490, column 80: "+[g.constructor.name])}for(;!w;)g=E(h,o);return g}}},C=new t.Foldable(function(n){return function(e){return function(r){return t.foldMap(a.foldableList)(n)(e)(b(r))}}},function(n){return function(e){return function(r){return t.foldl(a.foldableList)(n)(e)(b(r))}}},function(n){return function(e){return function(r){return t.foldr(a.foldableList)(n)(e)(b(r))}}}),T=f.value,A=function(n){return function(e){return function(t){return u.maybe(t)(c.snd)(M(n)(e)(t))}}};n.empty=T,n.insert=E,n.lookup=g,n.delete=A,n.pop=M,n.member=function(n){return function(e){return function(t){return u.isJust(g(n)(e)(t))}}},n.alter=function(n){return function(e){return function(t){return function(r){var a=e(g(n)(t)(r));if(a instanceof u.Nothing)return A(n)(t)(r);if(a instanceof u.Just)return E(n)(t)(a.value0)(r);throw new Error("Failed pattern match at Data.Map.Internal line 535, column 15 - line 537, column 25: "+[a.constructor.name])}}}},n.keys=h,n.values=b,n.functorMap=w,n.foldableMap=C}(PS["Data.Map.Internal"]=PS["Data.Map.Internal"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Monad.Rec.Class"],PS["Control.Monad.ST"],PS["Control.Monad.ST.Internal"],PS["Control.Semigroupoid"],PS["Data.Array"],PS["Data.Array.ST"],PS["Data.Eq"];var e=PS["Data.Foldable"],t=(PS["Data.Function"],PS["Data.Functor"],PS["Data.HeytingAlgebra"],PS["Data.List"],PS["Data.List.Types"]),r=PS["Data.Map.Internal"],a=(PS["Data.Maybe"],PS["Data.Monoid"],PS["Data.Ord"],PS["Data.Ordering"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.Unfoldable"],PS["Data.Unit"],PS["Partial.Unsafe"],PS.Prelude,function(n){return r.keys(n)}),u=new e.Foldable(function(n){return function(r){return function(u){return e.foldMap(t.foldableList)(n)(r)(a(u))}}},function(n){return function(r){return function(u){return e.foldl(t.foldableList)(n)(r)(a(u))}}},function(n){return function(r){return function(u){return e.foldr(t.foldableList)(n)(r)(a(u))}}});n.foldableSet=u}(PS["Data.Set"]=PS["Data.Set"]||{}),function(n){"use strict";PS["Control.Semigroupoid"];var e=PS["Data.Functor"],t=PS["Data.Map.Internal"];PS["Data.Set"],PS.Prelude,PS["Unsafe.Coerce"];n.keys=function(n){return e.void(t.functorMap)(n)}}(PS["Data.Map"]=PS["Data.Map"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"],PS["Control.Category"],PS["Control.Monad.State.Class"],PS["Control.Monad.Trans.Class"],PS["Control.Parallel"],PS["Control.Semigroupoid"],PS["Data.Functor"],PS["Data.List"],PS["Data.List.Types"],PS["Data.Map"],PS["Data.Map.Internal"],PS["Data.Maybe"],PS["Data.Tuple"];var e=PS["Data.Unit"];PS["Effect.Aff.Class"],PS["Effect.Class"],PS["Halogen.Component.ChildPath"],PS["Halogen.Query.EventSource"],PS["Halogen.Query.HalogenM"],PS["Halogen.Query.InputF"],PS.Prelude,PS["Web.HTML.HTMLElement"];n.action=function(n){return n(e.unit)}}(PS["Halogen.Query"]=PS["Halogen.Query"]||{}),function(n){"use strict";PS["Web.Event.Event"];n.change="change"}(PS["Web.HTML.Event.EventTypes"]=PS["Web.HTML.Event.EventTypes"]||{}),function(n){"use strict";PS["Web.Event.Event"];n.click="click"}(PS["Web.UIEvent.MouseEvent.EventTypes"]=PS["Web.UIEvent.MouseEvent.EventTypes"]||{}),function(n){"use strict";var e=PS["Control.Bind"],t=PS["Control.Monad.Except"],r=PS["Control.Monad.Except.Trans"],a=(PS["Control.Semigroupoid"],PS["Data.Either"]),u=PS["Data.Function"],o=PS["Data.Functor"],i=PS["Data.Identity"],l=PS["Data.Maybe"],c=PS.Foreign,f=PS["Foreign.Index"],s=PS["Halogen.HTML.Core"],d=(PS["Halogen.HTML.Properties"],PS["Halogen.Query"]),S=PS["Halogen.Query.InputF"],P=(PS.Prelude,PS["Unsafe.Coerce"]),v=(PS["Web.Clipboard.ClipboardEvent"],PS["Web.Clipboard.ClipboardEvent.EventTypes"],PS["Web.Event.Event"]),p=(PS["Web.HTML.Event.DragEvent"],PS["Web.HTML.Event.DragEvent.EventTypes"],PS["Web.HTML.Event.EventTypes"]),m=(PS["Web.TouchEvent.TouchEvent"],PS["Web.UIEvent.FocusEvent"],PS["Web.UIEvent.FocusEvent.EventTypes"],PS["Web.UIEvent.KeyboardEvent"],PS["Web.UIEvent.KeyboardEvent.EventTypes"],PS["Web.UIEvent.MouseEvent"],PS["Web.UIEvent.MouseEvent.EventTypes"]),D=(PS["Web.UIEvent.WheelEvent"],PS["Web.UIEvent.WheelEvent.EventTypes"],P.unsafeCoerce),b=function(n){return function(e){return s.handler(n)(o.map(o.functorFn)(o.map(l.functorMaybe)(S.Query.create))(e))}},g=b("submit"),h=function(n){return function(o){return function(s){return function(d){return b(n)(e.composeKleisli(l.bindMaybe)(v.currentTarget)(function(n){return a.either(u.const(l.Nothing.value))(d)(t.runExcept((S=n,e.composeKleisliFlipped(r.bindExceptT(i.monadIdentity))(s)(f.readProp(o))(c.unsafeToForeign(S)))));var S}))}}}},w=h(p.change)("checked")(c.readBoolean),y=h(p.change)("value")(c.readString);n.input=function(n){return function(e){return l.Just.create(d.action(n(e)))}},n.input_=function(n){return function(e){return l.Just.create(d.action(n))}},n.handler=b,n.onSubmit=g,n.onClick=function(n){return b(m.click)(D(n))},n.onValueChange=y,n.onChecked=w}(PS["Halogen.HTML.Events"]=PS["Halogen.HTML.Events"]||{}),function(n){"use strict";var e="function"==typeof Array.from,t="undefined"!=typeof Symbol&&null!=Symbol&&void 0!==Symbol.iterator&&"function"==typeof String.prototype[Symbol.iterator],r="function"==typeof String.prototype.fromCodePoint,a="function"==typeof String.prototype.codePointAt;n._unsafeCodePointAt0=function(n){return a?function(n){return n.codePointAt(0)}:n},n._singleton=function(n){return r?String.fromCodePoint:n},n._take=function(n){return function(e){return t?function(n){for(var t="",r=n[Symbol.iterator](),a=0;a<e;++a){var u=r.next();if(u.done)return t;t+=u.value}return t}:n(e)}},n._toCodePointArray=function(n){return function(t){return e?function(n){return Array.from(n,t)}:n}}}(PS["Data.String.CodePoints"]=PS["Data.String.CodePoints"]||{}),function(n){"use strict";var e=PS["Data.String.CodePoints"],t=(PS["Control.Semigroupoid"],PS["Data.Array"]),r=(PS["Data.Boolean"],PS["Data.Bounded"]),a=PS["Data.Enum"],u=(PS["Data.Eq"],PS["Data.EuclideanRing"]),o=PS["Data.Functor"],i=(PS["Data.HeytingAlgebra"],PS["Data.Int"],PS["Data.Maybe"]),l=(PS["Data.Ord"],PS["Data.Ring"],PS["Data.Semigroup"],PS["Data.Semiring"],PS["Data.Show"],PS["Data.String.CodeUnits"]),c=(PS["Data.String.Common"],PS["Data.String.Pattern"],PS["Data.String.Unsafe"]),f=PS["Data.Tuple"],s=PS["Data.Unfoldable"],d=(PS.Prelude,function(n){return function(e){return 65536+((1024*(n-55296|0)|0)+(e-56320|0)|0)|0}}),S=function(n){return 56320<=n&&n<=57343},P=function(n){return 55296<=n&&n<=56319},v=function(n){var e=l.length(n);if(0===e)return i.Nothing.value;if(1===e)return new i.Just({head:a.fromEnum(a.boundedEnumChar)(c.charAt(0)(n)),tail:""});var t=a.fromEnum(a.boundedEnumChar)(c.charAt(1)(n)),r=a.fromEnum(a.boundedEnumChar)(c.charAt(0)(n));return P(r)&&S(t)?new i.Just({head:d(r)(t),tail:l.drop(2)(n)}):new i.Just({head:r,tail:l.drop(1)(n)})},p=function(n){return o.map(i.functorMaybe)(function(n){return new f.Tuple(n.head,n.tail)})(v(n))},m=e._unsafeCodePointAt0(function(n){var e=a.fromEnum(a.boundedEnumChar)(c.charAt(1)(n)),t=a.fromEnum(a.boundedEnumChar)(c.charAt(0)(n));return P(t)&&S(e)?d(t)(e):t}),D=e._toCodePointArray(function(n){return s.unfoldr(s.unfoldableArray)(p)(n)})(m),b=function(n){return l.singleton(a.toEnumWithDefaults(a.boundedEnumChar)(r.bottom(r.boundedChar))(r.top(r.boundedChar))(n))},g=e._singleton(function(n){if(n<=65535)return b(n);var e=u.div(u.euclideanRingInt)(n-65536|0)(1024)+55296|0,t=u.mod(u.euclideanRingInt)(n-65536|0)(1024)+56320|0;return b(e)+b(t)}),h=function(n){return function(e){if(n<1)return"";var t=v(e);return t instanceof i.Just?g(t.value0.head)+h(n-1|0)(t.value0.tail):e}},w=e._take(h);n.singleton=g,n.toCodePointArray=D,n.uncons=v,n.length=function(n){return t.length(D(n))},n.take=w,n.drop=function(n){return function(e){return l.drop(l.length(w(n)(e)))(e)}}}(PS["Data.String.CodePoints"]=PS["Data.String.CodePoints"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=PS["Control.Monad.Maybe.Trans"],a=(PS["Control.Semigroupoid"],PS["Data.Array"]),u=(PS["Data.Eq"],PS["Data.Foldable"]),o=(PS["Data.Function"],PS["Data.Functor"]),i=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),l=(PS["Data.String"],PS["Data.String.CodePoints"]),c=PS["Data.String.Common"],f=(PS["Data.String.Pattern"],PS["Data.Tuple"]),s=PS.Effect,d=PS["Global.Unsafe"],S=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),P=PS["Halogen.HTML.Properties"],v=(PS["Partial.Unsafe"],PS.Prelude,PS["Web.DOM"],PS["Web.DOM.Document"]),p=PS["Web.DOM.Element"],m=PS["Web.DOM.NodeList"],D=PS["Web.DOM.NonElementParentNode"],b=PS["Web.DOM.ParentNode"],g=PS["Web.HTML"],h=PS["Web.HTML.HTMLDocument"],w=PS["Web.HTML.HTMLElement"],y=PS["Web.HTML.Location"],E=PS["Web.HTML.Window"],M=function(n){return function(e){return t.bindFlipped(s.bindEffect)(m.toArray)(b.querySelectorAll(n)(p.toParentNode(e)))}},C=function(n){return function(e){return b.querySelector(n)(p.toParentNode(e))}},T=function(n){var e,t=function(n){return d.unsafeDecodeURIComponent(c.replaceAll("+")(" ")(n))},r="#"===(e=l.take(1)(n))||"?"===e?l.drop(1)(n):n;return a.mapMaybe(function(n){var e=c.split("=")(n);return 1===e.length?new i.Just(new f.Tuple(t(e[0]),i.Nothing.value)):2===e.length?new i.Just(new f.Tuple(t(e[0]),new i.Just(t(e[1])))):i.Nothing.value})(a.filter(function(n){return""!==n})(c.split("&")(r)))},A=r.MaybeT,F=t.bindFlipped(s.bindEffect)(E.location)(g.window),H=t.bindFlipped(s.bindEffect)(E.document)(g.window),L=t.bindFlipped(s.bindEffect)(function(n){return e.pure(s.applicativeEffect)(i.fromJust()(n))})(t.bindFlipped(s.bindEffect)(h.body)(H));n.class_=function(n){return P.class_(S.ClassName(n))},n.attr=function(n){return P.attr(n)},n._queryBoth=function(n){return function(e){return function(t){return function(){var r=C(n.value0)(n.value1)(),a=C(e.value0)(e.value1)();return u.for_(s.applicativeEffect)(u.foldableMaybe)(r)(function(n){return u.for_(s.applicativeEffect)(u.foldableMaybe)(a)(function(e){return t(n)(e)})})()}}}},n["_queryBoth'"]=function(n){return function(e){return function(t){return function(){var r=C(n.value0)(n.value1)(),a=M(e.value0)(e.value1)();return u.for_(s.applicativeEffect)(u.foldableMaybe)(r)(function(n){return t(n)(a)})()}}}},n["_queryBoth''"]=function(n){return function(e){return function(t){return function(){var r=M(n.value0)(n.value1)(),a=M(e.value0)(e.value1)();return t(r)(a)()}}}},n._querySelector=C,n._querySelectorAll=M,n._fromNode=function(n){return i.fromJust()(p.fromNode(n))},n._fromElement=function(n){return i.fromJust()(w.fromElement(n))},n._getElementById=function(n){return function(e){return D.getElementById(n)(v.toNonElementParentNode(h.toDocument(e)))}},n._doc=H,n._loc=F,n._curQuerystring=function(){var n=F(),e=y.search(n)();return T(e)},n._parseQueryString=T,n._lookupQueryStringValue=function(n){return function(e){return t.join(i.bindMaybe)(o.map(i.functorMaybe)(f.snd)(u.find(u.foldableArray)(function(n){return f.fst(n)===e})(n)))}},n._body=L,n._mt=A,n._mt_pure=function(n){return r.MaybeT(e.pure(s.applicativeEffect)(n))}}(PS.Util=PS.Util||{}),function(n){"use strict";var e=PS.App,t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],u=(PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed.ButtonType"]),o=PS["DOM.HTML.Indexed.InputType"],i=(PS["Data.Array"],PS["Data.Foldable"],PS["Data.Function"]),l=PS["Data.Functor"],c=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),f=PS["Data.Monoid"],s=(PS["Data.Ord"],PS["Data.Semigroup"]),d=(PS["Data.String"],PS["Data.String.Common"]),S=(PS["Data.String.Pattern"],PS["Data.Tuple"]),P=PS["Data.Unit"],v=PS["Effect.Aff"],p=PS["Effect.Aff.Class"],m=PS["Effect.Class"],D=PS.Globals,b=(PS.Halogen,PS["Halogen.Component"]),g=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),h=PS["Halogen.HTML.Elements"],w=PS["Halogen.HTML.Events"],y=PS["Halogen.HTML.Properties"],E=PS["Halogen.Query.HalogenM"],M=(PS.Model,PS.Prelude,PS.Util),C=PS["Web.Event.Event"],T=PS["Web.HTML"],A=PS["Web.HTML.Location"],F=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),H=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),L=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),_=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),I=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),O=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),N=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),W=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),x=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),U=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}();n.BEditField=N,n.BEditSubmit=W,n.BDeleteAsk=x,n.BDestroy=U,n.Eurl=F,n.Etitle=H,n.Edescription=L,n.Etags=_,n.Eprivate=I,n.Etoread=O,n.addbmark=function(n){var R;D["app'"](P.unit);return b.component(g.bifunctorHTML)({initialState:i.const((R=n,{bm:R,edit_bm:R,deleteAsk:!1,destroyed:!1})),render:function(n){var e=D.mmoment8601(n.bm.time),t=function(n){return function(e){return w.input(N.create)(n(e))}},r=h.div([M.class_("alert")])([g.text("previously saved "),h.span([M.class_("link f7 dib gray pr3"),y.title(c.maybe(n.bm.time)(S.snd)(e))])([g.text(c.maybe(" ")(S.fst)(e))]),h.div([M.class_("edit_links dib ml1")])([h.div([M.class_("delete_link di")])([h.button(s.append(s.semigroupArray)([y.type_(g.buttonTypeIsProp)(u.ButtonButton.value),w.onClick(w.input_(x.create(!0))),M.class_("delete")])(f.guard(f.monoidArray)(n.deleteAsk)([M.attr("hidden")("hidden")])))([g.text("delete")]),h.span(s.append(s.semigroupArray)([M.class_("confirm red")])(f.guard(f.monoidArray)(!n.deleteAsk)([M.attr("hidden")("hidden")])))([h.button([y.type_(g.buttonTypeIsProp)(u.ButtonButton.value),w.onClick(w.input_(x.create(!1)))])([g.text("cancel / ")]),h.button([y.type_(g.buttonTypeIsProp)(u.ButtonButton.value),w.onClick(w.input_(U.create)),M.class_("red")])([g.text("destroy")])])])])]),a=h.form([w.onSubmit(w.input(W.create))])([h.table([M.class_("w-100")])([h.tbody_([h.tr_([h.td([M.class_("w1")])([]),h.td_(f.guard(f.monoidArray)(n.bm.bid>0)([r]))]),h.tr_([h.td_([h.label([y.for("url")])([g.text("URL")])]),h.td_([h.input([y.type_(g.inputTypeIsProp)(o.InputUrl.value),y.id_("url"),M.class_("w-100 mv1"),y.required(!0),y.name("url"),y.autofocus(d.null(n.bm.url)),y.value(n.edit_bm.url),w.onValueChange(t(F.create))])])]),h.tr_([h.td_([h.label([y.for("title")])([g.text("title")])]),h.td_([h.input([y.type_(g.inputTypeIsProp)(o.InputText.value),y.id_("title"),M.class_("w-100 mv1"),y.name("title"),y.value(n.edit_bm.title),w.onValueChange(t(H.create))])])]),h.tr_([h.td_([h.label([y.for("description")])([g.text("description")])]),h.td_([h.textarea([M.class_("w-100 mt1 mid-gray"),y.id_("description"),y.name("description"),y.rows(4),y.value(n.edit_bm.description),w.onValueChange(t(L.create))])])]),h.tr_([h.td_([h.label([y.for("tags")])([g.text("tags")])]),h.td_([h.input([y.type_(g.inputTypeIsProp)(o.InputText.value),y.id_("tags"),M.class_("w-100 mv1"),y.name("tags"),y.autocomplete(!1),M.attr("autocapitalize")("off"),y.autofocus(!d.null(n.bm.url)),y.value(n.edit_bm.tags),w.onValueChange(t(_.create))])])]),h.tr_([h.td_([h.label([y.for("private")])([g.text("private")])]),h.td_([h.input([y.type_(g.inputTypeIsProp)(o.InputCheckbox.value),y.id_("private"),M.class_("private pointer"),y.name("private"),y.checked(n.edit_bm.private),w.onChecked(t(I.create))])])]),h.tr_([h.td_([h.label([y.for("toread")])([g.text("read later")])]),h.td_([h.input([y.type_(g.inputTypeIsProp)(o.InputCheckbox.value),y.id_("toread"),M.class_("toread pointer"),y.name("toread"),y.checked(n.edit_bm.toread),w.onChecked(t(O.create))])])]),h.tr_([h.td_([]),h.td_([h.input([y.type_(g.inputTypeIsProp)(o.InputSubmit.value),M.class_("ph3 pv2 input-reset ba b--navy bg-transparent pointer f6 dib mt1 dim"),y.value(n.bm.bid>0?"update bookmark":"add bookmark")])])])])])]),i=h.p([M.class_("red")])([g.text("you killed this bookmark")]);return h.div_([n.destroyed?i:a])},eval:function(n){if(n instanceof x)return r.discard(r.discardUnit)(E.bindHalogenM)(a.modify_(E.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t}))(function(){return t.pure(E.applicativeHalogenM)(n.value1)});if(n instanceof U)return r.bind(E.bindHalogenM)(a.gets(E.monadStateHalogenM)(function(n){return n.bm.bid}))(function(u){return r.discard(r.discardUnit)(E.bindHalogenM)(l.void(E.functorHalogenM)(p.liftAff(E.monadAffHalogenM(p.monadAffAff))(e.destroy(u))))(function(){return r.discard(r.discardUnit)(E.bindHalogenM)(a.modify_(E.monadStateHalogenM)(function(n){var e={};for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e.destroyed=!0,e}))(function(){return t.pure(E.applicativeHalogenM)(n.value0)})})});if(n instanceof N)return r.discard(r.discardUnit)(E.bindHalogenM)((u=E.monadStateHalogenM,function(n){return a.modify_(u)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=n(e.edit_bm),t})})(function(){if(n.value0 instanceof F)return function(e){return{url:n.value0.value0,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,selected:e.selected,time:e.time}};if(n.value0 instanceof H)return function(e){return{url:e.url,title:n.value0.value0,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,selected:e.selected,time:e.time}};if(n.value0 instanceof L)return function(e){return{url:e.url,title:e.title,description:n.value0.value0,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,selected:e.selected,time:e.time}};if(n.value0 instanceof _)return function(e){return{url:e.url,title:e.title,description:e.description,tags:n.value0.value0,private:e.private,toread:e.toread,bid:e.bid,selected:e.selected,time:e.time}};if(n.value0 instanceof I)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:n.value0.value0,toread:e.toread,bid:e.bid,selected:e.selected,time:e.time}};if(n.value0 instanceof O)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:n.value0.value0,bid:e.bid,selected:e.selected,time:e.time}};throw new Error("Failed pattern match at Component.Add line 156, column 18 - line 162, column 36: "+[n.value0.constructor.name])}()))(function(){return t.pure(E.applicativeHalogenM)(n.value1)});var u;if(n instanceof W)return r.discard(r.discardUnit)(E.bindHalogenM)(m.liftEffect(E.monadEffectHalogenM(v.monadEffectAff))(C.preventDefault(n.value0)))(function(){return r.bind(E.bindHalogenM)(a.get(E.monadStateHalogenM))(function(u){return r.discard(r.discardUnit)(E.bindHalogenM)(l.void(E.functorHalogenM)(p.liftAff(E.monadAffHalogenM(p.monadAffAff))(e.editBookmark(u.edit_bm))))(function(){return r.discard(r.discardUnit)(E.bindHalogenM)(a.put(E.monadStateHalogenM)(function(){var n={};for(var e in u)({}).hasOwnProperty.call(u,e)&&(n[e]=u[e]);return n.bm=u.edit_bm,n}()))(function(){return r.bind(E.bindHalogenM)(m.liftEffect(E.monadEffectHalogenM(v.monadEffectAff))(M._loc))(function(e){return r.bind(E.bindHalogenM)(m.liftEffect(E.monadEffectHalogenM(v.monadEffectAff))(T.window))(function(a){return r.bind(E.bindHalogenM)(m.liftEffect(E.monadEffectHalogenM(v.monadEffectAff))(M._curQuerystring))(function(u){return r.discard(r.discardUnit)(E.bindHalogenM)((o=M._lookupQueryStringValue(u)("next"))instanceof c.Just?m.liftEffect(E.monadEffectHalogenM(v.monadEffectAff))(A.setHref(o.value0)(e)):m.liftEffect(E.monadEffectHalogenM(v.monadEffectAff))(D.closeWindow(a)))(function(){return t.pure(E.applicativeHalogenM)(n.value1)});var o})})})})})})});throw new Error("Failed pattern match at Component.Add line 146, column 3 - line 146, column 58: "+[n.constructor.name])},receiver:i.const(c.Nothing.value)})}}(PS["Component.Add"]=PS["Component.Add"]||{}),function(n){"use strict";var e=PS.App,t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],u=(PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed.ButtonType"]),o=PS["DOM.HTML.Indexed.InputType"],i=PS["Data.Array"],l=(PS["Data.Eq"],PS["Data.Foldable"]),c=PS["Data.Function"],f=PS["Data.Functor"],s=(PS["Data.HeytingAlgebra"],PS["Data.Maybe"]),d=PS["Data.Monoid"],S=PS["Data.Semigroup"],P=PS["Data.Show"],v=(PS["Data.String"],PS["Data.String.CodePoints"]),p=PS["Data.String.Common"],m=(PS["Data.String.Pattern"],PS["Data.Tuple"]),D=PS["Data.Unit"],b=PS["Effect.Aff"],g=PS["Effect.Aff.Class"],h=PS["Effect.Class"],w=PS.Globals,y=(PS.Halogen,PS["Halogen.Component"]),E=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),M=PS["Halogen.HTML.Elements"],C=PS["Halogen.HTML.Events"],T=PS["Halogen.HTML.Properties"],A=PS["Halogen.Query.HalogenM"],F=(PS.Model,PS.Prelude,PS.Util),H=PS["Web.Event.Event"],L=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),_=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),I=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),O=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),N=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),W=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),x=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),U=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),R=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),k=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),B=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),q=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),j=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),J=function(){function n(){}return n.value=new n,n}();n.BStar=x,n.BDeleteAsk=U,n.BDestroy=R,n.BEdit=k,n.BEditField=B,n.BEditSubmit=q,n.BMarkRead=j,n.Eurl=L,n.Etitle=_,n.Edescription=I,n.Etags=O,n.Eprivate=N,n.Etoread=W,n.BNotifyRemove=J,n.bmark=function(n){var V,Q=w["app'"](D.unit);return y.component(E.bifunctorHTML)({initialState:c.const((V=n,{bm:V,edit_bm:V,deleteAsk:!1,edit:!1})),render:function(n){var e,t,r=d.guard(d.monoidArray)(Q.dat.isowner)([M.div([F.class_("star fl pointer"+d.guard(d.monoidString)(n.bm.selected)(" selected"))])([M.button([F.class_("moon-gray"),C.onClick(C.input_(x.create(!n.bm.selected)))])([E.text("✭")])])]),a=w.mmoment8601(n.bm.time),c=d.guard(d.monoidArray)(Q.dat.isowner)([M.div([F.class_("edit_links di")])([M.button([T.type_(E.buttonTypeIsProp)(u.ButtonButton.value),C.onClick(C.input_(k.create(!0))),F.class_("edit light-silver hover-blue")])([E.text("edit  ")]),M.div([F.class_("delete_link di")])([M.button([T.type_(E.buttonTypeIsProp)(u.ButtonButton.value),C.onClick(C.input_(U.create(!0))),F.class_("delete light-silver hover-blue"+d.guard(d.monoidString)(n.deleteAsk)(" dn"))])([E.text("delete")]),M.span([F.class_("confirm red"+d.guard(d.monoidString)(!n.deleteAsk)(" dn"))])([M.button([T.type_(E.buttonTypeIsProp)(u.ButtonButton.value),C.onClick(C.input_(U.create(!1)))])([E.text("cancel / ")]),M.button([T.type_(E.buttonTypeIsProp)(u.ButtonButton.value),C.onClick(C.input_(R.create)),F.class_("red")])([E.text("destroy")])])])]),M.div([F.class_("read di")])(d.guard(d.monoidArray)(n.bm.toread)([E.text("  "),M.button([C.onClick(C.input_(j.create)),F.class_("mark_read")])([E.text("mark as read")])]))]),D=function(n){return function(e){return C.input(B.create)(n(e))}},b=[M.div([F.class_("edit_bookmark_form pa2 bg-white")])([M.form([C.onSubmit(C.input(q.create))])([M.input([T.type_(E.inputTypeIsProp)(o.InputUrl.value),F.class_("url w-100 mt2 mb1 pt1 f7 edit_form_input"),T.required(!0),T.name("url"),T.value(n.edit_bm.url),C.onValueChange(D(L.create))]),M.br_,M.input([T.type_(E.inputTypeIsProp)(o.InputText.value),F.class_("title w-100 mt2 mb1 pt1 f7 edit_form_input"),T.name("title"),T.value(n.edit_bm.title),C.onValueChange(D(_.create))]),M.br_,M.p([F.class_("mt2 mb1")])([E.text(" description:")]),M.textarea([F.class_("description w-100 mt2 mb1 pt1 f7 edit_form_input"),T.name("description"),T.rows(5),T.value(n.edit_bm.description),C.onValueChange(D(I.create))]),M.br_,M.div([T.id_("tags_input_box")])([M.p_([M.div_([E.text(" tags:")]),M.input([T.type_(E.inputTypeIsProp)(o.InputText.value),F.class_("tags w-100 mt2 mb1 pt1 f7 edit_form_input"),T.name("tags"),T.autocomplete(!1),F.attr("autocapitalize")("off"),T.value(n.edit_bm.tags),C.onValueChange(D(O.create))]),M.br_])]),M.div([F.class_("edit_form_checkboxes mv3")])([M.input([T.type_(E.inputTypeIsProp)(o.InputCheckbox.value),F.class_("private pointer"),T.id_("edit_private"),T.name("private"),T.checked(n.edit_bm.private),C.onChecked(D(N.create))]),E.text(" "),M.label([T.for("edit_private"),F.class_("mr2")])([E.text("private")]),E.text(" "),M.input([T.type_(E.inputTypeIsProp)(o.InputCheckbox.value),F.class_("toread pointer"),T.id_("edit_toread"),T.name("toread"),T.checked(n.edit_bm.toread),C.onChecked(D(W.create))]),E.text(" "),M.label([T.for("edit_toread")])([E.text("toread")]),M.br_]),M.input([T.type_(E.inputTypeIsProp)(o.InputSubmit.value),F.class_("mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),T.value("save")]),E.text(" "),M.input([T.type_(E.inputTypeIsProp)(o.InputReset.value),F.class_("pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),T.value("cancel"),C.onClick(C.input_(k.create(!1)))])])])],g=[M.div([F.class_("display")])(S.append(S.semigroupArray)([M.a([T.href(n.bm.url),T.target("_blank"),F.class_("link f5 lh-title"+d.guard(d.monoidString)(n.bm.toread)(" unread"))])([E.text(p.null(n.bm.title)?"[no title]":n.bm.title)]),M.br_,M.a([T.href(n.bm.url),F.class_("link f7 gray hover-blue")])([E.text(n.bm.url)]),M.br_,M.div([F.class_("description mt1 mid-gray")])((t=n.bm.description,i.drop(1)(l.foldMap(l.foldableArray)(d.monoidArray)(function(n){return[M.br_,E.text(n)]})(p.split("\n")(t))))),M.div([F.class_("tags")])(d.guard(d.monoidFn(d.monoidFn(d.monoidArray)))(!p.null(n.bm.tags))(f.map(f.functorArray))(function(n){return M.a([F.class_("link tag mr1"+d.guard(d.monoidString)("."===v.take(1)(n))(" private")),T.href(function(n){return Q.userR+"/t:"+n}(n))])([E.text(n)])})(p.split(" ")(n.bm.tags))),M.a([F.class_("link f7 dib gray w4"),T.title(s.maybe(n.bm.time)(m.snd)(a)),T.href((e=n.bm.bid,Q.userR+"/b:"+P.show(P.showInt)(e)))])([E.text(s.maybe(" ")(m.fst)(a))])])(c))];return M.div([T.id_(P.show(P.showInt)(n.bm.bid)),F.class_("bookmark w-100 mw7 pa1 mb3"+d.guard(d.monoidString)(n.bm.private)(" private"))])(S.append(S.semigroupArray)(r)(n.edit?b:g))},eval:function(n){if(n instanceof x)return r.bind(A.bindHalogenM)(a.get(A.monadStateHalogenM))(function(u){return r.discard(r.discardUnit)(A.bindHalogenM)(g.liftAff(A.monadAffHalogenM(g.monadAffAff))(e.toggleStar(u.bm.bid)(n.value0?e.Star.value:e.UnStar.value)))(function(){return r.discard(r.discardUnit)(A.bindHalogenM)(a.put(A.monadStateHalogenM)(function(){var e={};for(var t in u)({}).hasOwnProperty.call(u,t)&&(e[t]=u[t]);return e.bm=function(){var e={};for(var t in u.bm)({}).hasOwnProperty.call(u.bm,t)&&(e[t]=u.bm[t]);return e.selected=n.value0,e}(),e.edit_bm=function(){var e={};for(var t in u.edit_bm)({}).hasOwnProperty.call(u.edit_bm,t)&&(e[t]=u.edit_bm[t]);return e.selected=n.value0,e}(),e}()))(function(){return t.pure(A.applicativeHalogenM)(n.value1)})})});if(n instanceof U)return r.discard(r.discardUnit)(A.bindHalogenM)(a.modify_(A.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t}))(function(){return t.pure(A.applicativeHalogenM)(n.value1)});if(n instanceof R)return r.bind(A.bindHalogenM)(a.gets(A.monadStateHalogenM)(function(n){return n.bm.bid}))(function(a){return r.discard(r.discardUnit)(A.bindHalogenM)(f.void(A.functorHalogenM)(g.liftAff(A.monadAffHalogenM(g.monadAffAff))(e.destroy(a))))(function(){return r.discard(r.discardUnit)(A.bindHalogenM)(A.raise(J.value))(function(){return t.pure(A.applicativeHalogenM)(n.value0)})})});if(n instanceof j)return r.bind(A.bindHalogenM)(a.get(A.monadStateHalogenM))(function(u){return r.discard(r.discardUnit)(A.bindHalogenM)(f.void(A.functorHalogenM)(g.liftAff(A.monadAffHalogenM(g.monadAffAff))(e.markRead(u.bm.bid))))(function(){var e=function(){var n={};for(var e in u)({}).hasOwnProperty.call(u,e)&&(n[e]=u[e]);return n.bm=function(){var n={};for(var e in u.bm)({}).hasOwnProperty.call(u.bm,e)&&(n[e]=u.bm[e]);return n.toread=!1,n}(),n}();return r.discard(r.discardUnit)(A.bindHalogenM)(a.put(A.monadStateHalogenM)(e))(function(){return t.pure(A.applicativeHalogenM)(n.value0)})})});if(n instanceof k)return r.bind(A.bindHalogenM)(a.get(A.monadStateHalogenM))(function(e){var u=function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit=n.value0,t.edit_bm=e.bm,t}();return r.discard(r.discardUnit)(A.bindHalogenM)(a.put(A.monadStateHalogenM)(u))(function(){return t.pure(A.applicativeHalogenM)(n.value1)})});if(n instanceof B)return r.discard(r.discardUnit)(A.bindHalogenM)((u=A.monadStateHalogenM,function(n){return a.modify_(u)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_bm=n(e.edit_bm),t})})(function(){if(n.value0 instanceof L)return function(e){return{url:n.value0.value0,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,selected:e.selected,time:e.time}};if(n.value0 instanceof _)return function(e){return{url:e.url,title:n.value0.value0,description:e.description,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,selected:e.selected,time:e.time}};if(n.value0 instanceof I)return function(e){return{url:e.url,title:e.title,description:n.value0.value0,tags:e.tags,private:e.private,toread:e.toread,bid:e.bid,selected:e.selected,time:e.time}};if(n.value0 instanceof O)return function(e){return{url:e.url,title:e.title,description:e.description,tags:n.value0.value0,private:e.private,toread:e.toread,bid:e.bid,selected:e.selected,time:e.time}};if(n.value0 instanceof N)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:n.value0.value0,toread:e.toread,bid:e.bid,selected:e.selected,time:e.time}};if(n.value0 instanceof W)return function(e){return{url:e.url,title:e.title,description:e.description,tags:e.tags,private:e.private,toread:n.value0.value0,bid:e.bid,selected:e.selected,time:e.time}};throw new Error("Failed pattern match at Component.BMark line 229, column 18 - line 235, column 36: "+[n.value0.constructor.name])}()))(function(){return t.pure(A.applicativeHalogenM)(n.value1)});var u;if(n instanceof q)return r.discard(r.discardUnit)(A.bindHalogenM)(h.liftEffect(A.monadEffectHalogenM(b.monadEffectAff))(H.preventDefault(n.value0)))(function(){return r.bind(A.bindHalogenM)(a.get(A.monadStateHalogenM))(function(u){return r.discard(r.discardUnit)(A.bindHalogenM)(f.void(A.functorHalogenM)(g.liftAff(A.monadAffHalogenM(g.monadAffAff))(e.editBookmark(u.edit_bm))))(function(){return r.discard(r.discardUnit)(A.bindHalogenM)(a.put(A.monadStateHalogenM)(function(){var n={};for(var e in u)({}).hasOwnProperty.call(u,e)&&(n[e]=u[e]);return n.edit=!1,n.bm=u.edit_bm,n}()))(function(){return t.pure(A.applicativeHalogenM)(n.value1)})})})});throw new Error("Failed pattern match at Component.BMark line 191, column 3 - line 191, column 65: "+[n.constructor.name])},receiver:c.const(s.Nothing.value)})}}(PS["Component.BMark"]=PS["Component.BMark"]||{}),function(n){"use strict";var e=PS["Component.BMark"],t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],u=PS["Data.Array"],o=(PS["Data.Eq"],PS["Data.Function"]),i=PS["Data.Functor"],l=PS["Data.Maybe"],c=PS["Data.Ord"],f=PS["Data.Unit"],s=(PS["Effect.Aff"],PS.Halogen,PS["Halogen.Component"]),d=PS["Halogen.HTML"],S=PS["Halogen.HTML.Elements"],P=PS["Halogen.HTML.Events"],v=PS["Halogen.Query.HalogenM"],p=(PS.Model,PS.Prelude,function(){function n(n,e,t){this.value0=n,this.value1=e,this.value2=t}return n.create=function(e){return function(t){return function(r){return new n(e,t,r)}}},n}());n.HandleBMessage=p,n.blist=function(n){return s.parentComponent(c.ordInt)({initialState:o.const(n),render:function(n){return S.div_(i.map(i.functorArray)(function(n){return d.slot(n.bid)(e.bmark(n))(f.unit)(P.input(p.create(n.bid)))})(n))},eval:function(n){var e;return r.discard(r.discardUnit)(v.bindHalogenM)(a.modify_(v.monadStateHalogenM)((e=n.value0,u.filter(function(n){return n.bid!==e}))))(function(){return t.pure(v.applicativeHalogenM)(n.value2)})},receiver:o.const(l.Nothing.value)})}}(PS["Component.BList"]=PS["Component.BList"]||{}),function(n){"use strict";var e=PS.App,t=PS["Control.Applicative"],r=PS["Control.Bind"],a=PS["Control.Monad.State.Class"],u=(PS["Control.Semigroupoid"],PS["DOM.HTML.Indexed.ButtonType"]),o=PS["DOM.HTML.Indexed.InputType"],i=(PS["Data.Argonaut"],PS["Data.Argonaut.Core"]),l=PS["Data.Array"],c=(PS["Data.Either"],PS["Data.Foldable"]),f=PS["Data.Function"],s=PS["Data.Functor"],d=(PS["Data.HeytingAlgebra"],PS["Data.Int"]),S=PS["Data.Maybe"],P=PS["Data.Monoid"],v=(PS["Data.Ord"],PS["Data.Semigroup"]),p=PS["Data.Show"],m=(PS["Data.String"],PS["Data.String.CodePoints"]),D=PS["Data.String.Common"],b=(PS["Data.String.Pattern"],PS["Data.Tuple"]),g=PS["Data.Unit"],h=PS["Effect.Aff"],w=PS["Effect.Aff.Class"],y=PS["Effect.Class"],E=(PS["Effect.Exception"],PS.Globals),M=(PS.Halogen,PS["Halogen.Component"]),C=(PS["Halogen.HTML"],PS["Halogen.HTML.Core"]),T=PS["Halogen.HTML.Elements"],A=PS["Halogen.HTML.Events"],F=PS["Halogen.HTML.Properties"],H=PS["Halogen.Query.HalogenM"],L=(PS.Model,PS.Prelude,PS.Util),_=PS["Web.Event.Event"],I=(PS["Web.HTML"],PS["Web.HTML.Location"],function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}()),O=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),N=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}(),W=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),x=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),U=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),R=function(){function n(n,e){this.value0=n,this.value1=e}return n.create=function(e){return function(t){return new n(e,t)}},n}(),k=function(){function n(n){this.value0=n}return n.create=function(e){return new n(e)},n}();n.nlist=function(n){var e,r=function(n){return E.mmoment8601(n.created)},a=E["app'"](g.unit),u=function(n){return a.userR+"/notes/"+p.show(p.showInt)(n)};return M.component(C.bifunctorHTML)({initialState:f.const((e=n,{notes:e,cur:S.Nothing.value,deleteAsk:!1,edit:!1})),render:function(n){return T.div_(s.map(s.functorArray)(function(n){return T.div([F.id_(p.show(p.showInt)(n.id)),L.class_("note w-100 mw7 pa1 mb2")])([T.div([L.class_("display")])([T.a([F.href(u(n.id)),F.target("_blank"),L.class_("link f5 lh-title")])([C.text(D.null(n.title)?"[no title]":n.title)]),T.br_,T.div([L.class_("description mt1 mid-gray")])((e=m.take(200)(n.text),l.drop(1)(c.foldMap(c.foldableArray)(P.monoidArray)(function(n){return[T.br_,C.text(n)]})(D.split("\n")(e))))),T.a([L.class_("link f7 dib gray w4"),F.title(S.maybe(n.created)(b.snd)(r(n))),F.href(u(n.id))])([C.text(S.maybe(" ")(b.fst)(r(n)))])])]);var e})(n.notes))},eval:function(n){return t.pure(H.applicativeHalogenM)(n.value0)},receiver:f.const(S.Nothing.value)})},n.NNop=N,n.NEditField=W,n.NEditSubmit=x,n.NEdit=U,n.NDeleteAsk=R,n.NDestroy=k,n.Etitle=I,n.Etext=O,n.nnote=function(n){var m;E["app'"](g.unit);return M.component(C.bifunctorHTML)({initialState:f.const((m=n,{note:m,edit_note:m,deleteAsk:!1,edit:m.id<=0,destroyed:!1})),render:function(n){var e,t=function(n){return E.mmoment8601(n.created)},r=T.div([F.id_(p.show(p.showInt)(n.note.id)),L.class_("note w-100 mw7 pa1 mb2")])(v.append(v.semigroupArray)([T.div([L.class_("display")])([T.div([L.class_("link f5 lh-title")])([C.text(D.null(n.note.title)?"[no title]":n.note.title)]),T.br_,T.div([L.class_("description mt1 mid-gray")])((e=n.note.text,l.drop(1)(c.foldMap(c.foldableArray)(P.monoidArray)(function(n){return[T.br_,C.text(n)]})(D.split("\n")(e))))),T.div([L.class_("link f7 dib gray w4"),F.title(S.maybe(n.note.created)(b.snd)(t(n.note)))])([C.text(S.maybe(" ")(b.fst)(t(n.note)))])])])([T.div([L.class_("edit_links db mt3")])([T.button([F.type_(C.buttonTypeIsProp)(u.ButtonButton.value),A.onClick(A.input_(U.create(!0))),L.class_("edit light-silver hover-blue")])([C.text("edit  ")]),T.div([L.class_("delete_link di")])([T.button([F.type_(C.buttonTypeIsProp)(u.ButtonButton.value),A.onClick(A.input_(R.create(!0))),L.class_("delete light-silver hover-blue"+P.guard(P.monoidString)(n.deleteAsk)(" dn"))])([C.text("delete")]),T.span([L.class_("confirm red"+P.guard(P.monoidString)(!n.deleteAsk)(" dn"))])([T.button([F.type_(C.buttonTypeIsProp)(u.ButtonButton.value),A.onClick(A.input_(R.create(!1)))])([C.text("cancel / ")]),T.button([F.type_(C.buttonTypeIsProp)(u.ButtonButton.value),A.onClick(A.input_(k.create)),L.class_("red")])([C.text("destroy")])])])])])),a=function(n){return function(e){return A.input(W.create)(n(e))}},i=T.form([A.onSubmit(A.input(x.create))])([T.p([L.class_("mt2 mb1")])([C.text("Title:")]),T.input([F.type_(C.inputTypeIsProp)(o.InputText.value),L.class_("title w-100 mt2 mb1 pt1 f7 edit_form_input"),F.name("title"),F.value(n.edit_note.title),A.onValueChange(a(I.create))]),T.br_,T.p([L.class_("mt2 mb1")])([C.text("Description:")]),T.textarea([L.class_("description w-100 mt2 mb1 pt1 f7 edit_form_input"),F.name("text"),F.rows(30),F.value(n.edit_note.text),A.onValueChange(a(O.create))]),T.div([L.class_("edit_form_checkboxes mv3")])([T.input([F.type_(C.inputTypeIsProp)(o.InputSubmit.value),L.class_("mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),F.value("save")]),C.text(" "),T.input([F.type_(C.inputTypeIsProp)(o.InputReset.value),L.class_("pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim"),F.value("cancel"),A.onClick(A.input_(U.create(!1)))])])]),f=T.p([L.class_("red")])([C.text("you killed this note")]);return n.destroyed?f:n.edit?i:r},eval:function(n){if(n instanceof N)return t.pure(H.applicativeHalogenM)(n.value0);if(n instanceof W)return r.discard(r.discardUnit)(H.bindHalogenM)((u=H.monadStateHalogenM,function(n){return a.modify_(u)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit_note=n(e.edit_note),t})})(function(){if(n.value0 instanceof I)return function(e){return{id:e.id,title:n.value0.value0,text:e.text,length:e.length,created:e.created,updated:e.updated}};if(n.value0 instanceof O)return function(e){return{id:e.id,title:e.title,text:n.value0.value0,length:e.length,created:e.created,updated:e.updated}};throw new Error("Failed pattern match at Component.NList line 210, column 18 - line 212, column 32: "+[n.value0.constructor.name])}()))(function(){return t.pure(H.applicativeHalogenM)(n.value1)});var u;if(n instanceof R)return r.discard(r.discardUnit)(H.bindHalogenM)(a.modify_(H.monadStateHalogenM)(function(e){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.deleteAsk=n.value0,t}))(function(){return t.pure(H.applicativeHalogenM)(n.value1)});if(n instanceof k)return r.bind(H.bindHalogenM)(a.get(H.monadStateHalogenM))(function(u){return r.discard(r.discardUnit)(H.bindHalogenM)(s.void(H.functorHalogenM)(w.liftAff(H.monadAffHalogenM(w.monadAffAff))(e.destroyNote(u.note.id))))(function(){return r.discard(r.discardUnit)(H.bindHalogenM)(a.put(H.monadStateHalogenM)(function(){var n={};for(var e in u)({}).hasOwnProperty.call(u,e)&&(n[e]=u[e]);return n.destroyed=!0,n}()))(function(){return t.pure(H.applicativeHalogenM)(n.value0)})})});if(n instanceof U)return r.bind(H.bindHalogenM)(a.get(H.monadStateHalogenM))(function(e){var u=function(){var t={};for(var r in e)({}).hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.edit=n.value0,t.edit_note=e.note,t}();return r.discard(r.discardUnit)(H.bindHalogenM)(a.put(H.monadStateHalogenM)(u))(function(){return t.pure(H.applicativeHalogenM)(n.value1)})});if(n instanceof x)return r.discard(r.discardUnit)(H.bindHalogenM)(y.liftEffect(H.monadEffectHalogenM(h.monadEffectAff))(_.preventDefault(n.value0)))(function(){return r.bind(H.bindHalogenM)(a.get(H.monadStateHalogenM))(function(u){return r.bind(H.bindHalogenM)(w.liftAff(H.monadAffHalogenM(w.monadAffAff))(e.editNote(u.edit_note)))(function(e){var o=S.fromMaybe(u.edit_note)(r.bind(S.bindMaybe)(r.bind(S.bindMaybe)(i.toNumber(e.response))(d.fromNumber))(function(n){return new S.Just({id:n,created:u.edit_note.created,length:u.edit_note.length,text:u.edit_note.text,title:u.edit_note.title,updated:u.edit_note.updated})}));return r.discard(r.discardUnit)(H.bindHalogenM)(a.put(H.monadStateHalogenM)(function(){var n={};for(var e in u)({}).hasOwnProperty.call(u,e)&&(n[e]=u[e]);return n.edit=!1,n.note=o,n.edit_note=o,n}()))(function(){return t.pure(H.applicativeHalogenM)(n.value1)})})})});throw new Error("Failed pattern match at Component.NList line 205, column 3 - line 205, column 61: "+[n.constructor.name])},receiver:f.const(S.Nothing.value)})}}(PS["Component.NList"]=PS["Component.NList"]||{}),function(n){"use strict";PS["Control.Monad.Error.Class"],PS["Control.Monad.Reader.Trans"],PS["Control.Monad.Trans.Class"],PS["Control.Semigroupoid"];var e=PS["Effect.Aff"],t=(PS.Prelude,function(n,e,t,r,a){this.Functor1=n,this.Monad0=e,this.fork=t,this.join=r,this.suspend=a}),r=new t(function(){return e.functorFiber},function(){return e.monadAff},e.forkAff,e.joinFiber,e.suspendAff);n.fork=function(n){return n.fork},n.join=function(n){return n.join},n.suspend=function(n){return n.suspend},n.MonadFork=t,n.monadForkAff=r}(PS["Control.Monad.Fork.Class"]=PS["Control.Monad.Fork.Class"]||{}),function(n){"use strict";(PS["Effect.Console"]=PS["Effect.Console"]||{}).warn=function(n){return function(){return console.warn(n),{}}}}(),function(n){"use strict";var e=PS["Effect.Console"];PS["Data.Show"],PS["Data.Unit"],PS.Effect;n.warn=e.warn}(PS["Effect.Console"]=PS["Effect.Console"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"];var e=PS["Data.Foldable"],t=(PS["Data.Function"],PS["Data.Functor"]),r=(PS["Data.List"],PS["Data.List.Types"]),a=(PS["Data.Map"],PS["Data.Map.Internal"]),u=PS["Data.Maybe"],o=(PS["Data.Traversable"],PS.Effect,PS["Effect.Aff"],PS["Effect.Ref"]),i=(PS["Halogen.Component"],PS["Halogen.Data.OrdBox"],PS.Prelude,PS["Unsafe.Coerce"]),l=(PS["Web.DOM"],i.unsafeCoerce),c=i.unsafeCoerce,f=i.unsafeCoerce;n.unDriverStateX=c,n.mkDriverStateXRef=f,n.renderStateX=function(n){return function(n){return c(function(e){return(e.prjQuery,i.unsafeCoerce)(n(e.rendering))})}},n.renderStateX_=function(n){return function(t){return c(function(r){return e.traverse_(n)(e.foldableMaybe)(t)(r.rendering)})}},n.unRenderStateX=l,n.initDriverState=function(n){return function(e){return function(i){return function(l){return function(c){return function(){var s=o.new({})(),d=o.new(a.empty)(),S=o.new(a.empty)(),P=o.new(t.voidLeft(u.functorMaybe)(n.initializer)(r.Nil.value))(),v=o.new(new u.Just(r.Nil.value))(),p=o.new(u.Nothing.value)(),m=o.new(0)(),D=o.new(new u.Just(a.empty))(),b={component:n,state:n.initialState(e),refs:a.empty,children:a.empty,childrenIn:d,childrenOut:S,selfRef:s,handler:i,pendingQueries:P,pendingOuts:v,pendingHandlers:p,rendering:u.Nothing.value,prjQuery:l,fresh:m,subscriptions:D,lifecycleHandlers:c};return o.write(b)(s)(),f(s)}}}}}}}(PS["Halogen.Aff.Driver.State"]=PS["Halogen.Aff.Driver.State"]||{}),function(n){"use strict";(PS["Unsafe.Reference"]=PS["Unsafe.Reference"]||{}).reallyUnsafeRefEq=function(n){return function(e){return n===e}}}(),function(n){"use strict";var e=PS["Unsafe.Reference"].reallyUnsafeRefEq;n.unsafeRefEq=e}(PS["Unsafe.Reference"]=PS["Unsafe.Reference"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Applicative.Free"],r=PS["Control.Bind"],a=PS["Control.Coroutine"],u=PS["Control.Monad.Error.Class"],o=PS["Control.Monad.Fork.Class"],i=PS["Control.Monad.Free"],l=PS["Control.Monad.Free.Trans"],c=PS["Control.Monad.Trans.Class"],f=PS["Control.Parallel"],s=PS["Control.Parallel.Class"],d=(PS["Control.Semigroupoid"],PS["Data.Boolean"]),S=PS["Data.Coyoneda"],P=PS["Data.Eq"],v=PS["Data.Foldable"],p=PS["Data.Function"],m=PS["Data.Functor"],D=PS["Data.List"],b=PS["Data.List.Types"],g=PS["Data.Map"],h=PS["Data.Map.Internal"],w=PS["Data.Maybe"],y=PS["Data.Ord"],E=(PS["Data.Semiring"],PS["Data.Set"]),M=(PS["Data.Tuple"],PS.Effect,PS["Effect.Aff"]),C=PS["Effect.Class"],T=PS["Effect.Exception"],A=PS["Effect.Ref"],F=PS["Halogen.Aff.Driver.State"],H=PS["Halogen.Data.OrdBox"],L=PS["Halogen.Query.EventSource"],_=PS["Halogen.Query.ForkF"],I=PS["Halogen.Query.HalogenM"],O=PS["Halogen.Query.InputF"],N=(PS.Prelude,PS["Unsafe.Reference"]),W=function(n){return function(e){return function(t){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(e)))(function(r){if(r instanceof w.Nothing)return n(t);if(r instanceof w.Just)return C.liftEffect(M.monadEffectAff)(A.write(new w.Just(new b.Cons(n(t),r.value0)))(e));throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 171, column 3 - line 175, column 59: "+[r.constructor.name])})}}},x=function(n){return function(t){return r.discard(r.discardUnit)(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.write({initializers:b.Nil.value,finalizers:b.Nil.value})(n)))(function(){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(t))(function(t){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(n)))(function(n){return r.discard(r.discardUnit)(M.bindAff)(v.traverse_(M.applicativeAff)(b.foldableList)(o.fork(o.monadForkAff))(n.finalizers))(function(){return r.discard(r.discardUnit)(M.bindAff)(f.parSequence_(M.parallelAff)(b.foldableList)(n.initializers))(function(){return e.pure(M.applicativeAff)(t)})})})})})}};n.handleLifecycle=x,n.eval=function(n){return function(f){var v=function(i){return function(f){if(f instanceof I.State)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(t){var a=f.value0(t.state);if(N.unsafeRefEq(t.state)(a.value1))return e.pure(M.applicativeAff)(a.value0);if(d.otherwise)return r.discard(r.discardUnit)(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.write({component:t.component,state:a.value1,refs:t.refs,children:t.children,childrenIn:t.childrenIn,childrenOut:t.childrenOut,selfRef:t.selfRef,handler:t.handler,pendingQueries:t.pendingQueries,pendingOuts:t.pendingOuts,pendingHandlers:t.pendingHandlers,rendering:t.rendering,prjQuery:t.prjQuery,fresh:t.fresh,subscriptions:t.subscriptions,lifecycleHandlers:t.lifecycleHandlers})(i)))(function(){return r.discard(r.discardUnit)(M.bindAff)(x(t.lifecycleHandlers)(n(t.lifecycleHandlers)(i)))(function(){return e.pure(M.applicativeAff)(a.value0)})});throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 76, column 7 - line 82, column 21: "+[a.constructor.name])});if(f instanceof I.Subscribe)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(n){return r.bind(M.bindAff)(o.fork(o.monadForkAff)(r.bind(M.bindAff)(L.unEventSource(f.value0))(function(t){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A["modify'"](function(n){return{state:n+1|0,value:n}})(n.fresh)))(function(u){var o=r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(n.subscriptions)))(function(t){return e.when(M.applicativeAff)(w.maybe(!1)(h.member(y.ordInt)(u))(t))(C.liftEffect(M.monadEffectAff)(A.modify_(m.map(w.functorMaybe)(h.delete(y.ordInt)(u)))(n.subscriptions)))});return r.discard(r.discardUnit)(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.modify_(m.map(w.functorMaybe)(h.insert(y.ordInt)(u)(o)))(n.subscriptions)))(function(){var u=r.bind(l.bindFreeT(a.functorAwait)(M.monadAff))(a.await(M.monadAff))(function(t){return r.bind(l.bindFreeT(a.functorAwait)(M.monadAff))(c.lift(l.monadTransFreeT(a.functorAwait))(M.monadAff)(C.liftEffect(M.monadEffectAff)(A.read(n.subscriptions))))(function(n){return e.when(l.applicativeFreeT(a.functorAwait)(M.monadAff))(w.isJust(n))(r.bind(l.bindFreeT(a.functorAwait)(M.monadAff))(c.lift(l.monadTransFreeT(a.functorAwait))(M.monadAff)(R(i)(t)))(function(n){return e.when(l.applicativeFreeT(a.functorAwait)(M.monadAff))(P.eq(L.eqSubscribeStatus)(n)(L.Listening.value))(u)}))})});return r.discard(r.discardUnit)(M.bindAff)(a.runProcess(M.monadRecAff)(a.pullFrom(M.monadRecAff)(u)(t.producer)))(function(){return o})})})})))(function(n){return e.pure(M.applicativeAff)(f.value1)})});if(f instanceof I.Lift)return f.value0;if(f instanceof I.Halt)return u.throwError(M.monadThrowAff)(T.error(f.value0));if(f instanceof I.GetSlots)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(n){return e.pure(M.applicativeAff)(f.value0(m.map(b.functorList)(H.unOrdBox)(D.fromFoldable(E.foldableSet)(g.keys(n.children)))))});if(f instanceof I.CheckSlot)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(n){return e.pure(M.applicativeAff)(f.value1(h.member(H.ordOrdBox)(n.component.mkOrdBox(f.value0))(n.children)))});if(f instanceof I.ChildQuery)return k(i)(f.value0)(f.value1);if(f instanceof I.Raise)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(n){return r.discard(r.discardUnit)(M.bindAff)(W(n.handler)(n.pendingOuts)(f.value0))(function(){return e.pure(M.applicativeAff)(f.value1)})});if(f instanceof I.Par)return s.sequential(M.parallelAff)(t.retractFreeAp(M.applicativeParAff)(t.hoistFreeAp(function(n){return s.parallel(M.parallelAff)(U(i)(n))})(f.value0)));if(f instanceof I.Fork)return _.unFork(function(n){return r.bind(M.bindAff)(o.fork(o.monadForkAff)(U(i)(n.value0)))(function(t){return e.pure(M.applicativeAff)(n.value1(p.flip(M.killFiber)(t)))})})(f.value0);if(f instanceof I.GetRef)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(i)))(function(n){return e.pure(M.applicativeAff)(f.value1(h.lookup(y.ordString)(f.value0)(n.refs)))});throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 73, column 12 - line 128, column 33: "+[f.constructor.name])}},U=function(n){return function(e){return i.foldFree(M.monadRecAff)(v(n))(e)}},R=function(n){return function(e){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(n)))(function(t){var r=t.component.eval(e);return i.foldFree(M.monadRecAff)(v(n))(r)})}},k=function(n){return function(e){return S.unCoyoneda(function(t){return function(a){return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(n)))(function(n){var o=h.lookup(H.ordOrdBox)(n.component.mkOrdBox(e))(n.children);if(o instanceof w.Just)return r.bind(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.read(o.value0)))(function(n){return F.unDriverStateX(function(n){var e=n.prjQuery(a);if(e instanceof w.Just)return m.map(M.functorAff)(t)(R(n.selfRef)(e.value0));if(e instanceof w.Nothing)return u.throwError(M.monadThrowAff)(T.error("Query projection failed for child query"));throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 141, column 32 - line 143, column 82: "+[e.constructor.name])})(n)});if(o instanceof w.Nothing)return u.throwError(M.monadThrowAff)(T.error("Slot lookup failed for child query"));throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 138, column 5 - line 144, column 73: "+[o.constructor.name])})}})}};return function(n){if(n instanceof O.RefUpdate)return r.discard(r.discardUnit)(M.bindAff)(C.liftEffect(M.monadEffectAff)(A.modify_(function(e){return{component:e.component,state:e.state,refs:h.alter(y.ordString)(p.const(n.value1))(n.value0)(e.refs),children:e.children,childrenIn:e.childrenIn,childrenOut:e.childrenOut,selfRef:e.selfRef,handler:e.handler,pendingQueries:e.pendingQueries,pendingOuts:e.pendingOuts,pendingHandlers:e.pendingHandlers,rendering:e.rendering,prjQuery:e.prjQuery,fresh:e.fresh,subscriptions:e.subscriptions,lifecycleHandlers:e.lifecycleHandlers}})(f)))(function(){return e.pure(M.applicativeAff)(n.value2)});if(n instanceof O.Query)return R(f)(n.value0);throw new Error("Failed pattern match at Halogen.Aff.Driver.Eval line 59, column 3 - line 64, column 25: "+[n.constructor.name])}}},n.queuingHandler=W}(PS["Halogen.Aff.Driver.Eval"]=PS["Halogen.Aff.Driver.Eval"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=PS["Control.Coroutine"],a=PS["Control.Monad.Fork.Class"],u=PS["Control.Monad.Rec.Class"],o=PS["Control.Parallel"],i=(PS["Control.Semigroupoid"],PS["Data.Either"]),l=PS["Data.Foldable"],c=PS["Data.Function"],f=PS["Data.Functor"],s=PS["Data.List"],d=PS["Data.List.Types"],S=(PS["Data.Map"],PS["Data.Map.Internal"]),P=PS["Data.Maybe"],v=PS["Data.Ord"],p=(PS["Data.Semiring"],PS["Data.Traversable"],PS["Data.Tuple"],PS["Data.Unit"]),m=PS.Effect,D=PS["Effect.Aff"],b=PS["Effect.Aff.AVar"],g=PS["Effect.Class"],h=PS["Effect.Console"],w=PS["Effect.Exception"],y=PS["Effect.Ref"],E=(PS.Halogen,PS["Halogen.Aff.Driver.Eval"]),M=PS["Halogen.Aff.Driver.State"],C=PS["Halogen.Component"],T=PS["Halogen.Data.OrdBox"],A=PS["Halogen.Query.InputF"],F=(PS.Prelude,y.new({initializers:d.Nil.value,finalizers:d.Nil.value})),H=D.runAff_(i.either(w.throwException)(c.const(e.pure(m.applicativeEffect)(p.unit))));n.runUI=function(n){return function(L){return function(_){var I=function(n){return function(){var e=y.read(n)();return y.write(P.Nothing.value)(n)(),l.for_(m.applicativeEffect)(l.foldableMaybe)(e)(function(n){return H(l.traverse_(D.applicativeAff)(d.foldableList)(a.fork(a.monadForkAff))(s.reverse(n)))})()}},O=function(n){return function(e){return function(r){return function(a){return C.unComponent(function(u){return function(){var i=F(),c=M.initDriverState(u)(r)(e)(a)(i)(),S=y.read(n)();return y.write({initializers:d.Nil.value,finalizers:S.finalizers})(n)(),t.bindFlipped(m.bindEffect)(M.unDriverStateX(function(e){return N(n)(e.selfRef)}))(y.read(c))(),t.bindFlipped(m.bindEffect)(function(n){return function(e){return M.unDriverStateX(function(r){var a=f.map(P.functorMaybe)(function(n){return x(r.selfRef)(A.Query.create(n))})(r.component.initializer);return y.modify_(function(n){return{initializers:new d.Cons(t.discard(t.discardUnit)(D.bindAff)(o.parSequence_(D.parallelAff)(d.foldableList)(s.reverse(n.initializers)))(function(){return t.discard(t.discardUnit)(D.bindAff)(l.sequence_(D.applicativeAff)(l.foldableMaybe)(a))(function(){return g.liftEffect(D.monadEffectAff)(function(){return I(r.pendingQueries)(),I(r.pendingOuts)()})})}),e),finalizers:n.finalizers}})(n)})}}(n)(S.initializers))(y.read(c))(),c}})}}}},N=function(r){return function(o){return function(){var i=y.read(o)(),v=f.map(m.functorEffect)(P.isNothing)(y.read(i.pendingHandlers))();e.when(m.applicativeEffect)(v)(y.write(new P.Just(d.Nil.value))(i.pendingHandlers))(),y.write(S.empty)(i.childrenOut)(),y.write(i.children)(i.childrenIn)();var b=E.queuingHandler(function(n){return f.void(D.functorAff)(x(i.selfRef)(n))})(i.pendingHandlers),g=E.queuingHandler(function(n){return b(A.Query.create(n))})(i.pendingQueries),F=n.render(function(n){return H(b(n))})(function(r){return function(a){return function(u){return function(o){return function(i){return C.unComponentSlot(function(c){return function(s){return function(d){return function(v){return function(b){return function(g){var E=u(c);return function(){var u=y.read(o)(),c=function(){var n=S.pop(T.ordOrdBox)(E)(u);if(n instanceof P.Just)return y.write(n.value0.value1)(o)(),l.for_(m.applicativeEffect)(l.foldableMaybe)(v(d))(function(e){return function(){var t=y.read(n.value0.value0)();return M.unDriverStateX(function(n){return l.for_(m.applicativeEffect)(l.foldableMaybe)(n.prjQuery(e))(function(e){return H(x(n.selfRef)(A.Query.create(e)))})})(t)()}})(),n.value0.value0;if(n instanceof P.Nothing)return O(r)(function(n){return P.maybe(e.pure(D.applicativeAff)(p.unit))(a)(b(n))})(d)(g)(s)();throw new Error("Failed pattern match at Halogen.Aff.Driver line 258, column 14 - line 266, column 92: "+[n.constructor.name])}(),C=f.map(m.functorEffect)(S.member(T.ordOrdBox)(E))(y.read(i))();return e.when(m.applicativeEffect)(C)(h.warn("Halogen: Duplicate slot address was detected during rendering, unexpected results may occur"))(),y.modify_(S.insert(T.ordOrdBox)(E)(c))(i)(),t.bind(m.bindEffect)(y.read(c))(M.renderStateX(m.functorEffect)(function(t){if(t instanceof P.Nothing)return w.throw("Halogen internal error: child was not initialized in renderChild");if(t instanceof P.Just)return e.pure(m.applicativeEffect)(n.renderChild(t.value0));throw new Error("Failed pattern match at Halogen.Aff.Driver line 271, column 37 - line 273, column 50: "+[t.constructor.name])}))()}}}}}}})}}}}}(r)(g)(i.component.mkOrdBox)(i.childrenIn)(i.childrenOut))(i.component.render(i.state))(i.rendering)(),L=y.read(i.childrenOut)();return t.bind(m.bindEffect)(y.read(i.childrenIn))(l.traverse_(m.applicativeEffect)(S.foldableMap)(function(e){return function(){var t=y.read(e)();return M.renderStateX_(m.applicativeEffect)(n.removeChild)(t)(),W(r)(t)()}}))(),y.modify_(function(n){return{rendering:new P.Just(F),children:L,component:n.component,state:n.state,refs:n.refs,childrenIn:n.childrenIn,childrenOut:n.childrenOut,selfRef:n.selfRef,handler:n.handler,pendingQueries:n.pendingQueries,pendingOuts:n.pendingOuts,pendingHandlers:n.pendingHandlers,prjQuery:n.prjQuery,fresh:n.fresh,subscriptions:n.subscriptions,lifecycleHandlers:n.lifecycleHandlers}})(i.selfRef)(),e.when(m.applicativeEffect)(v)(c.flip(u.tailRecM(u.monadRecEffect))(p.unit)(function(n){return function(){var n=y.read(i.pendingHandlers)();y.write(new P.Just(d.Nil.value))(i.pendingHandlers)(),l.traverse_(m.applicativeEffect)(l.foldableMaybe)(function(n){return H(l.traverse_(D.applicativeAff)(d.foldableList)(a.fork(a.monadForkAff))(s.reverse(n)))})(n)();var e=y.read(i.pendingHandlers)();return P.maybe(!1)(s.null)(e)?f.voidLeft(m.functorEffect)(y.write(P.Nothing.value)(i.pendingHandlers))(new u.Done(p.unit))():new u.Loop(p.unit)}}))()}}},W=function(n){return M.unDriverStateX(function(e){return function(){var r;return(r=e,function(){return t.bindFlipped(m.bindEffect)(l.traverse_(m.applicativeEffect)(l.foldableMaybe)(function(n){return H(l.traverse_(D.applicativeAff)(S.foldableMap)(a.fork(a.monadForkAff))(n))}))(y.read(r.subscriptions))(),y.write(P.Nothing.value)(r.subscriptions)()})(),l.for_(m.applicativeEffect)(l.foldableMaybe)(f.map(P.functorMaybe)(function(n){return x(e.selfRef)(A.Query.create(n))})(e.component.finalizer))(function(e){return y.modify_(function(n){return{initializers:n.initializers,finalizers:new d.Cons(e,n.finalizers)}})(n)})(),l.for_(m.applicativeEffect)(S.foldableMap)(e.children)(t.composeKleisliFlipped(m.bindEffect)(W(n))(y.read))()}})},x=function(n){return E.eval(N)(n)};return t.bind(D.bindAff)(g.liftEffect(D.monadEffectAff)(F))(function(n){return t.bind(D.bindAff)(g.liftEffect(D.monadEffectAff)(y.new(0)))(function(u){return E.handleLifecycle(n)(function(){var o,c=y.new(S.empty)();return t.bind(m.bindEffect)(t.bind(m.bindEffect)(O(n)((o=c,function(n){return t.bind(D.bindAff)(g.liftEffect(D.monadEffectAff)(y.read(o)))(function(e){return l.traverse_(D.applicativeAff)(S.foldableMap)(a.fork(a.monadForkAff))(f.map(S.functorMap)(b.put(n))(e))})}))(_)(P.Just.create)(L))(y.read))(M.unDriverStateX(function(n){return e.pure(m.applicativeEffect)({query:(l=n.selfRef,function(n){return function(e){var t=n(e);if(t instanceof P.Just)return x(l)(new A.Query(t.value0));if(t instanceof P.Nothing)return g.liftEffect(D.monadEffectAff)(w.throwException(w.error("Halogen internal error: query projection failed in runUI'")));throw new Error("Failed pattern match at Halogen.Aff.Driver line 136, column 5 - line 138, column 113: "+[t.constructor.name])}})(n.prjQuery),subscribe:(o=u,function(n){return function(e){return t.bind(D.bindAff)(b.empty)(function(u){return t.bind(D.bindAff)(g.liftEffect(D.monadEffectAff)(function(){var e=y.read(o)();return y.modify_(function(n){return n+1|0})(o)(),y.modify_(S.insert(v.ordInt)(e)(u))(n)(),e}))(function(o){var l=r.producer(D.monadAff)(f.map(D.functorAff)(i.Left.create)(b.take(u)));return f.void(D.functorAff)(a.fork(a.monadForkAff)(t.discard(t.discardUnit)(D.bindAff)(r.runProcess(D.monadRecAff)(r.connect(D.monadRecAff)(D.parallelAff)(l)(e)))(function(){return t.discard(t.discardUnit)(D.bindAff)(g.liftEffect(D.monadEffectAff)(y.modify_(S.delete(v.ordInt)(o))(n)))(function(){return b.kill(w.error("ended"))(u)})})))})})}})(c)});var o,l}))()})})})}}}}(PS["Halogen.Aff.Driver"]=PS["Halogen.Aff.Driver"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=(PS["Control.Monad.Error.Class"],PS["Control.Semigroupoid"],PS["Data.Either"]),a=PS["Data.Function"],u=(PS["Data.Functor"],PS["Data.Maybe"]),o=PS["Data.Unit"],i=PS.Effect,l=PS["Effect.Aff"],c=PS["Effect.Class"],f=PS["Effect.Exception"],s=(PS.Prelude,PS["Web.DOM.ParentNode"]),d=(PS["Web.Event.EventTarget"],PS["Web.HTML"]),S=(PS["Web.HTML.Event.EventTypes"],PS["Web.HTML.HTMLDocument"]),P=(PS["Web.HTML.HTMLDocument.ReadyState"],PS["Web.HTML.HTMLElement"]),v=PS["Web.HTML.Window"],p=l.runAff_(r.either(f.throwException)(a.const(e.pure(i.applicativeEffect)(o.unit))));n.selectElement=function(n){return t.bind(l.bindAff)(c.liftEffect(l.monadEffectAff)(t.bindFlipped(i.bindEffect)(t.composeKleisliFlipped(i.bindEffect)(function(e){return s.querySelector(n)(S.toParentNode(e))})(v.document))(d.window)))(function(n){return e.pure(l.applicativeAff)(t.bindFlipped(u.bindMaybe)(P.fromElement)(n))})},n.runHalogenAff=p}(PS["Halogen.Aff.Util"]=PS["Halogen.Aff.Util"]||{}),function(n){"use strict";PS["Control.Applicative"],PS["Control.Bind"];var e,t=PS["Data.Array"],r=(PS["Data.Eq"],PS["Data.Function.Uncurried"],PS["Data.Maybe"]),a=PS["Data.Nullable"],u=PS["Data.Tuple"],o=PS.Effect,i=(PS["Effect.Uncurried"],PS["Halogen.VDom.Machine"]),l=PS["Halogen.VDom.Types"],c=PS["Halogen.VDom.Util"],f=(PS.Prelude,PS["Web.DOM.Document"],PS["Web.DOM.Element"]),s=(PS["Web.DOM.Node"],function(n,e){return n.value1===e.value1&&(n.value0 instanceof r.Just&&e.value0 instanceof r.Just&&n.value0.value0===e.value0.value0||n.value0 instanceof r.Nothing&&e.value0 instanceof r.Nothing)}),d=(e=function(n,t){return function(r){if(r instanceof l.Grafted)return e(n,t)(l.runGraft(r.value0));if(r instanceof l.Widget){var a=t.value1(r.value0);return new i.Step(a.value0,e(n,a),a.value2)}return t.value2(),n(r)}},function(n,t,r){var a=n.buildWidget(n)(r);return new i.Step(a.value0,e(t,a),a.value2)}),S=function(){var n=function(e,t,r,a){return function(u){if(u instanceof l.Grafted)return n(e,t,r,a)(l.runGraft(u.value0));if(u instanceof l.Text){var o=new i.Step(r,n(e,t,r,u.value0),t);return a===u.value0?o:(c.setTextContent(u.value0,r),o)}return t(),e(u)}};return function(e,t,r){var a,u=c.createTextNode(r,e.document),o=(a=u,function(){var n=c.parentNode(a);return c.removeChild(a,n)});return new i.Step(u,n(t,o,u,r),o)}}(),P=function(){var n=function(n,e,t){return function(){var r=c.parentNode(n);return c.removeChild(n,r),c.forInE(t,function(n,e){return e.value2()}),i.halt(e)()}},e=function(r,a,o,f,d,S,P){return function(v){if(v instanceof l.Grafted)return e(r,a,o,f,d,S,P)(l.runGraft(v.value0));if(v instanceof l.Keyed&&s(d,v.value0)){var p=t.length(v.value1);if(0===P&&0===p){var m=i.step(f)(v.value0.value2),D=n(o,m,S);return new i.Step(o,e(r,D,o,m,v.value0,S,0),D)}m=c.diffWithKeyAndIxE(S,v.value1,u.fst,function(n,e,t,r){var a=t.value1(r.value1);return c.insertChildIx(e,a.value0,o),a},function(n,e){return e.value2()},function(n,e,t){var a=r(t.value1);return c.insertChildIx(e,a.value0,o),a});var b=i.step(f)(v.value0.value2);D=n(o,b,m);return new i.Step(o,e(r,D,o,b,v.value0,m,p),D)}return a(),r(v)}};return function(r,o,l,s){var d=c.createElement(a.toNullable(l.value0),l.value1,r.document),S=f.toNode(d),P=c.strMapWithIxE(s,u.fst,function(n,e,t){var r=o(t.value1);return c.insertChildIx(e,r.value0,S),r}),v=r.buildAttributes(d)(l.value2),p=n(S,v,P);return new i.Step(S,e(o,p,S,v,l,P,t.length(s)),p)}}(),v=function(){var n=function(n,e,t){return function(){var r=c.parentNode(n);return c.removeChild(n,r),o.foreachE(t)(i.halt)(),i.halt(e)()}},e=function(r,a,u,o,f,d){return function(S){if(S instanceof l.Grafted)return e(r,a,u,o,f,d)(l.runGraft(S.value0));if(S instanceof l.Elem&&s(f,S.value0)){var P=t.length(S.value1);if(0===t.length(d)&&0===P){var v=i.step(o)(S.value0.value2),p=n(u,v,d);return new i.Step(u,e(r,p,u,v,S.value0,d),p)}v=c.diffWithIxE(d,S.value1,function(n,e,t){var r=e.value1(t);return c.insertChildIx(n,r.value0,u),r},function(n,e){return e.value2()},function(n,e){var t=r(e);return c.insertChildIx(n,t.value0,u),t});var m=i.step(o)(S.value0.value2);p=n(u,m,v);return new i.Step(u,e(r,p,u,m,S.value0,v),p)}return a(),r(S)}};return function(t,r,u,o){var l=c.createElement(a.toNullable(u.value0),u.value1,t.document),s=f.toNode(l),d=c.forE(o,function(n,e){var t=r(e);return c.insertChildIx(n,t.value0,s),t}),S=t.buildAttributes(l)(u.value2),P=n(s,S,d);return new i.Step(s,e(r,P,s,S,u,d),P)}}();n.buildVDom=function(n){var e=function(t){if(t instanceof l.Text)return S(n,e,t.value0);if(t instanceof l.Elem)return v(n,e,t.value0,t.value1);if(t instanceof l.Keyed)return P(n,e,t.value0,t.value1);if(t instanceof l.Widget)return d(n,e,t.value0);if(t instanceof l.Grafted)return e(l.runGraft(t.value0));throw new Error("Failed pattern match at Halogen.VDom.DOM line 58, column 27 - line 63, column 52: "+[t.constructor.name])};return e},n.buildText=S,n.buildElem=v,n.buildKeyed=P,n.buildWidget=d}(PS["Halogen.VDom.DOM"]=PS["Halogen.VDom.DOM"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Control.Bind"],r=PS["Control.Category"],a=PS["Data.Foldable"],u=(PS["Data.Function"],PS["Data.Functor"]),o=PS["Data.HeytingAlgebra"],i=PS["Data.Maybe"],l=PS["Data.Unit"],c=PS.Effect,f=PS["Effect.Aff"],s=PS["Effect.Class"],d=PS["Effect.Ref"],S=(PS["Effect.Uncurried"],PS["Halogen.Aff.Driver"]),P=PS["Halogen.Aff.Driver.State"],v=(PS["Halogen.Component"],PS["Halogen.HTML.Core"],PS["Halogen.Query.InputF"],PS["Halogen.VDom"],PS["Halogen.VDom.DOM"]),p=PS["Halogen.VDom.DOM.Prop"],m=PS["Halogen.VDom.Machine"],D=(PS.Prelude,PS["Unsafe.Reference"]),b=(PS["Web.DOM.Document"],PS["Web.DOM.Element"],PS["Web.DOM.Node"]),g=PS["Web.HTML"],h=PS["Web.HTML.HTMLDocument"],w=PS["Web.HTML.HTMLElement"],y=PS["Web.HTML.Window"],E=function(n){return function(){var e=b.parentNode(n.node)();return a.traverse_(c.applicativeEffect)(a.foldableMaybe)(function(e){return b.removeChild(n.node)(e)})(e)()}},M=function(n){return function(t){return{render:function(r){return function(a){return function(f){return function(s){if(s instanceof i.Nothing)return function(){var o=d.new(a)(),i=function(n){return function(t){return function(r){var a=P.unRenderStateX(function(n){return n.node}),u=e.pure(c.applicativeEffect)(l.unit),o=function(n){var e=d.read(t)()(n)(),r=a(e);return new m.Step(r,o,u)};return{buildWidget:function(n){return function(n){var e=d.read(t)()(n)(),r=a(e);return new m.Step(r,o,u)}},buildAttributes:p.buildProp(n),document:r}}}}(r)(o)(n),s=v.buildVDom(i)(f),S=m.extract(s);return u.void(c.functorEffect)(b.appendChild(S)(w.toNode(t)))(),{machine:s,node:S,renderChildRef:o}};if(s instanceof i.Just)return function(){d.write(a)(s.value0.renderChildRef)();var n=b.parentNode(s.value0.node)(),t=b.nextSibling(s.value0.node)(),r=m.step(s.value0.machine)(f),S=m.extract(r);return e.when(c.applicativeEffect)(o.not(o.heytingAlgebraFunction(o.heytingAlgebraFunction(o.heytingAlgebraBoolean)))(D.unsafeRefEq)(s.value0.node)(S))(function(n){return function(t){return function(r){return t instanceof i.Just&&r instanceof i.Just?u.void(c.functorEffect)(b.insertBefore(n)(t.value0)(r.value0)):t instanceof i.Nothing&&r instanceof i.Just?u.void(c.functorEffect)(b.appendChild(n)(r.value0)):e.pure(c.applicativeEffect)(l.unit)}}}(S)(t)(n))(),{machine:r,node:S,renderChildRef:s.value0.renderChildRef}};throw new Error("Failed pattern match at Halogen.VDom.Driver line 118, column 5 - line 134, column 80: "+[s.constructor.name])}}}},renderChild:r.identity(r.categoryFn),removeChild:E}}};n.runUI=function(n){return function(e){return function(r){return t.bind(f.bindAff)(s.liftEffect(f.monadEffectAff)(u.map(c.functorEffect)(h.toDocument)(t.bindFlipped(c.bindEffect)(y.document)(g.window))))(function(t){return S.runUI(M(t)(r))(n)(e)})}}}}(PS["Halogen.VDom.Driver"]=PS["Halogen.VDom.Driver"]||{}),function(n){"use strict";var e=PS["Control.Applicative"],t=PS["Data.Unit"],r=PS.Effect,a=(PS.Prelude,e.pure(r.applicativeEffect)(t.unit));n.main=a}(PS.Main=PS.Main||{}),function(n){"use strict";var e=PS["Component.Add"],t=PS["Component.BList"],r=PS["Component.NList"],a=PS["Control.Bind"],u=PS["Data.Foldable"],o=(PS["Data.Function"],PS["Data.Functor"]),i=PS["Data.Unit"],l=(PS.Effect,PS["Effect.Aff"]),c=PS["Effect.Class"],f=(PS["Halogen.Aff"],PS["Halogen.Aff.Util"]),s=PS["Halogen.VDom.Driver"],d=(PS.Model,PS.Prelude,PS["Web.DOM.Element"]),S=(PS["Web.DOM.ParentNode"],PS["Web.HTML.HTMLElement"]),P=a.bind(l.bindAff)(f.selectElement(".user_footer"))(u.traverse_(l.applicativeAff)(u.foldableMaybe)(function(n){return c.liftEffect(l.monadEffectAff)(d.removeAttribute("hidden")(S.toElement(n)))}));n.renderBookmarks=function(n){return function(e){return f.runHalogenAff(a.bind(l.bindAff)(f.selectElement(n))(u.traverse_(l.applicativeAff)(u.foldableMaybe)(function(n){return a.discard(a.discardUnit)(l.bindAff)(o.void(l.functorAff)(s.runUI(t.blist(e))(i.unit)(n)))(function(){return P})})))}},n.renderAddForm=function(n){return function(t){return f.runHalogenAff(a.bind(l.bindAff)(f.selectElement(n))(u.traverse_(l.applicativeAff)(u.foldableMaybe)(function(n){return s.runUI(e.addbmark(t))(i.unit)(n)})))}},n.renderNotes=function(n){return function(e){return f.runHalogenAff(a.bind(l.bindAff)(f.selectElement(n))(u.traverse_(l.applicativeAff)(u.foldableMaybe)(function(n){return a.discard(a.discardUnit)(l.bindAff)(o.void(l.functorAff)(s.runUI(r.nlist(e))(i.unit)(n)))(function(){return P})})))}},n.renderNote=function(n){return function(e){return f.runHalogenAff(a.bind(l.bindAff)(f.selectElement(n))(u.traverse_(l.applicativeAff)(u.foldableMaybe)(function(n){return o.void(l.functorAff)(s.runUI(r.nnote(e))(i.unit)(n))})))}},n.showFooter=P}(PS.User=PS.User||{});
diff --git a/static/js/app.min.js.gz b/static/js/app.min.js.gz
Binary files a/static/js/app.min.js.gz and b/static/js/app.min.js.gz differ
diff --git a/templates/default-layout-wrapper.hamlet b/templates/default-layout-wrapper.hamlet
--- a/templates/default-layout-wrapper.hamlet
+++ b/templates/default-layout-wrapper.hamlet
@@ -25,13 +25,13 @@
     <script>
       var app =
         { csrfHeaderName: "#{ TE.decodeUtf8 $ CI.foldedCase defaultCsrfHeaderName }"
-        , csrfParamName: "#{defaultCsrfParamName}"
-        , csrfCookieName: "#{TE.decodeUtf8 defaultCsrfCookieName}"
-        , csrfToken: Cookies.get("#{TE.decodeUtf8 defaultCsrfCookieName}")
-        , homeR: "@{HomeR}"
-        , authRlogoutR: "@{AuthR LogoutR}"
+        , csrfParamName: "#{ defaultCsrfParamName }"
+        , csrfCookieName: "#{ TE.decodeUtf8 defaultCsrfCookieName }"
+        , csrfToken: Cookies.get("#{ TE.decodeUtf8 defaultCsrfCookieName }")
+        , homeR: "@{ HomeR }"
+        , authRlogoutR: "@{ AuthR LogoutR }"
         , userFilterRFilterSingle: ""
-        , dat: {bmarks : [], bmark: {}, isowner: false}
+        , dat: {bmarks : [], bmark: {}, isowner: false, notes: []}
         };
-  <body>
+  <body .f6.dark-gray.helvetica>
     ^{pageBody pc}
diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet
--- a/templates/default-layout.hamlet
+++ b/templates/default-layout.hamlet
@@ -1,29 +1,31 @@
 <div #content>
-  <div #banner>
-    <div #logo>
-        <span .logo>
-        <a #espial_name>espial
-        $maybe userName <- musername
-          <span>(<a class="banner_username" data-username="#{userName}" href="@{UserR (UserNameP userName)}">#{userName}<a>)</span>
-        <!-- <div #timer>#{pageLoadTime} s -->
-    <div #top_menu>
-
-      $maybe userName <- musername
-        $maybe currentroute <- mcurrentRoute
-          <a .bookmarklet href="javascript:q=location.href;if(document.getSelection){d=document.getSelection();}else{d='';};p=document.title;void(open('@{AddViewR}?_hasdata&url='+encodeURIComponent(q)+'&description='+encodeURIComponent(d)+'&title='+encodeURIComponent(p),'Espial','toolbar=no,width=700,height=350'));">add url bookmarklet
-          &nbsp;&nbsp;&nbsp;&nbsp;
-
-          <a href="@?{(AddViewR, [("next",urlrender currentroute)])}">add url
+  <header #banner .pv2.ph3.mh1>
+    <div .mw8.center.pb2.bb.br-0.bl-0.bt-0.b--dotted.b--light-silver>
+      <div #logo .fl.light-silver>
+          <a #espial_name .link.f4>espial
+          $maybe userName <- musername
+            <span>
+               (<a class="link" data-username="#{userName}" href="@{UserR (UserNameP userName)}">#{userName}</a>)
+               
+          <!-- <div #timer>#{pageLoadTime} s -->
+      <div .top_menu.fr>
 
-          &nbsp;&nbsp;&nbsp;&nbsp;
-          <a onclick="PS['App'].logoutE(event)()" href="@{AuthR LogoutR}">
-            log out
-      $nothing
-        <a href="@{AuthR LoginR}">
-          log in
-    <div style="clear:both">
+        $maybe userName <- musername
+          $maybe currentroute <- mcurrentRoute
+            <a .link href="@?{(AddViewR, [("next",urlrender currentroute)])}">add url&nbsp;&nbsp;
+            <a .link href="@{NotesR (UserNameP userName)}">notes&nbsp;&nbsp;
+            <a .link href="@{AddNoteViewR (UserNameP userName)}">add note&nbsp;&nbsp;
+            <a .link href="@{UserSettingsR (UserNameP userName)}">settings&nbsp;&nbsp;
+            <a .link onclick="PS['App'].logoutE(event)()" href="@{AuthR LogoutR}">
+              log out
+        $nothing
+          <a .link href="@{AuthR LoginR}">
+            log in
+      <div .cf>
 
   $maybe msg <- mmsg
-    <div .alert.alert-info #message>#{preEscapedToMarkup msg}
+    <div .pv2.ph3.mh1>
+      <div .pa2.mw8.center.flex.items-center.justify-center.navy.bg-washed-yellow.ba.b--navy>
+        #{preEscapedToMarkup msg}
 
   ^{widget}
diff --git a/templates/login.hamlet b/templates/login.hamlet
--- a/templates/login.hamlet
+++ b/templates/login.hamlet
@@ -1,20 +1,20 @@
-<div #login style="text-align:left; margin-top:30px;">
-  <form method="post" action="@{toParent dbLoginR}">
-    $maybe token <- reqToken req
-      <input type="hidden" name="#{defaultCsrfParamName}" value="#{token}">
-    <table width="380" border="0">
-      <tbody>
-        <tr>
-          <td width="99">
-            <span style="color:#999">username :</span>
-          <td>
-            <input name="username" type="text" value="" size="20">
-        <tr>
-          <td>
-            <span style="color:#999">password :</span>
-          <td>
-            <input name="password" type="password" size="20">
-        <tr>
-          <td>
-          <td>
-            <input type="submit" value="log in"> 
+<main #main_column .pv2.ph3.mh1>
+  <div .w-100.mw8.center>
+
+    <div .measure.center.pa3.bg-white>
+
+      <form method="post" action="@{toParent dbLoginR}">
+        $maybe token <- reqToken req
+          <input type="hidden" name="#{defaultCsrfParamName}" value="#{token}">
+
+        <div>
+          <label .db.fw6.lh-copy.f6 for="username">Username
+          <input #username .w-100.pa1.mb2.ba.b--black-20 autofocus name="username" type="text" value="">
+
+        <div>
+          <label .db.fw6.lh-copy.f6 for="password">Password
+          <input #password .w-100.pa1.mb2.ba.b--black-20 name="password" type="password">
+        
+        <input class="ph3 pv2 input-reset ba b--navy bg-transparent pointer f6 dib mt3 dim" type="submit" value="Log In">
+
+<script> document.body.classList.add("bg-near-white");
diff --git a/templates/note.hamlet b/templates/note.hamlet
new file mode 100644
--- /dev/null
+++ b/templates/note.hamlet
@@ -0,0 +1,6 @@
+<main #main_column .pv2.ph3.mh1>
+  <div .w-100.mw8.center>
+
+    <div ##{renderEl} .mt3>
+
+    <div .cf>
diff --git a/templates/notes.hamlet b/templates/notes.hamlet
new file mode 100644
--- /dev/null
+++ b/templates/notes.hamlet
@@ -0,0 +1,25 @@
+<main #main_column .pv2.ph3.mh1>
+  <div .w-100.mw8.center>
+
+    <span .db .mb3>You have #{bcount} notes:
+
+    ^{pager}
+
+    <div .cf>
+
+    <div ##{renderEl} .mt3>
+
+    <div .cf>
+
+    <div .user_footer hidden>
+      ^{pager}
+
+      $if (fromIntegral bcount >= limit) || (page > 1)
+        $maybe route <- mroute
+          <div .dib.ml5>
+            <span .silver.mr1>per page:
+            <a .link.light-silver :limit == 20:.nav-active href="@?{(route, [("count", "20")])}"‧>20</a> ‧ 
+            <a .link.light-silver :limit == 40:.nav-active href="@?{(route, [("count", "40")])}"‧>40</a> ‧ 
+            <a .link.light-silver :limit == 80:.nav-active href="@?{(route, [("count", "80")])}"‧>80</a> ‧ 
+            <a .link.light-silver :limit == 120:.nav-active href="@?{(route, [("count", "120")])}"‧>120</a> ‧ 
+            <a .link.light-silver :limit == 160:.nav-active href="@?{(route, [("count", "160")])}"‧>160</a>
diff --git a/templates/pager.hamlet b/templates/pager.hamlet
--- a/templates/pager.hamlet
+++ b/templates/pager.hamlet
@@ -5,9 +5,9 @@
         <tr>
           $if fromIntegral bcount >= (limit * page)
             <td width="80">
-              <a .next_prev #top_earlier href="@?{(route, [("page", pack $ show $ page + 1)])}">
+              <a .link.gray #top_earlier href="@?{(route, [("page", pack $ show $ page + 1)])}">
                 « earlier
           $if page > 1
             <td width="80">
-              <a .next_prev #top_later href="@?{(route, [("page", pack $ show $ page - 1)])}">
+              <a .link.gray #top_later href="@?{(route, [("page", pack $ show $ page - 1)])}">
                 later »
diff --git a/templates/popup-layout.hamlet b/templates/popup-layout.hamlet
--- a/templates/popup-layout.hamlet
+++ b/templates/popup-layout.hamlet
@@ -1,13 +1,16 @@
-<div #popup_header>
-  <div #logout>
+<div #popup_header .pa2>
+  <div .fl>
+    <a .link href="@{HomeR}">Espial
     $maybe userName <- musername
-      <a onclick="PS['App'].logoutE(event)()" href="@{AuthR LogoutR}">
+      - (#{userName})
+  <div .fr>
+    $maybe userName <- musername
+      <a .link onclick="PS['App'].logoutE(event)()" href="@{AuthR LogoutR}">
         [log out]
     $nothing
-      <a href="@{AuthR LoginR}">
+      <a .link href="@{AuthR LoginR}">
         [log in]
-  <div #title>
-    <a href="@{HomeR}">Espial
-    $maybe userName <- musername
-      - (#{userName})
-^{widget}
+  <div .cf>
+
+<div .ph2.mw7>
+  ^{widget}
diff --git a/templates/user-settings.hamlet b/templates/user-settings.hamlet
new file mode 100644
--- /dev/null
+++ b/templates/user-settings.hamlet
@@ -0,0 +1,5 @@
+<main #main_column .pv2.ph3.mh1>
+  <div .w-100.mw8.center>
+    <div>
+      <a .bookmarklet.link.f7.ba.b--dotted.b--light-silver href="javascript:q=location.href;if(document.getSelection){d=document.getSelection();}else{d='';};p=document.title;void(open('@{AddViewR}?_hasdata&url='+encodeURIComponent(q)+'&description='+encodeURIComponent(d)+'&title='+encodeURIComponent(p),'Espial','toolbar=no,width=700,height=350'));">add url bookmarklet
+
diff --git a/templates/user.hamlet b/templates/user.hamlet
--- a/templates/user.hamlet
+++ b/templates/user.hamlet
@@ -1,49 +1,54 @@
-<div #main_column>
-  <div .user_navbar>
-    <div .small_username>
-      <b>
-        <a href="@{UserR unamep}">#{uname}
-        $forall tag <- pathtags
-          \  + #
-          <a href="@{UserTagsR unamep (TagsP [tag])}">#{tag}
-    <div .bookmark_count_box>
-      <span .bookmark_count>#{bcount}</span>
-    $if isowner
-      <div .filters >
-        <a href="@{UserR unamep}" class="filter ">all
-        ‧  
-        <a href="@{UserSharedR unamep SharedPrivate}" class="filter ">private
-        ‧  
-        <a href="@{UserSharedR unamep SharedPublic}" .filter >public
-        ‧  
-        <a href="@{UserFilterR unamep FilterUnread}" .filter >unread
-        ‧  
-        <a href="@{UserFilterR unamep FilterUntagged}" .filter >untagged
-        ‧  
-        <a href="@{UserFilterR unamep FilterStarred}" .filter >starred
-    <div style="clear:both">
-  
-  ^{pager}
+<main #main_column .pv2.ph3.mh1>
+  <div .w-100.mw8.center>
+    <div .mb2>
+      <div .fl.pr3.dib.mb2>
+        <b>
+          <a .link href="@{UserR unamep}">#{uname}
+          $forall tag <- pathtags
+            \  + #
+            <a .link href="@{UserTagsR unamep (TagsP [tag])}">#{tag}
+      <div .fl.pr3.dib.mb2>
+        <span .f7.silver>#{bcount}</span>
+      $if isowner
+        <div .filters.dib.mb2>
+          <a .link.silver.hover-blue :isAll:.nav-active 
+             href="@{UserR unamep}">all
+          ‧  
+          <a .link.silver.hover-blue :sharedp == SharedPrivate:.nav-active 
+             href="@{UserSharedR unamep SharedPrivate}">private
+          ‧  
+          <a .link.silver.hover-blue :sharedp == SharedPublic:.nav-active 
+             href="@{UserSharedR unamep SharedPublic}">public
+          ‧  
+          <a .link.silver.hover-blue :filterp == FilterUnread:.nav-active 
+             href="@{UserFilterR unamep FilterUnread}">unread
+          ‧  
+          <a .link.silver.hover-blue :filterp == FilterUntagged:.nav-active 
+             href="@{UserFilterR unamep FilterUntagged}">untagged
+          ‧  
+          <a .link.silver.hover-blue :filterp == FilterStarred:.nav-active 
+             href="@{UserFilterR unamep FilterStarred}">starred
 
-  <div style="clear:both">
-      
-  <div #bulk_links>
+      <div .cf>
+    
+    ^{pager}
 
-  <div ##{renderEl}>
+    <div .cf>
 
-  <div style="clear:both">
+    <div ##{renderEl} .mt3>
 
-  <div .user_footer hidden>
-    ^{pager}
+    <div .cf>
 
-    $if (fromIntegral bcount >= limit) || (page > 1)
-      $maybe route <- mroute
-        <div #per_page_picker>
-          per page: &nbsp;&nbsp; 
-          <a :limit == 20:.per_page_selected href="@?{(route, [("count", "20")])}"‧>20</a> ‧ 
-          <a :limit == 40:.per_page_selected href="@?{(route, [("count", "40")])}"‧>40</a> ‧ 
-          <a :limit == 80:.per_page_selected href="@?{(route, [("count", "80")])}"‧>80</a> ‧ 
-          <a :limit == 120:.per_page_selected href="@?{(route, [("count", "120")])}"‧>120</a> ‧ 
-          <a :limit == 160:.per_page_selected href="@?{(route, [("count", "160")])}"‧>160</a>
+    <div .user_footer hidden>
+      ^{pager}
 
-<script>app.dat.bmarks = #{ preEscapedToMarkup $ toJsonText (toBookmarkFormList bmarks alltags) } || []; 
+      $if (fromIntegral bcount >= limit) || (page > 1)
+        $maybe route <- mroute
+          <div .dib.ml5>
+            <span .silver.mr1>per page:
+            <a .link.light-silver :limit == 20:.nav-active href="@?{(route, [("count", "20")])}"‧>20</a> ‧ 
+            <a .link.light-silver :limit == 40:.nav-active href="@?{(route, [("count", "40")])}"‧>40</a> ‧ 
+            <a .link.light-silver :limit == 80:.nav-active href="@?{(route, [("count", "80")])}"‧>80</a> ‧ 
+            <a .link.light-silver :limit == 120:.nav-active href="@?{(route, [("count", "120")])}"‧>120</a> ‧ 
+            <a .link.light-silver :limit == 160:.nav-active href="@?{(route, [("count", "160")])}"‧>160</a>
+
