qgCO      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNNoneGAn in-memory cache implementation. The current processes heap space is  simply used as the cache. IA file based cache implementation. Files are stored in subdirectories of   fsCacheBase. IA class that captures a simple key-value caching interface. The keys are  simply  'String'\'s and values are simply 'ByteString'\'s. HStore a value in the cache. The returned value should be the value that  was just stored. !Retrieve a value from the cache. GInvalidate a potentially existing value in the cache. Depending on the I implementation this may or may not free the space used by the key-value  pair.  Create a new FileSystemCache.  Create a new  InMemCache. OPQRS  OPQRSNone TType alias for U Creates a 200 (OK) V* with the given content-type and resposne  body W+Helper to make responses with content-type "text/html" Creates a 200 (OK) V with content-type "text/html" and the  given resposne body Creates a 200 (OK) V with content-type " application/json" and the  given resposne body .Given a URL returns a 301 (Moved Permanently) V redirecting to  that URL. &Given a URL returns a 303 (See Other) V redirecting to that URL. Returns a 400 (Bad Request) V. 'Returns a 401 (Authorization Required) V requiring basic $ authentication in the given realm. Returns a 403 (Forbidden) V. Returns a 404 (Not Found) V. Returns a 500 (Server Error) V. T W    T W None/The class of types that can be converted to an X @The class of types into which query parameters may be converted KThe Controller Monad is both a Reader-like monad which, when run, computes  either a V9 or a result. Within the Controller Monad, the remainder . of the computation can be short-circuited by   ing with a V. Extract the request -Modify the request for the given computation 'Extract the application-specific state 7Modify the application state for the given computation Convert the controller into an X Run a  in the IO monad YDecline to handle the request pass >> c === c  c >> pass === c Provide a response respond r >>= f === respond r!$Lift an application to a controller "!Matches on the hostname from the Z. The route only succeeds on  exact matches. #Matches if the path is empty. !Note that this route checks that [ @ is empty, so it works as expected in nested contexts that have  popped components from the [ list. $)Matches on the HTTP request method (e.g. \, ], ^) %Matches if the request'0s Content-Type exactly matches the given string &3Routes the given URL pattern. Patterns can include 9 directories as well as variable patterns (prefixed with :) to be added  to _ (see ()  /posts/:id  /posts/:id/new  /:date/posts/ :category/new '=Matches if the first directory in the path matches the given  ByteString (5Always matches if there is at least one directory in [ but and  adds a parameter to _* where the key is the first parameter and 4 the value is the directory consumed from the path. )*Looks up the parameter name in the request's query string and returns the   Parseable value or `. .For example, for a request with query string: "?foo=bar&baz=7",   queryParam "foo"  would return Just bar, but   queryParam "zap"  would return Nothing. *Like );, but throws an exception if the parameter is not present. +1Selects all values with the given parameter name ,Like )1, but further processes the parameter value with read. 3 If that conversion fails, an exception is thrown. -Like ,;, but throws an exception if the parameter is not present. .Like +2, but further processes the parameter values with read. 7 If any read-conversion fails, an exception is thrown. /?Parses a HTML form from the request body. It returns a list of as as  well as a list of b)s, which are pairs mapping the name of a file form  field to a c7 pointing to a temporary file with the contents of the  upload.   myController = do  (prms, files) < - parseForm  let mPicFile = lookup " profile_pic" files  case mPicFile of  Just (picFile) -> do - sourceFile (fileContent picFile) $$  sinkFile ("images/" ++ (fileName picFile))  respond $ redirectTo "/"  Nothing -> redirectBack 00Reads and returns the body of the HTTP request. d1Returns the value of the given request header or ` if it is not  present in the HTTP request. 1CRedirect back to the referer. If the referer header is not present  redirect to root (i.e., /). 2CRedirect back to the referer. If the referer header is not present  fallback on the given V. 8efghiY !"#$%&'()Parameter name *+,Parameter name -Parameter name .Parameter name j/0d12Fallback response klmnopqrstuvwxyzn{|}~ !"#$%&'()*+,-./012  "#$%&'()*+,-./12!04efghiY !"#$%&'()*+,-.j/0d12klmnopqrstuvwxyzNoneHelper method 30Matches the GET method on the given URL pattern 41Matches the POST method on the given URL pattern 50Matches the PUT method on the given URL pattern 63Matches the DELETE method on the given URL pattern 74Matches the OPTIONS method on the given URL pattern 34567345673456734567None8An 8 authenticates a Z" and, if successful, forwards the  Z to the  Routeable. 9An 8? that uses HTTP basic authentication to authenticate a request  in a particular realm. : Wraps an 86 to take a simpler authentication function (that just 1 just takes a username and password, and returns  or  ). It also  adds an "X-User" header to the Z with the authenticated user's ; name (the first argument to the authentication function). ;A RouteK that uses HTTP basic authentication to authenticate a request for a realm H with the given username ans password. The request is rewritten with an 'X-User' header G containing the authenticated username before being passed to the next Route. 89:;Realm  Username  Password 89:;89;:89:;None<=>?@ABCDEFGHIJKLMN<=>?@ABCDEFGHIJKLMN=>?@ABCDE<FGHLIMNJK <=>?@ABCDEFGHIJKLMNNonex{|}~  !"#$%&'()*+,-./012      !"#$%&'()*+,-./0123456789:; <=>?@ABCCDEFGHIJKLMNOPQR< STUVWXYZ[\]Z[^_Z[`Z[abcdbcebcfZ[ghijklmklnklopqrstuvwxyz{|}~hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh simple-0.5.0Web.Simple.CacheWeb.Simple.ResponsesWeb.Simple.Controller Web.FrankWeb.Simple.AuthWeb.REST Web.Simple InMemCacheFileSystemCacheCacheputfetch invalidatefetchOrnewFileSystemCache newInMemCacheokokHtmlokJsonmovedTo redirectTo badRequestrequireBasicAuth forbiddennotFound serverErrorControllerException ToApplicationtoApp Parseable Controllerrequest localRequestcontrollerState localState controllerApp runControllerrunControllerIOrespondfromApp routeHostrouteTop routeMethod routeAccept routePattern routeNamerouteVar queryParam queryParam' queryParamsreadQueryParamreadQueryParam'readQueryParams parseFormbody redirectBackredirectBackOrgetpostdeleteoptions AuthRouterbasicAuthRouteauthRewriteReq basicAuthRESTControllerREST restIndexrestShow restCreate restUpdate restDeleterestEditrestNewrest routeRESTindexcreateeditnewshowupdate fsCacheBase$fCacheInMemCache$fCacheFileSystemCache ContentTypebytestring-0.10.0.2Data.ByteString.Internal ByteString wai-1.4.0.1 Network.WaiResponsemkHtmlResponse ApplicationpassRequestpathInfohttp-types-0.8.0Network.HTTP.Types.MethodGETPOSTPUT queryStringbase Data.MaybeNothingwai-extra-1.3.4.3Network.Wai.ParseParamFileFileInfo requestHeaderparse hoistEitherasklocalreadParamValueguardguardMguardReqerr$fExceptionControllerException$fShowControllerException$fToApplicationResponse$fToApplication(->)$fParseableText $fParseable[]$fParseableByteString$fMonadPeelIOController$fMonadIOController$fMonadController$fApplicativeController$fFunctorControllerGHC.BaseassertControl.ExceptionallowInterruptControl.Exception.Base mapExceptionPatternMatchFail RecSelError RecConError RecUpdError NoMethodErrorNonTerminationNestedAtomically GHC.Conc.SyncthrowToGHC.IO.ExceptionBlockedIndefinitelyOnMVarBlockedIndefinitelyOnSTMDeadlockAssertionFailed StackOverflow HeapOverflow ThreadKilled UserInterruptAsyncExceptionIndexOutOfBoundsUndefinedElementArrayExceptionGHC.IOuninterruptibleMaskuninterruptibleMask_maskmask_getMaskingStateUnmaskedMaskedInterruptibleMaskedUninterruptible MaskingState IOException GHC.Exceptionthrow SomeException fromException toException Exception ErrorCallOverflow UnderflowLossOfPrecision DivideByZeroDenormalRatioZeroDenominatorArithExceptionmonad-peel-0.1.1Control.Exception.Peel onExceptionfinallybracketOnErrorbracket_bracketunblockblockevaluatetryJusttry handleJusthandlecatches catchJustcatchioErrorthrowIOHandler frankMethodghc-prim GHC.TypesTrueFalseRESTControllerM defaultREST