zl      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkSafelmnopqrsSafe16,t-Simple constraints are just as expressive as  \s, but they are easier to reason about. You can think of them as the desugared version of  s. %Constrains allowable version numbers.Use # to create constraints and 34 to see if a version number satisfies a constraint.<Build metadata attached to a version. These are similar to s with some key differences: oThere is no such thing as numeric builds. Even though builds can look like numbers, all builds are textual.HAs a result, builds that look numeric are allowed to have leading zeros.8Builds cannot be compared. That is, they do not have an u instance.Use " to create builds.oPre-release information attached to a version. These can either be numeric or textual. They must not be empty.DNumeric: Can be any non-negative integer. Cannot have leading zeros.sTextual: Can be any string of ASCII digits, letters, or hyphens. Cannot be all digits, as that would be numeric.<In general, pre-releases must match the regular expression /^[-0-9A-Za-z]+$/.Use ! to create pre-releases.4A semantic version number. Versions have five parts: 4: The major version number.5: The minor version number.6: The patch version number.7$: A list of pre-release identifiers.8: A list of build metadata.Use   to create versions.Makes a new version number.JmakeVersion 1 2 3 [unsafeParsePreRelease "pre"] [unsafeParseBuild "build"]Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [PreReleaseTextual "pre"], versionBuilds = [Build "build"]}$This can be a useful alternative to  . if you want a total way to create a version.+The initial version number for development.initialVersionkVersion {versionMajor = 0, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []} 2Attempts to parse a version. This parser follows  jhttps://github.com/mojombo/semver/blob/eb9aac5/semver.md#backusnaur-form-grammar-for-valid-semver-versions SemVer's BNF.parseVersion "1.2.3-p.4+b.5"Just (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [PreReleaseTextual "p",PreReleaseNumeric 4], versionBuilds = [Build "b",Build "5"]})Returns v if the parse fails.parseVersion "wrong"NothingWhitespace is allowed.parseVersion " 1.2.3 "rJust (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})! Attempts to parse a pre-release.parsePreRelease "pre"Just (PreReleaseTextual "pre")parsePreRelease "1"Just (PreReleaseNumeric 1)Returns v if the parse fails.parsePreRelease "wrong!"Nothing2Numeric pre-releases cannot contain leading zeros.parsePreRelease "01"Nothing"Attempts to parse a build.parseBuild "build"Just (Build "build")parseBuild "1"Just (Build "1")Returns v if the parse fails.parseBuild "wrong!"Nothing;Unlike pre-releases, numeric builds can have leading zeros.parseBuild "01"Just (Build "01")#<Attempts to parse a constraint. This parser mostly follows  Hhttps://github.com/npm/npm/blob/d081cc6/doc/misc/semver.md#range-grammar npm's BNF.parseConstraint ">1.2.3"Just (ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))Returns v if the parse fails.parseConstraint "wrong"NothingThe two departures from npm's BNF are that x-ranges cannot be used with other operators and partial version numbers are not allowed.parseConstraint "1.2.x"-Just (ConstraintWildcard (WildcardPatch 1 2))parseConstraint ">=1.2.x"NothingparseConstraint "1.2"NothingparseConstraint ">=1.2"Nothing$Parses a version."unsafeParseVersion "1.2.3-p.4+b.5"Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [PreReleaseTextual "p",PreReleaseNumeric 4], versionBuilds = [Build "b",Build "5"]}'Raises an exception if the parse fails.unsafeParseVersion "wrong";*** Exception: unsafeParseVersion: invalid version: "wrong"...See  % for a safe version of this function.%Parses a pre-release.unsafeParsePreRelease "pre"PreReleaseTextual "pre"'Raises an exception if the parse fails.unsafeParsePreRelease "wrong!"C*** Exception: unsafeParsePreRelease: invalid pre-release: "wrong!"...See !% for a safe version of this function.&Parses a build.unsafeParseBuild "build" Build "build"'Raises an exception if the parse fails.unsafeParseBuild "wrong!"?Build "*** Exception: unsafeParseBuild: invalid build: "wrong!"...See "% for a safe version of this function.'Parses a constraint.unsafeParseConstraint ">1.2.3"ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})'Raises an exception if the parse fails.unsafeParseConstraint "wrong"A*** Exception: unsafeParseConstraint: invalid constraint: "wrong"...See #% for a safe version of this function.(Renders a version..renderVersion <$> parseVersion "1.2.3-p.4+b.5"Just "1.2.3-p.4+b.5")Renders a pre-release.*renderPreRelease <$> parsePreRelease "pre" Just "pre"(renderPreRelease <$> parsePreRelease "1"Just "1"*Renders a build."renderBuild <$> parseBuild "build" Just "build"renderBuild <$> parseBuild "1"Just "1"+Renders a constraint.-renderConstraint <$> parseConstraint ">1.2.3" Just ">1.2.3"PParsing and rendering a constraint doesn't always return what you started with.-renderConstraint <$> parseConstraint "=1.2.3" Just "1.2.3",Returns w& if the major version number is zero, x otherwise.#isUnstable <$> parseVersion "0.1.2" Just True#isUnstable <$> parseVersion "1.0.0" Just False-Returns w* if the major version number is not zero, x otherwise.!isStable <$> parseVersion "1.0.0" Just True!isStable <$> parseVersion "0.1.2" Just False.Converts from a y from the base package.?renderVersion . fromBaseVersion $ Version.makeVersion [1, 2, 3]"1.2.3"+Missing version components are set to zero.8renderVersion . fromBaseVersion $ Version.makeVersion []"0.0.0"9renderVersion . fromBaseVersion $ Version.makeVersion [1]"1.0.0"<renderVersion . fromBaseVersion $ Version.makeVersion [1, 2]"1.2.0"%Extra version components are ignored.BrenderVersion . fromBaseVersion $ Version.makeVersion [1, 2, 3, 4]"1.2.3"Tags are ignored.@renderVersion . fromBaseVersion $ Version.Version [] ["ignored"]"0.0.0"/Converts to a y from the base package.&toBaseVersion <$> parseVersion "1.2.3":Just (Version {versionBranch = [1,2,3], versionTags = []}).Pre-releases and builds are converted to tags.0toBaseVersion <$> parseVersion "1.2.3-pre+build"GJust (Version {versionBranch = [1,2,3], versionTags = ["pre","build"]})0$Increments the major version number."bumpMajor <$> parseVersion "0.0.0"rJust (Version {versionMajor = 1, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []}).The minor and patch numbers are reset to zero."bumpMajor <$> parseVersion "1.2.3"rJust (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpMajor <$> parseVersion "0.0.0-pre+build"rJust (Version {versionMajor = 1, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})Consider using 4t if you want to arbitrarily change the major number, or if you don't want the other parts of the version to change.1$Increments the minor version number."bumpMinor <$> parseVersion "0.0.0"rJust (Version {versionMajor = 0, versionMinor = 1, versionPatch = 0, versionPreReleases = [], versionBuilds = []})"The patch number is reset to zero."bumpMinor <$> parseVersion "1.2.3"rJust (Version {versionMajor = 1, versionMinor = 3, versionPatch = 0, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpMinor <$> parseVersion "0.0.0-pre+build"rJust (Version {versionMajor = 0, versionMinor = 1, versionPatch = 0, versionPreReleases = [], versionBuilds = []})Consider using 5t if you want to arbitrarily change the minor number, or if you don't want the other parts of the version to change.2Increments the patch number."bumpPatch <$> parseVersion "0.0.0"rJust (Version {versionMajor = 0, versionMinor = 0, versionPatch = 1, versionPreReleases = [], versionBuilds = []}),The major and minor numbers are not changed."bumpPatch <$> parseVersion "1.2.3"rJust (Version {versionMajor = 1, versionMinor = 2, versionPatch = 4, versionPreReleases = [], versionBuilds = []})(The pre-releases and builds are removed.,bumpPatch <$> parseVersion "0.0.0-pre+build"rJust (Version {versionMajor = 0, versionMinor = 0, versionPatch = 1, versionPreReleases = [], versionBuilds = []})Consider using 6t if you want to arbitrarily change the patch number, or if you don't want the other parts of the version to change.3Returns w* if the version satisfies the constraint, x otherwise.IsatisfiesConstraint <$> parseConstraint ">1.2.0" <*> parseVersion "1.2.3" Just True4$Focuses on the major version number.5view majorLens <$> parseVersion "1.2.3-pre.4+build.5"Just 1(set majorLens 4 <$> parseVersion "1.2.3"rJust (Version {versionMajor = 4, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})5$Focuses on the minor version number.5view minorLens <$> parseVersion "1.2.3-pre.4+build.5"Just 2(set minorLens 4 <$> parseVersion "1.2.3"rJust (Version {versionMajor = 1, versionMinor = 4, versionPatch = 3, versionPreReleases = [], versionBuilds = []})6$Focuses on the patch version number.5view patchLens <$> parseVersion "1.2.3-pre.4+build.5"Just 3(set patchLens 4 <$> parseVersion "1.2.3"rJust (Version {versionMajor = 1, versionMinor = 2, versionPatch = 4, versionPreReleases = [], versionBuilds = []})7'Focuses on the pre-release identifiers.;view preReleasesLens <$> parseVersion "1.2.3-pre.4+build.5"2Just [PreReleaseTextual "pre",PreReleaseNumeric 4]3set preReleasesLens [] <$> parseVersion "1.2.3-pre"rJust (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})8Focuses on the build metadata.6view buildsLens <$> parseVersion "1.2.3-pre.4+build.5"Just [Build "build",Build "5"]0set buildsLens [] <$> parseVersion "1.2.3+build"rJust (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})9AMakes a new constraint that must be less than the version number.%constraintLT <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorLT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "<1.2.3"Just (ConstraintOperator OperatorLT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})):NMakes a new constraint that must be less than or euqal to the version number.%constraintLE <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorLE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "<=1.2.3"Just (ConstraintOperator OperatorLE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}));@Makes a new constraint that must be equal to the version number.%constraintEQ <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "=1.2.3"Just (ConstraintOperator OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))<QMakes a new constraint that must be greater than or equal to the version number.%constraintGE <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint ">=1.2.3"Just (ConstraintOperator OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))=DMakes a new constraint that must be greater than the version number.%constraintGT <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint ">1.2.3"Just (ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))>:Makes a new constraint that must satisfy both constraints.econstraintAnd <$> (constraintGE <$> parseVersion "1.2.3") <*> (constraintLT <$> parseVersion "2.0.0")0Just (ConstraintAnd (ConstraintOperator OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintOperator OperatorLT (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []}))) parseConstraint ">=1.2.3 <2.0.0"0Just (ConstraintAnd (ConstraintOperator OperatorGE (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintOperator OperatorLT (Version {versionMajor = 2, versionMinor = 0, versionPatch = 0, versionPreReleases = [], versionBuilds = []})))?;Makes a new constraint that must satisfy either constraint.dconstraintOr <$> (constraintEQ <$> parseVersion "1.2.3") <*> (constraintGT <$> parseVersion "1.2.3")/Just (ConstraintOr (ConstraintOperator OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})))"parseConstraint "=1.2.3 || >1.2.3"/Just (ConstraintOr (ConstraintOperator OperatorEQ (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})) (ConstraintOperator OperatorGT (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []})))@DMakes a new constraint that must be between the versions, inclusive.BconstraintHyphen <$> parseVersion "1.2.3" <*> parseVersion "2.3.4"Just (ConstraintHyphen (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}) (Version {versionMajor = 2, versionMinor = 3, versionPatch = 4, versionPreReleases = [], versionBuilds = []}))parseConstraint "1.2.3 - 2.3.4"Just (ConstraintHyphen (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}) (Version {versionMajor = 2, versionMinor = 3, versionPatch = 4, versionPreReleases = [], versionBuilds = []}))AGMakes a new constraint that allows changes to the patch version number.(constraintTilde <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorTilde (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "~1.2.3"Just (ConstraintOperator OperatorTilde (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))BeMakes a new constraint that allows changes that do not modify the left-most non-zero version number.(constraintCaret <$> parseVersion "1.2.3"Just (ConstraintOperator OperatorCaret (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))parseConstraint "^1.2.3"Just (ConstraintOperator OperatorCaret (Version {versionMajor = 1, versionMinor = 2, versionPatch = 3, versionPreReleases = [], versionBuilds = []}))C?Numeric pre-releases are always less than textual pre-releases.7compare <$> parsePreRelease "1" <*> parsePreRelease "a"Just LT.Numeric pre-releases are compared numerically.8compare <$> parsePreRelease "9" <*> parsePreRelease "10"Just LT1Textual pre-releases are compared alphabetically.:compare <$> parsePreRelease "p10" <*> parsePreRelease "p9"Just LTDIn general, versions compare in the way that you would expect. First the major version numbers are compared, then the minors, then the patches.9compare <$> parseVersion "1.2.3" <*> parseVersion "2.0.0"Just LT9compare <$> parseVersion "1.2.3" <*> parseVersion "1.3.0"Just LT9compare <$> parseVersion "1.2.3" <*> parseVersion "1.2.4"Just LT5Numbers are compared numerically, not alphabetically.:compare <$> parseVersion "0.0.9" <*> parseVersion "0.0.10"Just LT?If all the numbers are the same, the pre-releases are compared.=compare <$> parseVersion "1.2.3-a" <*> parseVersion "1.2.3-b"Just LTpA version with a pre-release is always less than a version without one as long as the other parts are the same.=compare <$> parseVersion "1.2.3-pre" <*> parseVersion "1.2.3"Just LT=compare <$> parseVersion "1.2.4-pre" <*> parseVersion "1.2.3"Just GT2Builds are not considered when comparing versions.=compare <$> parseVersion "1.2.3+a" <*> parseVersion "1.2.3+b"Just EQ:(==) <$> parseVersion "1.2.3+a" <*> parseVersion "1.2.3+b" Just FalseC  !"#$%&'()*+,-./0123456789:;<=>?@ABC  !"#$%&'()*+,-./012345678 9:;<=>?@ABtz{|}~  Safe  !"#$%&'()*+,-./012345678  !"#$%&'()*+,-./012345678      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|w}~w}z"salve-1.0.2-FhSpMic8AIPE6vm3a4p6c3Salve.Internal Paths_salveSalveWildcard WildcardMajor WildcardMinor WildcardPatchOperator OperatorLT OperatorLE OperatorEQ OperatorGE OperatorGT OperatorTilde OperatorCaret ConstraintConstraintOperatorConstraintHyphenConstraintWildcard ConstraintAnd ConstraintOrBuild PreReleasePreReleaseNumericPreReleaseTextualVersion versionMajor versionMinor versionPatchversionPreReleases versionBuilds makeVersioninitialVersion parseVersionparsePreRelease parseBuildparseConstraintunsafeParseVersionunsafeParsePreReleaseunsafeParseBuildunsafeParseConstraint renderVersionrenderPreRelease renderBuildrenderConstraint isUnstableisStablefromBaseVersion toBaseVersion bumpMajor bumpMinor bumpPatchsatisfiesConstraint majorLens minorLens patchLenspreReleasesLens buildsLens constraintLT constraintLE constraintEQ constraintGE constraintGT constraintAnd constraintOrconstraintHyphenconstraintTildeconstraintCaret$fOrdPreRelease $fOrdVersion$fDataPreRelease$fEqPreRelease$fGenericPreRelease$fReadPreRelease$fShowPreRelease $fDataBuild $fEqBuild$fGenericBuild $fReadBuild $fShowBuild $fDataVersion $fEqVersion$fGenericVersion $fReadVersion $fShowVersion$fDataOperator $fEqOperator$fGenericOperator $fOrdOperator$fReadOperator$fShowOperator$fDataWildcard $fEqWildcard$fGenericWildcard $fOrdWildcard$fReadWildcard$fShowWildcard$fDataConstraint$fEqConstraint$fGenericConstraint$fOrdConstraint$fReadConstraint$fShowConstraint$fDataSimpleConstraint$fEqSimpleConstraint$fGenericSimpleConstraint$fOrdSimpleConstraint$fReadSimpleConstraint$fShowSimpleConstraintversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameSimpleConstraintghc-prim GHC.ClassesOrdbaseGHC.BaseNothing GHC.TypesTrueFalse Data.VersionSCLTSCEQSCGTSCAndSCOr