úÎ!|\s†      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€None4FSXmÇB fast-builderA  is like a , but an upper bound of its size is known before it actually starts filling buffers. It means just one overflow check is sufficient for each . fast-builderFAn internal type for making it easier to define builders. A value of  a can do everything a 3 can do, and in addition, returns a value of type a upon completion. fast-builderUsed in the implementation of #Ë. This is a message sent from the consumer thread to the builder thread, requesting the builder thread to temporarily pause execution. Later, the consumer thread may request resumption by filling the ‚. fast-builderUsed in the implementation of #î. This is an exception thrown by the consumer thread to itself when it has finished filling the first chunk of the output. After this, a thread will be forked, and the execution of the builder will be resumed in the new thread, using . fast-builder8A response from the builder thread to the driver thread. fast-builder1A synchronous exception was thrown by the builder  fast-builder!The builder thread has completed.  fast-builderuThe builder thread has finished generating one chunk, and waits for another request with the specified minimum size.  fast-builderThe builder thread has partially filled the current chunk, and wants to emit the bytestring to be included in the final output.  fast-builder7A request from the driver thread to the builder thread. fast-builderA mutable buffer. The ƒ specifies where the data start. fast-builderVariable-destination cases. fast-builder!Bytes are sent to another thread. fast-builderzBytes are accumulated in a contiguous buffer until the size limit is reached. After that, the destination switches to a . fast-builder0Specifies where bytes generated by a builder go. fast-builder=The destination of data changes while the builder is running. fast-builder-Bytes are accumulated in a contiguous buffer. fast-builder#Bytes are first accumulated in the , then flushed to the „. fast-builder+The state of a builder. The components are:The "cur" pointerThe "end" pointerThe state token fast-builder9 is an auxiliary type for efficiently generating a long …. It is isomorphic to lazy …., but offers constant-time concatanation via †.Use # to turn a  into a … fast-builderCreate a builder from a BuildM. fast-builder&Embed a builder in the BuildM context. fast-builderGet the . fast-builderGet the current pointer. fast-builderGet the end-of-buffer pointer.  fast-builderSet the current pointer.! fast-builderSet the end-of-buffer pointer.‡ fast-builder Perform IO.ˆ fast-builderEmbed a  transformer into .‰ fast-builderTurn a Š into a ." fast-builderRun a builder.# fast-builderTurn a  into a lazy ….Performance hint: when the resulting …à does not fit in one chunk, this function forks a thread. Due to this, the performance degrades sharply if you use this function from a bound thread. Note in particular that the main thread is a bound thread when you use ghc -threaded.'To avoid this problem, do one of these:Make sure the resulting …6 is consumed in an unbound thread. Consider using runInUnboundThread for this.Use other function to run the 1 instead. Functions that don't return a lazy … do not have this issue.Link your program without  -threaded.$ fast-builderLike #V, but allows the user to specify the initial and the subsequent desired buffer sizes.‹ fast-builder+Continue a suspended builder using threads.Œ fast-builder3Run the given suspended builder using a new thread. fast-builderThe body of the builder thread.Ž fast-builderRun a .% fast-builderTurn a  into a strict .& fast-builder Output a  to a „.' fast-builderLike  hPutBuffer°, but allows the user to specify the initial and the subsequent desired buffer sizes. This function may be useful for setting large buffer when high throughput I/O is needed.‘ fast-builderTurn a ’ into a , using UTF-8,( fast-builderTurn a value of type a into a , using the given Š.“ fast-builderTurn a  into a .) fast-builderTurn a value of type a into a , using the given ”.* fast-builderTurn a list of values of type a into a , using the given Š.+ fast-builderTurn a list of values of type a into a , using the given ”., fast-builderTurn a  to a .- fast-builderTurn a  to a . If the size of the L is larger than the given threshold, avoid copying it as much as possible.. fast-builderTurn a  to a . The 7 will be copied to the buffer, regardless of the size./ fast-builderLike .6, but assumes that the current buffer is large enough.0 fast-builderTurn a  to a . When possible, the given D will not be copied, and inserted directly into the output instead.• fast-builderThe body of the 0, worker-wrappered manually.1 fast-builderTurn a C String into a *. The behavior is undefined if the given –5 does not point to a constant null-terminated string.2 fast-builderTurn a — into a *. The behavior is undefined if the given —+ does not point to a constant memory block.3 fast-builder3 n ensures that at least ne bytes of free space is available in the current buffer, by allocating a new buffer when necessary.4 fast-builder4 n- allocates a new buffer, containing at least n bytes.˜ fast-builderThe body of the 4% function, worker-wrappered manually.™ fast-builder:Return the remaining size of the current buffer, in bytes.5 fast-builder5 b is equivalent to b$, but it allows GHC to assume that bd will be run at most once. This can enable various optimizations that greately improve performance.9There are two types of typical situations where a use of 5 is often a win:?When constructing a builder using a recursive function. e.g. rebuild $ foldr ....CWhen constructing a builder using a conditional expression. e.g. rebuild $ case x of ... š fast-builder/Wait for a request, and switch to a new buffer.› fast-buildergrowBuffer bufRef req1 reallocates the buffer, growing it by at least req.œ fast-builderPut the content of the  to the „, and empty the . fast-builderswitchQueue qRef minSize discards the old  and sets up a new empty  of at least minSize large. If the old ! is large enough, it is re-used.ž fast-builder%growBufferBounded dRef fptr bound req1 reallocates the buffer, growing it by at least req". If the buffer size would exceed bound1, it instead interrupts execution by throwing a , and switches to a .Ÿ fast-builderThrow a  and switches to a .6 fast-builder  =  stringUtf86   !"#$%&'()*+,-./0123456    !"#$%&'()*+,-./012345Noneoµ>CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€NonepäK#$%&'(),-.05CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€K#$%&'5(),0.-DOEHKPSVY\FILQTWZ]CGJMNRUX[^_`abcdefgh~€ijklmnopqrstuvw|}xyz{Nonesr1212¡      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…€†‡ˆ‰Š€‹ŒŽˆ‘’“”•ˆ–—ˆ˜Š™€‹š›ˆœ€žŸ€ž ¡¢£¤¥¦§¨€©ª«*fast-builder-0.1.0.0-gjXau7iscyFE8amvmgfMt$Data.ByteString.FastBuilder.InternalData.ByteString.FastBuilder)Data.ByteString.FastBuilder.Internal.Prim"Data.ByteString.FastBuilder.UnsafeBuildM runBuildMSuspendBuilderExceptionChunkOverflowExceptionResponseErrorDone MoreBufferInsertByteStringRequestQueue DynamicSink ThreadedSinkBoundedGrowingBufferDataSink GrowingBuffer HandleSink BuilderStateBuilder unBuilder mkBuilder useBuildergetSinkgetCurgetEndsetCursetEnd runBuildertoLazyByteStringtoLazyByteStringWithtoStrictByteString hPutBuilderhPutBuilderWith primBounded primFixedprimMapListBoundedprimMapListFixed byteStringbyteStringThresholdbyteStringCopybyteStringCopyNoCheckbyteStringInsert unsafeCStringunsafeCStringLen ensureBytesgetBytesrebuild$fIsStringBuilder$fMonoidBuilder$fSemigroupBuilder!$fExceptionChunkOverflowException$fShowChunkOverflowException"$fExceptionSuspendBuilderException$fShowSuspendBuilderException $fMonadBuildM$fApplicativeBuildM $fMonoidWrite$fSemigroupWrite$fShowResponse$fFunctorBuildMintHostint8int16LEint16BE int16Hostint32LEint32BE int32Hostint64LEint64BE int64HostwordHostword8word16LEword16BE word16Hostword32LEword32BE word32Hostword64LEword64BE word64HostfloatLEfloatBE floatHostdoubleLEdoubleBE doubleHostintDecint8Decint16Decint32Decint64DecwordDecword8Dec word16Dec word32Dec word64DecwordHexword8Hex word16Hex word32Hex word64Hex int8HexFixed int16HexFixed int32HexFixed int64HexFixed word8HexFixedword16HexFixedword32HexFixedword64HexFixed floatHexFixeddoubleHexFixedchar7string7char8string8charUtf8 stringUtf8 integerDecfloatDec doubleDecWritebaseGHC.MVarMVarghc-prim GHC.TypesIntGHC.IO.Handle.TypesHandlebytestring-0.10.8.2Data.ByteString.Lazy.Internal ByteStringGHC.Base<>io updateStatewriteBoundedPrim%Data.ByteString.Builder.Prim.Internal BoundedPrimcontinueBuilderThreadedtoBufferWriterbuilderThreadWithUnmask makeChunksData.ByteString.Builder.Extra BufferWriterData.ByteString.InternalbuilderFromStringStringwrite FixedPrimbyteStringInsert_Foreign.C.StringCString CStringLen getBytes_remainingBytes handleRequest growBuffer flushQueue switchQueuegrowBufferBounded chunkOverflow Data.String fromString