h&!      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred(5689:;>? nspaceAn 8-tuple of values.nspace, but with better instances. nspace(An axis-aligned bounding box in 3-space.nspace containsCube c1 c2 is true when c2 is inside or equal to c1.nspace$Does the cube contain a given point?nspace)Get the co-ordinates of the corners of a  .nspace Normalize a   so it has a positive .nspaceDo two   s intersect?nspaceGet the volume of a  .nspace Compute the intersection of two  s.nspaceJoin together  / constructors which all contain the same value.      Safe-Inferred(5689:;>?F :nspace, but with better instances.=nspace(An axis-aligned bounding box in 3-space.Enspace containsRect c1 c2 is true when c2 is inside or equal to c1.Fnspace$Does the rect contain a given point?Gnspace)Get the co-ordinates of the corners of a =.Hnspace Normalize a = so it has a positive @.InspaceDo two = s intersect?JnspaceGet the area of a =.Knspace Compute the intersection of two =s.MnspaceJoin together </ constructors which all contain the same value.:<;=@?>ABCDEFGHIJKLMN=@?>ABCDEFG:<;HIJKLMN Safe-Inferred(5689:;>? _nspaceA _ is a ( with the additional property that its ` = 3 operation is commutative and idempotent. That is: a ` b = b ` a and a ` a = a =These two properties ensure the internal representations of  and  1 can't leak out when performing spatial queries._`_` Safe-Inferred(5689:;>?`ynspaceA type mapping values at (infinitely precise) locations in 2D space. That is, you can consider an y to be a function   -> a6, equipped with efficient means of querying the space.y,s should usually be constructed using their al or & interfaces, as well as by way of the  function.~nspaceCompute the center of a =.nspace Subdivide a = into four = s which fill up the same volume.nspace7Get the value used to fill the infinity of space in an y.nspaceGet a == guaranteed to bound all of the non-defaulted values in the y.nspace Construct a =4 centered around $(0, 0, 0)$, with side length $2n$.nspaceBuild a larger : Quad by doubling each side length, keeping the contents in the center.nspaceReallocate the bounds of the y( so each side length is twice the size.nspace0Get the smallest integer which will contain the = when given as an argument to . E ( ( c)) c == True nspace def val c constructs a new y, which has value val everywhere in the rect c, and def everywhere else.nspaceFill a = with the given value in an ynspace+Get the value at the given position in the y.nspaceQuery a region of space in an y$. This method is a special case of  , specialized to finite regions.9For example, if you'd like to check if everything in the = has a specific value, use    as your choice of _. If you'd like to check whether anything in the space has a value, instead use   .nspacePartition the y" into contiguous, singular-valued =s. Satsifies the law foldr (uncurry  ) (pure $  ot) ( ot) == ot nspace)Get the unique elements contained in the y.nspaceFuse together all adjacent regions of space which contain the same value. This will speed up subsequent queries, but requires traversing the entire tree.nspace Combine two ys using a different semigroup than usual. For example, in order to replace any values in qt1 with those covered by qt2 , we can use:    qt1 qt2 =>?@Gyz{|}~yz{|}=>?@~G Safe-Inferred(5689:;>? nspaceA type mapping values at (infinitely precise) locations in 3D space. That is, you can consider an  to be a function   -> a6, equipped with efficient means of querying the space.,s should usually be constructed using their al or & interfaces, as well as by way of the  function.nspaceCompute the center of a  .nspace Subdivide a   into eight   s which fill up the same volume.nspace7Get the value used to fill the infinity of space in an .nspaceGet a  = guaranteed to bound all of the non-defaulted values in the .nspace Construct a  4 centered around $(0, 0, 0)$, with side length $2n$.nspaceBuild a larger   by doubling each side length, keeping the contents in the center.nspaceReallocate the bounds of the ( so each side length is twice the size.nspace0Get the smallest integer which will contain the   when given as an argument to .  ( ( c)) c == True nspace def val c constructs a new , which has value val everywhere in the cube c, and def everywhere else.nspaceFill a   with the given value in an nspace+Get the value at the given position in the .nspaceQuery a region of space in an $. This method is a special case of  , specialized to finite regions.9For example, if you'd like to check if everything in the   has a specific value, use    as your choice of _. If you'd like to check whether anything in the space has a value, instead use   .nspacePartition the " into contiguous, singular-valued  s. Satsifies the law  (uncurry $  ( ot)) ( ot) == ot nspace)Get the unique elements contained in the .nspaceFuse together all adjacent regions of space which contain the same value. This will speed up subsequent queries, but requires traversing the entire tree.nspace Combine two s using a different semigroup than usual. For example, in order to replace any values in ot1 with those covered by ot2 , we can use:    ot1 ot2    Safe-Inferred(5689:;>? !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHH!"IJK'(L*+,-/012345MNOPQREFGSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy,z{|}~  mnopqruvwy,z%nspace-0.2.0.0-JcrzAw5ubjR6TX1H0E6SmC Data.QuadTree Data.OctTreeData.OctTree.InternalData.QuadTree.InternalData.SemilatticeControl.Monad.FreeFreeQuadTreeOctTree Data.MonoidAllAnyData.SemigroupLast Paths_nspace"linear-1.22-ANafbhSdznBKD15zEySBd9 Linear.V4V4 Linear.V3V3 Linear.V2V2OctFillSplitCuber_posr_sizeOct8r_xr_yr_zr_wr_hr_dcubeContainsCubecubeContainsPoint cubeCorners normalize intersectscubeSize getIntersectunwrapfusedoFuse$fApplicativeOct $fMonadFree$fApplicativeFree$fEqFree $fFunctorFree$fFoldableFree$fTraversableFree $fGenericFree$fEqOct$fOrdOct $fShowOct $fFunctorOct $fFoldableOct$fTraversableOct $fGenericOct$fSemigroupOct $fMonoidOct $fShowCube $fReadCube$fEqCube $fGenericCube $fOrdCube $fFunctorCube $fShowFree $fMonoidFree$fSemigroupFreeRectrectContainsRectrectContainsPoint rectCornersrectSize $fShowRect $fReadRect$fEqRect $fGenericRect $fOrdRect $fFunctorRect Semilattice/\$fSemilattice(,,,,)$fSemilattice(,,,)$fSemilattice(,,)$fSemilattice(,)$fSemilattice:*:$fSemilattice:.:$fSemilatticeCompose$fSemilatticeProduct$fSemilatticeM1$fSemilatticeK1$fSemilatticeConst$fSemilatticeMaybe$fSemilatticeFUN$fSemilatticeMonoidalHashMap$fSemilatticeMonoidalIntMap$fSemilatticeMonoidalIntMap0$fSemilatticeMonoidalMap$fSemilatticeMonoidalMap0$fSemilatticeSet$fSemilatticeMin$fSemilatticeMax$fSemilatticeAll$fSemilatticeAny$fSemilattice() ot_default ot_root_powot_treemidpoint subdivide defaultValue boundingRect mkRectByPowfilllookupquerytoRectselements combineAla$fApplicativeQuadTree $fEqQuadTree$fSemilatticeQuadTree$fShowQuadTree$fFunctorQuadTree $fNumQuadTree$fSemigroupQuadTree$fMonoidQuadTree boundingCube mkCubeByPowtoCubes$fApplicativeOctTree $fEqOctTree$fSemilatticeOctTree $fShowOctTree$fFunctorOctTree $fNumOctTree$fSemigroupOctTree$fMonoidOctTreebaseGHC.BaseMonoid<>GHC.RealRational ApplicativedoubleGoreallocrectBoundingLogrect Data.FoldablefoldMapcubeBoundingLogcubeversiongetDataFileName getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDir