úÎ!nÍhmn      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm3Copyright (c) 2015, Birte Wagner, Sebastian PhilippMIT8Birte Wagner, Sebastian Philipp (sebastian@spawnhost.de) experimental not portableSafe27[ data-r-treeMinimal bounding box data-r-treeycreated a minimal bounding box (or a rectangle) The first point must be smaller, than the second one. This is unchecked. data-r-treethe property, that a  must hold  data-r-treeinternal only.  data-r-treeunifies two MBBs into one  data-r-treecalculates the area of the rect  data-r-tree4returns True, when the first mbb contains the second data-r-treePreturns the intersection of both mbbs. Returns Nothing, if they don't intersect. data-r-treex - coordinate of first point data-r-treey - coordinate of first point data-r-treex - coordinate of second point data-r-treex - coordinate of second point   3Copyright (c) 2015, Birte Wagner, Sebastian PhilippMIT8Birte Wagner, Sebastian Philipp (sebastian@spawnhost.de) experimental not portableSafe247>:Æn data-r-treeWIt is possible, to change these constants, but the tree won't be space optimal anymore." data-r-treeWIt is possible, to change these constants, but the tree won't be space optimal anymore.$ data-r-treecreates an empty tree% data-r-treereturns o , if emptynull empty = True& data-r-treecreates a single element tree* data-r-treecreates a tree out of pairs+ data-r-tree)merges all singletons into a single tree., data-r-tree%creates a list of pairs out of a tree"toList t = zip (keys t) (values t)- data-r-treereturns all keys in this tree"toList t = zip (keys t) (values t). data-r-treereturns all values in this tree"toList t = zip (keys t) (values t)/ data-r-tree#Inserts an element whith the given X and a value in a tree. The combining function will be used if the value already exists.0 data-r-tree#Inserts an element whith the given Q and a value in a tree. An existing value will be overwritten with the given one.insert = insertWith const1 data-r-treeUnifies left and right D. Will create invalid trees, if the tree is not a leaf and contains Gs which also exists in the left tree. Much faster than union, though.2 data-r-treeÚnifies left and right D. Will create invalid trees, if the tree is not a leaf and contains Gs which also exists in the left tree. Much faster than union, though.4 data-r-treeO(n²) solution6 data-r-tree*returns the value if it exists in the tree7 data-r-treeJreturns all keys and values, which intersects with the given bounding box.8 data-r-treeAreturns all values, which intersects with the given bounding box.9 data-r-treeIreturns all keys and values, which are located in the given bounding box.: data-r-tree@returns all values, which are located in the given bounding box.; data-r-tree=returns all keys and values containing the given bounding box< data-r-tree4returns all values containing the given bounding box= data-r-treesDelete a key and its value from the RTree. When the key is not a member of the tree, the original tree is returned.? data-r-treevUnifies the first and the second tree into one. The combining function is used for elemets which exists in both trees.@ data-r-tree7Unifies the first and the second tree into one. If an @ is a key in both trees, the value from the left tree is chosen.union = unionWith constA data-r-tree&map, which also filters Nothing valuesE data-r-tree(returns the number of elements in a tree3! "#$%&'()*+,-./0123456789:;<=>?@ABCDE3! $&0/=A@?678:9;<E%-.*,>CB21+3D5)#("4'3Copyright (c) 2015, Birte Wagner, Sebastian PhilippMIT8Birte Wagner, Sebastian Philipp (sebastian@spawnhost.de) experimental not portableSafe>±$%&*,-./06789:;<=?@AE$&0/=A@?678:9<;E%-.*,3Copyright (c) 2015, Birte Wagner, Sebastian PhilippMIT8Birte Wagner, Sebastian Philipp (sebastian@spawnhost.de) experimental not portableNone27Mg™O data-r-tree+converts a lazy RTree into a strict RTree O(n)P data-r-tree+converts a strict RTree into a lazy RTree O(1)Q data-r-treecreates an empty treeR data-r-treereturns o , if emptynull empty = TrueS data-r-treecreates a single element treeT data-r-treecreates a tree out of pairsp data-r-tree)merges all singletons into a single tree.U data-r-tree%creates a list of pairs out of a tree"toList t = zip (keys t) (values t)V data-r-treereturns all keys in this tree"toList t = zip (keys t) (values t)W data-r-treereturns all values in this tree"toList t = zip (keys t) (values t)X data-r-tree#Inserts an element whith the given X and a value in a tree. The combining function will be used if the value already exists.Y data-r-tree#Inserts an element whith the given Q and a value in a tree. An existing value will be overwritten with the given one.insert = insertWith constq data-r-treeUnifies left and right ND. Will create invalid trees, if the tree is not a leaf and contains Gs which also exists in the left tree. Much faster than union, though.r data-r-treeUnifies left and right ND. Will create invalid trees, if the tree is not a leaf and contains Gs which also exists in the left tree. Much faster than union, though.Z data-r-tree*returns the value if it exists in the tree[ data-r-treeIreturns all keys and values, which intersect with the given bounding box.\ data-r-tree?returns all values, which intersect with the given bounding box] data-r-treeIreturns all keys and values, which are located in the given bounding box.^ data-r-tree@returns all values, which are located in the given bounding box._ data-r-tree=returns all keys and values containing the given bounding box` data-r-tree4returns all values containing the given bounding boxa data-r-treesDelete a key and its value from the RTree. When the key is not a member of the tree, the original tree is returned.b data-r-treevUnifies the first and the second tree into one. The combining function is used for elemets which exists in both trees.c data-r-tree7Unifies the first and the second tree into one. If an @ is a key in both trees, the value from the left tree is chosen.union = unionWith constd data-r-tree&map, which also filters Nothing valuess data-r-treemaps strictly over the Ne data-r-tree(returns the number of elements in a treef data-r-treeN9 is not really a Functor. Because this law doesn't hold: fmap id = idNOPQRSTUVWXYZ[\]^_`abcdeNPOQSYXadcbZ[\^]`_eRVWTUt      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU*+,023456<=>?@ABCEFGKSPQRONLMVWXY178Z[(data-r-tree-0.6.0-HxW7KWxwR847heBr9qHG8DData.RTree.BaseData.RTree.MBBData.RTree.Strict Data.RTreebase Data.OldList partitionMBBgetUlxgetUlygetBrxgetBrymbb isValidMBB isPointMBB unionsMBBunionMBBarea containsMBB intersectMBB $fBinaryMBB $fShowMBB$fEqMBB $fGenericMBB$fOrdMBBRTreeNode4Node3Node2NodeLeafEmptygetMBBgetC1getC2getC3getC4 getChildren'getElemn unionMBB'emptynull singletonnodecreateNodeWithChildren getChildrenfromList fromList'toListkeysvalues insertWithinsertunionDistinctWith unionDistinctunionDistinctSplit splitNodeareaIncreasesWithlookupintersectWithKey intersectlookupRangeWithKey lookupRangelookupContainsRangeWithKeylookupContainsRangedelete foldWithMBB unionWithunionmapMaybeisValidppdepthlength $fMonoidRTree$fSemigroupRTree $fBinaryRTree $fNFDataRTree $fShowRTree $fEqRTree$fGenericRTree$fFunctorRTreetoStricttoLazymghc-prim GHC.TypesTruemap