úÎ[±W6      !"#$%&'()*+,-./012345 Safe-Inferred?Given a label for a result-set, turns it into a CSV file name. %Currently this is done by prepending "bench-" and appending ".csv". 6OSorts a list of labels (not CSV file names) by their modification time, latest  first. LFinds all the results files in the working directory, and returns a list of  their labels. 7676None8LPrompts for a single item, using the given message, followed by some of the L list of suggestions. All suggestions are used to form the tab completion. < The result will be trimmed of leading and trailing spaces. 9KPrompts for one or more comma-separated items, using the given message and O suggestions (some of which will be shown with the message). The results will N each be trimmed of leading and trailing spaces, and the whole list will have  empty items removed. :MTrims leading and trailing spaces. Probably very inefficient, but it shouldn't  matter for our application. 89;:89;89;:NoneMThe mode (RunAndGraph, by default), the run settings and the graph settings. RThe mode; just running and recording a benchmark, just graphing existing results, ; or running a benchmark and produce a graph (the default). KThe settings for plotting graphs; which labels (besides the one created by M the current run, if applicable) to feature in the graph, and where to store " the file (plot.png, by default). NA function for mapping raw data (i.e. read from CSV files) into data arranged  for plotting. JThe first parameter is the name of the version most recently recorded, or P (if just graphing is taking place) the name of the first version listed by the  user. `The second parameter is a map from version name (e.g. fused-memo) to: a map from benchmark name / (e.g. calculate-primes) to the recorded mean. The return is the arranged .  The default is a composition of 0 and 1. #The type of a graph; lines or bars MSome data that is ready to graph. There are the group labels (groups on the P x-axis) which will be plotted in the order given in the list, sub-group labels N (either bar colours or lines), and a function that gets the data for a given " group label and sub-group label. It is expected that / will only ever be called with combinations of N the labels in the attached lists, but that it should return a sensible (i.e. ' non-bottom) value in all these cases. NThe name of a particular element of a group (for line graphs this is the name I of the line; for bar charts this is a particular recurring bar colour). MThe name of a particular group on the x-axis; depending on your choice, this . could be a benchmark name or a version name. "The identity functor %MThe settings for running benchmarks; which prefixes to run (empty list means C no preference, i.e. all -- not none) and where to put the result. )4A type that holds the value for a mean with bounds. /NA function that turns versions into major groups, benchmarks into sub-groups, J and brings the name of the latest version to the head of the group list. 0NA function that turns benchmarks into major groups, versions into sub-groups, N and brings the name of the latest version to the head of the sub-group list. 1^A function that normalises the given data (second parameter) by dividing by the time taken by O the given version (first parameter). Benchmarks where the divisor is zero or * missing have their times left untouched. &This is intended to be applied before 0 or /. 2JProcesses the given arguments (got from getArgs, typically) to adjust the P given default configuration, returning the resulting configuration. Exits the M whole program with an error if there is a problem, or if the user specified  -h6 (in which case it exits after printing the options). <<=>?  !"#$%&'()*+,-.@A/01B2CDEF1  !"#$%&'()*+,-./0121)*+,-%&'(  ! "#$0/1.2<?>=    !"#$%&'()*+,-.@A/01B2CDEFNoneGPPlots to the given destination file (using its extension as the terminal type), : from the given CSV file, using the given list as labels. 3PPlots to the given destination file (using its extension as the terminal type), R the given list of labels in the settings. The first parameter is the one passed  to the ' function (the most recent benchmark). HMJoins all the result files in the list into the given destination file ready @ to be fed to plotFile. If the list is empty, nothing is done. AIt returns lists of row and column labels for the resulting file IJKG3HLMN33IKJG3HLMNNone4Like 5> but you can specify the default configuration. Command-line M argument processing is still performed, and command-line settings will take ' precedence over the config passed in. 5JTakes the given benchmark (which is likely a benchmark group) and runs it T as part of Progression, recording the results and producing graphs. The Benchmark U type is imported from the Criterion library, so see the documentation for Criterion Z to find out what can be benchmarked and any issues that might arise in the benchmarking. PThis function will process the command-line arguments of the program, consuming I any progression arguments, and passing any arguments that occur after a "--" P argument on to Criterion. If you want to perform further argument processing, = it is best to do this before the call, and wrap the call in O. P45Q4554P45QR      !!"##$%%&'(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRprogression-0.5.0.2Progression.FilesProgression.ConfigProgression.PlotProgression.MainProgression.Prompt makeFileNamefindResultFilesConfigcfgModecfgRuncfgGraphMode JustGraph RunAndGraphJustRun GraphSettingsgraphCompareTo graphFilename graphSize graphLogY graphType graphGroupGraphDataMapping GraphType GraphTypeBarsGraphTypeLines GraphData groupLabelssubGroupLabels graphData SubGroupName subGroupName GroupName groupNameDefinitedefinite RunSettings runPrefixes runStoreAs BoundedMeanmeanLBmeanmeanUBoverride groupVersion groupBench normalise processArgs plotMultidefaultMainWith defaultMainsortByModificationTime specialPrefix promptOnepromptManyCommatrim splitOnCommasOptMResultErrorShowHelp||*toTopoptions $fMonadOptM$fMonoidGraphSettings$fMonoidRunSettings$fMonoidConfigplotFile joinMultiFailMFineFail$fApplicativeFailM$fFunctorFailM $fMonadFailMbaseSystem.EnvironmentwithArgs allPrefixesmainWith