?PN      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd STUVZ[_`a SVUTTUVZ[_`aefgefgefg $hijklmnopqrstuvwxyz{|}~hijklmnopqrstuvwxyz{|}~h utsrqponmlkjiijklmnopqrstuvwxyzwxyz{||}~7The maximum number of lines stored in the history. If $, the history storage is unlimited. 5The input lines stored in the history (newest first) ;Reads the line input history from the given file. Returns  2 if the file does not exist or could not be read. ;Writes the line history to the given file. If there is an 2 error when writing the file, it will be ignored. 1Limit the number of lines stored in the history. JAdd a line to the history unless it matches the previously recorded line. JAdd a line to the history, and remove all previous entries which are the  same as it.      Q reversed 2Used for commands which take an integer argument. SUsed by vi mode. Considers the cursor to be located over some specific character.  The first list is reversed. KThe standard line state representation; considers the cursor to be located 6 between two characters. The first list is reversed. WThe characters in the line (with the cursor in the middle). NOT in a zippered format; E both lists are in the order left->right that appears on the screen. JThis class abstracts away the internal representations of the line state, U for use by the drawing actions. Line state is generally stored in a zipper format. The input prefix. The current line state. #The text to the left of the cursor  (including the prefix). /The text under and to the right of the cursor. A N is a fundamental unit of display for the UI. Several characters in sequence - can represent one grapheme; for example, an a followed by the diacritic '\768' should  be treated as one unit.  Create a  from a single base character. NOTE: Careful, don'>t use outside this module; and inside, make sure this is only * ever called on non-combining characters. 'Add a combining character to the given . 0Converts a string into a sequence of graphemes. :NOTE: Drops any initial, unattached combining characters. ,Accessor function for the various backends. GCompute the number of characters under and to the right of the cursor. IInsert one character, which may be combining, to the left of the cursor. <Insert a sequence of characters to the left of the cursor. JJ ( & &     BSplit off the maximal list which is no more than the given width. ! returns the width of that list.      "R allow the user to customize the terminal-style line-editing interface. They are read by default from ~/ .haskeline!; to override that behavior, use  and runInputTWithPrefs. Each line of a  .haskeline file defines one field of the 0 datatype; field names are case-insensitive and -unparseable lines are ignored. For example:  editMode: Vi  completionType: MenuCompletion  maxhistorysize: Just 40  !"#$%3When listing completion alternatives, only display ( one screen of possibilities at a time. &'If more than this number of completion 2 possibilities are found, then ask before listing  them. 'If (*, completions with multiple possibilities 6 will ring the bell and only display them if the user  presses TAB again. )*8The default preferences which may be overwritten in the   .haskeline file. +,-./0Read < from a given file. If there is an error reading the file,  the  will be returned.  !"#$%&')*0  !"#$%&')* !"#$%&')*0123456789:;<=>?@ABC'DEFGHIJ1234789:;<=>?@ABC12323478989:;;<=>?@ABC KLMNOPQRSTUVW KLMNOPQRSTUVW KLMNOMNOPQRSTUVW%XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|%XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|%XZYYZ[\]^_\]^_`abcabcdefghijklmnopqrstuvwxyz{|}~}~}~~Text to insert in line. Text to display when listing  alternatives. *Whether this word should be followed by a  space, end quote, etc. !0Performs completions from the given line state.  The first A argument is the contents of the line to the left of the cursor,  reversed.  The second B argument is the contents of the line to the right of the cursor.  The output ? is the unused portion of the left half of the line, reversed. "Disable completion altogether. # A custom !A which completes the word immediately to the left of the cursor. ZA word begins either at the start of the line or after an unescaped whitespace character. An optional escape character %Characters which count as whitespace 3Function to produce a list of possible completions $ A custom !A which completes the word immediately to the left of the cursor, C and takes into account the line contents to the left of the word. ZA word begins either at the start of the line or after an unescaped whitespace character. An optional escape character %Characters which count as whitespace OFunction to produce a list of possible completions. The first argument is the S line contents to the left of the word, reversed. The second argument is the word  to be completed. %4Create a finished completion out of the given word. &'(An optional escape character  Characters which set off quotes 3Function to produce a list of possible completions (Alternate completion to perform if the  cursor is not at a quoted word );List all of the files or folders beginning with this path.  !"#$%&'()! "%#$(')&  !"#$%&'()3*+.Operations needed for file-style interaction. e.g. for turning off echoing. 2Operations needed for terminal-style interaction. $Write unicode characters to stdout. )Are we using terminal-style interaction? Utility function since we'%re not using the new IO library yet. KUtility function for changing a property of a terminal for the duration of  a computation. AReturns one 8-bit word. Needs to be wrapped by hWithBinaryMode. >Utility function to correctly get a ByteString line of input. 3*+3*++,; The length of each nonempty row 2The last nonempty row, or zero if the entire line 9 is empty. Note that when the cursor wraps to the first - column of the next line, termRow > lastRow.  9Keep track of all of the output capabilities we can use. We''ll be frequently using the (automatic)   instance for  Actions -> TermOutput.     !"#$%&'()*+,-./01234567##89:;<=>#$ of visible chars to left of cursor ?@ABCDEFGHIJ89:;<=>?@ABCDEFGHIJ89:;:;<=>=>?@ABCDEFGHIJKLMNOPKLMNOPKLMNOP,5Haskeline has two ways of interacting with the user:  "Terminal-style"; interaction provides an rich user interface by connecting  to the user'(s terminal (which may be different than Q or R).  " File-style"L interaction treats the input as a simple stream of characters, for example > when reading from a file or pipe. Input functions (e.g.,  getInputLine) print the prompt to R. A ,J is a method for deciding at run-time which type of interaction to use. &For most applications (e.g., a REPL), 9! should have the correct effect. ST-@A monad transformer which carries all of the state and settings ) relevant to a line-reading application. UV.;Application-specific customizations to the user interface. /0Custom tab completion. 1 Where to read/write the history at the  start and end of each  line input session. 2If W!, each nonblank line returned by   getInputLine- will be automatically added to the history. 3Because 0 is the only field of /. depending on m,  the expression $defaultSettings {completionFunc = f} leads to a type error m from being too general. This function works around that issue, and may become unnecessary if another field  depending on m is added. X4&Run a line-reading application. Uses 9 to determine the  interaction behavior. 5URun a line-reading application. This function should suffice for most applications. This function is equivalent to 7 9. It $ uses terminal-style interaction if Q$ is connected to a terminal and has ' echoing enabled. Otherwise (e.g., if Q- is a pipe), it uses file-style interaction. 'If it uses terminal-style interaction,  will be read from the user's ~/ .haskeline file  (if present). $ If it uses file-style interaction, ( are not relevant and will not be read. 6Returns W? if the current session uses terminal-style interaction. (See ,.) YBCreate and use a RunTerm, ensuring that it will be closed even if 7 an async exception occurs during the creation or use. 7@Run a line-reading application according to the given behavior. 'If it uses terminal-style interaction,  will be read from the  user's ~/ .haskeline file (if present). $ If it uses file-style interaction, ( are not relevant and will not be read. 8 Run a line-reading application. Z7Helper function to feed the parameters into an InputT. 9Read input from Q. # Use terminal-style interaction if Q is connected to : a terminal and has echoing enabled. Otherwise (e.g., if Q is a pipe), use  file-style interaction. 6This behavior should suffice for most applications. :9Use file-style interaction, reading input from the given [. ;?Use file-style interaction, reading input from the given file. <:Use terminal-style interaction whenever possible, even if Q and/or R are not  terminals. If it cannot open the user';s terminal, use file-style interaction, reading input from Q. \Read  from ~/ .haskeline.* If there is an error reading the file,  the  will be returned. ,ST-UV./0123X456Y78Z9:;<\,SST-UVUV./012/0123X456Y78Z9:;<\=Encode a Unicode  into a ] suitable for the current  console. > Convert a ] from the console's encoding into a Unicode . ?@=>?@=>?@=>?@^_` Create a  for word completion. abcdefghijk!``>lmnopqrstuvwxyz{|}~>lmnopqrstuvwxyz{|}~>lmnomnopqrstuvtuvwxyz{|}~   A"A useful default. In particular:   defaultSettings = Settings { ( complete = completeFilename, " historyFile = Nothing, ! autoAddHistory = True  } B"Write a Unicode string to the user's standard output. CWrite a string to the user'*s standard output, followed by a newline. DReads one line of input. The final newline (if any) is removed. When using terminal-style interaction, this function provides a rich line-editing user interface. If 2 == W2 and the line input is nonblank (i.e., is not all 8spaces), it will be automatically added to the history. The input prompt EAReads one character of input. Ignores non-printable characters. RWhen using terminal-style interaction, the character will be read without waiting for a newline. OWhen using file-style interaction, a newline will be read if it is immediately %available after the input character. The input prompt FOReads one line of input, without displaying the input while it is being typed. kWhen using terminal-style interaction, the masking character (if given) will replace each typed character. QWhen using file-style interaction, this function turns off echoing while reading the line of input. A masking character; e.g., Just '*' Wrapper for input functions. GOIf Ctrl-C is pressed during the given computation, throw an exception of type  +*. H&Catch and handle an exception of type +*. $Handler to run if Ctrl-C is pressed Computation to run ; !"#$%&'()*+,-./0123456789:;<ABCDEFGH-56,79:;<DEFBC./012A348*+GHABCDEFGH IJ8Initialize a session of line-oriented user interaction. KNFinish and clean up the line-oriented user interaction session. Blocks on an  existing call to M. LQCancel and clean up the user interaction session. Does not block on an existing  call to M. MRun one action (for example, D,) as part of a session of user interaction. For example, multiple calls to M using the same I will share : the same input history. In constrast, multiple calls to 5 will use distinct 4 histories unless they share the same history file. <This function should not be called on a closed or cancelled I. IJKLMIJKLMIJKLM  !"#$%&'()*+,-./0123456 7 8 9::;<=>?@ABCDEFGGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw;xyz{|}~                   "              n         n                                           ! " # $ % & ' ( ) * + , - . 7 / 0 1 2 3 4 5 6789 : ; < = > ? @ ABBCDDEFGHIJKLMNOPQRSTUSTVSTVSWXSWYSWZSW[\]]^_`abcdefghijkklmnoopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<<=>>?@A3BC!DEFG7HIJKLMNONPHQIR78STUVWXYZ[\]^_`abcdefghijkklmnopqqrstuvwxyz{|}~nohaskeline-0.6.3.1'System.Console.Haskeline.MonadException System.Console.Haskeline.HistorySystem.Console.Haskeline#System.Console.Haskeline.Completion!System.Console.Haskeline.EncodingSystem.Console.Haskeline.IO&System.Console.Haskeline.Backend.IConv"System.Console.Haskeline.DirectorySystem.Console.Haskeline.Key"System.Console.Haskeline.LineState System.Console.Haskeline.Command(System.Console.Haskeline.Backend.WCWidthSystem.Console.Haskeline.PrefsSystem.Console.Haskeline.Monads%System.Console.Haskeline.Command.Undo(System.Console.Haskeline.Command.History)System.Console.Haskeline.Command.KillRingSystem.Console.Haskeline.Term#System.Console.Haskeline.RunCommand&System.Console.Haskeline.Backend.Posix)System.Console.Haskeline.Backend.Terminfo)System.Console.Haskeline.Backend.DumbTerm System.Console.Haskeline.BackendSystem.Console.Haskeline.InputT+System.Console.Haskeline.Command.CompletionSystem.Console.Haskeline.ViSystem.Console.Haskeline.EmacsbaseGHC.IO.Exception IOException GHC.Exception SomeException ExceptionHistory stifleAmount emptyHistory historyLines readHistory writeHistory stifleHistory addHistoryaddHistoryUnlessConsecutiveDupeaddHistoryRemovingAllDupesMonadExceptioncatchblockunblockhandlefinallythrowIOthrowTobracket throwDynIO handleDynPrefs defaultPrefs readPrefs Completion replacementdisplay isFinishedCompletionFunc noCompletion completeWordcompleteWordWithPrevsimpleCompletionfilenameWordBreakCharscompleteFilenamecompleteQuotedWord listFiles InterruptBehaviorInputTSettingscomplete historyFileautoAddHistory setCompleterunInputTWithPrefs runInputThaveTerminalUIrunInputTBehaviorrunInputTBehaviorWithPrefsdefaultBehavior useFileHandleuseFile preferTermencodedecode getEncoder getDecoderdefaultSettings outputStr outputStrLn getInputLine getInputChar getPassword withInterrupthandleInterrupt InputStateinitializeInput closeInput cancelInput queryInputc_iconv iconv_close iconv_open nl_langinfo c_setlocaleResult IncompleteInvalid Successful IConvTPtrIConvTNLItem openEncoder openDecoder dropUTF8Char simpleIConvopenPartialDecoder setLocale getCodeset iconvOpeniconv partialIconvgetDirectoryContentsdoesDirectoryExistgetHomeDirectoryBaseKeyDelete BackspacePageUpPageDownEndHomeKillLineUpKeyDownKeyRightKeyLeftKeyFunKeyKeyCharModifier hasControlhasMetahasShiftKey noModifier simpleKeymetaKeyctrlKey simpleCharmetaCharctrlCharsetControlBits specialKeysparseModifiers parseModifier breakAtDashesparseKey parseBaseKeycanonicalizeKey histLines stifleAmt Data.MaybeNothing maybeDropLastPassword passwordState passwordCharMessage messageState messageTextArgModeargargState CommandModeCEmptyCMode InsertModeIModeMovegoLeft moveToEnd moveToStartgoRightSavesaverestoretoResult LineCharsPrefix LineState beforeCursor afterCursorGrapheme gBaseCharcombiningCharsbaseCharmodifyBaseChar mapBaseChars baseGrapheme addCombinerisCombiningCharstringToGraphemesgraphemesToString lineChars lengthToEndlistSave listRestoreemptyIM insertChar insertString deleteNext deletePrevskipLeft skipRighttransposeCharsinsertGraphemes replaceCharIM deleteChar replaceCharpasteGraphemesBeforepasteGraphemesAfterenterCommandModeenterCommandModeRightinsertFromCommandModeappendFromCommandModewithCommandModestartArgaddNumapplyArgrepeatN applyCmdArgaddPasswordChardeletePasswordCharatStartatEndoverChar beforeChar afterChar goRightUntil goLeftUntil KeyCommandCommandCmdMDoEffectGetKey KeyConsumedConsumed NotConsumedKeyMaplookupKMEffectRingBell ClearScreen PrintLines LineChange lineChange keyCommanduseKeyuseCharwithoutConsuming choiceCmd keyChoiceCmd keyChoiceCmdM>|>>+>try+>finishfailCmdeffectclearScreenCmd simpleCommand charCommandsetStatechangechangeFromChardoBefore mk_wcwidthwcwidthgWidthgsWidth splitAtWidth splitAtWidth' takeWidthHistoryDuplicates IgnoreAllIgnoreConsecutive AlwaysAddEditModeEmacsVi BellStyle AudibleBell VisualBellNoBellCompletionTypeMenuCompletionListCompletion bellStyleeditModemaxHistorySizehistoryDuplicatescompletionTypecompletionPagingcompletionPromptLimitlistCompletionsImmediatelyghc-primGHC.BoolFalsecustomBindingscustomKeySequencesmkSettor readMaybesettorsaddCustomBindingaddCustomKeySequencelookupKeyBindingMaybeTunMaybeTStateT getStateTFunc MonadStategetput MonadReaderaskasksgetsmodifyupdate runReaderT' runStateT evalStateT'orElse mtl-1.1.1.0Control.Monad.Reader runReaderTReaderTControl.Monad.Translift MonadTransliftIOMonadIOUndoTUndopastUndo futureRedorunUndoT initialUndo saveToUndoundoPast redoFuture saveForUndo commandUndo commandRedo DirectionReverseForward SearchMode searchTerm foundHistory directionHistLog pastHistory futureHistory prevHistoryM prevHistorieshistLogrunHistoryFromFile runHistLog prevHistory firstHistory historyBackhistoryForward historyStart historyEnd histUpdate reverseHist directionNamesaveSMstartSearchModeaddCharsearchHistories findInLine prepSearchsearchBackwardsdoSearch searchHistorysearchForPrefix findFirst KillHelper GenericKill SimpleMoveKillRingStack emptyStackpeekrotatepush runKillRing pasteCommanddeleteFromDiff'killFromHelperkillFromArgHelpercopyFromArgHelperkillAll applyHelperapplyArgHelperGHC.BaseString completionsetReplacementescapeReplacement addQuotes splitAtQuote isUnquotedfixPathLayoutwidthheightEvent ErrorEventKeyInput WindowResize CommandMonad runCompletion RunTermTypeFileOps inputHandle getLocaleLine getLocaleCharmaybeReadNewlineTermOps getLayout withGetEventrunTermRunTerm putStrOut encodeForTerm decodeForTermtermOps wrapInterrupt closeTermTerm repositionmoveToNextLine printLines drawLineDiff clearLayoutringBelldrawLine clearLineisTerminalStyle matchInit keyEventLoophWithBinaryMode bracketSethGetBytehGetLinehMaybeReadNewline returnOnEOFrunCommandLooprunCommandLoop' drawEffectactBelldrawRepositionapplyKeysToMapapplyKeysToCmdioctlEncodersunicodeToLocalelocaleToUnicodePosixTTreeMapHandleshInhOut closeHandles posixLayouts ioctlLayoutunsafeHandleToFD envLayout tryGetLayoutsgetKeySequencesansiKeyssttyKeys emptyTreeMapinsertIntoTree listToTreemapLineslexKeys lookupCharswithPosixGetEventwithWindowHandlerwithSigIntHandler withHandlergetEventblockUntilInputconvertgetMultiByteCharstdinTTYHandles ttyHandlesopenTerm posixRunTerm posixEncode runPosixTputTerm fileRunTermwrapTerminalOpsDrawMDrawunDrawTermRows rowLengthslastRowTermPostermRowtermCol TermActionActions Data.MonoidMonoidleftArightAupAclearToLineEndnlcr bellAudible bellVisual clearAllAwrapLine getActions getWrapLinetextleftrightupclearAll mreplicatespaces initTermPos initTermRowssetRow lookupCellsrunTerminfoDraw wrapKeypad tinfoLayout terminfoKeysoutput changePos moveToPos moveRelative changeRight changeLeft advancePossum'encodeGraphemes printText textAction drawLineDiffT getLinesLeft clearDeadText clearLayoutTmoveToNextLineT repositionT DumbTermMDumbTerm unDumbTermWindowpos initWindow runDumbTermcrlfbacks clearLayoutDmaxWidth drawLineDiff' refitLinedefaultRunTermterminalRunTermstdinTTY directTTYrunDrawfileHandleRunTermGHC.IO.Handle.FDstdinstdout InputCmdTunInputTTrue runInputCmdT withBehavior execInputTGHC.IO.Handle.TypesHandlereadPrefsFromHomebytestring-0.9.1.7Data.ByteString.Internal ByteString useCompletionaskIMCompletions completionCmdpresentCompletionsmenuCompletionmakePartialCompletionpagingCompletionaskFirstpageCompletions printPage makeLinespadWordssplitIntoGroupsceilDiv SearchEntry entryState searchChar InputKeyCmdInputCmdViTViState lastCommand lastSearch SavedCommand EitherMode emptyViState viKeyCommands viCommandssimpleInsertions insertChars eofIfEmptyviCommandActionsexitingCommandssimpleCmdActions replaceOncerepeatedCommands pureMovementsuseMovementsForKillrepeatableCommandsrepeatableCmdModeflipCaserepeatableCmdToIMode deletionCmddeletionToInsertCmd yankCommand reinputArggoToWordDelEndgoToBigWordDelEnd movements charMovements isBigWordChar isWordChar isOtherChar.||. foreachDigit wordErasefindMatchingBracedeleteMatchingBrace scanBracesmatchingRightBracematchingLeftBrace braceList replaceLoop storeLastCmd storedActionstoredCmdAction storedIActionkillAndStoreCmd killAndStoreIkillAndStoreIEnoArg searchText viEnterSearch viSearchHist emacsCommandsenders simpleActionscontrolActions rotatePaste wordRightwordLeft bigWordLeft modifyWord capitalizegetInputCmdLinemaybeAddHistorygetPrintableChargetInputCmdChar acceptOneChar promptedInputHD forkedThread requestVarsubthreadFinishedRequest runHaskeline