h$[~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                     provisionalportableNonel+sindreThe size of some glyph(s). Note that there's a difference between the logical size, which may include some blank pixels, and the actual bitmap. sindreThe  XRenderColor from the XRender library. Note that the colour channels are only interpreted as 16-bit numbers when actually used.sindre An Xft font.sindreAn Xft drawable.sindreAn Xft colour.sindreA central staging point for Xft object creation. All Xft object creation functions take as argument an  value that keeps track of lifetime information. You are required to manually free the  via  when you are done with it.sindre Create an  whose objects will be used on the given screen and display. As Xlib is not re-entrant, a synchronisation mechanism must be used, so the  includes actions for obtaining and releasing atomic access to the display via two  actions. These will be executed before and after objects allocated via the manager are released. It is recommended to use an   to implement a mutex for synchronising the access, but if you are absolutely certain that there will not be any concurrent attempts to access the display, the actions can merely be  return ().sindreFree the manager and reclaim any objects associated with it. After an  has been freed, it is invalid to use any objects created through it. The lock must currently be held by the thread calling , and it will be repeatedly released and reacquired throughout deallocating any remaining objects in the manager. When the command returns, the lock will once again be held.sindre/The core X11 colour contained in an Xft colour.sindreCreate a new Xft colour based on a name. The name may be either a human-readable colour such as "red", "white" or "darkslategray" (all core X colour names are supported) or a hexidecimal name such as "#A9E2AF". Names are not case-sensitive. Returns 2 if the given name is not recognised as a colour.sindreAs 9, but instead of a name, an XRender color value is used.sindre+Free a colour that has been allocated with  or .sindreAs , but automatically freed through the given Xft manager when no longer accessible.sindreAs , but automatically freed through the given Xft manager when no longer accessible. sindre!The display for the Xft drawable.!sindre"The colormap for the Xft drawable."sindre The visual for the Xft drawable.#sindre-The X11 drawable underlying the Xft drawable.$sindreCreate a new Xft drawable on the given display, using the provided  to draw on. Will return  if the call to  XftDrawCreate fails, which it will usually only do if memory cannot be allocated. The  has to be manually freed with ' once you are done with it.%sindre Behaves as $, except that it uses a  of color depth 1 instead of a .&sindre Behaves as $, except that it uses a " of the given depth instead of a .'sindreFree a  created with $. Do not free s created with )", these are automatically managed.(sindre4Change the X11 drawable underlying the Xft drawable.)sindreAs $., but automatically freed when no longer used.*sindreAs %., but automatically freed when no longer used.+sindreAs %., but automatically freed when no longer used.,sindreThe ascent (vertical distance upwards from the baseline) of a character in the font.-sindreThe descent (vertical distance downwards from the baseline) of a character in the font..sindre3The ascent plus descent of a character in the font./sindre9The greatest horizontal width of a character in the font.0sindrenewFontName dpy scr s, where s; is a Fontconfig pattern string, finds the best match for s and returns a font that can be used to draw on the given screen. This function very rarely returns , and seems to return some default font even if you feed it utter garbage (or an empty string).1sindreAs 0, except that the name should be an X Logical Font Description (the usual fourteen elements produced by xfontsel).2sindreClose the given Xft font.3sindreAs 0., but automatically freed when no longer used.4sindreAs  newFontXfld., but automatically freed when no longer used.5sindreLock the file underlying the Xft font. I am not certain when you would need this. The return value is supposed to be an FT_TYPE; from Freetype, but that binding has not been written yet.6sindreUnlock a face locked by  lockFontFace.7sindreNote that the  /  fields are the number of pixels you should advance after drawing a string of this size.8sindreShortcut for calling 7 and picking out the   field of the .9sindreShortcut for calling 7 and picking out the   field of the .:sindreDraw a sequence of glyphs on the given drawable in the specified colour and font. Drawing begins at the baseline of the string.;sindreDraw a string on the given drawable in the specified colour and font. Drawing begins at the baseline of the string.<sindredrawRect d c x y w h draws a solid rectangle on d with colour c , with its upper left corner at (x,y), width w and height h.sindreExecuted before deallocations.sindreExecuted after deallocations.9   !"#$%&'()*+,-./0123456789:;<9 !"#($%&')*+,-./0123456789;:<    Safe-Inferred MIT-style (see LICENSE) provisionalportable Safe-Inferred!?sindreParse a key-value string wrapper constructed via the permutation parser combinators from  and the parsers value and values.@sindrevalue k' is a parser for the single-valued key k.Asindrevalues k% is a parser for the list-valued key k(. At least a single value is required.?@A?@AMIT-style (see LICENSE)stableportable Safe-Inferred& BsindreShort-hand for CsindreShort-hand for Dsindre*Short-hand for 'liftIO . hPutStrLn stderr'EsindreShort-hand for 'map toUpper'FsindreShort-hand for 'map toLower'GsindreConversion scheme as in ,http://en.wikipedia.org/wiki/HSV_color_spaceHsindre5Prepend and append first argument to second argument.Isindre*Put double quotes around the given string.Jsindre,Bound a value by minimum and maximum values.KsindreThe K( function behaves like a combination of  and foldlM; it applies a monadic function to each element of a list, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new list.LsindreLike when#, but with two branches. A lifted if.Msindrex M n splits the interval [0..x] into n non-overlapping chunks that together form the entire interval. For example: 10 `divide` 3[3,3,4] BCDEFGHIJKLM BCDEFGHIJKLMMIT-style (see LICENSE) provisionalportable Safe-Inferred5@NsindreA complete Sindre program. Note that this is intentionally defined such that some invalid programs, like those with duplicate definitions can be represented - the compiler (see Sindre.Compiler') should detect and handle such errors.UsindreThe contents of the BEGIN block.VsindreThe arguments passed to the Sindre program from the command line.WsindreA command line argument.XsindreA Sindre GUI is a recursive tree, with each node representing a single widget and consisting of the following fields.ZsindreName of the widget, if any.[sindreClass of the widget.\sindre#The arguments passed to the widget.]sindreChildren of the widget, if any.^sindreReaction to an event._sindreExecute these statements.`sindre=A function consists of lexically bound parameters and a body.bsindreA description of an event used to indicate how to handle different events.csindreMatch if the event is a chord.dsindre!Match if either pattern matches.esindreSourcedPattern src ev vars matches if src matches the event source (see i) an ev matches the event name. vars< should be bound to the values in the payload of the event.isindreDescription of sets of sources, values of this type can be used to pattern-match  EventSources.jsindreFor NamedSource k fk', the source must be the object named k. If fk is Just fk'+, the source must also be the field named fk'.ksindreFor GenericSource cn k fk, the source must be of class cn. If fk is Just fk'+, the source must also be the field named fk'. The variable named k? should be bound to the actual object if this pattern matches.lsindreThe origin of an event. This is used when determining where to handle it.msindreFieldSrc obj f: designates that the source of the event is the property f of objnsindreThe source is the given object.osindreThe source is something within the bowels of the active backend, probably from the external world.psindre%Something that happened in the world.ssindreThe name of the event.tsindreThe payload of the event.usindreWhere it's from.vsindre!The syntax of Sindre expressions.sindre The syntax of Sindre statements.sindre.Wrap a value with source position information.sindreA position in a source file, consisting of a file name, one-indexed line number, and one-indexed column number.sindre8Dynamically typed run-time value in the Sindre language.sindreThe type of names (such as variables and classes) in the syntax tree.sindre!High-level reference to a widget.sindreHigh-level reference to an object, containing its class and name (if any) as well. For non-widgets, the object name is the same as the object class.sindre!Low-level reference to an object.sindreA combination of a set of modifier keys and a primary key, representing a complete piece of keyboard input.sindreEither a key corresponding to a visible character, or a control key not associated with any character.sindre*Unicode character associated with the key.sindre;Name of the control key, using X11 key names (for example  BackSpace or Return).sindreA keyboard modifier key. The precise meaning (and location) of these is somewhat platform-dependent. Note that the Shift modifier should not be passed along if the associated key is a CharKey, as Shift will already have been handled.sindreInstruction on how to align a smaller interval within a larger interval.sindre Align towards negative infinity.sindre Align towards positive infinity.sindre)Align towards the center of the interval.sindreExternally-imposed optional minimum and maximum values for width and height.sindre.The amount of space actually used by a widget.sindre$Size constraints in both dimensions.sindre#A size constraint in one dimension.sindreAt minimum this many pixels.sindreAt most this many pixels.sindre&As many or as few pixels as necessary.sindreExactly this many pixels.sindreA rectangle represented as its upper-left corner, width and height. You should never create rectangles with negative dimensions, and the functions in this module make no guarantee to their behaviour if you do.sindreFlip the x and y coordinates and width and height of a rectangle, in a sense rotating it ninety degrees. Note that #rectTranspose . rectTranspose = id.sindresplitHoriz rect dims splits rect horizontally into a number of non-overlapping equal-width rectangles stacked on top of each other. dims is a list of height requirements that the function will attempt to fulfill as best it is able. The union of the list of returned rectangles will always be equal to rect4. No rectangle will ever have negative dimensions.sindreAs  splitHoriz, but splits vertically instead of horizontally, so the rectangles will be next to each other.sindreconstrainNeed need constraints) reduces the space requirement given by need in order to fulfill  constraints.sindrefitRect rect need> yields a rectangle as large as possible, but no larger than rect), that tries to fulfill the constraints need.sindrealign a lower x upper, where  lower<=upper", aligns a subinterval of length x in the interval lower to upper, returning the coordinate at which the aligned subinterval starts. For example,align AlignCenter 2 4 104align AlignNeg 2 4 102align AlignPos 2 4 106sindre-adjustRect (walign, halign) bigrect smallrect2 returns a rectangle with the same dimensions as  smallrect aligned within bigrect in both dimensions.sindrestring s returns a Sindre string.sindretrue v returns  if v, is interpreted as a true value in Sindre,  otherwise.sindreCanonical false value, see .Canonical true value, see .sindreCanonical false value, see .Canonical true value, see .sindre.A default position when no other is available.sindre7Prettyprint a source position in a human-readable form.!position ("foobar.sindre", 5, 15)"foobar.sindre:5:15: "sindrex  y gives a value containing x(, but with the same source position as y.NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx{yz|}~vwx{yz|}~pqrstulmnoijkbcdefgh^_`aXYZ[\]NOPQRSTUWVMIT-style (see LICENSE) provisionalportable Safe-InferredDcsindre parseSindre prog filename string extends the N prog with the declarations in the given Sindre source code. In case of mutually-exclusive definitions (such as the BEGIN block, or identically named functions), the new definitions in string take precedence.sindreTry to parse an integer according to the Sindre syntax, ignoring trailing whitespace.MIT-style (see LICENSE) provisionalportableNone >?K, sindreMonadSindre im m is the class of monads m that run on top of  with backend im,, and can thus access Sindre functionality.sindreLift a  operation into this monad.sindre)Lift a backend operation into this monad.sindreThe main monad in which a Sindre program executes. More specialised monads, such as  are used for specific purposes, but they all run on top of the Sindre monad.sindre.A monad that can be used as the layer beneath .sindre,Container describing a newly created object.sindre,Container describing a newly created widget.sindre&A method takes as arguments a list of s and returns another . You probably do not want to call these directly from Haskell code, as they are dynamically typed. See   for a convenient way to turn a Haskell function into a suitable method.sindreAn opaque notion of a field. These are for internal use in the Sindre runtime.sindreA typed description of a field, which may be read-write or read-only. When constructing the actual widget, you must turn these into real s by using the  function. A description of a field consists of a name and monadic actions for reading and optionally writing to the field.sindre:Turn a Haskell-typed high-level field description into a  -typed field.sindreexecSindre e m executes the action m in environment e, returning the exit code of m.sindreImmediately return from !, returning the given exit code.MIT-style (see LICENSE) provisionalportableNone>P sindre9A list of formatting commands, interpreted left-to-right.sindreA formatting command is either a change to the drawing state, or a string to be printed at the current location.sindreDraw text in the given colour.sindre Draw text in the default colour.sindre(Draw the background in the given colour.sindre*Draw the background in the default colour.sindreDraw the given string.sindreThe human-readable part of a format string, with formatting directives stripped.sindreThe first background colour preceding any default background colour or text entry specified in the format string, if any.sindrePrettyprint a # to a string that, when parsed by , results in the original sindreParse a format string, returning either an error message or the result of the parse.  MIT-style (see LICENSE) provisionalportableNone>ZKsindreThe monad in which widget construction takes place. You can only execute this by defining a 2 that is then used in a Sindre program (see also ). An example usage could be:  myWidget ::  MyBackEnd myWidget w k cs : do -- ConstructorM is an instance of , so we can provide -- defaults or fallbacks for missing parameters. arg  -'param' "myParam" <| return 12 rest of construction sindre8Class of types that a given backend can convert to from $s. In effect, a monadic version of .sindreAttempt to convert the given Sindre value to the relevant Haskell value.sindreFunction that, given an initial value, the name of itself if any, and a list of children, yields a computation that constructs a new widget.sindre+Monad inside which compilation takes place.sindreMapping from names of global variables to computations that yield their initial values.sindreMapping from function names to built-in functions. These must first be executed in the  monad as they may have specific requirements of the environment.sindre:Mapping from object names to object constructor functions.sindre)Mapping from class names to constructors.sindreGiven a Sindre program and its environment, compile the program and return a pair of command-line options accepted by the program, and a startup function. The program can be executed by calling the startup function with the command-like arguments and an initial value for the root widget. If compilation fails, an IO exception is raised.sindreGiven a variable name, return a computation that will yield the value of the variable when executed.sindreGiven a variable name, return a computation that can be used to set the value of the variable when executed.sindre noParam k signals that parameter k is missing.sindre badValue k v signals that parameter k is present with value v , but that v is an invalid value.sindrek  f* yields the value of the widget parameter k , using f/ to convert it to the proper Haskell type. If f returns ,  k  is called. If k does not exist,  k is called.sindreAs , but  is always used for conversion.sindreAs , but  is always used for conversion. MIT-style (see LICENSE) provisionalportableNone>?_osindreConvenience class for writing  values.sindre'Given a list of modifiers and either a char or a  , yield a 3. If given a character, the Chord will contain a ', if given a string, it will contain a .sindreA class making it easy to adapt Haskell functions as Sindre functions that take and return s.sindre function f/ is a monadic function that accepts a list of s and returns a . If the list does not contain the number, or type, of arguments expected by f, 3 will be called with an appropriate error message.sindreA set of pure functions that can work with any Sindre backend. Includes the functions abs, atan2, cos, sin, exp, log, int, sqrt, length, substr, index, match, sub, gsub, tolower, and toupper.sindreA set of impure functions that only work in IO backends. Includes the system function.sindre?e sindreThe result of using / to apply a user-provided pattern to a string.sindre8A widget that arranges its children in a horizontal row.sindre9A widget that arranges its children in a vertical column.sindrechangeField field m applies m$ to the current value of the field field , updates field with the value returned by m, and returns the new value.sindreLike , but without a return value.sindrechangingFields fields m evaluates m, then emits field change events for those fields whose names are in fields that changed while evaluating m.sindre match pat s applies the pattern pat to s and returns a ) describing the kind of match if any, or  otherwise. The pattern is interpreted as tokens delimited by whitespace, and each token must be present somewhere in s.sindrefilterMatches f pat l returns only those elements of l that match pat, using f to convert each element to a /. The result will be ordered equivalently to lsindresortMatches f pat l returns only those elements of l that match pat, using f to convert each element to a . The result will be reordered such that exact matches come first, then prefixes, then infixes, although original order will be maintained within these three groups.   MIT-style (see LICENSE) provisional unportableNone#$&>?{sindreOptions regarding visual appearance of widgets (colors and fonts).sindreSindre backend using Xlib.sindreThe read-only configuration of the X11 backend, created during backend initialisation.sindre%The display that we are connected to.sindre,Bookkeeping primitive for Xft font handling.sindreExecute Sindre in the X11 backend, grabbing control of the entire display and staying on top.sindreExecute Sindre in the X11 backend as an ordinary client visible to the window manager.sindre6Execute Sindre in the X11 backend as a dock/statusbar.sindre*An input stream object wrapping the given >. Input is purely event-driven and line-oriented: the event lines is sent (roughly) for each sequence of lines that can be read without blocking, with the payload being a single string value containing the lines read since the last time the event was sent. When end of file is reached, the eof event (no payload) is sent.sindrePerforms a lookup in the X resources database for a given property. The class used is Sindre.class.property and the name is progname.name.property, where progname is the value of .sindreRead visual options from either widget parameters or the X resources database using , or a combination. The following graphical components are read: Foreground colorFrom fg parameter or  foreground X property.Background colorFrom bg parameter or  background X property.Focus foreground colorFrom ffg parameter or focusForeground X property.Focus background colorFrom fbg parameter or focusBackground X property.sindreHelper function that makes it easier it write consistent widgets in the X11 backend. The widget is automatically filled with its (nonfocus) background color. You are supposed to use this in the drawI method of a Widget" instance definition. An example: drawI = drawing myWidgetWin myWidgetVisual $ r fg bg ffg fbg -> do fg drawString 0 5 "foreground" bg drawString 0 15 "background" ffg drawString 0 25 "focus foreground" fbg drawString 0 35 "focus background" sindre Variant of drawing+ that assumes the entire rectangle is used.sindreA simple dial using an arc segment to indicate the value compared to the max value. Accepts max and value parameters (both integers, default values 12 and 0), and a single field: value.  n and  p- are used to increase and decrease the value.sindre1Label displaying the text contained in the field label, which is also accepted as a widget parameter (defaults to the empty string).sindreA blank widget, showing only background color, that can use as much or as little room as necessary. Useful for constraining the layout of other widgets.sindre+Single-line text field, whose single field value (also a parameter, defaults to the empty string) is the contents of the editing buffer.sindreHorizontal dmenu-style list containing a list of elements, one of which is the "selected" element. If the parameter i is given a true value, element matching will be case-insensitive. The following methods are supported: insert(string)Split string- into lines and add each line as an element.clear()Delete all elements.filter(string))Only display those elements that contain string.next()Move selection right.prev()Move selection left.first()Move to leftmost element.last()Move to rightmost element. The field selected is the selected element.sindreAs ., except the list is vertical. The parameter lines2 (default value 10) is the number of lines shown.sindreA visual horisontal bar graph. Each data point is represented as a vertical bar. Accepts the following parameters: size6The number of data points to remember (defaults to 10)barWidth6The width (in pixels) of a single bar (defaults to 2).botThe lower bound of data points as an integer. If a point has this value (or below), it will be an empty bar.botThe upper bound of data points as an integer. If a point has this value (or above), it will be a full bar.$The following methods are supported: insert(string)Split string into lines and add each line as a data point. Each line must be an integer.sindreThe display string (usually the value of the environment variable $DISPLAY or :0)sindreThe function returned by , after command line options have been givensindreThe display string (usually the value of the environment variable $DISPLAY or :0)sindreThe function returned by , after command line options have been givensindreThe display string (usually the value of the environment variable $DISPLAY or :0)sindreThe function returned by , after command line options have been givensindreName of widget, using _ if  is passedsindre Widget classsindre Property namesindreThe body of the drawing call - this function is called with a rectangle representing the area of the widget, and s for "foreground," "background", "focus foreground", and "focus background" respectively.'' MIT-style (see LICENSE) provisionalportableNone} sindreThe main Sindre entry point.NOUTSRPQVWXY]\Z[^_`abecdhfgijklomnpqrustv~}|zy{wx !!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abbcdefghijkklmnopqrrstuvwxyz{|}~T                                              K                                      !sindre-0.6-JEmBN509iwiLcxDHzQvrJ0 Sindre.KeyValGraphics.X11.Xft Sindre.Util Sindre.Sindre Sindre.ParserSindre.RuntimeSindre.FormattingSindre.Compiler Sindre.LibSindre.Widgets Sindre.X11 Sindre.MainControl.ConcurrentMVar Paths_sindre Text.ParsecPermfunction compileSindre"permute-1.0-9Dk0YzMjHnfGEF7Nu39Y4xText.ParserCombinators.Perm<$?><|?><$$><||> GlyphInfoglyphImageWidthglyphImageHeight glyphImageX glyphImageY glyphWidth glyphHeight RenderColorredgreenbluealphaFontDrawColorXftMgr mgrDisplay mgrScreen newXftMgr freeXftMgrpixel newColorName newColorValue freeColor openColorNameopenColorValuedisplaycolormapvisualdrawablenewDraw newDrawBitmap newDrawAlphafreeDraw changeDrawopenDrawopenDrawBitmap openDrawAlphaascentdescentheightmaxAdvanceWidth newFontName newFontXlfdfreeFont openFontName openFontXlfdlockFace unlockFace textExtents textWidth textHeight drawGlyphs drawStringdrawRect$fStorableRenderColor$fStorableGlyphInfoparseKVvaluevaluesiofierrupcasedowncasehsv2rgbwrapquoteclamp mapAccumLMifMdivideProgram programGUIprogramActionsprogramGlobalsprogramOptionsprogramFunctions programBegin Arguments SindreOptionGUI widgetName widgetClass widgetArgswidgetChildrenAction StmtActionFunctionPattern ChordPattern OrPatternSourcedPattern patternSource patternEvent patternVars SourcePat NamedSource GenericSource EventSourceFieldSrc ObjectSrc BackendSrcEventKeyPress NamedEvent eventName eventValue eventSourceExprLiteralVarFieldOfLookupNotLessThanLessEqlEqualAssignPostIncPostDecConcatPlusMinusTimesDividedModuloRaisedToFuncallMethcallCondStmtPrintExitReturnNextIfWhileForDoBreakContinueFocusP sourcePosunP SourcePosValueStringVNumber ReferenceDict Identifier WidgetRef ObjectRef ObjectNumChordKeyCharKeyCtrlKey KeyModifierControlMetaSuperHyperShiftAlignAlignNegAlignPos AlignCenter ConstraintsSpaceUse SpaceNeedDimNeedMinMax UnlimitedExact RectanglerectXrectY rectWidth rectHeight rectTranspose splitHoriz splitVert constrainNeedfitRectalign adjustRectstringtruetruthfalsitynowherepositionat$fSemigroupRectangle$fMonoidRectangle $fShowValue $fShowGUI $fShowAction$fShowFunction $fEqFunction $fEqPattern $fOrdPattern $fShowPattern $fEqSourcePat$fOrdSourcePat$fShowSourcePat $fShowEvent$fShowEventSource $fShowStmt$fEqStmt $fShowExpr$fEqExpr $fOrdExpr$fShowP$fEqP$fOrdP $fFunctorP $fEqValue $fOrdValue $fShowKey$fEqKey$fOrdKey$fEqKeyModifier$fOrdKeyModifier$fShowKeyModifier $fShowAlign $fEqAlign $fEqDimNeed $fShowDimNeed $fOrdDimNeed$fShowRectangle $fEqRectangle parseSindre parseIntegerMoldmoldunmold EventHandler ExecutionObjectM MonadSindresindrebackSindre MonadBackend BackEvent RootPosition redrawRoot redrawRegion getBackEventwaitForBackEventprintVal SindreEnvobjectsevtQueueglobals execFramekbdFocus rootWidget arguments needsRedrawDataSlot NewObject NewWidgetMethodField FieldDescReadWriteField ReadOnlyField fieldNamegetFieldfield newWidget newObject instWidget instObjectnewEnv execSindre quitSindre broadcastchangedredraw fullRedrawsetRootPosition globalVal setGlobalcomposedraw returnHeredoReturnnextHeredoNext breakHeredoBreakcontHeredoContexecuteexecute_setScope enterScope lexicalVal setLexicalcallMethodByRef setFieldByRef getFieldByRefrecvEventByRef eventLoop $fMold(,) $fMoldMaybe$fMold() $fMoldBool $fMoldInt $fMoldInteger $fMoldDouble $fMoldText$fMold[] $fMoldValue$fSemigroupSindre$fMonoidSindre$fMonadIOSindre$fMonadTransSindre$fMonadSindreimExecution$fMonadIOObjectM$fMonadSindreimObjectM$fMonadSindreimSindre$fFunctorExecution$fMonadExecution$fMonadFailExecution$fApplicativeExecution"$fMonadReaderExecutionEnvExecution$fMonadContExecution$fFunctorSindre $fMonadSindre$fApplicativeSindre$fMonadFailSindre$fMonadContSindre$fMonadStateSindreEnvSindre$fMonadReader->Sindre$fFunctorObjectM$fMonadObjectM$fMonadFailObjectM$fApplicativeObjectM$fMonadStatesObjectM$fMonadReader(,,)ObjectM FormatStringFormatFgDefFgBgDefBgText textContentsstartBgunparseFormatStringparseFormatString $fShowFormat $fEqFormat $fOrdFormat ConstructorMParammoldM ConstructorCompilerGlobMapFuncMap ObjectMapClassMapsetValuenoParambadValueparamAsparamMparam$fErrorParamError$fMonadIOConstructorM$fMonadSindreimConstructorM$fAlternativeConstructorM$fMonadStateMapConstructorM"$fMonadErrorParamErrorConstructorM$fMonadConstructorM$fMonadFailConstructorM$fFunctorConstructorM$fApplicativeConstructorM$fShowParamErrorKeyLikechord LiftFunction stdFunctions ioFunctions ioGlobals$fLiftFunctionimm->$fLiftFunctionimmm $fKeyLike[] $fKeyLikeCharMatch ExactMatch PrefixMatch InfixMatchmkHorizontally mkVertically changeField changeField_ changingFieldmatch filterMatches sortMatches $fEqMatch $fOrdMatch $fShowMatchX11FieldDrawerfgbg drawerFont drawerFgColor drawerBgColor VisualOpts foreground backgroundfocusForegroundfocusBackgroundfont SindreX11M SindreX11Conf sindreDisplay sindreXftMgrdrawText allocColorsindreX11override sindreX11 sindreX11dock mkInStreamxopt visualOptsdrawingdrawing' setFgColor setBgColormkDialmkLabelmkBlank mkTextFieldmkHListmkVListmkGraph$fParamSindreX11MFont$fParamSindreX11MColor$fMonadBackendSindreX11M$fShowListElem $fEqListElem $fOrdListElem$fFunctorSindreX11M$fMonadSindreX11M$fMonadIOSindreX11M$fMonadFailSindreX11M$$fMonadReaderSindreX11ConfSindreX11M$fMonadStateSurfaceSindreX11M$fApplicativeSindreX11M sindreMain emptyProgramclassMap objectMapfuncMapglobMapghc-prim GHC.TypesIObase GHC.MaybeNothing!X11-1.10.2-3nCUj4yVlxG7tqJllK2dQJGraphics.X11.TypesDrawablePixmapversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameControl.Monad.IO.ClassliftIOGHC.Real fromIntegralData.TraversablemapMTrueFalseGHC.Base AlternativeStringControl.Monad.Failfail text-1.2.3.2Data.Text.InternalGHC.IO.Handle.TypesHandleSystem.Environment getProgName