! P      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe 8=>?@AUV`  genvalidity0 generates an integer between 0 (inclusive) and n. genvalidityA'genSplit a' generates a tuple '(b, c)' such that 'b + c' equals a. genvalidityJ'genSplit3 a' generates a triple '(b, c, d)' such that 'b + c + d' equals a. genvalidityT'genSplit4 a' generates a quadruple '(b, c, d, e)' such that 'b + c + d + e' equals a. genvalidity['genSplit5 a' generates a quintuple '(b, c, d, e, f)' such that 'b + c + d + e + f' equals a. genvalidity"'arbPartition n' generates a list ls such that 'sum ls' equals n. genvalidity A version of listOf. that takes size into account more accurately.eThis generator distributes the size that is is given among the values in the list that it generates.  genvalidity>Turn a shrinking function into a function that shrinks tuples.  genvalidity?Turn a shrinking function into a function that shrinks triples.  genvalidityBTurn a shrinking function into a function that shrinks quadruples.  None 8=>?@AUV`s genvalidity;A class of types for which invalid values can be generated.How to instantiate Step 1r: Realise that you probably do not want to. It makes no sense, and serves no purpose, to instantiate  for types which contain no invalid values. (In fact, the default implementation will go into an infinite loop for such types.) You should only instantiate  if you explicitly want to use it to write tests that deal with invalid values, or if you are writing a container for parametric values.Step 2: Instantiate " without overriding any functions. genvalidityIGenerate an invalid datum, this should cover all possible invalid values .genInvalid = genUnchecked `suchThat` isInvalidTo speed up testing, it may be a good idea to implement this yourself. If you do, make sure that it is possible to generate all possible invalid data, otherwise your testing may not cover all cases. genvalidity9A class of types for which valid values can be generated.How to instantiate Step 1: Try to instantiate Y without overriding any functions. This is only possible if your type has a " instance. If it doesn't, go to step 2. It is possible that, if few values are valid or if validity checking is expensive, that the resulting generator is too slow. In that case, go to Step 2.Step 2: Try to instantiate  using the helper functions via " This involves using ) to override   and using + to override !. Every time you override  , you should also override !Step 30: If the above is not possible due to lack of a 5 instance, then you should emulate what )L does. This means that all sub-parts should be generated using  U. Make sure to generate any possible valid value, but only valid values. A note about If you also write  Arbitrary instances for GenValid% types, it may be best to simply use )arbitrary = genValid shrink = shrinkValid  genvalidityPGenerate a valid datum, this should cover all possible valid values in the type)The default implementation is as follows: + genValid = genUnchecked `suchThat` isValidTo speed up testing, it may be a good idea to implement this yourself. If you do, make sure that it is possible to generate all possible valid data, otherwise your testing may not cover all cases.! genvalidityShrink a valid value.)The default implementation is as follows: / shrinkValid = filter isValid . shrinkUncheckedVIt is important that this shrinking function only shrinks values to valid values. If ! ever shrinks a value to an invalid value, the test that is being shrunk for might fail for a different reason than for the reason that it originally failed. This would lead to very confusing error messages." genvalidityCA class of types for which truly arbitrary values can be generated.How to instantiate "Step 1: Try to instantiate " via  . this is probably what you wantSAn instance of this class can be made automatically if the type in question has a ) instance. This instance will try to use #L to generate all structural sub-parts of the value that is being generated.Example: {-# LANGUAGE DeriveGeneric #-} data MyType = MyType Rational String deriving (Show, Eq, Generic) instance GenUnchecked MyTypegenerates something like: ^instance GenUnchecked MyType where genUnchecked = MyType <$> genUnchecked <*> genUnchecked,If this is not possible because there is no "< instance available for one of the sub-parts of your type, then do not instantiate " for your type. Just continue with  instead.Step 2: If an instatiation via 8 is not possible, then you should emulate what %I does. This means that all sub-parts should be generated using #. Make sure to generate any possible value, valid or not, that can exist at runtime even when taking the existence of  into account.$Warning: Invalid values can be funky2Some types have serious validity constraints. See W for example. These can behave very strangely when they are not valid. In that case, do not override " such that # only generates valid values!. In that case, do not override # at all. Instead, use   from 4 (see below) instead and consider not instantiating " at all.& genvalidityZShrink a term to any of its immediate subterms, and also recursively shrink all subterms.' genvalidity3Recursively shrink all immediate uncheckedSubterms.( genvalidity*All immediate uncheckedSubterms of a term.) genvalidityAGenerate a valid value by generating all the sub parts using the B instance, and trying that until a valid value has been generated RgenValidStructurally = genValidStructurallyWithoutExtraChecking `suchThat` isValidaThis is probably the function that you are looking for. If you do use this function to override  !, you probably also want to use + to override !.* genvalidityAGenerate a valid value by generating all the sub parts using the  instance,=This generator is _not_ guaranteed to generate a valid value.NThis is probably _not_ the function that you are looking for when overriding  l _unless_ the type in question has no _extra_ validity constraints on top of the validity of its sub parts.+ genvalidityShrink a term to any of its immediate valid subterms, and also recursively shrink all subterms, and then filtering out the results that are not valid. WshrinkValidStructurally = filter isValid . shrinkValidStructurallyWithoutExtraFiltering7This is probably the function that you are looking for., genvalidity`Shrink a term to any of its immediate valid subterms, and also recursively shrink all subterms.FThis shrinking function is _not_ guaranteed to shrink to valid values.NThis is probably _not_ the function that you are looking for when overriding !l _unless_ the type in question has no _extra_ validity constraints on top of the validity of its sub parts. genvalidity=Recursively shrink all immediate structurally valid subterms.- genvalidity&All immediate validSubterms of a term.Z genvalidity\This instance ensures that the generated list contains at least one element that satisfies . The rest is unchecked.] genvaliditysThis instance ensures that the generated triple contains at least one invalid element. The other two are unchecked.^ genvaliditysThis instance ensures that the generated triple contains at least one invalid element. The other two are unchecked._ genvaliditysThis instance ensures that the generated triple contains at least one invalid element. The other two are unchecked.` genvalidityuThis instance ensures that the generated tupse contains at least one invalid element. The other element is unchecked.v genvalidityQIf we can generate values of a certain type, we can also generate lists of them.P  !"#$%&'()*+,-."#$ !)*+, %&'(- None@A Safe+      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*genvalidity-0.8.0.0-GwVbpdi545T8drkp4AscmJData.GenValidityData.GenRelativeValidityData.GenValidity.Utils Unsafe.Coerce unsafeCoercePaths_genvalidity*QuickCheck-2.12.6.1-4a6Ozz7bfHzLQyA4XOD1DcTest.QuickCheck.GenshuffleupTogenSplit genSplit3 genSplit4 genSplit5 arbPartition genListOf shrinkTupleshrinkT2shrinkT3shrinkT4GValidSubtermsInclgValidSubtermsInclGValidSubtermsgValidSubtermsGValidRecursivelyShrinkgValidRecursivelyShrink GGenValid gGenValidGUncheckedSubtermsInclgUncheckedSubtermsInclGUncheckedSubtermsgUncheckedSubtermsGUncheckedRecursivelyShrinkgUncheckedRecursivelyShrink GGenUnchecked gGenUnchecked GenInvalid genInvalid shrinkInvalidGenValidgenValid shrinkValid GenUnchecked genUncheckedshrinkUncheckedgenericGenUncheckedgenericShrinkUncheckeduncheckedRecursivelyShrinkuncheckedSubtermsgenValidStructurally(genValidStructurallyWithoutExtraCheckingshrinkValidStructurally,shrinkValidStructurallyWithoutExtraFilteringstructurallyValidSubterms$fGGenUncheckedM1$fGGenUnchecked:+:$fGGenUnchecked:*:$fGGenUncheckedU1$fGUncheckedRecursivelyShrinkV1$fGUncheckedRecursivelyShrinkU1$fGUncheckedRecursivelyShrinkM1 $fGUncheckedRecursivelyShrink:+: $fGUncheckedRecursivelyShrink:*:$fGUncheckedSubtermsK1b$fGUncheckedSubtermsM1a$fGUncheckedSubtermsU1a$fGUncheckedSubtermsV1a$fGUncheckedRecursivelyShrinkK1$fGGenUncheckedK1$fGenUncheckedFixed$fGenUncheckedRatio$fGenUncheckedNatural$fGenUncheckedInteger$fGenUncheckedDouble$fGenUncheckedFloat$fGenUncheckedWord64$fGenUncheckedWord32$fGenUncheckedWord16$fGenUncheckedWord8$fGenUncheckedWord$fGenUncheckedInt64$fGenUncheckedInt32$fGenUncheckedInt16$fGenUncheckedInt8$fGenUncheckedInt$fGenUncheckedChar$fGenUncheckedOrdering$fGenUncheckedBool$fGenUnchecked()$fGenUnchecked[]$fGenUncheckedNonEmpty$fGenUncheckedMaybe$fGenUnchecked(,,,,)$fGenUnchecked(,,,)$fGenUnchecked(,,)$fGenUncheckedEither$fGenUnchecked(,)$fGenInvalidRatio$fGenInvalid[]$fGenInvalidNonEmpty$fGenInvalidMaybe$fGenInvalid(,,,,)$fGenInvalid(,,,)$fGenInvalid(,,)$fGenInvalidEither$fGenInvalid(,)$fGenValidFixed$fGenValidRatio$fGenValidNatural$fGenValidInteger$fGenValidDouble$fGenValidFloat$fGenValidWord64$fGenValidWord32$fGenValidWord16$fGenValidWord8$fGenValidWord$fGenValidInt64$fGenValidInt32$fGenValidInt16$fGenValidInt8 $fGenValidInt$fGenValidChar$fGenValidOrdering$fGenValidBool $fGenValid() $fGenValid[]$fGenValidNonEmpty$fGenValidMaybe$fGenValid(,,,,)$fGenValid(,,,)$fGenValid(,,)$fGenValidEither $fGenValid(,)$fGUncheckedSubtermsInclK1b$fGUncheckedSubtermsInclK1a$fGUncheckedSubtermsInclM1a$fGUncheckedSubtermsIncl:+:a$fGUncheckedSubtermsIncl:*:a$fGUncheckedSubtermsInclU1a$fGUncheckedSubtermsInclV1a$fGUncheckedSubterms:+:a$fGUncheckedSubterms:*:a $fGGenValidK1 $fGGenValidM1$fGGenValid:+:$fGGenValid:*: $fGGenValidU1$fGValidRecursivelyShrinkV1$fGValidRecursivelyShrinkU1$fGValidRecursivelyShrinkK1$fGValidRecursivelyShrinkM1$fGValidRecursivelyShrink:+:$fGValidRecursivelyShrink:*:$fGValidSubtermsK1b$fGValidSubtermsM1a$fGValidSubtermsU1a$fGValidSubtermsV1a$fGValidSubtermsInclK1b$fGValidSubtermsInclK1a$fGValidSubtermsInclM1a$fGValidSubtermsIncl:+:a$fGValidSubtermsIncl:*:a$fGValidSubtermsInclU1a$fGValidSubtermsInclV1a$fGValidSubterms:+:a$fGValidSubterms:*:aGenRelativeInvalid genInvalidForGenRelativeValid genValidForGenRelativeUncheckedgenUncheckedForbase GHC.GenericsGenericTest.QuickCheck.Arbitrary ArbitraryGHC.RealRational"structurallyValidRecursivelyShrink'validity-0.9.0.1-9lKxoO43uvJEsRRzojpvHo Data.Validity isInvalidGHC.Base Semigroup<>MonoidmemptymappendmconcatprettyValidationprettyValidatevalidationIsValid checkValidityconstructValidUnsafeconstructValidisValidvalidateNotInfinitevalidateNotNaNvalidinvalid decorateListdecoratedelveannotatedeclarechecktrivialValidationgenericValidateValidityvalidateValidationChainLocationViolated Validation unValidationData.RelativeValidity isInvalidForRelativeValidity isValidForversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName