Bw=      !"#$%&'()*+,-./0123456789:;< NoneB =>?@ABCDEFGH @ABCDEFGH =>?@ABCDEFGHNoneBICache line size, in bytesJKLMNOPQIRSTUV JKMNOPRSTUV JKLMNOPQIRSTUVNoneBWLWhat you have to mask an integer index by to tell if it's cacheline-alignedXYZW[\]^_`abcdefghijkXYZW[\abcdefghijXYZW[\]^_`abcdefghij None lmnopqrstuvwluvwlmnopqrstuvw None Bx(Returns 0 if x is positive, -1 otherwiseyAbs of an integer, branchlessz Returns 0xfff..fff (aka -1) if a == b, 0 otherwise.{^Search through a mutable vector for a given int value, cache-line aligned. If the start index is cache-line aligned, and there is more than a cache-line's room between the start index and the end of the vector, we will search the cache-line all at once using an efficient branchless bit-twiddling technique. Otherwise, we will use a typical loop.|iSearch through a mutable vector for one of two given int values, cache-line aligned. If the start index is cache-line aligned, and there is more than a cache-line's room between the start index and the end of the vector, we will search the cache-line all at once using an efficient branchless bit-twiddling technique. Otherwise, we will use a typical loop.}kSearch through a mutable vector for one of three given int values, cache-line aligned. If the start index is cache-line aligned, and there is more than a cache-line's room between the start index and the end of the vector, we will search the cache-line all at once using an efficient branchless bit-twiddling technique. Otherwise, we will use a typical loop.~xyz{vector to search start indexvalue to search for7dest index where it can be found, or "-1" if not found|vector to search start indexvalue to search forvalue 2 to search for7dest index where it can be found, or "-1" if not found}vector to search start indexvalue to search forvalue 2 to search forvalue 3 to search for7dest index where it can be found, or "-1" if not found xyz{|}~xyz{|} None None default valuenew sizenumber of elements to copy old arraySafe #A typeclass for hash tables in the V monad. The operations on these hash tables are typically both key- and value-strict.)Creates a new, default-sized hash table. O(1).'Creates a new hash table sized to hold n elements. O(n).\Inserts a key/value mapping into a hash table, replacing any existing mapping for that key.O(n) worst case, O(1) amortized./Deletes a key-value mapping from a hash table. O(n) worst case, O(1) amortized..Looks up a key-value mapping in a hash table. O(n) worst case, (O(1) for cuckoo hash), O(1) amortized.@A strict fold over the key-value records of a hash table in the  monad. O(n).BA side-effecting map over the key-value records of a hash table. O(n).Computes the overhead (in words) per key-value mapping. Used for debugging, etc; time complexity depends on the underlying hash table implementation. O(n). 4Create a hash table from a list of key-value pairs. O(n). FCreate a hash table from a list of key-value pairs, with a size hint. O(n). 7Given a hash table, produce a list of key-value pairs. O(n).     NoneB O2-element array, stores how many entries and deleted entries are in the table. 3An open addressing hash table using linear probing. ,See the documentation for this function in Data.HashTable.Class#v:new.,See the documentation for this function in Data.HashTable.Class#v:newSized.,See the documentation for this function in Data.HashTable.Class#v:delete.,See the documentation for this function in Data.HashTable.Class#v:lookup.,See the documentation for this function in Data.HashTable.Class#v:insert.,See the documentation for this function in Data.HashTable.Class#v:foldM.,See the documentation for this function in Data.HashTable.Class#v:mapM_.,See the documentation for this function in &Data.HashTable.Class#v:computeOverhead.0   &  NoneB 8in buckets, total size is numElemsInCacheLine * _sizeA cuckoo hash table.,See the documentation for this function in Data.HashTable.Class#v:new.,See the documentation for this function in Data.HashTable.Class#v:newSized.,See the documentation for this function in Data.HashTable.Class#v:insert.,See the documentation for this function in &Data.HashTable.Class#v:computeOverhead.,See the documentation for this function in Data.HashTable.Class#v:delete.,See the documentation for this function in Data.HashTable.Class#v:lookup.,See the documentation for this function in Data.HashTable.Class#v:foldM. ,See the documentation for this function in Data.HashTable.Class#v:mapM_.*  hash tableare we updating?keycache line start address 1cache line start address 2hash1hash2 hash table hash code 1 hash code 2 cache line 1 cache line 2keyvalue!"  " !"NoneBOT #A linear hash table.$,See the documentation for this function in Data.HashTable.Class#v:new.%,See the documentation for this function in Data.HashTable.Class#v:newSized.&,See the documentation for this function in Data.HashTable.Class#v:delete.',See the documentation for this function in Data.HashTable.Class#v:lookup.(,See the documentation for this function in Data.HashTable.Class#v:insert.),See the documentation for this function in Data.HashTable.Class#v:mapM_.*,See the documentation for this function in Data.HashTable.Class#v:foldM.+,See the documentation for this function in &Data.HashTable.Class#v:computeOverhead.#$%&'()*+,- #$%&'()*+ #$%&'()*+#$%&'()*+,-NoneCT./A type alias for our hash tables, which run in ST", to set the state token type to   (aka  RealWorld) so that we can use them in ./,A type alias for the linear hash table. See Data.HashTable.ST.Linear.0,A type alias for the cuckoo hash table. See Data.HashTable.ST.Cuckoo.1OA type alias for a basic open addressing hash table using linear probing. See Data.HashTable.ST.Basic.2+See the documentation for this function in Data.HashTable.Class#v:new.3,See the documentation for this function in Data.HashTable.Class#v:newSized.4+See the documentation for this function in Data.HashTable.Class#v:insert.5+See the documentation for this function in Data.HashTable.Class#v:delete.6+See the documentation for this function in Data.HashTable.Class#v:lookup.7,See the documentation for this function in Data.HashTable.Class#v:fromList.8,See the documentation for this function in +Data.HashTable.Class#v:fromListWithSizeHint.9+See the documentation for this function in Data.HashTable.Class#v:toList.:+See the documentation for this function in Data.HashTable.Class#v:foldM.;+See the documentation for this function in Data.HashTable.Class#v:mapM_.<,See the documentation for this function in &Data.HashTable.Class#v:computeOverhead../0123456789:;<./0123456789:;<10/.23456789;:<./0123456789:;<     !"#$%&'()*+,-./0123456789:;<-=>?@ABCDEFGHIJKLMNOP Q 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 6 7 8tuv w x y z { | x } ~        N {| {| }t)hashtables-1.2.1.1-6CF2XXGplNPKxTvweN7RlvData.HashTable.ClassData.HashTable.ST.BasicData.HashTable.ST.CuckooData.HashTable.ST.LinearData.HashTable.IO$Data.HashTable.Internal.UnsafeTricks Data.HashTable.Internal.IntArrayData.HashTable.Internal.Utils2Data.HashTable.Internal.CheapPseudoRandomBitStream!Data.HashTable.Internal.CacheLineData.HashTable.Internal.Array%Data.HashTable.Internal.Linear.Bucket HashTablenewnewSizedinsertdeletelookupfoldMmapM_computeOverheadfromListfromListWithSizeHinttoList $fMonoidSlot$fShowHashTable$fHashTableHashTable $fShowSlot IOHashTableLinearHashTableCuckooHashTableBasicHashTable TombStone EmptyElementDeletedElementKey emptyRecord deletedRecord keyIsEmpty keyIsDeletedtoKeyfromKeymakeEmptyVectorwriteDeletedElement cacheLineSizeElemIntArrayIAprimWordToElem elemToInt elemToInt#elemMaskwordSizeInBytesnewArray readArray writeArraylengthtoPtrcacheLineIntMaskwordSizenumElemsInCacheLinecacheLineIntBits whichBucket binarySearchbinarySearchBybinarySearchByBounds primeSizes nextBestPrimebumpSizeshiftLshiftRLiShiftLiShiftRLnextHighestPowerOf2log2highestBitMask forceSameTypebaseGHC.IO unsafeIOToST BitStream _curRandom _bitsLeft _randomPos random32s random64s numRandomsrandoms newBitStream getNextBitgetNBitssign#bl_abs#mask#cacheLineSearchcacheLineSearch2cacheLineSearch3prefetchCacheLine_writeprefetchCacheLine_readc_forwardSearch_3c_forwardSearch_2c_lineSearch_3c_lineSearch_2 c_lineSearchfI prefetchRead prefetchWriteforwardSearch2forwardSearch3 lineSearch lineSearch2 lineSearch3advanceByCacheLineSizeisCacheLineAlignedmaskw#(primitive-0.6.2.0-3HSsNCfUEEE4fjqDYVydYZData.Primitive.Array MutableArrayBucket_Bucket _bucketSize _highwater_keys_valuesbucketSplitSizenewBucketArraynelemsAndOverheadInWords emptyWithSize newBucketSize expandArrayexpandBucketArray growBucketTosnocsizemovedebugGHC.STST_loadSlot_slot _wasDeleted HashTable__size_hashesSizeRefsHTintSzreadLoad writeLoad readDelLoad writeDelLoad newSizeRefs newSizedReal insertRecord checkOverflow rehashAll growTabledelete'maxLoad emptyMarker deletedMarker recordIsEmptyrecordIsDeletedhash hashToElemnewRefwriteRefreadRef_rng _maxAttemptslookup' searchOne foldMWorkmapMWorkinsert' updateOrFail cuckooOrFailgrow hashPrimehash1hash2 bumpFactor whichLine_level _splitptr_bucketssplitprimitiveInsertprimitiveInsert' fillFactorpower2hashKey hashAtLvlControl.Monad.Primitive PrimStateghc-prim GHC.TypesIO