úÎWäÑÿ¯      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` a b c d e fghijklmno p q r s tuvwxyz{ | } ~  € � ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘ ’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë ÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄ Å Æ Ç ÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèé ê ë ì í î ïðñòóôõö÷øùúûüýþÿ     ! !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±"²"³"´"µ"¶"·"¸"¹"º"»"¼"½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïð#ñ#ò#ó#ô#õ#ö#÷#ø#ù#ú#û#ü#ý#þ#ÿ###$$$$$$$ $ $ $ $ $$$$%%%  &&&&&&& !"#$%&'()*+,-.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@(A(B(C(D(E(F(G(H(I(J(K&L&M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~**€*�*‚*ƒ*„*…+†+‡+ˆ+‰+Š+‹+Œ+�+Ž+�+�+‘+’+“+”+•+–+—+˜+™+š+›+œ+�+ž Ÿ   ¡ ¢ £ ¤ ¥,¦,§¨©$ª$«$¬$­$®$Š Safe)0DR½¾¿ÀÁÂÃÄ badc½¾¿ÀÁÂÃÄ ÄÃÂÁÀ¿¾½dcba½¾¿ÀÁÂÃÄ None)0DRÅÅÅÅ- BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableSafe)0DR  BSD-style FoundationstableportableSafe)0DRÆÇÈÉÊËÆÇÈÉÊËÆÇÈÉÊËÆÇÈÉÊË.None )0BDR¯Convert a byte value in Word to two Word9s containing the hexadecimal representation of the Word#GThe output words# are guaranteed to be included in the 0 to 2^7-1 rangejNote that calling convertByte with a value greater than 256 will cause segfault or other horrible effect.° hex word16± hex word32²³¯°±´µ¯°±²³¯°±´µ/None )0<=BDR¶*Various conversion between integral number·lossless integral convertion¸ Convert an + into a 5¶·¸¹º»¼·¸¶·¸¹º»¼0Safe)0DR[Z1 BSD-style*Nicolas Di Prima <nicolas@primetype.co.uk>statbleportableSafe)0DR"2 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableSafe)0DRxzy3 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )0BDR½:Flag record whether a specific byte array is pinned or not¾turn an Int# into a Bool<Since GHC 7.8, boolean primitive don't return Bool but Int#.¿A version friendly of andI#À!A version friendly of quotRemInt#Á*A version friendly fo copyAddrToByteArray#only available from GHC 7.8Â*A version friendly fo copyByteArrayToAddr#only available from GHC 7.8Ã*A mkWeak# version that keep working on 8.0,signature change in ghc-prim: * 0.4: mkWeakD :: o -> b -> c -> State RealWorld -> (State RealWorld, Weak b) * 0.5 :mkWeak :: o -> b -> (State RealWorld -> (State RealWorld, c )) -> State RealWorld -> (State RealWorld, Weak b)½ÄÅÆÇ¾¿ÀÁÂÃÈÉÊ5Ë½ÅÆÇ¾¿ÀÁÂÃÈÉÊ ½ÄÅÆÇ¾¿ÀÁÂÃÈÉÊ4 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0BDRÌSize in bytes type aliasEfor code documentation purpose only, just a simple type alias on Int#Í)Offset in a bytearray, string, type aliasEfor code documentation purpose only, just a simple type alias on Int#ÎFile size in bytesÌÍÎÌÍÎÌÍÎ5None )0DIRQ6 BSD-style FoundationNone )09;DRÌNegation support e.g. -(f x)ÎFractional Literal support'e.g. 1.2 :: Double 0.03 :: FloatÐIntegral Literal support&e.g. 123 :: Integer 123 :: Word8/ÌÍÎÏÐÑÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷ÌÍÎÏÐÑ,ÌÍÎÏÐÑÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷7 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DRP8 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableSafe)0DRONM9 BSD-style foundationSafe)0DRøù:Safe )*0DRú; BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DRû/Only to use internally for internal error casesÒ!for support of if .. then .. elseûÒ†üýP–•—˜š™³ þÿ     ¬ ¼»º¹µ´! "#$­&'CF()*+,-./01DE2IJK456789:;GH_^flw“¢¨©ª±¶·¸ÌÍÎÏÐÑûÒûÒ< BSD-style Foundation experimentalportableNone)0DRÓ(Class of types that can be byte-swapped.e.g. Word16, Word32, Word64Ó !ÓÓ= BSD-stylePsychohistorians experimentalportableNone)0DR"Simple Reader monad#Simple State monad "$%#&'()*+,-"$%#&'"$%#&'()*+,->None )0DRTÔ©Monad that can ensure cleanup actions are performed even in the case of exceptions, both synchronous and asynchronous. This usually excludes continuation-based monads.ÕiA generalized version of the standard bracket function which allows distinguishing different exit cases.ÖMonad that can catch exceptionØMonad that can throw exceptionÙ(Throw immediatity an exception. Only a Ö1 monad will be able to catch the exception using ×Ú Monad that can represent failureHSimilar to MonadFail but with a parametrized Failure linked to the MonadÛbThe associated type with the MonadFailure, representing what failure can be encoded in this monadÜ Raise a Failure through a monad.ÔÕÖרÙÚÛÜ./012 ÔÕÖרÙÚÛÜ ÔÕÖרÙÚÛÜ./012?None)0DRÝBasic Transformer classÞGLift a computation from an inner monad to the current transformer monadÝÞÝÞÝÞNone )/05DRONM[ZÔÕÖרÙÚÛÜÝÞ[ZÚÛÜØÙÖ×ÔÕÝÞONM@None)0DR3Identity Transformer 3456789:;<=35 3456789:;<=ANone)0DR  ¬$­[ZÖרÙÚÛÜÝÞ3None)0DRßReader Transformerß>àáâãäåæçèéêëìßàáâãáâãßàà ß>àáâãäåæçèéêëìNone)0DLRíState Transformerí?îïðñòóôõö÷øùúûüíîïðñòóïðñòóíîî í?îïðñòóôõö÷øùúûüBNone)09DRýIEEE754 Floating Pointýþÿ@Aýþÿýþÿ@ACNone)0DRJNon Negative Number literals, convertible through the generic Natural type>Number literals, convertible through the generic Integer type.Fall number are Enum'erable, meaning that you can move to next elementBCDEFGHIJKLMNOPQRSBCDEFGHIJKLMNOPQRSDNone)06DReRepresent class of things that can be added together, contains a neutral element and is commutative. )x + azero = x azero + x = x x + y = y + x  TUVWXYZ[\]^_`ab    TUVWXYZ[\]^_`ab 6ENone )069;DR 'Support for division between same typesCThis is likely to change to represent specific mathematic divisions 3Represent types that supports an euclidian division "(x div  y) * y + (x mod  y) == x9Represent class of things that can be multiplied together #x * midentity = x midentity * x = x$Identity element over multiplication;Multiplication of 2 elements that result in another elementƒRaise to power, repeated multiplication e.g. > a ^ 2 = a * a > a ^ 10 = (a ^ 5) * (a ^ 5) .. (^) :: (IsNatural n) => a -> n -> a+   cdefghijklmnopqrstuvwxyz{|}~€�‚    $   cdefghijklmnopqrstuvwxyz{|}~€�‚ 778F BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DIRBAn error related to the evaluation of a Partial value that failed.?it contains the name of the function and the reason for failurePartialiality wrapper.ƒ"Throw an asynchronous PartialErrorCCreate a value that is partial. this can only be unwrap using the  functionDewrap a possible partial value„*Partial function to get the head of a list…1Partial function to grab the value inside a Maybe †‡ƒ„…ˆ‰Š ƒ„…ˆ‰ †‡ƒ„…ˆ‰ŠG BSD-styleHaskell Foundation experimentalportableNone)0DRBig Endian valueLittle Endian value#.Convert a value in cpu endianess to big endian$5Convert from a big endian value to the cpu endianness%1Convert a value in cpu endianess to little endian&8Convert from a little endian value to the cpu endianness'&endianness of the current architecture !"#$%&'‹ŒÓ !"#$%&'  !"#$%&'‹ŒHNone)0DR�Ž��‘�Ž��‘�Ž��‘INone)06<=BDRT(OCast an integral value to another value that have the same representional size*Upsize an integral valueThe destination type b9 size need to be greater or equal than the size type of a,Downsize an integral valueR()*+,-.’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜ()*+,-.“”•—˜™šN())*+,--.’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜJNone)0DR/1Represent class of things that can be subtracted.dNote that the result is not necessary of the same type as the operand depending on the actual type. For example: ‹(-) :: Int -> Int -> Int (-) :: DateTime -> DateTime -> Seconds (-) :: Ptr a -> Ptr a -> PtrDiff (-) :: Natural -> Natural -> Maybe Natural/01ÝÞßàáâãäåæçèéêë/01/01ÝÞßàáâãäåæçèéêë16 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )069;DR3Round up, to the next integral.Also known as ceiling4$Round down, to the previous integralAlso known as floor5GTruncate to the closest integral to the fractional number closer to 0.TThis is equivalent to roundUp for negative Number and roundDown for positive Number6Round to the nearest integral roundNearest 3.64 > roundNearest 3.4 37-types that have sign and can be made absolute:Sign of a signed number23456789:;<=ì>?@ABCDEFGH(ýþÿ     /0123456789:;<=(789  /01   :;<=23456ýþÿ23456789:;<=ì>?@ABCDEFGHNone)09DRJ/Method to support basic trigonometric functionsKthe famous pi valueLsineMcosineNtanOsine-1Pcosine-1Q tangent-1Rhyperbolic sineShyperbolic cosineThyperbolic tangentUhyperbolic sine-1Vhyperbolic cosine-1Whyperbolic tangent-1JKLMNOPQRSTUVWXYJKLMNOPQRSTUVWJKLMNOPQRSTUVWJ KLMNOPQRSTUVWXYK BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )0ABDRTZ)Primitive monad that can handle mutation.For example: IO and ST.[3type of state token associated with the PrimMonad m\0type of variable associated with the PrimMonad m]mUnwrap the State# token to pass to a function a primitive function that returns an unboxed state and a value.^&Throw Exception in the primitive monad_(Run a Prim monad from a dedicated state#`&Build a new variable in the Prim Monada#Read the variable in the Prim Monadb$Write the variable in the Prim Monadí just like unwrapPrimMonad9 but throw away the result and return just the new State#î+Convert a prim monad to another prim monad.ˆThe net effect is that it coerce the state repr to another, so the runtime representation should be the same, otherwise hilary ensues.ï%Convert any prim monad to an ST monadð%Convert any prim monad to an IO monadñ$Convert any IO monad to a prim monadò(Touch primitive lifted to any prim monadZ[\]^_`abíîïðñòóôZ[\]^_`abíîïðñò Z[\]^_`abíîïðñòóôL BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )0BDRc-Create a pointer with an associated finalizerf3Check if 2 final ptr points on the same memory bits¼it stand to reason that provided a final ptr that is still being referenced and thus have the memory still valid, if 2 final ptrs have the same address, they should be the same final ptrg$create a new FinalPtr from a Pointerh'Create a new FinalPtr from a ForeignPtri.Cast a finalized pointer from type a to type bk}Looks at the raw pointer inside a FinalPtr, making sure the data pointed by the pointer is not finalized during the call to flUnsafe version of kcdefghijklõö÷øù cdefghijkl cdefghijklõö÷øùNone%&),0ADQRTmGConstraint to check if a natural is within a specific bounds of a type.i.e. given a Nat n", is it possible to convert it to ty without losing informationn?Check if a Nat is in bounds of another integral / natural typesoGGet Maximum bounds of different Integral / Natural types related to Nat mnopqrstuvwxy%<=>?@ABmnmnopqrstuvwxy<%mn@=>?ABptsrquyxwvonm mnopqrstuvwxy BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone%&),0ADQRTzú{û|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–z{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–z{|{�‚ƒ€„~�…ކˆ‡‰Š‹Œ��‘’“”•–}zú{û|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–M BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )0BDIR—Size of a data structure.@More specifically, it represents the number of elements of type ty# that fit into the data structure.7lengthSize (fromList ['a', 'b', 'c', 'ó']) :: Size CharSize 4Same caveats as ™ apply here.ü"Size of a data structure in bytes.™:Offset in a data structure consisting of elements of type ty.¶Int is a terrible backing type which is hard to get away from, considering that GHC/Haskell are mostly using this for offset. Trying to bring some sanity by a lightweight wrapping.ýIOffset in bytes used for memory addressing (e.g. in a vector, string, ..)þFile size in bytes—˜ü™šýþÿ     —˜ü™šýþÿ   —˜ü™šýþÿ     N BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DR›?Exception during an operation accessing the vector out of boundXRepresent the type of operation, the index accessed, and the total length of the vector.<The type of operation that triggers an OutOfBound exception.&OOB_Index: reading an immutable vector"OOB_Read: reading a mutable vector!OOB_Write: write a mutable vector› !"#$%&› !"#$ › !"#$%&ONone)0DRœ/Data that can be fully evaluated in Normal Form/œ�žŸ'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQœ�žŸ.œ�žŸ'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQP BSD-style foundationNone)0DRR5Defines the maximum size in bytes of unpinned arrays.?You can change this value by setting the environment variable !HS_FOUNDATION_UARRAY_UNPINNED_MAX to an unsigned integer number. Note: We use SÔ here. If the environment variable changes during runtime and the runtime system decides to recompute this value, referential transparency is violated (like the First Order violated the Galactic Concordance!).CTODO The default value of 1024 bytes is arbitrarily chosen for now.RRRQNone)09;BDRT  NRepresent the accessor for types that can be stored in the UArray and MUArray.=Types need to be a instance of storable and have fixed sized.¡%get the size in bytes of a ty element¢-return the element stored at a specific index£.Read an element at an index in a mutable array¤7Write an element to a specific cell in a mutable array.¥�Read from Address, without a state. the value read should be considered a constant for all pratical purpose, otherwise bad thing will happens.¦4Read a value from Addr in a specific primitive monad§3Write a value to Addr in a specific primitive monadTICast a Size linked to type A (Size A) to a Size linked to type B (Size B)( ¡¢£¤¥¦§UVWXYZ[\T]^_`abcdefghijklmnopqrs   ¢£¤¡¥¦§UVWXYZT]^_`ab! ¡¢£¤¥¦§UVWXYZ[\T]^_`abcdefghijklmnopqrsRNone )0BDRT¨PA Mutable block of memory containing unpacked bytes representing values of type tyªHA block of memory containing unpacked bytes representing values of type tytCreate an empty block of memory­MReturn the element at a specific index from an array without bounds checking.NReading from invalid memory can return unpredictable and invalid values. use index if unsure.u%make a block from a list of elements.vtransform a block to a list.w"Check if two vectors are identicalxCompare 2 vectorsy7Append 2 arrays together by creating a new bigger array®$Freeze a mutable block into a block.|If the mutable block is still use after freeze, then the modification will be reflected in an unexpected way in the Block.¯Thaw an immutable block.‰If the immutable block is modified, then the original immutable block will be modified too, but lead to unexpected results when queryingz7Create a new mutable block of a specific size in bytes.qNote that no checks are made to see if the size in bytes is compatible with the size of the underlaying element ty in the block.use { if unsure{3Create a new mutable block of a specific N size of ty elements|ECopy a number of elements from an array to another array with offsets}]Copy a number of bytes from a MutableBlock to another MutableBlock with specific byte offsets~PCopy a number of bytes from a Block to a MutableBlock with specific byte offsets<read from a cell in a mutable block without bounds checking.NReading from invalid memory can return unpredictable and invalid values. use read if unsure.€;write to a cell in a mutable block without bounds checking.^Writing with invalid bounds will corrupt memory and your program will become unreliable. use write if unsure.!¨©ª«�¬‚tƒ­uvwxy„®¯z{|destination mutable blockoffset at destinationsource mutable blockoffset at sourcenumber of elements to copy…destination mutable blockoffset at destination source blockoffset at sourcenumber of elements to copy}destination mutable blockoffset at destinationsource mutable blockoffset at sourcenumber of elements to copy~destination mutable blockoffset at destination source blockoffset at sourcenumber of elements to copy€†‡ˆ‰Š‹Œ¨©ª«¬‚­®¯z{|…}~€¨©ª«�¬‚tƒ­uvwxy„®¯z{|…}~€†‡ˆ‰Š‹ŒS BSD-styleHaskell FoundationNone )0BDRT�$Return the length of a Mutable BlockEnote: we don't allow resizing yet, so this can remain a pure functionŽ*Return if a Mutable Block is pinned or not�(Set all mutable block element to a value�read a cell in a mutable array.2If the index is out of bounds, an error is raised.‘#Write to a cell in a mutable array.2If the index is out of bounds, an error is raised.�’Ž��‘¨©ª«®¯z{|…}~€�’Ž��‘�’Ž��‘ BSD-styleHaskell FoundationNone )0BDRT°+return the number of elements of the array.±LCopy all the block content to the memory starting at the destination address²Create a new array of size /n by settings each cells through the function f.µ Thaw a Block into a MutableBlockqthe Block is not modified, instead a new Mutable Block is created and its content is copied to the mutable block·4Copy every cells of an existing Block to a new Block¸5Return the element at a specific index from an array.5If the index @n is out of bounds, an error is raised.¹Map all element a from a block to a new block of b°±the source block to copy8The destination address where the copy is going to start²(the size of the block (in element of ty),the function that set the value at the indexthe array created³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎ'¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎ'ª«¨©°¬¯®­µ¶·²³´¸¹º¼»½¾ÀÁ¿ÂÃÉÄÅÆÇÈÊËÌÍα°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎT BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )0BDR“(Check if the byte is a continuation byte”JGet the number of following bytes given the first byte of a UTF8 sequence.•(Check if the byte is a continuation byte–JGet the number of following bytes given the first byte of a UTF8 sequence. —˜™“”•–𛓔•–—˜™“”•–š›U BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )0BDRœCopy all bytes from a byteArray to a mutableByteArray�$Copy @nbBytes bytes from a byteArray to a mutableByteArray starting at an offsetžsame as œ except copy using 32 bits wordŸsame as œ except copy using 64 bits wordœ�žŸ ¡œ�žŸ ¡œ�žŸ ¡VNone)0DR¢£¤¥¦¢£¤¥¦¢£¤¥¦(c) Vincent Hanquez 2014-2017 BSD-styleVincent Hanquez provisionalnon-portable (requires POSIX)None)0DR…ÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS…ÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS…ÐÏèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRçæåäãâáSàßÞÝÜÛÚÙØ×ÖÕÔÓÒÑ…ÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSWNone)0DR…ÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS(c) Vincent Hanquez 2014-2017 BSD-styleVincent Hanquez provisionalnon-portable (requires Linux)None)0DRTUVWXYZ[\]^_`abcdefghijklmnopqrTUVWXYZ[\]^_`abcdefghijklmnopqrVUTZ[\]^_`abcdefghijklmnopqrYXWTUVWXYZ[\]^_`abcdefghijklmnopqrX BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DR§¨©§¨§¨©Y BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalGoodNone )0DRTªqtry to fill the ptr with the amount of data required. Return the number of bytes, or a negative number otherwise «¬­®¯ª°±²³´«¯ª°± «¬­®¯ª°±²³´ BSD-style foundation experimentalportableNone)0:DR sPath type classddefines the Path associated types and basic functions to implement related to the path manipulation # TODO, add missing enhancement: ~splitExtension :: PathEnt path -> (PathEnt path, PathEnt path) addExtension :: PathEnt path -> PathEnt path -> PathEnt path ( .$) :: path -> PathEnt path -> path (- .") :: path -> PathEnt path -> path t'the associated PathEntity of the given path— this type is the minimal element contained in the Path a Path is not a collection but it is possible to see this associated type equivalent to the Z type familyu#the associated prefix of the given pathin the case of a [\-, it is a void (i.e. `()`) in the case of a []!, it is the schema, host, port...v'the associated suffix of the given pathin the case of the [\/, it is a void (i.e. `()`) in the case of the []!, it is a the query, the fragmentw"join a path entity to a given pathx+split the path into the associated elementsy+build the path from the associated elementsz*parent is only going to drop the filename.Gif you actually want to reference to the parent directory, simply uses:  parent "." = "." <> ".." parent ("foo.hs" :: FilePath).%parent ("foo/bar/baz.hs" :: FilePath)foo/bar{"get the filename of the given path.If there is no filename, you will receive the  of the tfilename ("foo.hs" :: FilePath)foo.hs'filename ("foo/bar/baz.hs" :: FilePath)baz.hs|get the path prefix information prefix ("/home/tab" :: FilePath)Absoluteprefix ("home/tab" :: FilePath)Relative#or for URI (TODO, not yet accurate) prefix " .http://github.com/vincenthz/hs-foundation?w=1"; == URISchema http Nothing Nothing "github.com" Nothing }get the path suffix information suffix ("/home/tab" :: FilePath)()#or for URI (TODO, not yet accurate) suffix " .http://github.com/vincenthz/hs-foundation?w=1"' == URISuffix (["w", "1"], Nothing) stuvwxyz{µ¶|} stuvwxyz{|} stuvwxyz{|}stuvwxyz{µ¶|} BSD-style foundation experimentalportableNone)0DRˆ TODO this is not implemented yet ~€�‚ƒ„…†‡ˆ‰Š ~€�‚ƒ„…†‡ˆ‰ ˆ‰†‡„…‚ƒ€�~~€�‚ƒ„…†‡ˆ‰Š BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )09;<=DR‹1Class of things that can be converted from a to b‹Œ�Ž‹Œ�‹Œ�‹Œ�Ž^ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DR·?Simple helper to split a list repeatly when the predicate match·¸¹º»¼·¸¹º»¼·¸¹º»¼_ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )069;DR�1Collection of things that can be looked up by Key��‘’½��‘’��‘’½ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableSafe)0DRYWVXYXWV` BSD-style*Nicolas Di Prima <nicolas@primetype.co.uk>stableportableNone)0DR“Either a or b or both.“”•–¾¿À“–”•“”•–¾¿À BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )069;DR-Ó#$%&()*+,-.Z[\]^_`abœ�žŸ ¢£¤¡¥¦§¨ª“–”•/ ¡¢£¤¥¦§Z[\]^_`abÓ%&#$*+,--.())œ�Ÿž“”•–ª¨a BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)05DR—0Class of product types that have a third elementš1Class of product types that have a second element�0Class of product types that have a first element Strict tuple (a,b,c,d)¢Strict tuple (a,b,c)¤Strict tuple (a,b)#—˜™š›œ�žŸ ¡¢£¤¥ÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔ—˜™š›œ�žŸ ¡¢£¤¥—˜™š›œ�žŸ ¡¢£¤¥ÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone ),09;<=DR¦RA generalized version of indexed accessor allowing access to tuples n'th element.Indexing starts at 1, as Ÿ is used to get first element.¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º¦§¨¦§¨¦§¨©ª«¬­®¯°±²³´µ¶·¸¹ºbNone)0DRÕCompute the size of the listÖSum the element in a listÕÖÕÖÕÖcNone)0DIR».The in-progress state of a building operation.ˆThe previous buffers are in reverse order, and this contains the current buffer and the state of progress packing the elements inside. »¼½¾¿ÀÁÂà »¼½¾¿ÀÁÂû¼½¾¿ÀÁÂà None)0DRÄUnsafe Shift Left OperatorÅUnsafe Shift Right OperatorÆ&Round up (if needed) to a multiple of  alignment closst to m alignment needs to be a power of two.alignRoundUp 16 8 = 16 alignRoundUp 15 8 = 16Ç(Round down (if needed) to a multiple of  alignment closest to m alignment needs to be a power of two /alignRoundDown 15 8 = 8 alignRoundDown 8 8 = 8ÄÅÆNumber to AlignAlignment (power of 2)ÇNumber to AlignAlignment (power of 2)‘��Ž�Œ‹Š‰ˆ‡†…„ƒ‚�€~}|{ÄÅÆÇÄÅ‘��Ž�Œ‹Š‰ˆ‡†…„ƒ‚�€~}|{ÆÇÄÅÆÇd BSD-style FoundationNone )0:BDIR×ADifferent way to encode a Character in UTF8 represented as an ADTØAnextAsciiBa specialized to get a digit between 0 and 9 (included)ÙTransform a Unicode code point ( intovnote that we expect here a valid unicode code point in the *allowed* range. bits will be lost if going above 0x10ffff×ÚÛÜÝÞߨàáâÙãäå×ÚÛÜÝÞߨàáâÙãäå ×ÚÛÜÝÞߨàáâÙãäåe BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )0BDRT È7A Mutable array of types built on top of GHC primitive./Element in this array can be modified in place.æread a cell in a mutable array.2If the index is out of bounds, an error is raised.ç<read from a cell in a mutable array without bounds checking.NReading from invalid memory can return unpredictable and invalid values. use æ if unsure.è#Write to a cell in a mutable array.2If the index is out of bounds, an error is raised.é;write to a cell in a mutable array without bounds checking.^Writing with invalid bounds will corrupt memory and your program will become unreliable. use è if unsure.É-Create a new pinned mutable array of size @n.Ball the cells are uninitialized and could contains invalid values.?All mutable arrays are allocated on a 64 bits aligned addressesÊ&Create a new mutable array of size @n.½When memory for a new array is allocated, we decide if that memory region should be pinned (will not be copied around by GC) or unpinned (can be moved around by GC) depending on its size.MYou can change the threshold value used by setting the environment variable !HS_FOUNDATION_UARRAY_UNPINNED_MAX.êECopy a number of elements from an array to another array with offsetsë1return the numbers of elements in a mutable arrayÌLCreate a pointer on the beginning of the mutable array and call a function f.)The mutable buffer can be mutated by the f@ function and the change will be reflected in the mutable arraycIf the mutable array is unpinned, a trampoline buffer is created and the data is only copied when f return.ÈìíîïðæçèéÉñòÊóôË"the start pointer with a finalizer/the number of elements (in elements, not bytes)êdestination arrayoffset at destination source arrayoffset at sourcenumber of elements to copyõëö÷ÌÈìíïæçèéÉÊóôËêõëöÌÈìíîïðæçèéÉñòÊóôËêõëö÷ÌfNone)0DRøMutable Byte Array aliasøùøùøùg BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone $)0BDORTÍ/An array of type built on top of GHC primitive.”The elements need to have fixed sized and the representation is a packed contiguous array in memory that can easily be passed to foreign interfaceú4Copy every cells of an existing array to a new arrayû!Thaw an array to a mutable array.‚the array is not modified, instead a new mutable array is created and every values is copied, before returning the mutable array.ü5Return the element at a specific index from an array.5If the index @n is out of bounds, an error is raised.ýMReturn the element at a specific index from an array without bounds checking.NReading from invalid memory can return unpredictable and invalid values. use ü if unsure.þ+return the number of elements of the array.ÿCopy nu sequential elements from the specified offset in a source array to the specified position in a destination array.mThis function does not check bounds. Accessing invalid memory can return unpredictable and invalid values.aAllocate a new array with a fill function that has access to the elements of the source array.%Freeze a mutable array into an array./the MUArray must not be changed after freezing.Thaw an immutable array.*The UArray must not be used after thawing.Create a new array of size /n by settings each cells through the function f.*Create a pinned array that is filled by a filler- function (typically an IO call like hGetBuf)&make an array from a list of elements.transform an array to a list."Check if two vectors are identicalCompare 2 vectors 7Append 2 arrays together by creating a new bigger array 9update an array by creating a new array with the updates.Jthe operation copy the previous array, modify it in place, then freeze it.ÒLCopy all the block content to the memory starting at the destination addressU   ÍÎÏúûüýÐ"the start pointer with a finalizer/the number of elements (in elements, not bytes)Ñþÿdestination arrayoffset at destination source arrayoffset at sourcenumber of elements to copy Source arrayLength of the destination array4Function called for each element in the source arrayReturns the filled new arraythe size of the array,the function that set the value at the indexthe array createdthe size of the arrayfilling function that  Òthe source array to copy8The destination address where the copy is going to startÓÔ !"#$%&'()*+,-./0123456789:;<=>Õ?@ABCDEK ¢£¤¡¥¦§çéÊÌÍÎÏúûüýÐÑþÿ ÒÓÔ !"#$%&')*+,-./0123456789:;<=>ÕQ   ÍÎÏúûüýÐÑþÿ  ÒÓÔ !"#$%&'()*+,-./0123456789:;<=>Õ?@ABCDE BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DRAFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzcdefghijklËÐ cdefighkljÐËh BSD-style Foundation experimentalportableNone)0:DR{Zthe unit element use for the encoding. i.e. Word8 for ASCII7 or UTF8, Word16 for UTF16...|Idefine the type of error handling you want to use for the next function. %type Error UTF8 = Either UTF8_Invalid}nconsume an `Unit encoding` and return the Unicode point and the position of the next possible `Unit encoding`~Yhelper to convert a given Array in a given encoding into an array with another encoding.tThis is a helper to convert from one String encoding to another. This function is (quite) slow and needs some work.z``` let s16 = ... -- string in UTF16 -- create s8, a UTF8 String let s8 = runST $ convertWith UTF16 UTF8 (toBytes s16) print s8 ```{|}€~Input's encoding typeOutput's encoding typethe input raw array{|}€~{|}€~i BSD-style Foundation experimentalportableNone)0BDR�>validate a given byte is within ASCII characters encoring size+This function check the 8th bit is set to 0‚fconsume an Ascii7 char and return the Unicode point and the position of the next possible Ascii7 char ƒ„…†‡�ˆ‚method to access a given byteindex of the byte_either successfully validated the ASCII char and returned the next index or fail with an error‰\expecting it to be a valid Ascii character. otherwise this function will throw an exceptionŠ‹ƒ„…†‡ƒ„…†‡�ˆ‚‰Š‹j BSD-style Foundation experimentalportableNone)0BDR Œ�Ž��‘’“”Œ�Ž�Œ�Ž��‘’“”k BSD-style Foundation experimentalportableNone)0BDR •–—˜™š›œ�•–—˜™•–—˜™š›œ�l BSD-style Foundation experimentalportableNone)0BDRžŸ ¡¢£¤¥ž ¡žŸ ¡¢£¤¥m BSD-style foundation experimentalportableNone )0:BDR¦Hassuming the given ByteArray is a valid modified UTF-8 sequence of bytesJWe only modify the given Unicode Null-character (0xC080) into a null bytes¡FIXME: need to evaluate the kind of modified UTF8 GHC is actually expecting it is plausible they only handle the Null Bytes, which this function actually does.§¨¦¦§¨¦n BSD-style FoundationNone )0:BDIR©Mutable String Buffer.–Use as an *append* buffer, as UTF8 variable encoding doesn't really allow to change previously written character without potentially shifting bytes.Ö6Opaque packed array of characters in the UTF8 encodingªsize in bytes.this size is available in o(1)«(Convert a String to a list of characters/The list is lazily created as evaluation needed¬-Create a new String from a list of characterszThe list is strictly and fully evaluated before creating the new String, as the size need to be computed before filling.­5Allocate a MutableString of a specific size in bytes.©®Ö¯°ª«¬±²³´­$in number of bytes, not of elements.µ¶·¸¹º©®Ö¯°ª«¬±²³´­µ©®Ö¯°ª«¬±²³´­µ¶·¸¹ºoNone )+0ABDRT×,stop execution and displays an error message×××pNone)0DRØ&Use the Show class to create a String.yNote that this is not efficient, since an intermediate [Char] is going to be created before turning into a real String.ØØØq BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )0:BDIR:ÙDVarious String Encoding that can be use to convert to and from bytes» UTF8 Encoderß?Possible failure related to validating bytes of UTF8 sequences.¼"Validate a bytearray for UTF8'nessUOn success Nothing is returned On Failure the position along with the failure reason½ Similar to ¼ but works on a ø¾Check if a String is null¿GCreate a string composed of a number @n of Chars (Unicode code points).Zif the input @s contains less characters than required, then the input string is returned.ÀSCreate a string with the remaining Chars after dropping @n Chars from the beginningÁiSplit a string at the Offset specified (in Char) returning both the leading part and the remaining part.ÂCReturn the offset (in bytes) of the N'th sequence in an UTF8 Stringà Similar to ¿ but from the endÄ Similar to À but from the endÅ Similar to Á but from the endÆ:Split on the input string using the predicate as separatore.g. êsplitOn (== ',') "," == ["",""] splitOn (== ',') ",abc," == ["","abc",""] splitOn (== ':') "abc" == ["abc"] splitOn (== ':') "abc::def" == ["abc","","def"] splitOn (== ':') "::abc::def" == ["","","abc","","def"]Ç8Internal call to make a substring given offset in bytes.tThis is unsafe considering that one can create a substring starting and/or ending on the middle of a UTF8 sequence.È;Internal call to split at a given index in offset of bytes.bThis is unsafe considering that one can split in the middle of a UTF8 sequence, so use with care.ÉMBreak a string into 2 strings at the location where the predicate return TrueÊEBreak a string into 2 strings at the first occurence of the characterËApply a  predicateY to the string to return the longest prefix that satisfy the predicate and the remainingÌ>Return whereas the string contains a specific character or notÍIntersperse the character sep% between each character in the string "intersperse ' ' "Hello Foundation"!"H e l l o F o u n d a t i o n"ÎAllocate a new StringI with a fill function that has access to the characters of the source String.ÏLength of a String using Sizethis size is available in o(n)Ð*Length of a string in number of charactersÑReplicate a character c n$ times to create a string of length nÒCopy the StringkThe slice of memory is copied to a new slice, making the new string independent from the original string..ÓCreate a single element StringÔ"Unsafely create a string of up to sz bytes. The callback fÄ needs to return the number of bytes filled in the underlaying bytes buffer. No check is made on the callback return values, and if it's not contained without the bounds, bad things will happen.ÕLMonomorphically map the character in a string and return the transformed oneÖAAppend a Char to the end of the String and return this new String×HPrepend a Char to the beginning of the String and return this new StringØUExtract the String stripped of the last character and the last character if not emptyIf empty, Nothing is returnedÙXExtract the First character of a string, and the String stripped of the first character.If empty, Nothing is returnedÚLLook for a predicate in the String and return the matched character, if any.Û=Sort the character in a String using a specific sort functionÜ1Filter characters of a string using the predicateÝReverse a stringÞ$Return the nth character in a StringlCompared to an array, the string need to be scanned from the beginning since the UTF8 encoding is variable.ßWReturn the index in unit of Char of the first occurence of the predicate returning True!If not found, Nothing is returnedã=Convert a ByteArray to a string assuming a specific encoding.It returns a 3-tuple of:@The string that has been succesfully converted without any errorAn optional validation errorˆThe remaining buffer that hasn't been processed (either as a result of an error, or because the encoded sequence is not fully available)ÿConsidering a stream of data that is fetched chunk by chunk, it's valid to assume that some sequence might fall in a chunk boundary. When converting chunks, if the error is Nothing and the remaining buffer is not empty, then this buffer need to be prepended to the next chunkä*Convert a UTF8 array of bytes to a String.qIf there's any error in the stream, it will automatically insert replacement bytes to replace invalid sequences.›In the case of sequence that fall in the middle of 2 chunks, the remaining buffer is supposed to be preprended to the next chunk, and resume the parsing.àSDecode a stream of binary chunks containing UTF8 encoding in a list of valid String`Chunk not necessarily contains a valid string, as a UTF8 sequence could be split over 2 chunks.åcConvert a Byte Array representing UTF8 data directly to a string without checking for UTF8 validitycIf the input contains invalid sequences, it will trigger runtime async errors when processing data.In doubt, use ãæ6Convert a String to a bytearray in a specific encodingeif the encoding is UTF8, the underlying buffer is returned without extra allocation or any processingJIn any other encoding, some allocation and processing are done to convert.ç3Split lines in a string using newline as separationè2Split words in a string using spaces as separation words "Hello Foundation"  Hello,  Foundation á&Append a character to a String builderâ,Create a new String builder using chunks of  sizeChunksIéRead an Integer from a StringCConsume an optional minus sign and many digits until end of string.ëRead a Natural from a String(Consume many digits until end of string.ìTry to read a Doubleí+Try to read a floating number as a Rationalÿ Note that for safety reason, only exponent between -10000 and 10000 is allowed as otherwise DoS/OOM is very likely. if you don't want this behavior, switching to a scientific type (not provided yet) that represent the exponent separately is the advised solution.î)Read an Floating like number of the form:  1  numbers [ ^  numbers ] [ ( e | E ) [ 1 ]  number ]Call a function with:0A boolean representing if the number is negativeYThe digits part represented as a single natural number (123.456 is represented as 123456)?The number of digits in the fractional part (e.g. 123.456 => 3)The exponent if any6The code is structured as a simple state machine that:Optionally Consume a 1 sign$Consume number for the integral part OptionallyConsume ^5Consume remaining digits if not already end of stringOptionally Consume a e or E follow by an optional 1 and a numberã)Take decimal digits and accumulate it in acc?The loop starts at the offset specified and finish either when:It reach the end of the stringIt reach a non-ASCII character8It reach an ASCII character that is not a digit (0 to 9)Otherwise each iterations:(Transform the ASCII digits into a numberscale the accumulator by 103Add the number (between 0 and 9) to the accumulatorIt then returns:The new accumulated value'Whether it stop by end of string or not$The end offset when the loop stoppedQIf end offset == start offset then no digits have been consumed by this functionä(same as decimalDigitsBA for a bytearray#å-same as decimalDigitsBA specialized for ptr #ï Convert a Ö_ to the upper-case equivalent. Does not properly support multicharacter Unicode conversions.ð Convert a Ö_ to the upper-case equivalent. Does not properly support multicharacter Unicode conversions.NæÙÚÛÜÝÞ»çßàáâ¼½èéê뾿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎ Source string)Length of the destination string in bytes7Function called for each character in the source StringReturns the filled new stringÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßìãäàåíæçèáâîéêëìíîãäåïðïð>©®Ö¯ÙÛÚÜÝÞßáàâ½¾¿ÀÁÃÄÅÆÇÉÊËÌÍÐÑÒÓÔÕÖרÙÚÛÜÝÞßãäàåæçèáâéêëìíîïðEæÙÚÛÜÝÞ»çßàáâ¼½èéê뾿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßìãäàåíæçèáâîéêëìíîãäåïðïð BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DRÖÙÛÚÜÝÞßáàâãäåæçèïðÖÙÚÛÜÝÞãäåæßàáâçèïð BSD-style foundation experimentalportableNone)0DRñ4Enumeration of the known GHC supported architecture.9get the operating system on which the program is running.Either return the known ú or a strict Ö of the OS name.This function uses the base's ñ function.<get the machine architecture on which the program is running1Either return the known architecture or a Strict Ö of the architecture name.This function uses the base's ò function.get the compiler nameKget the compilerName from base package but convert it into a strict String*returns the number of CPUs the machine hasñòóôõö÷øùúûüýþÿLUTSR !"'ñòóôõö÷øùúýûüþÿúûüýþÿñòóôõö÷øù !"'LUTSRñòóôõö÷øùúûüýþÿ None)0DRéêëìíîêéëìíî! BSD-style FoundationstablegoodNone)0DRGet some of the system entropy BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DR ÉÊÌÍÎÏÑÒÓÔÕ ÍÎÏÑÓÒÔÕÊÉÌr BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )0BDRTMutable Array of a Array of aó1return the numbers of elements in a mutable arrayô1return the numbers of elements in a mutable arrayõ5Return the element at a specific index from an array.5If the index @n is out of bounds, an error is raised.öMReturn the element at a specific index from an array without bounds checking.NReading from invalid memory can return unpredictable and invalid values. use õ if unsure.÷read a cell in a mutable array.2If the index is out of bounds, an error is raised.ø<read from a cell in a mutable array without bounds checking.NReading from invalid memory can return unpredictable and invalid values. use ÷ if unsure.ù#Write to a cell in a mutable array.2If the index is out of bounds, an error is raised.ú;write to a cell in a mutable array without bounds checking.^Writing with invalid bounds will corrupt memory and your program will become unreliable. use ù if unsure.û%Freeze a mutable array into an array..the MArray must not be changed after freezing.üThaw an immutable array.)The Array must not be used after thawing.ý!Thaw an array to a mutable array.‚the array is not modified, instead a new mutable array is created and every values is copied, before returning the mutable array.þ'Copy the element to a new element arrayÿECopy a number of elements from an array to another array with offsetsCopy nu sequential elements from the specified offset in a source array to the specified position in a destination array.mThis function does not check bounds. Accessing invalid memory can return unpredictable and invalid values.aAllocate a new array with a fill function that has access to the elements of the source array.&Create a new mutable array of size @n.Ball the cells are uninitialized and could contains invalid values.|All mutable arrays are allocated on a 64 bits aligned addresses and always contains a number of bytes multiples of 64 bits.Create a new array of size /n by settings each cells through the function f.7Append 2 arrays together by creating a new bigger arrayGóôõö÷øùúûüýþÿdestination arrayoffset at destination source arrayoffset at sourcenumber of elements to copydestination arrayoffset at destination source arrayoffset at sourcenumber of elements to copy Source arrayLength of the destination array4Function called for each element in the source arrayReturns the filled new arraythe size of the array,the function that set the value at the indexthe array created      !"#$%&'()*+,-./01234567/óôõö÷øùúûüýþ    !"#$%&'*+,-./Eóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./01234567sNone)0DR89:;<89:;<t BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DRElement type of a collectionu BSD-style foundation experimentalportableNone)0DR-Collections that can be built chunk by chunk.Use the  instance of Á to chain  operations and feed it into :HrunST $ build 32 (append 'a' >> append 'b' >> append 'c') :: UArray Char"abc">Mutable collection type used for incrementally writing chunks.)Unit of the smallest step possible in an  operation.qA UTF-8 character can have a size between 1 and 4 bytes, so this should be defined as 1 byte for collections of (. =>?@»¼½¾¿ÀÁÂÃ==>?@v BSD-style Foundation experimentalportableNone )0:ADRT &A set of methods for ordered colectionCheck if a collection is empty,Length of a collection (number of Element c)1Check if a collection contains a specific elementThis is the inverse of .;Check if a collection does *not* contain a specific elementThis is the inverse of . 'Get the maximum element of a collection!'Get the minimum element of a collection"ADetermine is any elements of the collection satisfy the predicate#ADetermine is all elements of the collection satisfy the predicate$$NonEmpty property for any Collection#This can only be made, through the & smart contructor&1Smart constructor to create a NonEmpty collectionsIf the collection is empty, then Nothing is returned Otherwise, the collection is wrapped in the NonEmpty property'same as &Z, but assume that the collection is non empty, and return an asynchronous error if it is. !"#$A%&'(BCDEFGH !"#$%&'(  !"#$A%&'(BCDEFGHw BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DR)/Give the ability to fold a collection on itself*%Left-associative fold of a structure.ËIn the case of lists, foldl, when applied to a binary operator, a starting value (typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right: Efoldl f z [x1, x2, ..., xn] == (...((z `f` x1) `f` x2) `f`...) `f` xn¦Note that to produce the outermost application of the operator the entire input list must be traversed. This means that foldl' will diverge if given an infinite list.ÿhAlso note that if you want an efficient left-fold, you probably want to use foldl' instead of foldl. The reason for this is that latter does not force the "inner" results (e.g. z f x1 in the above example) before applying them to the operator (e.g. to (f x2)). This results in a thunk chain O(n) elements long, which then must be evaluated from the outside-in.+QLeft-associative fold of a structure but with strict application of the operator.,&Right-associative fold of a structure. @foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...)-SRight-associative fold of a structure, but with strict application of the operator. )*+,-IJKL),*+-)*+,-IJKLx BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )069;DR..Collection of elements that can indexed by int./0MNOPQ.0/./0MNOPQyNone)06DR1KA monomorphic functor that maps the inner values to values of the same type12RSTU12122RSTUz BSD-style*Nicolas Di Prima <nicolas@primetype.co.uk> experimentalportableNone)0DR 3PFunctors representing data structures that can be traversed from left to right.Mostly like base's  Traversable! but applied to collections only.4ŸMap each element of a structure to an action, evaluate these actions from left to right, and collect the results. For a version that ignores the results see {.5‹Evaluate each actions of the given collections, from left to right, and collect the results. For a version that ignores the results, see |6¢Map each element of the collection to an action, evaluate these actions from left to right, and collect the results. For a version that ignores the results see }.7‹Evaluate each actions of the given collections, from left to right, and collect the results. For a version that ignores the results, see ~8¦Map each element of a collection to an action, evaluate these actions from left to right, and ignore the results. For a version that doesn't ignore the results see V‡Evaluate each action in the collection from left to right, and ignore the results. For a version that doesn't ignore the results see €.9®Map each element of a collection to a monadic action, evaluate these actions from left to right, and ignore the results. For a version that doesn't ignore the results see �.W�Evaluate each monadic action in the collection from left to right, and ignore the results. For a version that doesn't ignore the results see ‚.:: is 6I with its arguments flipped. For a version that ignores the results see ƒ.;; is 9P with its arguments flipped. For a version that doesn't ignore the results see „. 345678V9W:;XY 3465789W:; 345678V9W:;XY… BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DR<jCollection of things that can be made mutable, modified and then freezed into an MutableFreezed collection<=>?@ABCDEFGHZ[\ <=>?@ABCDFHEG< =>?@ABCDEFGHZ[\† BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )069:;<DRI&A set of methods for ordered colectionJ*Take the first @n elements of a collectionK)Take the last @n elements of a collectionL*Drop the first @n elements of a collectionM)Drop the last @n elements of a collectionN*Split the collection at the @n'th elementsO7Split the collection at the @n'th elements from the endP:Split on a specific elements returning a list of colletionQ1Split a collection when the predicate return trueR1Split a collection when the predicate return trueSThe Sv function takes an element and a list and `intersperses' that element between the elements of the list. For example, &intersperse ',' "abcde" == "a,b,c,d,e"TT xs xss is equivalent to ( (S xs xss)). It inserts the list xs in between the lists in xss and concatenates the result.U2Split a collection while the predicate return trueV2Filter all the elements that satisfy the predicateWGPartition the elements thtat satisfy the predicate and those that don'tXReverse a collectionYyDecompose a collection into its first element and the remaining collection. If the collection is empty, returns Nothing.Z…Decompose a collection into a collection without its last element, and the last element If the collection is empty, returns Nothing.[+Prepend an element to an ordered collection\*Append an element to an ordered collection](Find an element in an ordered collection^=Sort an ordered collection using the specified order function_)Create a collection with a single element`/get the first element of a non-empty collectiona.get the last element of a non-empty collectionbGExtract the elements after the first element of a non-empty collection.cGExtract the elements before the last element of a non-empty collection.dECreate a collection where the element in parameter is repeated N timeeZTakes two collections and returns True iff the first collection is a prefix of the second.fZTakes two collections and returns True iff the first collection is a suffix of the second.$IJKLMNOPQRSTUVWXYZ[\]^_`abcdef]^_`abI^V`YbacdJLNUQX]efSTW\[_ZOPMKRIJKLMNOPQRSTUVWXYZ[\]^_`abcdeeff]^_`ab‡ BSD-style foundation experimentalportableNone )09;<=DRhh¨ takes two collections and returns a collections of corresponding pairs. If one input collection is short, excess elements of the longer collection are discarded.iLike h, but works with 3 collections.jLike h, but works with 4 collections.kLike h, but works with 5 collections.lLike h, but works with 6 collections.mLike h, but works with 7 collections.nnq transforms a collection of pairs into a collection of first components and a collection of second components.oLike n0, but works on a collection of 3-element tuples.pLike n0, but works on a collection of 4-element tuples.qLike n0, but works on a collection of 5-element tuples.rLike n0, but works on a collection of 6-element tuples.sLike n0, but works on a collection of 7-element tuples.uu generalises hj by zipping with the function given as the first argument, instead of a tupling function. For example, u (+)U is applied to two collections to produce the collection of corresponding sums.vLike u, but works with 3 collections.wLike u, but works with 4 collections.xLike u, but works with 5 collections.yLike u, but works with 6 collections.zLike u, but works with 7 collections.&ghijklmnopqrstuvwxyzcdefghijklmnopqrstghinojklmpqrstuvwxyzg hijklmnopqrstuvwxyzcdefghijklmnopqrst BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )069;DRu��‘’»¼½¾¿ÀÁÂà !"#$%&'(),*+-.0/123465789:;<=>?@ABCDFHEGI^V`YbacdJLNUQX]efSTW\[_ZOPMKRghinojklmpqrstuvwxyzyghijklmnopqrs122)*+,-3456789:; !"#$%%&'(IJKLMNOPQRSTUVWXYZ[\]^_`abcdeeff<=>?@ABCDEFGH./0��‘’tuvwxyzÁÂû¼½¾¿ÀˆIBSD-style -- Maintainer : Alfredo Di Napoli <alfredo.dinapoli@gmail.com> experimentalportableNone )0ABDORTuReturns the length of this {8, by summing each inner length. Complexity: O(n) where n0 is the number of chunks, as U.length u is O(1).vReturns F* if the given element is contained in the {. Complexity: O(n) where n0 is the number of chunks, as U.length u is O(1).wTODO: Improve implementation.xTODO: Improve implementation.yEquality between {X. This function is fiddly to write as is not enough to compare for equality the inner Í/(s), we need an element-by-element comparison.*{z{|}~€u�vwxy‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�{){z{|}~€u�vwxy‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ� BSD-styleHaskell Foundation experimentalportableNone )09:;DR|UExtending the Storable type class to the types that can be sequenced in a structure.&Storable type of self determined size.ƒlike € but at a given offset.„like � but at a given offset.5|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°:g|~}€�‚ƒ„…†‡ˆ€�|}~:‚gƒ„…†‡ˆ1|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°" BSD-style*Nicolas Di Prima <nicolas@primetype.co.uk>statbleportableNone)0DR±žŸ²³´µ¶·¸¹º»¼±± ±žŸ²³´µ¶·¸¹º»¼ BSD-styleHaskell Foundation experimentalportableNone )0:DORTÅSimple parser structure ?The continuation of the next buffer value, and the parsed value¡<The continuation of the current buffer, and the error stringÈ3Simple parsing result, that represent respectively:failure: with the error message+continuation: that need for more input data9success: the remaining unparsed data and the parser valueÎ#some bytes didn't satisfy predicateÏ&not enough data to complete the parserÐ,only use in the event of Monad.fail functionÑthe expected inputÒbut received this dataÓ"Run a parser on an @initial input.|If the Parser need more data than available, the @feeder function is automatically called and fed to the More continuation.Ô*Run a Parser on a ByteString and return a ÈÕparse only the given inputrThe left-over `Element input` will be ignored, if the parser call for more data it will be continuously fed with D (up to 256 iterations).×,Get the next `Element input` from the parserØ4Parse a specific `Element input` at current position]if the `Element input` is different than the expected one, this parser will raise a failure.Ù2Parse a sequence of elements from current position;if the following `Element input` don't match the expected input, completely, the parser will raise a failureÛ8Take @n elements from the current position in the streamÜ/take one element if satisfy the given predicateÝPTake elements while the @predicate hold from the current position in the streamÞCTake the remaining elements from the current position in the streamß8Skip @n elements from the current position in the streamàWSkip `Element input` while the @predicate hold from the current position in the streamáOSkip all the remaining `Element input` from the current position in the streamâ.repeat the given Parser a given amount of timeBIf you know you want it to exactly perform a given amount of time:%``` repeat (Exactly Twice) (element a) ```8If you know your parser must performs from 0 to 8 times:*``` repeat (Between Never (Other 8)) ```QThis interface is still WIP* but went handy when writting the IPv4/IPv6 parsers.6½¾¿ÀÁÂÃÄÅÆÇ ¡ÈÉÊËÌÍÎÏÐÑÒÓÔÕ¢£¤ÖרÙÚÛÜÝÞßàᥦ§âãäåæçèéê*]°¯®½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÐÍÎÏÑÒÓÔÕÖרÙÚÛÜÝÞßàáâ*ÅÆÇÈÉÊËÌÍÎÏÐÑÒÔÓÕÖØÜ×ÙÚÛÝÞßàá]®¯°ÀÁÂÃĽ¾¿â%½¾¿ÀÁÂÃÄÅÆÇ ¡ÈÉÊËÌÍÎÏÐÑÒÓÔÕ¢£¤ÖרÙÚÛÜÝÞßàᥦ§âãäåæçèéê# BSD-styleHaskell Foundation experimentalportableNone )0:BDIRð7Opaque packed array of characters in the ASCII encoding¨GCreate a string composed of a number @n of Chars (Unicode code points).<if the input @s contains less characters than required, then©SCreate a string with the remaining Chars after dropping @n Chars from the beginningª:Split on the input string using the predicate as separatore.g. êsplitOn (== ',') "," == ["",""] splitOn (== ',') ",abc," == ["","abc",""] splitOn (== ':') "abc" == ["abc"] splitOn (== ':') "abc::def" == ["abc","","def"] splitOn (== ':') "::abc::def" == ["","","abc","","def"]« size in bytesóCopy the AsciiString¬:Allocate a MutableAsciiString of a specific size in bytes.õcConvert a Byte Array representing UTF8 data directly to a string without checking for UTF8 validitycIf the input contains invalid sequences, it will trigger runtime async errors when processing data.In doubt, use  fromBytes0­®ð¯ñ°±²³´µ¶¨©·¸¹ºª»¼½¾«¿òó¬$in number of bytes, not of elements.ôÀÁÂÃÄÅÆÇÈõö÷øùúûüýþðñòóôõö÷ ðñôòõñóö÷-­®ð¯ñ°±²³´µ¶¨©·¸¹ºª»¼½¾«¿òó¬ôÀÁÂÃÄÅÆÇÈõö÷øùúûüýþ‰ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DRÉ!for support of if .. then .. elseÊËÉ‹üýP–•—˜š™³ þÿ     ¬ ¼»º¹µ´!"#$­&'CF()*+,-./01DE2IJK456789:;GHQ_^flw“¢¨©ª±¶·¸ÌÍÎÏÐÑ—™ÍÖרÊËÉÊËÉŠNone )0DORT<A component of a conduit pipeline, which takes a stream of input, produces a stream of output&, performs actions in the underlying monad, and produces a value of result( when no more output data is available.Ì%A pipe producing and consuming values A basic intuition is that every Pipe produces a stream of outputO values and eventually indicates that this stream is terminated by sending a result. On the receiving end of a Pipe, these become the input and upstream parameters.ÍWProvide new output to be sent downstream. This constructor has three fields: the next Pipe< to be used, a finalization function, and the output value.Î^Request more input from upstream. The first field takes a new input value and provides a new Pipei. The second takes an upstream result value, which indicates that upstream is producing no more results.ÏProcessing with this Pipe) is complete, providing the final result.Ð4Require running of a monadic action to get the next Pipe.ÑEReturn leftover input, which should be provided to future operations. Await for a value from upstream. Send a value downstream. Same as  W, but additionally takes a finalizer to be run if the downstream component terminates. \Provide leftover input to be consumed by the next component in the current monadic binding. %Run a conduit pipeline to completion. *Run a pure conduit pipeline to completion.Run a conduit pipeline in a ! context for acquiring resources.ÒInternal: run a PipePSend the output of the first Conduit component to the second Conduit component.BÓÔÕÖרÙÚÛÜÝÞßàáâÌÍÎÏÐÑã   finalizer   Òäåæçèéêëìíîïðñòóôõö÷øùúûüýþÓÔÞßáâÌÍÎÏÐÑ     æ1ÓÔÕÖרÙÚÛÜÝÞßàáâÌÍÎÏÐÑã     Òäåæçèéêëìíîïðñòóôõö÷øùúûüýþ%None)0DR$Split conduit of string to its linesIThis is very similar to Prelude lines except it work directly on ConduitfNote that if the newline character is not coming, this function will keep accumulating data until OOM‹ BSD-style Foundation experimentalportableNone)0DR!Print a string to standard output0Print a string with a newline to standard output`eŒ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DRÿ5Return the element at a specific index from a Bitmap.5If the index @n is out of bounds, an error is raised. MReturn the element at a specific index from an array without bounds checking.NReading from invalid memory can return unpredictable and invalid values. use ÿ if unsure. &make an array from a list of elements. transform an array to a list. "Check if two vectors are identical Compare 2 vectors 7Append 2 arrays together by creating a new bigger arrayTODO completely non optimized>         ÿ                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 :     ÿ    " #<         ÿ                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone )0BDR › ÈÍ{ ÍÈ{ ›�None)0DR 9Incremental Hashing state. Represent an hashing algorithm$the base primitive of this class is  ;", append mix a Word8 in the stateThe class allow to define faster mixing function that works on bigger Word size and any unboxed array of any PrimType elements <.Associate type when finalizing the state with  = >?Associate type when initializing the state (e.g. a Key or seed) ?Create a new Hashing context @Create a new Hashing context =.Finalize the state and returns the hash result ;:Mix a Word8 (Byte) into the state and return the new state A4Mix a Word16 into the state and return the new state B4Mix a Word32 into the state and return the new state C4Mix a Word64 into the state and return the new state D=Mix an arbitrary sized unboxed array and return the new state < > ? @ = ; A B C D E F G  < > ? @ ; = A B C D < > ? @ = ; A B C D E F GŽ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalgoodNone )0BDIR FNV1a 64 bit stateFNV1a 32 bit stateFNV1 64 bit stateFNV1 32 bit state HFNV1(a) hash (64 bit variants) IFNV1(a) hash (32 bit variants) J6compute FNV1 (32 bit variant) of a raw piece of memory K7compute FNV1a (32 bit variant) of a raw piece of memory L6compute FNV1 (64 bit variant) of a raw piece of memory M7compute FNV1a (64 bit variant) of a raw piece of memory N O P Q H R I S T U V W X Y J K L M Z [ \ ] H R I S N O P Q H R I S T U V W X Y J K L M Z [ \ ]� BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalgoodNone)0DR"Type with the ability to be hashed«Hashable doesn't have any specific rules, and it's made for raw speed. More specifically don't expect different type representing the same data to hash to the same value .hashMix (1 :: Integer) /= hashMix (1 :: Word8)True ^ _ ` a b c d e f g h i j k l m n o p q r ^ _ ` a b c d e f g h i j k l m n o p q r BSD-style*Nicolas Di Prima <nicolas@primetype.co.uk> experimentalportableNone )09;DIRIPv4 data type  "0.0.0.0"! "127.0.0.1"%Parse a IPv4 address s !" t u#$%&'()* !"#$% !"#$% s !" t u#$%&'()*' BSD-style*Nicolas Di Prima <nicolas@primetype.co.uk> experimentalportableNone )09;DIR .IPv6 data type/equivalent to `::`0equivalent to `::1`1 serialise to human readable IPv6/toString (fromString "0:0:0:0:0:0:0:1" :: IPv6)2#create an IPv6 from the given tuple3decompose an IPv6 into a tuple4#IPv6 Parser as described in RFC4291for more details: 4https://tools.ietf.org/html/rfc4291.html#section-2.2which is exactly:``` ipv6ParserPreferred  | ipv6ParserIPv4Embedded  | ipv6ParserCompressed ```51IPv6 parser as described in RFC4291 section 2.2.11The preferred form is x:x:x:x:x:x:x:x, where the xPs are one to four hexadecimal digits of the eight 16-bit pieces of the address.)`ABCD:EF01:2345:6789:ABCD:EF01:2345:6789``2001:DB8:0:0:8:800:200C:417A`6'IPv6 address with embedded IPv4 address`when dealing with a mixed environment of IPv4 and IPv6 nodes is x:x:x:x:x:x:d.d.d.d, where the xZs are the hexadecimal values of the six high-order 16-bit pieces of the address, and the dls are the decimal values of the four low-order 8-bit pieces of the address (standard IPv4 representation).`0:0:0:0:0:0:13.1.68.3``0:0:0:0:0:FFFF:129.144.52.38` `::13.1.68.3``::FFFF:129.144.52.38`71IPv6 parser as described in RFC4291 section 2.2.2ÀThe use of "::" indicates one or more groups of 16 bits of zeros. The "::" can only appear once in an address. The "::" can also be used to compress leading or trailing zeros in an address.`2001:DB8::8:800:200C:417A` `FF01::101``::1``::`. v/01 w x y z234567 { | } ~ 89:;<= ./01234567 ./01234576. v/01 w x y z234567 { | } ~ 89:;<=(None)0DR @A € �BCDEFGH@ABC@ABC @A € �BCDEFGH� BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalgoodNone )0BDRK5Sip State 1-3 (1 compression rounds, 3 digest rounds)L5Sip State 2-4 (2 compression rounds, 4 digest rounds) ‚Siphash Hash value ƒ SigHash Key „same as hash], except also specifies the number of sipround iterations for compression (C) and digest (D).# … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘K ’L “ ‚ ” ƒ • – — ˜ ™ š › „ œ � ž Ÿ   ¡ ¢KL ‚ ” ƒ • … † ‡ ˆ ‰ Š ‹ Œ � Ž � � ‘K ’L “ ‚ ” ƒ • – — ˜ ™ š › „ œ � ž Ÿ   ¡ ¢& BSD-style FoundationNone)0DR KL KL) BSD-style experimentalGoodNone )0DRT MRNG based on ChaCha core.ŠThe algorithm is identical to the arc4random found in recent BSDs, namely a ChaCha core provide 64 bytes of random from 32 bytes of key.NGAn alias to the default choice of deterministic random number generatorÝUnless, you want to have the stability of a specific random number generator, e.g. for tests purpose, it's recommended to use this alias so that you would keep up to date with possible bugfixes, or change of algorithms.O[A simple Monad class very similar to a State Monad with the state being a RandomGenerator.R,A Deterministic Random Generator (DRG) classS!Initialize a new random generatorT5Initialize a new random generator from a binary seed.If DS is returned, then the data is not acceptable for creating a new random generator.U)Generate N bytes of randomness from a DRGV7A monad constraint that allows to generate random bytesY6Run a pure computation with a Random Generator in the OM £NOPQRSTUVW ¤XY ¥ ¦Z[\]^_ MNOPQRSTUVWXY VWOPQRSTUXYNMM £NOPQRSTUVW ¤XY ¥ ¦Z[\]^_‘None %&)0ADORT`Generator monad` § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ` ¨ ¬ ­ ® ¯ ° ± ´ µ ` § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸’None $)09;DRa'How to generate an arbitrary value for ac"Call one of the generator weighted$ab ¹ º » ¼ ½cdef ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Öabcdef#ab ¹ º » ¼ ½cdef ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö“None )09;DR ×'A linked-list of arguments to this testl.The type of check this test did for a propertyghijk × Ø Ùl Ú Û Ü Ý Þ ß à ámn âo3name of the function used for comparaison, e.g. (<)#function used for value comparaisonvalue left of the operatorvalue right of the operatorpq ã ä å æ çghijk × Ø Ùl Ú Û Ü Ý Þ à ámnopqghijk × Ø Ùl Ú Û Ü Ý Þ ß à ámn âopq ã ä å æ çn4*None%&)0ADIORT è%for internal use when pretty printing é%for internal use when pretty printing êthe seed for the tests ëParameters for the generatoradefault: * 32bits long numbers; * array of 512 elements max; * string of 8192 bytes max. ì1the number of tests to perform on every property. default: 100 í9internal check monad for facilitating the tests traversalvName of a testw Run tests î create the default configurationsee Config for details4 ï ð ñ ò ó ô è é õ ö ê ë ì ÷ ø í ù ú û ü ý þ ÿ rstuv    w    î       x`abcdefghijklmnopqrstuvw`abdecfrstuvlijkghnopqmw ï ð ñ ò ó ô è é õ ö ê ë ì ÷ ø í ù ú û ü ý þ ÿ rstuv    w    î       x+ BSD-style foundation experimentalportableNone)0DR 'errors related to FileName manipulation 0this means a null byte was found in the FileName 5this means a path separator was found in the FileName encoding error "some unknown trainling bytes found…+A filename (or path entity) in the FilePath  Authorised"""."".." "foundation" Unauthorised"/""file/""/file" "file/path" )error associated to filepath manipulation 2this mean there were 2 contiguous path separators.9This is not valid in Foundation's FilePath specifications†$FilePath is a collection of FileNameÇTODO: Eq and Ord are implemented using Show This is not very efficient and would need to be improved Also, it is possible the ordering is not necessary what we want in this case.#A FilePath is one of the following:  An Absolute:#starts with one of the follwing "/" A relative:don't start with a "/" authorised:"/""filepath"".""..""workhaskellhs-foundation" unauthorised"path//"‡"information about type of FilePathA file path being only ‰ or ˆ. .define the Path separator for POSIX systems : /  convert a FileName into a String?This function may throw an exception associated to the encoding *conversion of FileName into a list of Char"this function may throw exceptions‹,conversion of a FilePath into a list of Char"this function may throw exceptionsŒ/build a file path from a given list of filename7this is unsafe and is mainly needed for testing purpose�(build a file name from a given ByteArray7this is unsafe and is mainly needed for testing purpose)     …   † ‡ˆ‰ !  " # $ % & ' (Š )  ‹Œ�Ž��‘’“”•–—˜ …†‡ˆ‰Š‹Œ�Ž †‡ˆ‰…Š‹Œ�Ž     …   † ‡ˆ‰ !  " # $ % & ' (Š )  ‹Œ�Ž��‘’“”•–—˜[ BSD-style foundation experimentalportableNone)0DRstuvwxyz{|}…†Š‹stuvwxy{z|}†…Š‹” BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DR *gContains all the information related to a file mapping, including the size and the finalizer function. +kFrom a file mapping, create a final ptr which will automatically unmap memory when the pointer is garbage. , * - . / 0 + , * - . / 0 + , * - . / 0 +•(c) Vincent Hanquez 2014 BSD-styleVincent Hanquez provisionalnon-portable (requires POSIX)None)0DR 1Memory synchronization flags 2perform asynchronous write. 3perform synchronous write. 4invalidate cache data. 5Advice to put on memory.only define the posix one. 6 no specific advice, the default. 7BExpect page references in random order. No readahead should occur. 8RExpect page references in sequential order. Page should be readahead aggressively. 9IExpect access in the near future. Probably a good idea to readahead early :(Do not expect access in the near future. ;Memory protection < Mapping flag =)memory changes are shared between process >%memory changes are private to process ?Map pages of memory.vIf fd is present, this memory will represent the file associated. Otherwise, the memory will be an anonymous mapping.use mmap @Unmap pages of memoryuse munmap A7give advice to the operating system about use of memorycall madvise B%lock a range of process address spacecall mlock C'unlock a range of process address spacecall munlock D set protection of memory mappingcall mprotect E4memorySync synchronize memory with physical storage.FOn an anonymous mapping this function does not have any effect. call msync F&Return the operating system page size.call sysconf' 1 2 3 4 5 6 7 8 9 : ; G H I J < = > K L M N O P Q R S T ?*The address to map to if MapFixed is used.The length of the mapping1the memory protection associated with the mapping @ A B C D E F U V W 1 2 3 4 5 6 7 8 9 : ; G H I J < = > ? @ A B C D E F W 1 2 3 4 5 6 7 8 9 : ; G H I J < = > K L M N O P Q R S T ? @ A B C D E F U V W–None)0DR * - . / 0 + W— BSD-style Foundation experimentalportableNone)0DRž2list the file name in the given FilePath directoryqTODO: error management and not implemented yet getDirectory :: FilePath -> IO [FileName] getDirectory = undefinedOpen a new handle on the fileŸClose a handle -Read binary data directly from the specified  X.ºFirst argument is the Handle to read from, and the second is the number of bytes to read. It returns the bytes read, up to the specified size, or an empty array if EOF has been reached.  is implemented in terms of hGetBuf. YhGetNonBlocking is similar to  ©, except that it will never block waiting for data to become available, instead it returns only whatever data is available. If there is no data available to be read,  Y returns an empty array.7Note: on Windows, this function behaves identically to  . ZLike  ƒ, except that a shorter array may be returned if there are not enough bytes immediately available to satisfy the whole request.  ZN only blocks if there is no data available, and EOF has not yet been reached.¢¢ filepath mode act opens a file using the mode and run acta. the by-product handle will be closed when act finish, either normally or through an exception.(The value returned is the result of act@£IRead a binary file and return the whole content in one contiguous buffer.¤oFold over chunks file calling the callback function for each chunks read from the file, until the end of file. žŸ  Y Z¡ [¢£¤Fold callback functioninitial accumulator File to read \srqpo†žŸ  Y Z¡¢£¤ žŸ  Y Z¡ [¢£¤ \  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DR`esrqpožŸ ¡¢£¤`esrqpožŸ¢ ¡£¤, BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DR¥*Map in memory the whole content of a file.COnce the array goes out of scope, the memory get (eventually) unmap¦*Map in memory the whole content of a file, ]¥¦¥¦¥¦ ]¥¦ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalportableNone)0DR§:Alias to Prelude String ([Char]) for compatibility purpose¨XReturns a list of the program's command line arguments (not including the program name).§¨óP–•—˜š™³  ¬ ¼»º¹µ´!"#$­&'CF()*+,-./01DE2IJK3456789;GHQYWVX\_^fhlkjituvwxzy’“”›œ�žŸ ¡¢£¤¥¦§¨©ª«°±²¶·¸ÌÍÎÏÐÑÒ     /01789—˜™šœžŸ —˜™š›œ�žŸ ¡¢£¤¥ÍÖר !"#$&),*+-I^V`YbacdJLNUQX]efSTW\[_ZOPMKR§¨õ¨¶·^¸¤¥¢£ ¡�žŸš›œ—˜™_¢w©ª×¨¤¥£§¦±œžŸ!Ø ´¹µº»¼³–•š™˜— ¬ÐÑÎÏÌÍYXWV$­ «#P789  /01   1DE2IJK'CF(4;GH,-./67895+0Q3*)—˜™šÍ Ö”&f !"#IJKLMNOPQRSTUVWXYZ[\]^_`abcdeeff$&)*+,-›œŸ¡ �žtvu’“°\lkji"²hzyxÒ§§¨$None)0DR©Operator version of .©ª«¬­®     ©ª«¬­®     ©ª«¬­®©ª«¬­®©2 ^˜™š›œ�›œž›Ÿ ›Ÿ¡›Ÿ¢›Ÿ£˜¤¥˜¤¦›œ§›œ¨›œ©›œª›œ«›¬­›®¯›®°›±²›±³›±´›±µ›œ¶›œ·›œ¸›œ¹›œº›œ»›Ÿ¼›Ÿ½˜¤¾›œ¿›œÀ˜¤Á›ÂÛÄÅ›¬Æ›œÇ›ÈÉ›œʘË̘Ë͘ËΘËϘËЛÑÒ›ÑÓ›ÑÔ›ÑÕÖר›œÙ˜ËÚ›®Û˜ËܘËÝ›Þß›Þà›Þá›Þâ›ãä›åæ˜Ëç›Èè›Èé›Èê›Èë›Èì›Èí˜Ëð˜Ëñ›åò›åó˜Ëô˜Ëõ˜Ëö›÷ø›ùú›ùû›ùû›±ü›ýþ›ÿ›ÿ›ÿ›ÿ››››› › ›  › ››››››››››ã›››› ›!›È"›È#›$%›$&›$'›$(›$)›å*›å+›å,›å-›./›.0›.0›12›13›14›15›16›17›18›19›1:›1;›1<›1=›1>›1?›1@›1A›1B›1C›1D›1E›1F›1G›1H›IJ›KL›®M›ŸN›ŸO›ŸP›ŸQ›ŸR›ŸS›TU›TV›TW›TX›TY›TZ›T[›T\›]^›]_›]`›œa›œb›œc›œd›œe›œf›œg›œh›œi›œj›œk›lm›n˜¤o˜¤p˜¤#˜¤q˜¤r˜¤s˜¤t˜¤u˜¤v˜¤w x y z { | } ~  € � ‚ ƒ „ … †6‡6ˆ6‰6Š6‹6Œ;�<Ž>�>�>‘>’>“>”>•>–>—?˜?™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·B¸B¹BºB»B¼B½C¾C¿CÀCÁDÂDÃDèDÄEÅEÆEÇEÈEÉEÊEËEÌEéEêEÍFÎFÏFÐFÑGÒGÒGÓGÔGÔGÕGÖG×GØGÙGÚGÛGÜGÝIÞIßIàIáIâIãIäJåJæJìçèéêëìíîïðñòóôõö÷øùúûüýþÿ     KKKKKKKKKLLLLLLLLLL !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJMKMKMLMLNMONOOOPOQQRQSQTQUQVQWQXQYRZRZR[R[R\R]R^R_5`68abcdeABfg3hi2jklmn9opqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&&''(())**]]+,-./_0_1_2_3`4`5`6`4a7a8a9a:a;a<a=a>a?a@a@aAaAaBaBCDEFGHIJKLMNOPQRSTUVWcXcXcYcZc[c\c]c]c^ _ ` a becedeeefegghgigjgkglgmgngogpnqorpsqtquqvqwqxqyqzq{q|q}q~qq€q�q‚qƒq„q…q†q‡qˆq‰qŠq‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª!«r¬r­s®sdtZu¯u°u±u:u²v³v´v5v9vµv;v<vpvov¶v·v¸v¹vºw»wBwgwfw¼x½x¾x¿yÀyÁzÂzz€z�z‚z{z}z„zƒ…Ã…Ä…Å…Æ…_…^…b…c…Ç…È…É…Ê…ˆ̆?†͆@†Άk†l†q†m†φv†Іn†s†цt†2†j†h†3†r†u†8†=†Ò†>†Ó†a†Ô†Õ‡Ö‡C‡D‡E‡F‡ׇ؇Ù‡Ú‡Û‡܇݇Þ‡߇G‡H‡I‡J‡à‡áˆâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ     """"""""" "!"""#$%&'()*+,,-./0123456789:;<=>?@?ABCDEFGHIJKLMNOPQRST#U#�#a#d#6#€#‚#ƒ#V#W#X#Y#Z#[#\#]#^#_Š`ŠaŠaŠbŠcŠdŠeŠfŠgŠhŠiŠjŠkŠlŠm%‚%~%�‹n‹oŒpŒq�rŽsŽtŽuŽv�w�xypz{|}~€�‚ƒ„…†'‡'p'z'{'|'}'ˆ'‰'Š'‹'Œ'�'Ž'�'�'‘'’'“(”(”(•(–(—(˜(™(š(›(œ(��ž�Ÿ) )¡)¢)¢)£)¤)¥)¦)§)¨)©)ª)«)¬)­)®)¯)°)±‘²’³’´’µ’¶’?’·“¸“¹“º“»“¼“½“¾“¿“À“Á“Â*Ã*Ä*º*Å*Æ*Ç*È*É*Ê*Ë*Ì*Í*Î*Ï*Ð*Ñ*Ò*Ó*Ô+Õ+\+Ö+×+Ø+Ù+Ú+Û+Ü+Ý+Þ+ß+à+á+â+ã+ä+å+æ+ç+è+é+ê+ë+ì—í—î—ï—ð—ñ—ò—ó,ô,õö÷$ø$ù$ú$û$ü$ý.þ.ÿ.....////// / 3 3 3 33333 333333˜Ë44466666 6!6"6#6$6%6&6'6(6)6*6+6,6-6.6/606162636465666768696:6;6<6=6>6?6@6A6B6C6D›EF›GH›IJ;K›]?›]<›LM›LN›LO›LP›LQ›LR›LS›LT›LU›LV›LW›LX›LY›LZ›L[›Â\›Âs›Â]›^_›^`›^a›^b›ãä›Lc›Ld›ef›gh›”›lr<i<j<k<l›Þm›Þn›Þo=p=«=p=q=«=r=s=t=u=v=w=x>y>z>{>|>}@~@~@@€@�@‚@ƒ@„@…@†@‡š¨BˆB‰CŠC‹CŒC�CŽC�C�C‘C’C“C”C•C–C—C˜C™CšC›DœD�DžDŸD D¡D¢D£D¤D¥D¦D§D¨D©DªE«E¬E­E®E¯E°E±E²E³E´EµE¶E·E¸E¹EºE»E¼E½E¾E¿EÀEÁEÂEÃEÄEÅEÆEÇEÈEÉEÊFËF=FÌFÎFÏFÍFÎFÏGÐGÑHÒHÓHÔHÕHÖI×IØIÙIÚIÛIÜIÝIÞIßIàIáIâIãIäIåIæIçIèIéIêIëIìIíIîIïIðIñIòIóIôIõIöI÷IøIùIúIûIüIýIþIÿIIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!J"J#J$J%J&J'J(J)J*J+J,J-J.J/J01K2K3K4K5K6K7K8K9L:L;L<L=L>.?M@MAMBMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXNYNZNZN[N[N\N\NMN]N^N_N`NaNbNcNdNeOfOgOhOiOjOkOlOmOnOoOpOqOrOsOtOuOvOwOxOyOzO{O|O}O~OO€O�O‚OƒO„O…O†O‡OˆO‰OŠO‹OŒO�OŽO�O�P‘›’“Q”Q•Q–Q—Q˜Q™QšQ›QœQ�QžQŸQ Q¡Q¢Q£Q¤Q¥Q¦Q§Q¨Q©QªQ«Q¬Q­Q®Q¯Q°Q±Q²Q³R4R´RµR:R¶R:R·ReR¸R¹RºR»R¼R½R¾R¿RÀRÁRÂRÃRÄRÅRÆRÇRÈSÉSSÊSËSÌSÍTÎTÏTÐTÑTTTÒTÓTÔUÕUÖU×UØUÙUÚVÛVÜVÝVÞVßXàXàXáYâYãYãYäYåYæYçYèYéYêYëÓÒ^ì^Í^Î^l^2^j_í`î`ï`ðañaòaóaôaõaöa÷aøaùaúaûaüaýaþaÿaaaaab5bdddd d d d d dddddddeËe»eÌe¼eeeeeeeee4eeeieÉef f!gdgbgeg]g5g"g#g^g_g6g$g%g&g:g'g:g(g)g)g*g*g+g,g-g.g\g/gcg0g1g¿g4g8gagÀg2g3g´g?g@gkg4gÍgÎglgqg5gig¿gmgÏg9gvgngAg6g3ghg2gjgrgugsgtgBgfggg7g8g9g:g;g<g=g>g?›@A›@A›@B›@B›@C›@C›@D›@D›@E›@E›@F›@F›@G›@G›@H›@H›@I›@I›@J›@J›@K›@K›@L›@L›@M›@M›@N›@N›@O›@O›@P›@P›@Q›@Q›@R›@R›@S›@S›@T›@T›@U›@U›@V›@W›@X›@Y›@Y›@Z›@Z›@[›@[›@\›@\hÄh]h^h_hth`iaibiuiuicidieifiÌigihjyjyjijjjfjbjÌjkjlkwkwkmk|knkbkÌkokplqlqlxlxlblÌlrlsmtmumvnwnänxnynenwnqnznbn{n|nÌncn}n~nn€n�q‚qƒq„q´q?q@qkq…qÍqÎqlqqqiq†qmqÏqnq9qvq#q\q5qaqdq8q6q‡qhq3qjq2qrquqsqtqeq¿qˆq7q8q‰qŠq‹qŒq‚q�qŽq�q/q�q‘q’q“q”›÷››÷œrrÉrer]rËr»rÌr¼r^r_rbrdrr"r#rer6r:r¬r­r+rcr:r'r4r5r\r%r&rÀr•r´r?r@rkrÍrÎrlrqrirmrvrnrAr8rar3rhr2rjrrrursr–r/rtrBrfrgr7r8r—r˜r™ršr›rœr�ržsŸs s¡s¢s£u¤u¥u¦u§v¶v¨v©vªv«v¬v­v®w¯w°w±w²x³x´xµx¶x·y¸y¹yºy»z|z~z¼z½…¾…¿…À†Á††ÆĆņƇLJȇɇʇˇ͇̇·χЇчÒ‡Ó‡Ô‡Õ‡Ö‡ׇ؈5ˆ9ˆ<ˆ;ˆ:ˆâˆ4ˆ:ˆÀˆ%ˆ&ˆ´ˆ\ˆÙˆÚˆ?ˆ@ˆkˆ͈Έqˆmˆvˆtˆsˆjˆ2ˆ3ˆhˆrˆuˆeˆ]ˆÛˆ܈݈Þˆ߈àˆáˆâ""ãä–åæçèéê#?#@#q#ä#e#ë#ë#U#ì#í#b#c#x#y#´#k#Í#Î#l#m#Ï#v#n#5#î#h#3#j#2#r#u#s#t‰�‰ï‰ðŠñŠòŠóŠôŠõŠöŠ÷ŠøŠùŠúŠûŠüŠýŠþŠÿŠŠŠŠ`ŠŠŠcŠŠŠŠŠŠ Š Š Š Š ŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ ŒeŒ]Œ%Œ&Œ:Œ'Œ:ŒpŒqŒ!Œ"Œ#Œ$ŒbŒcŒ_Œ^Œ¼Œ»ŒÌŒËŒ5Œ\ŒÉŒ4ŒeŒÀŒ´Œ?Œ@ŒkŒqŒmŒnŒAŒ3ŒhŒ2ŒjŒvŒrŒuŒsŒtŒBŒfŒ¼ŒgŒ%Œ&Œ'Œ(Œ)Œ*Œ+Œ,Œ-Œ.Œ/Œ0�1�2�3�4�5�6�7�8�9�:�;�<�=Ž>Ž?Ž@ŽAŽBŽCŽsŽtŽuŽvŽ>Ž?ŽDŽEŽFŽGŽHŽIŽJŽKŽLŽM�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_�`�a�bycd'‡'d'e'f'c'g'h'i'j'k(l(d�m�n�o�p�q�r�s�t�u�v�w�x�y�y�z�z�ž�Ÿ�m�n�{�|�}�~��€���‚�ƒ�„�…�†�‡) )ˆ)‰)Š‘²‘‹‘Œ‘�‘�‘ޑޑ�‘�‘‘‘’‘“‘”‘•‘–‘—‘˜‘™’š’›’œ’�’ž’Ÿ’ ’¡’¢’£’¤’¥’¦’§’¨’©’ª’«’¬’­’®’¯’°’±’²’³’´’µ’¶’·“¸“¹“º“»“¼“½“¾“¿“À“Á““ÓēœƓǓÈ*É*Ê*Ë*Ì*Í*Î*Ï*Ð*Ñ*Ò*Ó*Ô*Ô*Õ*Ö*×*Ø*Î*Ù*Ú*Û*Ü*Ý*Ü*Þ*ß*à*á*â*ã*ä*å*æ*ç*è*é*ê*ë*ì*í*î*ï*ð*ñ*ò+ó+ô+õ+ö+÷+ø+ù+ú+û+ü+Õ+\+ý+þ+ÿ+ + + + + + ” ” ” ” ” ” ” • • • • • • • • • • • • • • • • • • • • • • !• "• #• $• %• &• '• (• )• *• +• ,• -• .• /• 0• 1•ô› 2 3— 4— 5— 6— 7, 8 9&foundation-0.0.9-EfyJ7mhss5pKLAnJSrCRB FoundationFoundation.Network.IPv4Foundation.Primitive.NatFoundation.Class.StorableFoundation.System.InfoFoundation.MonadFoundation.Class.BifunctorFoundation.Parser Foundation.IO#Foundation.System.Bindings.PosixDefFoundation.BitsFoundation.System.Bindings.HsFoundation.StrictFoundation.PrimitiveFoundation.Monad.ReaderFoundation.Monad.StateFoundation.NumericalFoundation.Math.TrigonometryFoundation.ForeignFoundation.List.SListFoundation.ArrayFoundation.Primitive.Block Foundation.System.Bindings.Posix Foundation.System.Bindings.LinuxFoundation.VFS.PathFoundation.VFS.URIFoundation.ConvertibleFoundation.CollectionFoundation.Tuple.NthFoundation.Array.InternalFoundation.StringFoundation.String.ReadFoundation.System.EntropyFoundation.List.DListFoundation.String.ASCIIFoundation.ConduitFoundation.Conduit.TextualFoundation.HashingFoundation.Network.IPv6Foundation.UUIDFoundation.RandomFoundation.CheckFoundation.VFS.FilePathFoundation.IO.FileMapFoundation.String.InternalFoundation.Primitive.Base16Foundation.Numerical.PrimitivesFoundation.Monad.MonadIOFoundation.Internal.TypeableFoundation.Internal.ProxyFoundation.Internal.PrimitiveFoundation.Internal.PrimTypesFoundation.Internal.NaturalFoundation.Internal.NumLiteralFoundation.Internal.IsListFoundation.Internal.IdentityFoundation.Internal.EnvironmentFoundation.Internal.CallStackFoundation.Internal.BaseFoundation.Internal.ByteSwapFoundation.Internal.MonadTransFoundation.Monad.ExceptionFoundation.Monad.TransformerFoundation.Monad.IdentityFoundation.Monad.BaseFoundation.Numerical.FloatingFoundation.Numerical.NumberFoundation.Numerical.Additive#Foundation.Numerical.MultiplicativeFoundation.PartialFoundation.Primitive.EndiannessFoundation.Primitive.Floating!Foundation.Primitive.IntegralConv Foundation.Numerical.SubtractiveFoundation.Primitive.MonadFoundation.Primitive.FinalPtr%Foundation.Primitive.Types.OffsetSizeFoundation.Primitive.ExceptionFoundation.Primitive.NormalFormFoundation.Primitive.RuntimeFoundation.Primitive.TypesFoundation.Primitive.Block.Base"Foundation.Primitive.Block.MutableFoundation.Primitive.UTF8.TableFoundation.Primitive.Utils"Foundation.System.Bindings.NetworkFoundation.System.Bindings Foundation.System.Entropy.CommonFoundation.System.Entropy.UnixElementFoundation.VFSFilePathURIFoundation.Collection.ListFoundation.Collection.KeyedFoundation.Primitive.TheseFoundation.TupleFoundation.Boot.ListFoundation.Boot.Builder Foundation.Primitive.UTF8.Helper Foundation.Array.Unboxed.Mutable"Foundation.Array.Unboxed.ByteArrayFoundation.Array.Unboxed#Foundation.String.Encoding.Encoding!Foundation.String.Encoding.ASCII7%Foundation.String.Encoding.ISO_8859_1 Foundation.String.Encoding.UTF16 Foundation.String.Encoding.UTF32Foundation.String.ModifiedUTF8Foundation.Primitive.UTF8.BaseFoundation.Primitive.ErrorFoundation.Primitive.ShowFoundation.String.UTF8Foundation.Array.BoxedFoundation.Collection.CopyFoundation.Collection.ElementFoundation.Collection.Buildable Foundation.Collection.CollectionFoundation.Collection.FoldableFoundation.Collection.Indexed"Foundation.Collection.InnerFunctorFoundation.Collection.Mappable traverse_ sequenceA_mapM_ sequence_traverse sequenceAmapMsequenceforM_forMFoundation.Collection.Mutable Foundation.Collection.SequentialFoundation.Collection.Zippable Foundation.Array.Chunked.UnboxedFoundation.Primitive.ImportsFoundation.Conduit.InternalFoundation.IO.TerminalFoundation.Array.BitmapFoundation.Hashing.HasherFoundation.Hashing.FNVFoundation.Hashing.HashableFoundation.Hashing.SipHashFoundation.Check.GenFoundation.Check.ArbitraryFoundation.Check.Property"Foundation.Foreign.MemoryMap.Types"Foundation.Foreign.MemoryMap.PosixFoundation.Foreign.MemoryMapFoundation.IO.Fileghc-primGHC.PrimseqbaseGHC.Base otherwise$GHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=fail>>=>>fmapreturn Data.String fromStringGHC.Real fromIntegral realToFracGHC.ExtsIsListfromList fromListNtoListmemptymappendmconcat<*>pure*>BoundedEnumEqMonadFunctorOrdGHC.ShowShowData.Typeable.InternalTypeableIsString Applicative GHC.TypeLitsKnownNatMonoid GHC.TypesBoolCharDoubleFloatIntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeIntegerMaybeOrderingRationalIOWordGHC.WordWord8Word16Word32Word64GHC.PtrPtr Data.EitherEitherNat+*^<=?-CmpNatFalseNothingJustTrueLeftRightLTEQGT System.InfocompilerVersionData.Functor.Identity runIdentityIdentityItem GHC.NaturalNatural Data.Version versionTags versionBranchVersionData.Bifunctorsecondfirstbimap BifunctorControl.Monad.IO.ClassliftIOMonadIO Control.Monad>=>Control.ApplicativeoptionalControl.Category.idGHC.IO.Handle.FDstdinSystem.Posix.TypesCModeCOffstdout Data.Monoid<>castPtrGHC.IO.Exception IOException GHC.ExceptiondisplayException fromException toException ExceptionnatVal<= GHC.IO.IOMode ReadWriteMode AppendMode WriteModeReadModeIOModepartitionEithersrightsleftseither Data.Proxy asProxyTypeOfProxy Data.BitspopCountrotateRrotateL unsafeShiftRshiftR unsafeShiftLshiftLisSignedbitSize bitSizeMaybetestBit complementBitclearBitsetBitbitzeroBitsrotateshift complementxor.|..&.Bits Data.Functionon Data.Functor<$>^^maxBoundminBoundfromEnumtoEnumpredsucc Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybe isNothingisJustmaybe Data.TupleswapuncurrycurryasTypeOfuntil$!flipconst=<<<$<*manysome<|>GHC.Err undefined SomeException/=compare&&||not<>maxmin COpenFlags CSysconfName CMemSyncFlags CMemAdviceCMemMappingFlags CMemProtFlagsCFdCErrnosysHsCoreGetErrnostrict1strict2strict3strict4strict5strict6 HasNegationnegate Fractional fromRationalIntegral fromInteger ifThenElseByteSwap MonadBracketgeneralBracket MonadCatchcatch MonadThrowthrow MonadFailureFailuremFail MonadTransliftReaderT runReaderT MonadReader ReaderContextask$fMonadReaderReaderT$fMonadCatchReaderT$fMonadThrowReaderT$fMonadFailureReaderT$fMonadIOReaderT$fMonadTransReaderT$fMonadReaderT$fApplicativeReaderT$fFunctorReaderTStateT runStateT MonadStateState withStategetput$fMonadStateStateT$fMonadCatchStateT$fMonadThrowStateT$fMonadFailureStateT$fMonadIOStateT$fMonadTransStateT $fMonadStateT$fApplicativeStateT$fFunctorStateT FloatingPoint floatRadix floatDigits floatRange floatDecode floatEncode IsNatural toNatural IsIntegral toIntegerAdditiveazeroscale Divisible/ IDivisibledivmoddivModMultiplicative midentityrecip PartialErrorPartialpartial fromPartialBEunBELEunLE Endianness LittleEndian BigEndiantoBEfromBEtoLEfromLE endianness IntegralCast integralCastIntegralUpsizeintegralUpsizeIntegralDownsizeintegralDownsizeintegralDownsizeCheck Subtractive DifferenceIntegralRoundingroundUp roundDown roundTruncate roundNearestSignedabssignumSign SignNegativeSignZero SignPositive$fIntegralRoundingFloat$fIntegralRoundingDouble$fIntegralRoundingRatio$fSignedDouble $fSignedFloat $fSignedInt64 $fSignedInt32 $fSignedInt16 $fSignedInt8 $fSignedInt$fSignedInteger$fEqSign Trigonometrypisincostanasinacosatansinhcoshtanhasinhacoshatanh$fTrigonometryDouble$fTrigonometryFloat PrimMonad PrimStatePrimVar primitive primThrow unPrimMonad primVarNew primVarRead primVarWriteFinalPtr FinalForeignfinalPtrSameMemory toFinalPtrtoFinalPtrForeign castFinalPtrwithFinalPtrNoTouch withFinalPtrwithUnsafeFinalPtrNatWithinBound NatInBoundOfNatNumMaxBound natValInt natValInt64 natValInt32 natValInt16 natValInt8 natValWord natValWord64 natValWord32 natValWord16 natValWord8SListunSListtoSList replicateMunconsconsemptylengthcreate createFrom singletonelemappendmaximumminimumheadtailtakedropmapfoldlzipzip3zip4zip5zipWithzipWith3zipWith4zipWith5SizeOffset OutOfBound NormalForm toNormalFormdeepseqforcePrimTypeprimSizeInBytes primBaUIndex primMbaURead primMbaUWrite primAddrIndex primAddrRead primAddrWrite MutableBlockBlock lengthSize unsafeIndex unsafeFreeze unsafeThawunsafeCopyToPtr replicatethawfreezecopyindexfoldrfoldl'snocsubunsnocsplitAt revSplitAtbreakspanallanysplitOnfindfilterreversesortBy intersperseCDirentCDir sysPosixDirfdsysPosixClosedirsysPosixRewinddirsysPosixSeekdirsysPosixTelldirsysPosixReaddirRsysPosixReaddirsysPosixFdopendirsysPosixOpendirsysPosixFtruncatesysPosixFnctlPtrsysPosixFnctlNoArg sysPosixClosesysPosixOpenAt sysPosixOpensysPosixSysconfsysPosixMunlock sysPosixMlocksysPosixMprotect sysPosixMsyncsysPosixMadvisesysPosixMunmap sysPosixMmapsysPosix_E2BIGsysPosix_EACCESsysPosix_EADDRINUSEsysPosix_EADDRNOTAVAILsysPosix_EAFNOSUPPORTsysPosix_EAGAINsysPosix_EALREADYsysPosix_EBADFsysPosix_EBUSYsysPosix_ECANCELEDsysPosix_ECHILDsysPosix_ECONNABORTEDsysPosix_ECONNREFUSEDsysPosix_ECONNRESETsysPosix_EDEADLKsysPosix_EDESTADDRREQ sysPosix_EDOMsysPosix_EDQUOTsysPosix_EEXISTsysPosix_EFAULTsysPosix_EFBIGsysPosix_EHOSTUNREACHsysPosix_EIDRMsysPosix_EILSEQsysPosix_EINPROGRESSsysPosix_EINTRsysPosix_EINVAL sysPosix_EIOsysPosix_EISCONNsysPosix_EISDIRsysPosix_ELOOPsysPosix_EMFILEsysPosix_EMLINKsysPosix_EMSGSIZEsysPosix_ENAMETOOLONGsysPosix_ENETDOWNsysPosix_ENETRESETsysPosix_ENETUNREACHsysPosix_ENFILEsysPosix_ENOBUFSsysPosix_ENODEVsysPosix_ENOENTsysPosix_ENOEXECsysPosix_ENOLCKsysPosix_ENOMEMsysPosix_ENOMSGsysPosix_ENOPROTOOPTsysPosix_ENOSPCsysPosix_ENOSYSsysPosix_ENOTCONNsysPosix_ENOTDIRsysPosix_ENOTEMPTYsysPosix_ENOTSOCKsysPosix_ENOTSUPsysPosix_ENOTTYsysPosix_ENXIOsysPosix_EOPNOTSUPPsysPosix_EOVERFLOWsysPosix_EPERMsysPosix_EPIPEsysPosix_EPROTONOSUPPORTsysPosix_EPROTOTYPEsysPosix_ERANGEsysPosix_EROFSsysPosix_ESPIPEsysPosix_ESRCHsysPosix_ESTALEsysPosix_ETIMEDOUTsysPosix_ETXTBSYsysPosix_EWOULDBLOCKsysPosix_EXDEVsysPosix_ENODATAsysPosix_ENOSRsysPosix_ENOSTRsysPosix_ETIMEsysPosix_EBADMSGsysPosix_EMULTIHOPsysPosix_ENOLINKsysPosix_ENOTRECOVERABLEsysPosix_EOWNERDEADsysPosix_EPROTOsysPosix_O_RDONLYsysPosix_O_WRONLYsysPosix_O_RDWRsysPosix_O_NONBLOCKsysPosix_O_APPENDsysPosix_O_CREATsysPosix_O_TRUNCsysPosix_O_EXCLsysPosix_O_NOFOLLOWsysPosix_O_CLOEXECsysPosix_PROT_NONEsysPosix_PROT_READsysPosix_PROT_WRITEsysPosix_PROT_EXECsysPosix_MAP_SHAREDsysPosix_MAP_PRIVATEsysPosix_MAP_FIXEDsysPosix_MAP_ANONYMOUSsysPosix_MADV_NORMALsysPosix_MADV_RANDOMsysPosix_MADV_SEQUENTIALsysPosix_MADV_WILLNEEDsysPosix_MADV_DONTNEEDsysPosix_MS_ASYNCsysPosix_MS_SYNCsysPosix_MS_INVALIDATEsysPosix_SC_PAGESIZECWatchDescriptor CInotifyMask CInotifyFlagssysLinuxInotifyRmWatchsysLinuxInotifyAddWatchsysLinuxInotifyInitsysLinux_O_TMPFILEsysLinux_IN_NONBLOCKsysLinux_IN_CLOEXECsysLinux_IN_ACCESSsysLinux_IN_ATTRIBsysLinux_IN_CLOSE_WRITEsysLinux_IN_CLOSE_NOWRITEsysLinux_IN_CREATEsysLinux_IN_DELETEsysLinux_IN_DELETE_SELFsysLinux_IN_MODIFYsysLinux_IN_MOVE_SELFsysLinux_IN_MOVED_FROMsysLinux_IN_MOVED_TOsysLinux_IN_OPENsysLinux_IN_DONT_FOLLOWsysLinux_IN_MASK_ADDsysLinux_IN_ONESHOTsysLinux_IN_ONLYDIRsysLinux_IN_EXCL_UNLINKsysLinux_IN_IGNOREDsysLinux_IN_ISDIRsysLinux_IN_Q_OVERFLOWsysLinux_IN_UNMOUNTcinotifyEventSizePathPathEnt PathPrefix PathSuffix splitPath buildPathparentfilenameprefixsuffixURIPath URIFragmentURIQuery URIAuthority URISchema $fPathURI ConvertibleConvertconvert$fConvertibleaaKeyedCollectionKeyValuelookupTheseThisThatThdable ProductThirdthdSndable ProductSecondsndFstable ProductFirstfstTuple4Tuple3Tuple2NthableNthTynth$fNthable4Tuple4$fNthable3Tuple4$fNthable2Tuple4$fNthable1Tuple4$fNthable4(,,,)$fNthable3(,,,)$fNthable2(,,,)$fNthable1(,,,)$fNthable3Tuple3$fNthable2Tuple3$fNthable1Tuple3$fNthable3(,,)$fNthable2(,,)$fNthable1(,,)$fNthable2Tuple2$fNthable1Tuple2 $fNthable2(,) $fNthable1(,) BuildingState prevChunksprevChunksSizecurChunk chunkSizeBuilder runBuilder.<<..>>. alignRoundUpalignRoundDownMUArray newPinnednewmutableForeignMemwithMutablePtrUArrayUVecBAUVecAddr foreignMemfromForeignPtr copyToPtrwithPtrrecast toHexadecimalStringerrorshowEncodingASCII7UTF8UTF16UTF32 ISO_8859_1ValidationFailure InvalidHeaderInvalidContinuation MissingByte fromBytesfromBytesLenientfromBytesUnsafetoByteslineswords readIntegral readInteger readNatural readDouble readRationalreadFloatingExactupperlowerArchI386X86_64PowerPC PowerPC64SparcSparc64ARMARM64OSWindowsOSXLinuxAndroidBSDosarch compilerNamecpus$fShowOS$fEqOS$fOrdOS$fEnumOS $fBoundedOS$fDataOS $fShowArch$fEqArch $fOrdArch $fEnumArch $fBoundedArch $fDataArch getEntropyMArrayArrayCopy BuildableMutableStepbuild CollectionnullnotElemNonEmpty getNonEmptynonEmpty nonEmpty_ nonEmptyFmapFoldablefoldr'IndexedCollection! findIndex InnerFunctorimapMappableMutableCollectionMutableFreezed MutableKey MutableValuemutNewmutUnsafeWritemutWrite mutUnsafeReadmutRead SequentialrevTakerevDrop breakElem intercalate partitionlastinit isPrefixOf isSuffixOf BoxedZippablezip6zip7unzipunzip3unzip4unzip5unzip6unzip7ZippablezipWith6zipWith7 ChunkedUArray StorableFixedsize alignmentStorablepeekpokeplusPtrpeekOffpokeOff peekArraypeekArrayEndedBy pokeArraypokeArrayEndedBy$fStorableFixedPtr$fStorableFixedLE$fStorableFixedBE$fStorableFixedWord64$fStorableFixedLE0$fStorableFixedBE0$fStorableFixedWord32$fStorableFixedLE1$fStorableFixedBE1$fStorableFixedWord16$fStorableFixedWord8$fStorableFixedInt64$fStorableFixedInt32$fStorableFixedInt16$fStorableFixedInt8$fStorableFixedFloat$fStorableFixedDouble$fStorableFixedChar$fStorableFixedCUChar$fStorableFixedCChar $fStorablePtr $fStorableLE $fStorableBE$fStorableWord64 $fStorableLE0 $fStorableBE0$fStorableWord32 $fStorableLE1 $fStorableBE1$fStorableWord16$fStorableWord8$fStorableInt64$fStorableInt32$fStorableInt16$fStorableInt8$fStorableFloat$fStorableDouble$fStorableChar$fStorableCUChar$fStorableCCharDList$fSequentialDList$fCollectionDList$fFoldableDList $fMonadDList$fApplicativeDList$fFunctorDList $fMonoidDList $fIsListDList $fShowDList $fOrdDList $fEqDList ConditionExactlyBetweenCountNeverOnceTwiceOtherParser runParserResult ParseFail ParseMoreParseOK ParserErrorExpected DoesNotSatify NotEnough MonadFail expectedInput receivedInput parseFeedparse parseOnlyhasMore anyElementelementelementsstringsatisfy takeWhiletakeAllskip skipWhileskipAllrepeat $fEnumCount$fAlternativeParser$fMonadPlusParser $fMonadParser$fApplicativeParser$fFunctorParser $fShowResult$fExceptionParserError$fShowParserError$fEqParserError$fOrdParserError $fShowCount$fShowCondition AsciiString$fZippableAsciiString$fSequentialAsciiString$fCollectionAsciiString$fInnerFunctorAsciiString$fIsListAsciiString$fIsStringAsciiString$fShowAsciiString$fMonoidAsciiString$fEqAsciiString$fOrdAsciiString ResourceTZipSink getZipSinkConduitawait awaitForeveryieldyieldOrleftover runConduitrunConduitPure runConduitResbracketConduitfuseputStrputStrLn MutableBitmapBitmapHasherFNV1a_64FNV1a_32FNV1_64FNV1_32HashablehashMixIPv4loopbacktoString fromTupletoTuple ipv4Parser$fStorableFixedIPv4$fStorableIPv4$fIsStringIPv4$fNormalFormIPv4 $fShowIPv4$fEqIPv4 $fOrdIPv4$fHashableIPv4IPv6 ipv6Parseripv6ParserPreferredipv6ParserIpv4Embeddedipv6ParserCompressed$fStorableFixedIPv6$fStorableIPv6$fIsStringIPv6 $fShowIPv6$fHashableIPv6$fNormalFormIPv6$fEqIPv6 $fOrdIPv6UUIDnil fromBinary$fStorableFixedUUID$fStorableUUID$fHashableUUID$fNormalFormUUID $fShowUUID$fEqUUID $fOrdUUIDSip1_3Sip2_4RNGv1RNGMonadRandomStaterunRandomState RandomGen randomNew randomNewFromrandomGenerate MonadRandomgetRandomBytesgetRandomPrimTypewithRandomGenerator$fRandomGenRNGv1$fMonadRandomMonadRandomState$fMonadMonadRandomState$fApplicativeMonadRandomState$fFunctorMonadRandomState$fMonadRandomIOGen Arbitrary arbitrary frequencyoneofbetween IsPropertypropertyPropertyPropunProp PropertyCheckforAll===propertyCompare propertyAnd propertyFailTestUnitGrouptestName defaultMain$fMonadStateCheck$fShowPropertyResult$fEqPropertyResult$fShowTestResult$fEqDisplayOption$fOrdDisplayOption$fEnumDisplayOption$fBoundedDisplayOption$fShowDisplayOption$fFunctorCheck$fApplicativeCheck $fMonadCheck$fMonadIOCheckFileName RelativityAbsoluteRelativefilePathToStringfilePathToLStringunsafeFilePathunsafeFileName extension$fPathFilePath$fMonoidFileName$fIsStringFileName$fShowFileName$fExceptionFileName_Invalid$fIsStringFilePath$fExceptionFilePath_Invalid $fOrdFilePath $fEqFilePath$fShowFilePath$fEqRelativity$fShowRelativity$fShowFilePath_Invalid $fEqFileName$fShowFileName_InvalidopenFile closeFilehGethPutwithFilereadFile foldTextFile fileMapReadfileMapReadWithLStringgetArgs.| sourceFile sourceHandlesinkFile sinkHandlesinkListunsafeConvertByte hexWord16 hexWord32TabletableLotableHiIntegralConvertintegralConvert intToWord$fIntegralConvertInt64Word64$fIntegralConvertInt32Word32$fIntegralConvertInt16Word16$fIntegralConvertInt8Word8 PinnedStatusbool# compatAndI#compatQuotRemInt#compatCopyAddrToByteArray#compatCopyByteArrayToAddr# compatMkWeak#isPinnedpinnedunpinned compatGetSizeofMutableByteArray#compatShrinkMutableByteArray#compatResizeMutableByteArray#W#Size#Offset# FileSize#$fFractionalCDouble$fFractionalCFloat$fFractionalDouble$fFractionalFloat$fFractionalRatio$fHasNegationCDouble$fHasNegationCFloat$fHasNegationDouble$fHasNegationFloat$fHasNegationCInt$fHasNegationWord64$fHasNegationWord32$fHasNegationWord16$fHasNegationWord8$fHasNegationWord$fHasNegationInt64$fHasNegationInt32$fHasNegationInt16$fHasNegationInt8$fHasNegationInt$fHasNegationInteger$fIntegralCDouble$fIntegralCFloat$fIntegralDouble$fIntegralFloat$fIntegralCUIntPtr$fIntegralCOff$fIntegralCInt$fIntegralCSize$fIntegralInt64$fIntegralInt32$fIntegralInt16$fIntegralInt8$fIntegralWord64$fIntegralWord32$fIntegralWord16$fIntegralWord8$fIntegralWord $fIntegralInt$fIntegralNatural$fIntegralIntegerSystem.Environment lookupEnv Text.Read readMaybeGHC.Stack.Types HasCallStack internalError Data.DataDatagfoldlgunfoldtoConstr dataTypeOf dataCast1 dataCast2gmapTgmapQlgmapQrgmapQgmapQigmapMgmapMpgmapMo showsPrecshowList GHC.GenericsGenericRepfromto mkNoRepTypeDataType Data.FoldableandGHC.IOthrowIObyteSwap$fByteSwapWord64$fByteSwapWord32$fByteSwapWord16 byteSwap64 byteSwap32 byteSwap16Reader runReaderrunState $fMonadReader$fApplicativeReader$fFunctorReader $fMonadState$fApplicativeState$fFunctorState$fMonadBracketIO$fMonadCatchIO$fMonadThrowIO$fMonadFailureEither$fMonadFailureMaybe IdentityT runIdentityT$fMonadCatchIdentityT$fMonadThrowIdentityT$fMonadFailureIdentityT$fMonadIOIdentityT$fMonadTransIdentityT$fMonadIdentityT$fApplicativeIdentityT$fFunctorIdentityT$fFloatingPointDouble$fFloatingPointFloat$fIsNaturalWord64$fIsNaturalWord32$fIsNaturalWord16$fIsNaturalWord8$fIsNaturalWord$fIsNaturalNatural$fIsIntegralWord64$fIsIntegralWord32$fIsIntegralWord16$fIsIntegralWord8$fIsIntegralWord$fIsIntegralNatural$fIsIntegralInt64$fIsIntegralInt32$fIsIntegralInt16$fIsIntegralInt8$fIsIntegralInt$fIsIntegralIntegerscaleNum$fAdditiveDouble$fAdditiveFloat$fAdditiveWord64$fAdditiveWord32$fAdditiveWord16$fAdditiveWord8$fAdditiveNatural$fAdditiveWord$fAdditiveInt64$fAdditiveInt32$fAdditiveInt16$fAdditiveInt8 $fAdditiveInt$fAdditiveIntegerpowereven$fDivisibleDouble$fDivisibleFloat$fDivisibleRatio$fIDivisibleWord64$fIDivisibleWord32$fIDivisibleWord16$fIDivisibleWord8$fIDivisibleWord$fIDivisibleNatural$fIDivisibleInt64$fIDivisibleInt32$fIDivisibleInt16$fIDivisibleInt8$fIDivisibleInt$fIDivisibleInteger$fMultiplicativeRatio$fMultiplicativeDouble$fMultiplicativeFloat$fMultiplicativeWord64$fMultiplicativeWord32$fMultiplicativeWord16$fMultiplicativeWord8$fMultiplicativeWord$fMultiplicativeNatural$fMultiplicativeInt64$fMultiplicativeInt32$fMultiplicativeInt16$fMultiplicativeInt8$fMultiplicativeInt$fMultiplicativeInteger partialErrorfromJust fromRightfromLeft$fExceptionPartialError$fOrdBE$fOrdLEintegerToDoublenaturalToDoubledoubleExponantintegerToFloatnaturalToFloatintegralDownsizeBounded intToInt64 wordToWord64 word64ToWord word64ToWord#word64ToWord32s wordToChar wordToInt charToInt$fIntegralCastInt64Word64$fIntegralCastWord64Int64$fIntegralCastIntWord$fIntegralCastWordInt$fIntegralDownsizeNaturalWord64$fIntegralDownsizeNaturalWord32$fIntegralDownsizeNaturalWord16$fIntegralDownsizeNaturalWord8 $fIntegralDownsizeIntegerNatural$fIntegralDownsizeIntegerWord64$fIntegralDownsizeIntegerWord32$fIntegralDownsizeIntegerWord16$fIntegralDownsizeIntegerWord8$fIntegralDownsizeIntegerInt64$fIntegralDownsizeIntegerInt32$fIntegralDownsizeIntegerInt16$fIntegralDownsizeIntegerInt8$fIntegralDownsizeWord16Word8$fIntegralDownsizeWord32Word16$fIntegralDownsizeWord32Word8$fIntegralDownsizeWord64Word32$fIntegralDownsizeWord64Word16$fIntegralDownsizeWord64Word8$fIntegralDownsizeIntInt32$fIntegralDownsizeIntInt16$fIntegralDownsizeIntInt8$fIntegralUpsizeNaturalInteger$fIntegralUpsizeWord64Natural$fIntegralUpsizeWord64Integer$fIntegralUpsizeWordWord64$fIntegralUpsizeWordNatural$fIntegralUpsizeWordInteger$fIntegralUpsizeWord32Natural$fIntegralUpsizeWord32Integer$fIntegralUpsizeWord32Word$fIntegralUpsizeWord32Word64$fIntegralUpsizeWord16Natural$fIntegralUpsizeWord16Integer$fIntegralUpsizeWord16Word$fIntegralUpsizeWord16Word64$fIntegralUpsizeWord16Word32$fIntegralUpsizeWord8Natural$fIntegralUpsizeWord8Integer$fIntegralUpsizeWord8Int$fIntegralUpsizeWord8Int64$fIntegralUpsizeWord8Int32$fIntegralUpsizeWord8Int16$fIntegralUpsizeWord8Word$fIntegralUpsizeWord8Word64$fIntegralUpsizeWord8Word32$fIntegralUpsizeWord8Word16$fIntegralUpsizeInt64Integer$fIntegralUpsizeIntInt64$fIntegralUpsizeIntInteger$fIntegralUpsizeInt32Integer$fIntegralUpsizeInt32Int$fIntegralUpsizeInt32Int64$fIntegralUpsizeInt16Integer$fIntegralUpsizeInt16Int$fIntegralUpsizeInt16Int64$fIntegralUpsizeInt16Int32$fIntegralUpsizeInt8Integer$fIntegralUpsizeInt8Int$fIntegralUpsizeInt8Int64$fIntegralUpsizeInt8Int32$fIntegralUpsizeInt8Int16$fSubtractiveChar$fSubtractiveDouble$fSubtractiveFloat$fSubtractiveWord64$fSubtractiveWord32$fSubtractiveWord16$fSubtractiveWord8$fSubtractiveWord$fSubtractiveNatural$fSubtractiveInt64$fSubtractiveInt32$fSubtractiveInt16$fSubtractiveInt8$fSubtractiveInt$fSubtractiveIntegerorderingToSign unPrimMonad_unsafePrimCastunsafePrimToSTunsafePrimToIOunsafePrimFromIO primTouch $fPrimMonadST $fPrimMonadIOequalcompare_ $fOrdFinalPtr $fEqFinalPtr$fShowFinalPtr impossibleSize8Offset8FileSize+..==# offsetOfE offsetPlusE offsetMinusE offsetRecast offsetCastsizeCastsizeLastOffset sizeAsOffset offsetAsSizesizeOfE$fSubtractiveSize$fAdditiveSize$fIsNaturalSize$fIsIntegralSize$fIntegralSize$fSubtractiveOffset$fAdditiveOffset$fIsNaturalOffset$fIsIntegralOffset$fIntegralOffsetOutOfBoundOperation InvalidRecastRecastDestinationSizeRecastSourceSizeOOB_Read OOB_Write OOB_MemSet OOB_Index outOfBoundprimOutOfBound isOutOfBound$fExceptionInvalidRecast$fExceptionOutOfBound$fNormalForm(,,,,,,,)$fNormalForm(,,,,,,)$fNormalForm(,,,,,)$fNormalForm(,,,,)$fNormalForm(,,,)$fNormalForm(,,)$fNormalForm(,)$fNormalForm[]$fNormalFormEither$fNormalFormMaybe$fNormalFormSize$fNormalFormOffset$fNormalFormPtr$fNormalFormCDouble$fNormalFormCFloat$fNormalFormCULLong$fNormalFormCLLong$fNormalFormCULong$fNormalFormCLong$fNormalFormCUInt$fNormalFormCInt$fNormalFormCUShort$fNormalFormCShort$fNormalFormCSChar$fNormalFormCUChar$fNormalFormCChar$fNormalForm()$fNormalFormBool$fNormalFormChar$fNormalFormDouble$fNormalFormFloat$fNormalFormNatural$fNormalFormWord$fNormalFormWord64$fNormalFormWord32$fNormalFormWord16$fNormalFormWord8$fNormalFormInteger$fNormalFormInt$fNormalFormInt64$fNormalFormInt32$fNormalFormInt16$fNormalFormInt8unsafeUArrayUnpinnedMaxSize GHC.IO.UnsafeunsafePerformIO sizeRecast primBaIndex primMbaRead primMbaWriteprimArrayIndexprimMutableArrayReadprimMutableArrayWritesizeIntsizeWord sizeInBytesprimOffsetRecast primOffsetOfEprimWordGetByteAndShiftprimWord64GetByteAndShiftprimWord64GetHiLo $fPrimTypeBE $fPrimTypeLE$fPrimTypeCUChar$fPrimTypeCChar$fPrimTypeChar$fPrimTypeDouble$fPrimTypeFloat$fPrimTypeInt64$fPrimTypeInt32$fPrimTypeInt16$fPrimTypeInt8$fPrimTypeWord64$fPrimTypeWord32$fPrimTypeWord16$fPrimTypeWord8$fPrimTypeWord $fPrimTypeIntinternalFromListinternalToListinternalCompare unsafeNewunsafeCopyElementsunsafeCopyBytesunsafeCopyBytesRO unsafeRead unsafeWrite blockType lengthBytesempty_concatunsafeCopyElementsRO $fIsListBlock $fMonoidBlock $fOrdBlock $fEqBlock $fShowBlock$fNormalFormBlock $fDataBlockmutableLengthSizeiterSetreadwritemutableLengthBytesisContinuation getNbBytesisContinuation# getNbBytes#unTable contTable headTableprimCopyFreezedBytesprimCopyFreezedBytesOffsetprimCopyFreezedW32primCopyFreezedW64 primMutableByteArraySlideToStartprimMutableAddrSlideToStart getHErrnoherr_HostNotFound herr_NoDataherr_NoRecovery herr_TryAgainEntropySystemMissing$fExceptionEntropySystemMissing entropyGather EntropyCtxEntropySyscallc_sysrandom_linux entropyOpen entropyCloseentropyMaximumSizeopenDevgatherDevEntropysupportSyscall wordsWhen$fKeyedCollection[]$fFunctorThese$fBifunctorThese$fNormalFormThese$fThdableTuple4$fThdableTuple3$fThdable(,,,) $fThdable(,,)$fSndableTuple4$fSndableTuple3$fSndableTuple2$fSndable(,,,) $fSndable(,,) $fSndable(,)$fFstableTuple4$fFstableTuple3$fFstableTuple2$fFstable(,,,) $fFstable(,,) $fFstable(,)$fNormalFormTuple4$fNormalFormTuple3$fBifunctorTuple2$fNormalFormTuple2sumUTF8CharnextAsciiDigitBA asUTF8CharUTF8_1UTF8_2UTF8_3UTF8_4 nextAsciiBA nextAsciiPtrnextAsciiDigitPtr expectAsciiBAexpectAsciiPtrnumBytesskipNextHeaderValue charToBytescopyAt mutableLengthMUVecMA MUVecAddrmutableArrayProxyTysizeInMutableBytesOfContentmvectorProxyTy newUnpinned mutableSame newNativewithMutablePtrHintMutableByteArraymutableByteArraySetunsafeCopyAtROunsafeCopyFrom createFromIO vFromListvToListvCompareupdateTmpBABA0 arrayType vectorProxyTy unsafeIndexer unsafeDewrapunsafeFreezeShrink freezeShrink unsafeSlide unsafeUpdate unsafeRecast splitElempureSTmapIndex builderAppend builderBuild$fIsListUArray$fMonoidUArray $fOrdUArray $fEqUArray $fShowUArray$fNormalFormUArray $fDataUArrayForeign.C.TypesCCharCSCharCUCharCShortCUShortCIntCUIntCLongCULongCLLongCULLongCFloatCDoubleCPtrdiffCSizeCWchar CSigAtomicCClockCTime CUSeconds CSUSecondsCFileCFposCJmpBufCIntPtrCUIntPtrCIntMaxCUIntMaxError encodingNext convertFromTo encodingWriteisAsciinextASCII7_InvalidByteOutOfBound CharNotAsciiaone$fEncodingASCII7$fExceptionASCII7_InvalidISO_8859_1_Invalid NotISO_8859_1$fEncodingISO_8859_1$fExceptionISO_8859_1_Invalid UTF16_InvalidInvalidUnicode$fEncodingUTF16$fExceptionUTF16_Invalid UTF32_Invalid$fEncodingUTF32$fExceptionUTF32_Invalid fromModified accessBytesbuildByteArray MutableStringsToList sFromList stringType nextAscii expectAscii$fNormalFormString $fDataString$fIsListString$fIsStringString $fShowString EncoderUTF8validatemutableValidateindexN splitIndexcharMapfromChunkBytes decimalDigitsdecimalDigitsBAdecimalDigitsPtrReadFloatingCallbacknextWithIndexerwriteWithBuilder writeUTF8CharfromEncoderBytestoEncoderBytes stringDewrap$fEncodingEncoderUTF8$fExceptionValidationFailure onNewArrayfreezeUntilIndex $fIsListArray $fOrdArray $fEqArray $fShowArray $fMonoidArray$fFunctorArray$fNormalFormArray $fDataArray $fCopyString $fCopyArray $fCopyUArray $fCopyBlock$fCopy[] builderLift$fBuildableString$fBuildableArray$fBuildableUArray$fCollectionNonEmpty$fCollectionString$fCollectionArray$fCollectionUArray$fCollectionBlock$fCollection[]$fIsListNonEmpty$fFoldableBlock$fFoldableArray$fFoldableUArray $fFoldable[]$fIndexedCollectionString$fIndexedCollectionArray$fIndexedCollectionUArray$fIndexedCollectionBlock$fIndexedCollection[]$fInnerFunctorString$fInnerFunctorArray$fInnerFunctorUArray$fInnerFunctor[]$fMappableArray $fMappable[]$fMutableCollectionMArray$fMutableCollectionMutableBlock$fMutableCollectionMUArraymconcatCollection$fSequentialString$fSequentialArray$fSequentialUArray$fSequentialBlock$fSequential[]uncons2uncons3uncons4uncons5uncons6uncons7uncurry2uncurry3uncurry4uncurry5uncurry6uncurry7$fBoxedZippableArray$fBoxedZippable[]$fZippableString$fZippableArray$fZippableUArray $fZippable[]findPos splitChunkremoveArraySize $fIndexedCollectionChunkedUArray$fSequentialChunkedUArray$fCollectionChunkedUArray$fIsListChunkedUArray$fMonoidChunkedUArray$fNormalFormChunkedUArray$fEqChunkedUArrayunDListSuccessgetMoregetAllflushAll shouldStopcanStop decrementMutableAsciiString cucharToChar charToCUChar cucharMapFP64FP32PipeYieldAwaitDonePipeMLeftoverrunPipe MonadResource liftResourceTNextKeyRefCount ReleaseType ReleaseEarly ReleaseNormalReleaseException ReleaseMapReleaseMapClosed unResourceTVoid unConduitawait'absurdinjectLeftovers runResourceTallocate$fMonadResourceConduit$fMonadResourceResourceT$fMonadBracketResourceT$fMonadCatchResourceT$fMonadThrowResourceT$fMonadIOResourceT$fMonadTransResourceT$fMonadResourceT$fApplicativeResourceT$fFunctorResourceT$fApplicativeZipSink$fFunctorZipSink$fMonadCatchConduit$fMonadThrowConduit$fMonadFailureConduit$fMonadIOConduit$fMonadTransConduit$fMonadConduit$fApplicativeConduit$fFunctorConduit $fMonadPipe$fApplicativePipe $fFunctorPipe bitsPerTy shiftPerTy maskPerTy bitmapIndex unoptimised $fMutableCollectionMutableBitmap$fIndexedCollectionBitmap$fSequentialBitmap$fCollectionBitmap$fFoldableBitmap$fInnerFunctorBitmap$fIsListBitmap$fMonoidBitmap $fOrdBitmap $fEqBitmap $fShowBitmaphashMix8 HashResulthashEnd HashInitParamhashNew hashNewParam hashMix16 hashMix32 hashMix64 hashMixBytesunWord16unWord32 unWord64_32 FNV1Hash64 FNV1Hash32 fnv1_32_mixBafnv1a_32_mixBa fnv1_64_mixBafnv1a_64_mixBaxor32xor64 fnv1_32_Mix8 fnv1a_32_Mix8 fnv1_64_Mix8 fnv1a_64_Mix8$fHasherFNV1a_64$fHasherFNV1_64$fHasherFNV1a_32$fHasherFNV1_32$fHashableTuple4$fHashableTuple3$fHashableTuple2$fHashable(,,,,,)$fHashable(,,,,)$fHashable(,,,)$fHashable(,,) $fHashable(,) $fHashable[]$fHashableUArray$fHashableString$fHashableInteger$fHashableInt64$fHashableInt32$fHashableInt16$fHashableInt8$fHashableNatural$fHashableWord64$fHashableWord32$fHashableWord16$fHashableWord8 fromLString toLStringshowHex4showHexformat skipColonskipDot takeAWord8 takeAWord16 withComponentSipHashSipKeymixBaSipIncrementalSipIncremental0SipIncremental1SipIncremental2SipIncremental3SipIncremental4SipIncremental5SipIncremental6SipIncremental7 InternalStateSip newSipStatemix8Primmix8mix32mix64finishdoRoundprocessfinalize loopRounds andMask64$fHasherSip1_3$fHasherSip2_4c_rngv1_generate rngv1KeySize rngv1GeneraterunGenGenSeedGenRng GenParamsgenMaxSizeIntegralgenMaxSizeArraygenMaxSizeStringgenRnggenRngNewNoFail genGenerator genWithRng genWithParams $fMonadGen$fApplicativeGen $fFunctorGenarbitraryIntegerarbitraryNatural arbitraryChararbitraryPrimtypearbitraryUArrayOfgenMax$fArbitrary(,,,,,)$fArbitrary(,,,,)$fArbitrary(,,,)$fArbitrary(,,)$fArbitrary(,)$fArbitraryEither$fArbitraryMaybe$fArbitraryDouble$fArbitraryFloat$fArbitraryString$fArbitraryBool$fArbitraryChar$fArbitraryInt8$fArbitraryInt16$fArbitraryInt32$fArbitraryInt64$fArbitraryWord8$fArbitraryWord16$fArbitraryWord32$fArbitraryWord64$fArbitraryWord$fArbitraryInt$fArbitraryNatural$fArbitraryIntegerPropertyTestArg PropertyEOA PropertyArgPropertyBoolean PropertyNamedPropertyBinaryOp PropertyAnd PropertyFailPropertyTestResultcheckHasSucceedcheckHasFailedpretty$fIsProperty(->)$fIsPropertyProperty$fIsPropertyPropertyCheck$fIsProperty(,)$fIsPropertyBooltestPathindentgetSeed getGenParamsnumTestsCheck defaultConfig DisplayOptionDisplayTerminalErrorOnlyDisplayGroupOnlyDisplayTerminalVerboseConfig testPassed testFaileddisplayOptionsSeedrunCheck HasFailures TestResultPropertyResult GroupResultPropertySuccessPropertyFailedgroupHasSubGroupnbFailnbTests parseArgsonDisplayOption whenErrorOnly whenGroupOnly whenVerbosepassedfailedtestdisplayCurrentdisplayPropertySucceed successString failureStringdisplayPropertyFailed pushGroup testProperty diffBlameFileName_InvalidContainsNullByteContainsSeparator EncodingErrorUnknownTrailingBytesFilePath_InvalidContiguousPathSeparatorpathSeparatorPOSIXfileNameToStringfileNameToLStringpathSeparatorPOSIXCpathSeparatorC pathSeparator hasNullByte hasSeparator isSeparatorhasContigueSeparatorsjoinfilenameIntercalate FileMappingfileMappingToFinalPtr FileMapReadFfileMappingPtrfileMappingSizefileMappingUnmapMemorySyncFlagMemorySyncAsyncMemorySyncSyncMemorySyncInvalidate MemoryAdviceMemoryAdviceNormalMemoryAdviceRandomMemoryAdviceSequentialMemoryAdviceWillNeedMemoryAdviceDontNeedMemoryProtection MemoryMapFlagMemoryMapSharedMemoryMapPrivate memoryMap memoryUnmap memoryAdvise memoryLock memoryUnlock memoryProtect memorySyncsysconfPageSizeMemoryProtectionNoneMemoryProtectionReadMemoryProtectionWriteMemoryProtectionExecute c_sysconf c_munlockc_mlock c_mprotectc_msync c_madvisec_munmapc_mmapcvalueOfMemoryProtscvalueOfMemorySyncfileSizeToCSizefileSizeFromIntegerGHC.IO.Handle.TypesHandlehGetNonBlockinghGetSomeinvalidBufferSize blockSizegetSize