HlD#      !"  Safe-Inferred#$%&#$%&#$%& Safe-Inferred '()*+,-./ '()*+,-./ '()*+,-./ Safe-Inferred'A Range Tree is a construct that can be built and then efficiently evaluated so that you can compress an entire tree of operations on ranges into a single range quickly. The only purpose of this tree is to allow efficient construction of range operations that can be evaluated as is required.8A leaf with a set of ranges that are collected together.Invert a range tree, this is a 0 operation.8Combine two range trees together with a single operationMThese are the operations that can join two disjunct lists of ranges together.(Represents the set difference operation.*Represents the set intersection operation.#Represents the set union operation.The Range Data structure; it is capable of representing any type of range. This is the primary data structure in this library. Everything should be possible to convert back into this datatype. All ranges in this structure are inclusively bound. -Represents an infinite range over all values. 6Represents a range with only an inclusive upper bound. 6Represents a range with only an inclusive lower bound. 5Represents a bounded and inclusive range of elements. 'Represents a single element as a range.   None123456789:;<=>?@ABCDEFG123456789:;<=>?@ABCDEFG132456789:;<=>?@ABCDEFG NoneHHHNoneEvaluates a Range Tree into the final set of ranges that it compresses down to. Use this whenever you want to finally evaluate your constructed Range Tree.  None [Performs a set union between the two input ranges and returns the resultant set of ranges.bPerforms a set intersection between the two input ranges and returns the resultant set of ranges.`Performs a set difference between the two input ranges and returns the resultant set of ranges.RAn inversion function, given a set of ranges it returns the inverse set of ranges.YA check to see if two ranges overlap. If they do then true is returned; false otherwise.|Given a range and a value it will tell you wether or not the value is in the range. Remember that all ranges are inclusive.Given a list of ranges this function tells you if a value is in any of those ranges. This is especially useful for more complex ranges..When you create a range there may be overlaps in your ranges. However, for the sake of efficiency you probably want the list of ranges with no overlaps. The mergeRanges function takes a set of ranges and returns the same set specified by the minimum number of Range objects. A useful function for cleaning up your ranges. Please note that, if you use any of the other operations on sets of ranges like invert, union and intersection then this is automatically done for you. Which means that a function like this is redundant: mergeRanges . intersection`A set of ranges represents a collection of real values without actually instantiating those values. This allows you to have infinite ranges. However, sometimes you wish to actually get the values that your range represents, or even get a sample set of the values. This function generates as many of the values that belong to your range as you like.    NonexThe Nested Range is a structure that in a nested form of many ranges where there can be multiple ranges at every level.qGiven a list of nested values and a nested range tell us wether the nested value exists inside the nested range.None3YThe arguments that are used, and can be modified, while parsing a standard range string.$A separator that represents a union.5A separator that separates the two halves of a range.,A separator that implies an unbounded range. These are the default arguments that are used by the parser. Please feel free to use the default arguments for you own parser and modify it from the defaults at will.!Given a string this function will either return a parse error back to the user or the list of ranges that are represented by the parsed string."^Given the parser arguments this returns a parser that is capable of parsing a list of ranges.  !I"J !"!"  !I"JK     !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR STUV range-0.1.1.1Data.Range.RangeTreeData.Range.RangeData.Range.NestedRangeData.Range.ParserData.Range.UtilData.Range.SpansData.Range.DataData.Range.RangeInternalData.Range.RangeTreeInternal RangeTree RangeLeafRangeNodeInvert RangeNodeRangeOperationRangeDifferenceRangeIntersection RangeUnionRange InfiniteRangeUpperBoundRangeLowerBoundRange SpanRangeSingletonRangeevaluateunion intersection differenceinvert rangesOverlapinRangeinRanges mergeRanges fromRanges NestedRange inNestedRangeRangeParserArgsArgsunionSeparatorrangeSeparatorwildcardSymbol defaultArgs parseRangesranges insertionSort isBetween takeEvenlypairsinsertionSortSpansspanCmpintersectSpans insertSpan sortSpans joinSpans unionSpans invertSpans hasOverlapsghc-prim GHC.Classesnot RangeMergeIRMRMlargestLowerBoundlargestUpperBound spanRangesemptyRangeMerge storeRange storeRanges loadRangesexportRangeMergeintersectSpansRM intersectWithfixLowerfixUpperintersectionRangeMergescalculateBoundOverlapunionRangeMergesfilterLowerBoundfilterUpperBoundboundCmp appendSpanRMinvertRMevaluateRangeTreestring_ readSection