3*      Safe-Infered8Exception to be thrown when a program did not terminate  within the expected time. CAn error to be thrown if something is to be converted into timeout  that does not fit into . A microsecond timeout, or . <Exception to be thrown when a program could not be started.  Treats a  as UTF-8 decoded .  Treats a  as UTF-8 decoded . )Runs a program with the given arguemtns. Returns  (stdout, stderr, stdin, process). See . 1Directly runs the process, does not use a shell.  Sets the 'BufferMode to  if successful. Throws  if the command doesn' t exist.  Due to  not throwing an exception  ( Ehttp://www.haskell.org/pipermail/haskell-cafe/2012-August/102824.html), : this is currently implemented by checking if the program $ returns early with error code 127. 2Tells whether the given process is still running. &Terminates all processes in the list.  Closes all handles in the list. .Turns the given number of microseconds into a . Throws an exception on  overflow. .Turns the given number of milliseconds into a . Throws an exception on  overflow. )Turns the given number of seconds into a . Throws an exception on  overflow. Turns floating seconds into a . Throws an exception on  overflow.  Example:  (seconds 0.2) are roughly  Micros 200000. /Suspends execution for the given timeout; uses  internally.  For ", threadDelay will not be called. .Blocking wait for output on the given handle. Returns  timeout is exceeded. .Blocking wait for output on the given handle.  Throws a  if the timeout is exceeded.  Based on . 9Sets the buffering of the all given handles to the given .  4Timeout after which reading output will be aborted. DMaximum number of bytes after which reading output will be aborted. The handle to read from. What was read from the handle. 4Timeout after which reading output will be aborted. DMaximum number of bytes after which reading output will be aborted. The handle to read from. What was read from the handle.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !" Safe-InferedRuns the given program with  & and asserts that it is still running  after the given timeout. Don'Bt choose the timeout too high as this function will block for it. $If the timeout is exceeded, a HUnit  exception is thrown, I showing the command line to be invoked, the exit code, and the standard  error output of the program.       !"#$%&'"()%&*"+,"-."(/012"345"(6"78"79"7:"3;"3<"3="3>"3?"3@"3A"3B"3C"3D"3E"3F"3G"3H"3I"3J"3K"3L"3M"3N"3O"3P"QR"QS"QT"QU"QV"WX"WY"WZ"W["W\"W]"W^"W_"W`"Wa"Wb"Wc"Wd"We"Wf"Wg"Wh"Wi"Wj"Wk"Wl"Wm"Wn"Wo"Wp"qr"qs"qt"qu"qv"qw"qx"qy"qz"q{"q|"q}"~"~"~"~"~"~"~"~"~"~"~"Q"W""""("("("("("("("("("("("("("""""""""""%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%%%%%%%%%%%%%%%%%proctest-0.1.2.0 Test.ProctestTest.Proctest.AssertionsTimeoutExceptionInvalidTimeoutErrorTimeout NoTimeout RunExceptionExitedTooEarlyCommandNotFoundasUtf8 asUtf8Strrun isRunningterminateProcesses closeHandles mkTimeoutUs mkTimeoutMs mkTimeoutSsecondssleepwaitOutputNoEx waitOutput setBuffering runAssertghc-prim GHC.TypesIntbytestring-0.9.2.1Data.ByteString.Internal ByteString text-0.11.2.3Data.Text.InternalTextbaseGHC.BaseStringprocess-1.1.0.1System.ProcessrunInteractiveProcessGHC.IO.Handle.Types LineBuffering createProcess GHC.Conc.IO threadDelay Data.MaybeNothing BufferMode$fExceptionTimeoutException$fExceptionInvalidTimeoutError$fExceptionRunException System.IOprintIOHandle System.Exit exitSuccess exitFailureexitWith(openBinaryTempFileWithDefaultPermissions"openTempFileWithDefaultPermissionsopenBinaryTempFile openTempFilefixIOwithBinaryFilewithFilehPrinthReadylocaleEncodingreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.Handle.FDopenBinaryFileopenFileisEOFstderrstdin GHC.IO.HandlehShowhSetNewlineModehSetBinaryModehIsTerminalDevicehGetEchohSetEcho hIsSeekable hGetBuffering hIsWritable hIsReadable hIsClosedhIsOpenhTellhSeekhSetPosnhGetPosn hGetEncoding hSetEncoding hSetBuffering hLookAheadhIsEOF hSetFileSize hFileSizehClose HandlePosnGHC.IO.Handle.TexthGetBufNonBlocking hGetBufSomehGetBufhPutBufNonBlockinghPutBuf hPutStrLnhPutStrhPutChar hGetContentshGetLinehGetChar hWaitForInputGHC.IO.EncodingmkTextEncodingchar8utf32beutf32leutf32utf16beutf16leutf16utf8_bomutf8latin1stdouthFlushGHC.IO.Exception ExitSuccess ExitFailureExitCodenoNewlineTranslationnativeNewlineModeuniversalNewlineMode nativeNewline NoBufferingBlockBufferingLFCRLFNewlineoutputNLinputNL NewlineModeGHC.IO.Encoding.Types TextEncoding GHC.IO.Device AbsoluteSeek RelativeSeek SeekFromEndSeekMode GHC.IO.IOModeReadMode WriteMode AppendMode ReadWriteModeIOModeGHC.IOFilePathgetProcessExitCodeinterruptProcessGroupOfterminateProcessshowCommandForUser rawSystemsystemreadProcessWithExitCode readProcesswaitForProcessrunInteractiveCommandshellproc runProcess runCommandSystem.Process.Internals ProcessHandle create_group close_fdsstd_errstd_outstd_inenvcwdcmdspec CreateProcess ShellCommand RawCommandCmdSpecInherit UseHandle CreatePipe StdStream HUnit-1.2.5.1Test.HUnit.Lang assertFailure