úÎ!­UążŹ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«None456@AMÏdittoiProved records a value, the location that value came from, and something that was proved about the value.ditto*Type for failing computations Similar to Either but with an accumilating  Applicative instancedittoŁused to represent whether a value was found in the form submission data, missing from the form submission data, or expected that the default value should be used ditto2views, values as a result of the environment, etc.$Function which creates the form viewditto+A range of ID's to specify a group of formsdittoAn ID used to identify formsditto Encoding a FormId: use this instead of show4 for the name of the input / query string parameterditto get the head Ź from a dittoGlobal prefix for the formditto:Stack indicating field. Head is most specific to this itemdittoLocal name of the inputdittoIndex of the input  None@ACHV%v 2ditto*Class which all backends should implement.3dittoinput[ is here the type that is used to represent a value uploaded by the client in the request.4dittoVParse the input into a string. This is used for simple text fields among other things6dittoParse the input value into ­8ditto*Get a file descriptor for an uploaded file9dittoA Class to lift a ;( into an application-specific error type;dittoFan error type used to represent errors that are common to all backendsjThese errors should only occur if there is a bug in the ditto-* packages. Perhaps we should make them an  Exception so that we can get rid of the 9 class.Bditto some default error messages for ;Cditto some default error messages for ;Bdittoshow input( in a format suitable for error messagesdittoa ;Cdittoshow input( in a format suitable for error messagesdittoa ;28675439:;A@?>=<BC;A@?>=<BC9:2867543None$.14=?@ACHMRSVXO~%HdittoRun the form, but with a given  environment functionKditto1Run the form, but always return the initial valueNdittoLThe environment typeclass: the interface between ditto and a given frameworkPdittoditto's representation of a formletRdittoDecode the value from the inputSdittoThe initial valueTdittoA  FormState which produced a View and a ResultUditto8The Form's state is just the range of identifiers so farVditto environment+ which will always return the initial valueWdittoAlways succeed decodingXdittoCommon operations on Forms1Change the view of a form using a simple functionRThis is useful for wrapping a form inside of a <fieldset> or other markup element.YdittoIncrement a form IDZditto Check if a  is contained in a źditto Check if a  is contained in another [dittoGet a FormId from the FormState\ditto'Utility function: Get the current range]dittoGet a  FormIdName from the FormState^dittoTurns a FormId into a  FormRange( by incrementing the base for the end IdŻditto(Utility function: increment the current ._ditto Run a form`ditto!Run a form, and unwrap the resultadittoEvaluate a formReturns:  Left viewon failure. The view. will have already been applied to the errors.Right a on success.bditto"infix mapView: succinctly mix the view dsl and the formlets dsl  foo @$ do ..cditto?Utility Function: turn a view and pure value into a successful U°dittoILift the errors into the result type. This will cause the form to always succeeddditto'Utility function: Get the current inputeditto1Utility function: Gets the input of an arbitrary .fditto%Select the errors for a certain rangegdittoVSelect the errors originating from this form or from any of the children of this formhdittoTurn a view into a Formiditto3Change the underlying Monad of the form, usually a lift or newtypejdittoCatch errors purelykdittoCatch errors inside Form / mlditto Map over the Result and View of a formmdittoqRun the form with no environment, return only the html. This means that the values will always be their defaultsnditto#lift the result of a decoding to a FormodittoForm is a  MonadTransY, but we can't have an instance of it because of the order and kind of its type variablesXditto Manipulatorditto Initial formdittoResulting formZdittoId to check fordittoRangedittoIf the range contains the idźditto Sub-rangeditto Larger rangeditto1If the sub-range is contained in the larger rangeadittoIdentifier for the formditto Form to rundittoResultmditto form prefixditto form to view(HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno(UPQRSTNOKLMHIJVbjka[de\]YZilXcgf_`W^hmnob0None $1456@AMX\ dittoA + attempts to prove something about a value.pIf successful, it can also transform the value to a new value. The proof should hold for the new value as well.Generally, each K has a unique data-type associated with it which names the proof, such as:ƒditto!function which provides the proof…dittoapply a  to a P†dittotransform the P result using a monadic ± function.‡dittotransform the P result using an ± function.ˆdittoprove that a list is not empty‰ditto+read an unsigned number in decimal notationŠdittoread signed decimal number‹dittoread Č numberŒdittoread a signed Č number‰dittocreate an error message (ł! is the value that did not parse) ‚„ƒ…†‡ˆ‰Š‹Œ ‚„ƒ…†‡ˆ‰Š‹ŒNone $HVX_t|dittoa choice for inputChoiceditto the formIdditto label‘dittois the choice selected’dittothe haskell value of the choiceŽditto$used for constructing elements like <input type="text">", which pure a single input value.”dittoFthis is necessary in order to basically map over the decoding function¶dittoused for elements like <input type="submit">: which are not always present in the form submission data.·dittoused for elements like <input type="reset">@ which take a value, but are never present in the form data set.žditto used for <input type="file">čdittoused for groups of checkboxes, <select multiple="multiple"> boxesșdittoradio buttons, single <select> boxes»dittoused to create <label> elementsŒditto(used to add a list of err messages to a PƒThis function automatically takes care of extracting only the errors that are relevent to the form element it is attached to via œ or Ÿ.żditto similar to Œ= but includes err messages from children of the form as well.“ditto3modify the view of a form based on its child errorsÀditto-modify the view of a form based on its errors”dittodecoding function for the listdittohow to concatenate viewsdittoinitial valuesditto!view to generate in the fail casečdittovalue, label, initially checkedditto!function which generates the viewdittoisChecked/isSelected initiallyșditto is defaultditto value, labelditto!function which generates the viewŒditto0function to convert the err messages into a viewŽ’‘Ž”¶·žčș»Œż“ÀNoneHVX‰Î ”ditto$used for constructing elements like <input type="text">", which pure a single input value.•dittoused for elements like <input type="submit">: which are not always present in the form submission data.–dittoused for elements like <input type="reset">@ which take a value, but are never present in the form data set.—ditto used for <input type="file">˜dittoused for groups of checkboxes, <select multiple="multiple"> boxes™dittoradio buttons, single <select> boxesšdittoFthis is necessary in order to basically map over the decoding function›dittoused to create <label> elementsœditto(used to add a list of err messages to a PƒThis function automatically takes care of extracting only the errors that are relevent to the form element it is attached to via œ or Ÿ.ditto similar to œ= but includes err messages from children of the form as well.žditto-modify the view of a form based on its errors˜dittovalue, label, initially checkedditto!function which generates the viewdittoisChecked/isSelected initially™ditto is defaultditto value, labelditto!function which generates the viewšdittodecoding function for the listdittohow to concatenate viewsdittoinitial valuesditto!view to generate in the fail caseœditto0function to convert the err messages into a viewŽ‘’“”•–—˜™š›œžŽ‘’”•–—˜™š›œž“NoneHVX y Ÿditto$used for constructing elements like <input type="text">", which pure a single input value. dittoused for elements like <input type="submit">: which are not always present in the form submission data.Ądittoused for elements like <input type="reset">@ which take a value, but are never present in the form data set.ąditto used for <input type="file">Łdittoused for groups of checkboxes, <select multiple="multiple"> boxes€dittoradio buttons, single <select> boxes„dittoFthis is necessary in order to basically map over the decoding functionŠdittoused to create <label> elements§ditto(used to add a list of err messages to a PƒThis function automatically takes care of extracting only the errors that are relevent to the form element it is attached to via œ or Ÿ.šditto similar to §= but includes err messages from children of the form as well.©ditto-modify the view of a form based on its errorsȘdittoa Form with no view«ditto an optional Form with no viewŁdittovalue, label, initially checkedditto!function which generates the viewdittoisChecked/isSelected initially€ditto is defaultditto value, labelditto!function which generates the view„dittodecoding function for the listdittohow to concatenate viewsdittoinitial valuesditto!view to generate in the fail case§ditto0function to convert the err messages into a viewŽ‘’“Ÿ ĄąŁ€„Чš©Ș«Ž‘’Ÿ ĄąŁ€„Чš©“Ș«NoneĄO[ 23457689:;<=>?@ABCHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno‚ƒ„…†‡ˆ‰Š‹ŒÁ       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMMNOOPQRSSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒƒ„…†‡ˆ‰Š‹ŒŽŽ‘’“”•–—˜™š›œž”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«ŹȘ­źȘݰ”š•–—˜™›œȘݱȘŻČžł ditto-0.4-6daCURzVRrzFpx93sMGc68 Ditto.Types Ditto.Backend Ditto.Core Ditto.ProofDitto.Generalized.UnnamedDitto.Generalized.NamedDitto.Generalized.InternalDittoProvedposunProvedResultErrorOkValueDefaultMissingFoundViewunView FormRangeFormId FormIdName encodeFormIdformIdentifier$fTorsorFormIdInt$fIsStringFormId$fSemigroupValue$fAlternativeValue$fApplicativeValue$fApplicativeResult $fMonadResult $fEqFormId $fOrdFormId $fShowFormId $fEqFormRange$fShowFormRange$fSemigroupView $fMonoidView $fFunctorView $fEqValue $fShowValue$fFunctorValue$fTraversableValue$fFoldableValue $fShowResult $fEqResult$fFunctorResult$fFoldableResult$fTraversableResult $fShowProved$fFunctorProved$fFoldableProved$fTraversableProved FormInputFileTypegetInputStringgetInputStrings getInputText getInputTexts getInputFile FormErrorcommonFormErrorCommonFormError InputMissing NoStringFound NoFileFoundMultiFilesFoundMultiStringsFoundMissingDefaultValuecommonFormErrorStrcommonFormErrorText$fFormErrorTextText$fEqCommonFormError$fOrdCommonFormError$fShowCommonFormErrorWithEnvironmentgetWithEnvironment NoEnvironmentgetNoEnvironment Environment environmentFormformDecodeInputformInitialValue formFormlet FormState noEnvironment successDecodemapViewincrementFormId isInRange getFormId getFormRangegetNamedFormId unitRangerunFormrunForm_ eitherForm@$mkOk getFormInput getFormInput' retainErrorsretainChildErrorsview mapFormMonadcatchFormErrorcatchFormErrorM mapResultviewFormpureResliftForm$fBifunctorForm $fMonoidForm$fSemigroupForm$fApplicativeForm$fAlternativeForm $fMonadForm$fEnvironmentNoEnvironmentinput!$fEnvironmentWithEnvironmentinput$fMonadTransWithEnvironment $fFunctorForm$fMonadNoEnvironment$fFunctorNoEnvironment$fApplicativeNoEnvironment$fMonadWithEnvironment$fFunctorWithEnvironment$fApplicativeWithEnvironment$fMonadReaderWithEnvironmentProof proofFunctionproofNewInitialValueprovetransformEitherMtransformEither notNullProofdecimal signedDecimalrealFracrealFracSignedChoice choiceFormId choiceLabelchoiceIsSelected choiceValwithChildErrorsinput inputMaybe inputNoData inputFile inputMulti inputChoice inputListlabelerrors childErrors withErrorsireqioptghc-prim GHC.TypesInt text-1.2.3.1Data.Text.InternalText isSubRangeincrementFormRange formEitherbase Data.EitherEitherGHC.RealRealFracGHC.BaseString<**>