h$|Ti      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                           !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""#######$$$$$$$$$$$$$$$$$%%&&&&&&&&&&&&&&&&''''''((())))))))))))))))))))))))))))))))))))))))))))))))*********+,,,,,-----------------................../////////////////////00000000000000000000000000111111111122222222222222222233333333333333333333444445NoneU  None?I uni-util%a state monad containing the BinArea.!uni-util3Somewhere to where you write binary data in memory.%uni-utilA source of binary data'uni-util read one byte(uni-utilread multiple bytes)uni-utilA consumer of binary data+uni-utilwrite one byte,uni-utilwrite multiple bytes-uni-utilWrite an (a) to a .uni-utilRead an (a) from a 1uni-utilWrite an (a) to memory. The  is the length of the area.2uni-utilWrite an (a) to memory. The integer argument is an initial guess at the number of bytes that will be needed. This should be greater than 0. If it is too small, there will be unnecessary reallocations; if too large, too much memory will be used. 3uni-utilCreate an empty !, given the initial size.4uni-util%Return all the data currently in the !5uni-utilA !! as somewhere to put binary data.6uni-util.Read a value from binary data in memory. The  is the length, and there will be an error if this is either too small or too large. 7uni-util"Turn binary data in memory into a !! (so that you can read from it). 9uni-util%A BinArea as a source of binary data.:uni-utilTransform the monad used by a );uni-utilTransform the monad used by a %#uni-util>Given a consumer of binary data, and an (a), write out the (a)$uni-util-Given a source of binary data, provide an (a) !"#$%&'()*+,-./0123456789:;-.126"#$)*+,%&'(/0! 354798:;None>?>uni-utilA wrapper for instances of Binary. This can be written, but not read (since we wouldn't know what type to decode).@uni-util2A monad which hides an additional value which the " instances should be able to get at. This is used, for example, by  CodedValue, to make the View available to instances.Auni-utilGiven a function which converts an (a) to something we can already convert to binary, return a #& function to be used in instances of " (a).Buni-utilGiven a function which converts something we can already read from binary to (a), return a $& function to be used in instances of " (a).Cuni-utilLike A6, but the conversion function is also allowed to use .Duni-utilLIke B6, but the conversion function is also allowed to use .Juni-utilWrite a ><=>?@ABCDEFGHIJABCD@EFIGH>?J<=None >? 8 Tuni-utilNewtype alias for things we want to encode or decode via their  or   representation.Vuni-util Value the [ instance generates from ]7 to indicate how we should write some value to binary.Xuni-utilNewtype alias you need to wrap around something which instances [ to get an actual HasBinary instance. You will then need something like this: instance Monad m => HasBinary a m where writeBin = mapWrite Wrapped readBin = mapRead wrapped[uni-utilA class allowing you to handle types with up to 256 alternatives. If this all seems to complicated, look at the source file and the example for the "Tree" data type.^uni-utilThis is a rather inelegant way of encoding a type with up to 5 alternatives. If 5 is too many, use () for the others, if too few use [ . In fact [ is probably better anyway.duni-util This is an newtype alias for integral types where the user promises that the value will be non-negative, and so saves us a bit. This is what we use for character data incidentally, so that ASCII characters with codes <128 can be encoded (as themselves) in just one byte.funi-util) value for constructor with no arguments.guni-util' value for constructor with 1 argument.huni-util( value for constructor with 2 arguments.iuni-util( value for constructor with 3 arguments.juni-util( value for constructor with 4 arguments.\uni-util9For each alternative in the type, provide a recognition 8, and a way of mapping that alternative to the (wrapper)]uni-util1Map a (wrapper) to the corresponding recognition & and the type within the alternative.QRSTUVWXYZ[\]^c_`abdefghij^c_`ab[\]XYZVWfghijTUQRSde Safe-Inferred   Safe-Inferred   Safe-Inferred 00  Safe-Inferred!4   None!}  Safe-Inferred! Safe-Inferred"-uni-util8The Bool is a sign, with True meaning positive infinity. Safe-Inferred"[ Safe-Inferred" Safe-Inferred" Safe-Inferred#uni-utilConverts a list to a queue with the first element of the list the first element of the queue.uni-utilInverts listToQueue   Safe-Inferred$uni-utilhuffmanFold op l where op is associative, l is a nonempty monotonically increasing list, and op has the property that (x1>=x2,y1>=y2) => (op x1 y1>=op x2 y2) computes the fold of l with op, by repeatedly folding the smallest two elements of the list until only one remains. Safe-Inferred%%   Safe-Inferred%s Safe-Inferred% Safe-Inferred% Safe-Inferred&Option processingNone&uni-util$Get a path within the top directory...None)1uni-utilSend a string to the debug file. This differs from debug, in that debug will Haskell-escape the string and add a newline, while just writes to the file with no interpretation.uni-util5show something to log file if debugging is turned on.uni-utilIf an action fails print out a message before propagating message.uni-util%always show something to the log fileuni-util+always print out a message if action fails.$Miscellaneous Monads, in particular 56.None+uni-util Either String String) to get a conversion function which either succeeds (Right) or returns an error message (Left).None>0uni-utilLike  but provides an error message indicating what types are getting confused.  What the Prelude ForgotNone3?Buni-utilindicates that an Ord or Eq instance really does need to take everything into account.uni-utilA function indicating we want to escape from the current computation.uni-utilRemove trailing spaces (We try to avoid reconstructing the string, on the assumption that there aren't often spaces)uni-utilRemove leading spacesuni-util"Remove trailing and leading spacesuni-utilPad a string if necessary to the given length with leading spaces.uni-util=returns Just a if we can read a, and the rest is just spaces.uni-utilThe "." operator lifted to monads. So like ., the arguments are given in the reverse order to that in which they should be executed.uni-utilinsertOrdAlternate is similar to insertOrd except (1) it takes an Ordering argument; (2) if it finds an argument that matches, it applies the given function to generate a new element, rather than inserting another. The new generated element should be EQ to the old one.uni-utilWe split at the first occurrence of the character, returning the string before and after.uni-utilreturns remainder if the first list is a prefix of the second one.uni-utilnode is the tree's node type. state is folded through every node of the tree (and is the result). We search the tree in depth-first order, applying visitNode at each node to update the state. The ancestorInfo information comes from the ancestors of the node. EG if we are visiting node N1 which came from N2 the ancestorInfo given to visitNode for N1 will be that computed from visitNode for N2. For the root node, it will be initialAncestoruni-util Like treeFold, but using monads.uni-util"Produce an equality function for buni-util Produce a compare function for buni-utilIntended use, EG addFallOut ( break -> do -- blah blah (normal IO a stuff) -- when (break condition) (break "You can't do that there ere") -- more blah blah, not executed if there's an break -- return (value of type a) )uni-util8Like addFallOut, but returns a WithError object instead.uni-util&Remove duplicate elements from a list.uni-utilRemove duplicate elements from a list where the key function is supplied.uni-utilRemove duplicate elements from a list where the key function is supplied. The list order is preserved and of the duplicates, it is the first in the list which is not deleted.uni-utilLike uniqOrd, except that we specify the output order of the list. The resulting list is that obtained by deleting all duplicate elements in the list, except the first, for example [1,2,3,2,1,4] will go to [1,2,3,4].uni-utilIf there are two elements of the list with the same (a), return one, otherwise Nothing.uni-utilReturn Just True if all the elements give True, Just False if all False, Nothing otherwise (or list is empty).uni-util*If all the elements are equal, return Trueuni-utilA merge function for combining an input list with some new data, where both are pre-sorted.uni-util input listuni-utillist to combine with input listuni-utilcomparison function. a and b should be already sorted consistently with this comparison function, and it is assumed that each list is EQ to at most one of the other.uni-utilMerge function applied to each element of a and b, where we pair EQ elements together.uni-util&Output of merge function concatenated.Generate Unique StringsNone3B uni-utilreadUniqueStringSource is used by types/CodedValue.hs to export values.uni-utilcreateUniqueStringSource is the inverse of readUniqueStringSource.uni-utilCreate non-conflicting string which cannot be produced by newUniqueString. This is useful for exceptional cases. We add this by adding a character with integer value 0 at the end.  NoneBVNone B NoneB!NoneH uni-utilA class for things (in particular Source and SimpleSource) that can output via sinks. Each sink source is supposed to have a unique x, containing a representation of the current value, and delta, containing the (incremental) updates which are put in the sink. Only the addOrdSink function must be defined by instances.uni-utilThe HasInvalidate class represents information sources which can be told "No more, I'm not interested."uni-util&Creates a new sink with its own SinkIDuni-utilCreates a new sink with a given SinkID. This allows us to invalidate lots of sinks just by invalidating one sinkID.uni-utilPut a value into the sink, returning False if the sink id has been invalidated.uni-utilPut a list of values into the sink, returning False if the sink id has been invalidateduni-util'Convert a sink from one type to anotheruni-utilAnother version which allows a transformation function to filter certain elementsuni-utilA version which allows an IO action, which had better not take too long.uni-utilAdd an action to a sinkSource which is performed until the action returns False.uni-utilCreates a new sink which executes actions in a parallelExec thread.uni-utilCreates a new sink which executes actions in a parallelExec thread, but allow the function generating these actions to be specified later, via the returned command.uni-util"Or we can do so with HasInvalidate" Simple EventsNone >Puni-util0Fold a Source so that it can carry state around.uni-util6A Source combinator which "flattens" lists of updates.uni-utilGet the current contents of the source, but don't specify any other action.uni-utilPair two SimpleSource's. This is probably better than using >>=, since it does not require reregistering with the second SimpleSourceuni-utilDoes a similar job to pairSimpleSources, so that the sources run parallel.uni-utilFor each update d, pairs it with its predecessor (given first). For the very first update, a value is given based on the initial x, mapped by the given function.uni-utilLike mkHistorySource but for SimpleSource's; the x returns the initial value to compare with.uni-util!filter out consecutive duplicatesuni-utilFold a Simple Source, so that it carries state. The state is recomputed for each client.uni-util-replaces the first value of the SimpleSource.uni-utilRun the specified actions for the source, using the given SinkID and in the ParallelExec thread. The x -> IO () action is guaranteed to be performed before any of the d -> IO () actions.uni-utilOutputs information about what comes through the source, turning it into a String with the supplied function. (This is done once for each active client.)uni-utilOutputs information about what comes through the source, turning it into a String with the supplied function. (This is done once for each active client.)uni-utilUsed when we are worried that a SimpleSource recursively constructed by mapIOSeq, >>= and friends may actually try to call itself, and so loop forever. The Strings identify the SimpleSource, and so the [String] is effectively a backtrace of the TSems, revealing what chain of simple sources might have caused the loop.**#NoneQ$Outputting MessagesNoneU6uni-utilDisplay an alertuni-utilDisplay an erroruni-utilDisplay a warning messageuni-util Confirm something with the user.uni-util#Display some informational message.uni-utilIf True, indicates that the flag corresponding to a graphical mode has been set. This is used occasionally for deciding whether to ask the user something on stdout, stdin or via a window.uni-utilqueries the user on stdout getting the answer from stdin. Leading and trailing spaces are trimmed from the result.uni-utilDisplay a series of one-line messages, separated by newline characters, attempting to combine them together and eliminate duplicates as much as possible. If other identical messages come in while the error message is being delayed, we throw them away.%NoneVuni-utilConvert a ClockTime to a String. This has the format + where the digits encode two integers N1 and N2 (in order) representing the time elapsed since 00:00:00 UTC on 1 Jan 1970. This will be N1 + (N2 / 10^12) seconds. 0<=N2<10^12.uni-util2Convert a validly formatted String to a ClockTime.&NoneXuni-util,Like HasAddDelayer, but allows an IO action.uni-utilInstances of HasAddDelayer are event sources to which you can attach a delayer, to indicate you are currently not interested in events.uni-utilcarry out the given action preventing the Delayer from doing anything.uni-util:If this DelayedAction is queued, remove it from the queue.  'NoneX(None>?ZRuni-utilRead something, but throw an exception if there is an attempt to read too many characters.uni-utilTime this code was written. We bung this definition in here because this module needs GHC-specific access to ClockTime anyway.uni-util the maximum number of characters9Conversion to/from binary.NoneZ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJQRSTUVWXYZ[\]^ba`c_defghij)Store information by key.None3>\*uni-utilListRegistryContents will not be implemented for the untyped registries.uni-utillook up the element given by the first key, and if it exists delete it, replacing it with the element given by the second key.uni-utilthis is atomic.!!*None\+None],None]uni-utilFor now we just do this naively, with a Registry. Since the names are generated sequentially a dynamic array would be more efficient, perhaps.-None 3>^  .None3>?^W  /None>`uni-utilReplace a SimpleSource by another which comes with a switch-off function, which temporarily blocks further updates. The action returned by the switch-off function switches the source back on again.uni-utilReplace a SimpleSource by another which mirrors it, but only copies from it once, hopefully saving CPU time. The IO action stops the mirroring.uni-utilReplace a SimpleSource by another which mirrors it, but only copies from it once, hopefully saving CPU time. In addition, block all update while the Delayer is delaying things.0None3duni-utilEncodes the updates to a variable set. BeginGroup does not actually alter the set itself, but indicate that a group of updates is about to begin, terminated by EndGroup. This prevents the client from trying to recalculate the state after every single update.BeginGroup/EndGroup may be nested (though I don't have any application for that yet).uni-util Create a new empty variable set.uni-util-Create a new variable set with given contentsuni-util"Update a variable set in some way.uni-util%Set the elements of the variable set.uni-utilCreates a VariableSetSource whose elements are the same as those of the corresponding list.uni-utilHasKey specifies the ordering to use (without committing us to a particular Ord instance elsewhere).1Noned2Noneeuni-utilReturn the close action. attachListOp :: ParallelExec -> VariableList a -> ListDrawer a -> IO (IO ())3None3iuni-util/We recycle the VariableSetUpdate type for this.uni-utilDescribes a map update. For DelUpdate, the second parameter (the one of type elt) is irrelevant and may be undefined.uni-util Create a new empty variable map.uni-util-Create a new variable map with given contentsuni-utilUpdate a variable map in some way. Returns True if the update was sucessful (so for insertions, the object is not already there; for deletions the object is not there).uni-utilGiven a variable map and conversion function, produce a VariableSetSourceuni-utilUnlike VariableSet, the contents of a variable map are not returned in concrete form but as the abstract data type VariableMapData. We provide functions for querying this.4None>i:;<:=>:=?:@A:BC:DE:FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeffghiijklmnopqrstuvwxyz{{||}~                                        68   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""#######$$$$$$$$$$$$$$$$$%%&&&&&&&&&&&&&&&&''''''((())))))))))))))))))))))))))))))))))))))))))))))))*********+,,,,,-----------------................../////////////////////0000000000000000000000000011111111112222222222222222223333333333333333333344444::::F'uni-util-2.3.0.3-9osqM81fKRM2uZs6YnueRo Util.DynamicsUtil.Computation Util.Thread Util.Bytes Util.BinaryUtil.BinaryUtilsUtil.BinaryInstances Util.CacheUtil.CompileFlags Util.DeepSeqUtil.FileNames Util.HostName Util.IOExtras Util.IntPlus Util.LineShow Util.Maybes Util.Object Util.Queue Util.HuffmanUtil.QuickReadShowUtil.ReferenceCount Util.StoreUtil.ThreadDictUtil.VisitedSet Util.WBFiles Util.Debug Util.VSem Util.UTF8Util.ExtendedPreludeUtil.UniqueStringUtil.UnionFind Util.TSem Util.Sink Util.Sources Util.Myers Util.MessagesUtil.ClockTimeToString Util.DelayerUtil.CommandStringSubUtil.BinaryExtras Util.RegistryUtil.UniqueFile Util.TempFileUtil.NameMangleUtil.AtomStringUtil.ICStringLenUtil.BroadcasterUtil.VariableSetUtil.VariableSetBlockerUtil.VariableListUtil.VariableMapUtil.KeyedChanges Computation WithErrorExtendedPrelude addFallOutUtil.BinaryAllbaseData.Typeable.InternalTypeable Control.MonadunlessforeverControl.Exception.Basetry GHC.Conc.SyncThreadId Data.TypeableTypeRepGHC.BasewhenBytesByteputByteToBytesgetByteFromBytesputBytesToByteshPutBytehGetByte hPutBytes hGetBytes bytesMalloc bytesReAlloc bytesAlloca bytesFreewithBytesAsCCharsmkBytes unMkBytes compareBytes$fEqByte $fOrdByte $fNumByte $fBitsByte $fShowByte $fRealByte $fEnumByte$fIntegralByte StateBinAreaBinArea HasBinarywriteBinreadBin ReadBinaryreadByte readBytes WriteBinary writeByte writeByteshWritehReadtoWriteBinaryHandletoReadBinaryHandle writeToBytes writeToBytes0mkEmptyBinArea closeBinAreawriteBinaryBinArea readFromBytes mkBinAreacheckFullBinAreareadBinaryBinArealiftWriteBinaryliftReadBinary WrapBinary WrappedBinaryArgMonadmapWritemapRead mapWriteIO mapReadIO mkArgMonad toArgMonadwriteBinaryToArgMonadreadBinaryToArgMonad runArgMonadhWriteWrappedBinary$fMonadIOArgMonad$fMonadFailArgMonad$fMonadArgMonad$fApplicativeArgMonad$fFunctorArgMonad$fHasBinaryWrapBinarymViaEnumenumReadShowUnWrapWrappedwrapped HasWrapperwrapsunWrapChoice5Choice1Choice2Choice3Choice4Unsignedwrap0wrap1wrap2wrap3wrap4$fHasBinaryCSizem$fHasBinaryIntegerm$fHasBinaryWord32m$fHasBinaryInt32m$fHasBinaryWordm$fHasBinaryIntm$fHasBinary[]m$fHasBinaryCharm$fHasBinaryBoolm$fHasBinaryEitherm$fHasBinaryMaybem$fHasBinary(,)m$fHasBinaryBytem$fHasBinary(,,,,,,)m$fHasBinary(,,,,,)m$fHasBinary(,,,,)m$fHasBinary(,,,)m$fHasBinary(,,)m$fHasBinary(,)m0$fHasBinary()m$fHasBinaryUnsignedm$fHasBinaryCodedListm$fHasBinaryChoice5m$fHasBinaryWrappedm$fHasBinaryTreem$fHasWrapperTreem$fHasBinaryReadShowm$fHasBinaryViaEnumm $fEqChoice5CachenewCache getCachedisDebug uniVersionDeepSeqdeepSeq$!!$fDeepSeqDouble$fDeepSeqFloat $fDeepSeqInt$fDeepSeqInteger$fDeepSeqOrdering$fDeepSeqEither$fDeepSeqMaybe $fDeepSeqChar $fDeepSeqBool$fDeepSeq(,,,,,,)$fDeepSeq(,,,,,)$fDeepSeq(,,,,)$fDeepSeq(,,,) $fDeepSeq(,,) $fDeepSeq(,) $fDeepSeq[] $fDeepSeq()fileSep recordSeptopDirthisDirtrimDir splitName combineNames breakName unbreakNamesplitExtensionunsplitExtensiongetFullHostNamecatchEOFcatchAlreadyExistscatchDoesNotExistcatchErrorCalls hGetLineRsimpleModifyIORefIntPlusinfinity $fNumIntPlus $fShowIntPlus $fOrdIntPlus $fEqIntPlusLineShow$fReadLineShow$fShowLineShow fromMaybesObjectobjectIDObjectIDnewInt newObject staticObject$fReadObjectID$fShowObjectID $fEqObjectID $fOrdObjectIDQueueemptyQ singletonQisEmptyQinsertQremoveQ insertAtEndQ listToQueue queueToList$fFunctorQueue $fEqQueue huffmanFold$fShowPointedList QuickShow quickShowWrapShow QuickRead quickReadWrapReadqReadqShowRefCount newRefCountnewLinkedRefCountaddRefremRefStorenewStore takeStore ThreadDict newThreadDictwriteThreadDictreadThreadDictmodifyThreadDict VisitedSet newVisitedSet isVisitedArgValue StringValueIntValue BoolValueArgTypeSTRINGINTBOOLProgramArgument optionName optionHelp defaultValargType getWishPathgetEditorString getMMiSSDTDgetMMiSSAPIDTDgetHostsgetDaVinciPathgetGnuClientPathgetToolTimeOutgetTOP getTOPPathgetPort getXMLPort getWorkingDirgetDebugFileName getServerFile getServerDir getServerIdgetDaVinciIcons getServergetUser getPasswordgetCouplingPortgetCouplingDirusualProgramArguments getArgString getArgInt getArgBoolsetAlternateArgsparseArgumentsparseArgumentsRequiringparseTheseArgumentsparseTheseArgumentsRequiring debugStringdebugdebugAct@: alwaysDebugalwaysDebugAct@@: wrapError HasConfig$$ configUsedConfigMonadWithErrorAnswerdone#raise propagate tryUntilOKhasErrorhasValue toWithErrorisError fromWithErrorfromWithError1 mapWithError mapWithError'mapWithErrorIOmapWithErrorIO' pairWithError listWithErrorcoerceWithErrorcoerceWithErrorIOcoerceWithErrorStringIOcoerceWithErrorOrBreakIOcoerceWithErrorOrBreakIOPrefixcoerceWithErrorOrBreakcoerceWithErrorOrBreakPrefixconcatWithErrorswapIOWithErrorexceptionToErrormonadifyWithErrortoMonadWithError foreverUntilforeachincasewhile configureconfig$fMonadFailWithError$fMonadWithError$fApplicativeWithError$fFunctorWithError$fMonadFailMonadWithError$fMonadMonadWithError$fApplicativeMonadWithError$fFunctorMonadWithErrorVSemnewVSemsynchronizeLocalsynchronizeGlobal acquireLocal releaseLocaltoUTF8 fromUTF8WEDyn fromDynamic fromDynamicWEtoDyncoercecoerceIO typeMismatchdynCast dynCastOptOrdIO compareIOEqIOeqIOFullGeneralCatchFnGeneralBreakFnBreakFn HasMapMonadic mapMonadic HasCoMapIOcoMapIOHasMapIOmapIO trimTrailing trimLeading trimSpaces padToLength readCheckmonadDot mapPartialM simpleSplitfindJust deleteFirstdeleteFirstOptdeleteAndFindFirstdeleteAndFindFirstOpt divideList insertOrdLt insertOrdGt insertOrdinsertOrdAlternatebottom splitByChar unsplitByCharunsplitByChar0 splitToChar splitToElemsplitToElemGeneralchoppairListlastOptisPrefixtreeFold treeFoldMmapEqmapOrd addFallOutWE simpleFallOutaddSimpleFallOut mkBreakFn newFallOut isOurFallOutaddGeneralFallOutourExcepToMessshowException2catchOurExcepscatchAllExcepserrorOurExcepsbreakOtherExcepsuniqOrd uniqOrdByKeyuniqOrdByKeyOrder uniqOrdOrder findDuplicateallSameallEqgeneralisedMerge$fHasMapMonadic[]UniqueStringCounterUniqueStringSourcenewUniqueStringSourcenewUniqueStringreadUniqueStringSourcecreateUniqueStringSourcemaxUniqueStringSourcesfirstUniqueStringCounterstepUniqueStringCounterfirstUniqueString newNonUnique$fOrdUniqueStringCounter$fEqUniqueStringCounter UnionFind newElementtoValueunionisSame sameElements $fEqUnionFindDurationdelayaftereveryusecsmsecssecsmins goesQuietly forkIODebug forkIOquietmapMConcurrentmapMConcurrentExcepmapMConcurrent_TSemnewTSemsynchronizeTSem ParallelExec CanAddSinks addNewSinkaddNewSinkGeneraladdNewSinkVeryGeneraladdNewSinkWithInitialaddNewQuickSinkaddNewQuickSinkGeneral addOldSinkSinkSinkID HasInvalidate invalidate newSinkIDnewSinknewSinkGeneralputSinkputSinkMultiple coMapSink coMapSink' coMapIOSink' addNewActionparallelExecVSemnewParallelExec parallelExecnewParallelSinknewParallelDelayedSink $fOrdSinkID $fEqSinkID$fHasInvalidateSinkID$fHasInvalidateSinkHasSimpleSourcetoSimpleSource HasSourcetoSource SimpleSourceUpdaterClientSource staticSourcestaticSourceIOvariableSourceapplyToUpdatervariableGeneralSource attachClientmap1map1IOmap2filter2 filter2IO foldSource foldSourceIO stepSource flattenSourcechoose seqSourcestaticSimpleSourcestaticSimpleSourceIOmapIOSeq readContentspairSimpleSourcessequenceSimpleSourcemkHistorySourcemkHistorySimpleSourceuniqSimpleSourcefoldSimpleSourceIOchange1addNewSourceActionstraceSimpleSource traceSourcenoLoopSimpleSourcemkIOSimpleSource$fMonadSimpleSource$fApplicativeSimpleSource$fHasMapIOSimpleSource$fFunctorSimpleSource$fCanAddSinkshasSourcexd$fHasSourceSimpleSourcexx$fHasSourceSourcexd$fHasSimpleSourceSimpleSourcex DiffElementInBothInFirstInSeconddiffdiff2$fShowDiffElementMessFnsalertFnerrorFn warningFn confirmFn messageFnhtkPres alertMess errorMess warningMess confirmMess messageMess htkPresent textQuery setMessFns errorMess2clockTimeToStringstringToClockTime HasDelayer toDelayerHasAddDelayerIO addDelayerIO HasAddDelayer addDelayerDelayer DelayedAction newDelayernewDelayedAction delayedActcancelDelayedAct$fOrdDelayedAction$fEqDelayedAction$fHasDelayerDelayerCompiledFormatStringcompileFormatString bashEscape emacsEscaperunFormatStringdoFormatStringhReadLtdinitialClockTime$fHasBinaryClockTimemUntypedLockedRegistryLockedRegistryUnsafeUnsafeRegistryGetSetRegistryDyn setValueAsDyn getValueAsDynUntypedUntypedRegistryRegistryKeyOpsRegistrydeleteFromRegistryBooldeleteFromRegistrylistKeysListRegistryContentslistRegistryContents$listRegistryContentsAndEmptyRegistrylistToNewRegistryGetSetRegistrytransformValue getValueOptgetValuesetValue NewRegistry newRegistry emptyRegistrygetValueDefaultgetRegistryValuegetRegistryValueSafe changeKeylockedRegistryCheck getValueSafe getValue'$fHasBinaryRegistrym$$fListRegistryContentsRegistryfromto$fKeyOpsRegistryRegistryfrom$fGetSetRegistryRegistryfromto$fNewRegistryRegistry$fKeyOpsRegistryUntypedfrom$fGetSetRegistryUntypedfromto$fNewRegistryUntyped$fGetSetRegistryDynUntypedfrom$fKeyOpsRegistryUnsafefrom$fGetSetRegistryUnsafefromto$fNewRegistryUnsafe"$fKeyOpsRegistryLockedRegistryfrom$$fGetSetRegistryLockedRegistryfromto$fNewRegistryLockedRegistryUniqueFileStoreUniqueFileCounterinitialUniqueFileCounterstepUniqueFileCounternewUniqueFileStoreensureDirectories getFilePath$fShowUniqueFileCounter$fReadUniqueFileCounter newTempFile NameMangler MangledNamenewNameManglernewMangledNamereadMangledNameStr StringClasstoString fromString fromStringWE AtomStringfirstAtomStringfromStringWEHackedfromStringErrormkFromStringWE$fQuickShowstringClass$fQuickReadstringClass$fStringClassAtomString$fHasBinaryStrm$fOrdAtomString$fEqAtomStringUTF8 ICStringLen mkICStringLenmkICStringLenExtrawithICStringLenbytesToICStringLenbytesFromICStringLentouchICStringLenreadICStringLenwriteToICStringLen$fHasBinaryICStringLenm$fEqICStringLen$fEqIOICStringLen$fOrdIOICStringLen$fShowICStringLen$fStringClassICStringLen$fStringClassUTF8BroadcasterClass broadcastSimpleBroadcaster BroadcasterGeneralBroadcasternewBroadcasternewSimpleBroadcasternewGeneralBroadcasterapplySimpleUpdateapplySimpleUpdate' applyUpdateapplyGeneralUpdateswitchOffSimpleSourcemirrorSimpleSourcemirrorSimpleSourceWithDelayer$fHasSourceGeneralBroadcasterxd$fHasSourceBroadcasterxd#$fHasSimpleSourceSimpleBroadcasterx$fHasSourceSimpleBroadcasterxx$$fBroadcasterClassSimpleBroadcasterx $fBroadcasterClassBroadcaster(,)VariableSetSource VariableSetVariableSetUpdate AddElement DelElement BeginGroupEndGroupKeyedHasKeytoKeynewEmptyVariableSetnewVariableSet updateSetsetVariableSetemptyVariableSetSourcemapVariableSetSourceIO'concatVariableSetSourcemapVariableSetSourcesingletonSetSourcelistToSetSource $fOrdKeyed $fEqKeyed$fFunctorVariableSetUpdate)$fHasSourceVariableSet[]VariableSetUpdateBlockIDBlocker newBlockernewBlockerWithPreAction newBlockID openBlocker closeBlockerblockVariableSet $fEqBlockID $fOrdBlockID VariableList attachListOp ListDrawernewPossetPosdelPosredrawcoMapListDrawermap2ListDraweremptyVariableList singletonListnewVariableListFromSetnewVariableListFromListcatVariableLists$fHasAddDelayerIOListDrawer$fHasAddDelayerVariableList$fFunctorVariableList VariableMapVariableMapUpdateVariableMapDatanewEmptyVariableMapnewVariableMapnewVariableMapFromFM updateMap lookupMaplookupWithDefaultMap mapToListmapToFMmapToVariableSetSourceaddToVariableMapdelFromVariableMapvariableMapToListlookupVariableMapgetVariableMapByKey6$fHasSourceVariableMapVariableMapDataVariableMapUpdate,$fHasSourceVariableMapSet[]VariableSetUpdate KeyedChangesnewKeyedChangessendKeyedChangesdeleteKeyedChange$fHasSourceKeyedChanges[]deltaGHC.IO.Handle.TypesHandleghc-prim GHC.TypesIntIOGHC.ReadReadGHC.ShowShowStringWrap