Nd\      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[None(!"&(*+-./0134579<>@CFHIJKLNUV \]^_`abcd\efghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\]^_`abcd \]^_`abcdNone(!"&(*+-./0134579<>@CFHIJKLNUVNone(!"&(*+-./0134579<>@CFHIJKLNUV5Next value, decoded using the provided value decoder.5Next value, decoded using the provided value decoder.   None(!"&(*+-./0134579<>@CFHIJKLNUV:An error reported by the DB. Code, message, details, hint.gThe SQLSTATE code for the error. The SQLSTATE code identifies the type of error that has occurred; it can be used by front-end applications to perform specific operations (such as error handling) in response to a particular database error. For a list of the possible SQLSTATE codes, see Appendix A. This field is not localizable, and is always present.NThe primary human-readable error message (typically one line). Always present.rDetail: an optional secondary error message carrying more detail about the problem. Might run to multiple lines.Hint: an optional suggestion what to do about the problem. This is intended to differ from detail in that it offers advice (potentially inappropriate) rather than hard facts. Might run to multiple lines.bThe database returned an unexpected result. Indicates an improper statement or a schema mismatch.=An error of the row reader, preceded by the index of the row.An unexpected amount of rows.  None(!"&(*+-./0134579<>@CFHIJKLNUVAn error on the client-side, with a message generated by the "libpq" library. Usually indicates problems with the connection.Parse a single result.Fetch a single result.Fetch a single result.   None(!"&(*+-./0134579<>@CFHIJKLNUV None(!"&(*+-./0134579<>@CFHIJKLNUV None(!"&(*+-./0134579<>@CFHIJKLNUV-A Word32 and a LibPQ representation of an OIDA Postgresql type infoN      !"#$%&'()*+,-./0123456789:;<N      !"#$%&'()*+,-./0123456789:;<H      !"#$%&'()*+,-./0123456789:;<None(!"&(*+-./0134579<>@CFHIJKLNUV=>?@A=>?@=>?@ANone(!"&(*+-./0134579<>@CFHIJKLNUVB7Encoder of some representation of a parameters product.BCDEFGHBCDEFGHBCDEFGHNone(!"&(*+-./0134579<>@CFHIJKLNUVIJKLMNIJKLMNIJKLMNNone(!"&(*+-./0134579<>@CFHIJKLNUV0A generic array encoder.Here's an example of its usage: bx :: Value [[Int64]] x = array (arrayDimension foldl' (arrayDimension foldl' (arrayValue int8)))RAn individual value encoder. Will be mapped to a single placeholder in the query.9Encoder of some representation of the parameters product.Has instances of ,  and D, which you can use to compose multiple parameters together. E.g., someParamsEncoder :: + (Int64, Maybe Text) someParamsEncoder =  j (  )   k ( ) :As a general solution for tuples of any arity, instead of j and k!, consider the functions of the  contrazipj family from the "contravariant-extras" package. E.g., here's how you can achieve the same as the above: someParamsEncoder :: + (Int64, Maybe Text) someParamsEncoder =  (  ) ( ) AHere's how you can implement encoders for custom composite types: vdata Person = Person { name :: Text, gender :: Gender, age :: Int } data Gender = Male | Female personParams ::  Person personParams =  name ( )   gender ( genderValue)   (fromIntegral . age) (  ) genderValue ::  Gender genderValue =  genderText h where genderText gender = case gender of Male -> "male" Female -> "female" Encode no parameters.9Lift an individual value encoder to a parameters encoder.BLift an individual nullable value encoder to a parameters encoder. Encoder of BOOL values. Encoder of INT2 values. Encoder of INT4 values.  Encoder of INT8 values.  Encoder of FLOAT4 values.  Encoder of FLOAT8 values.  Encoder of NUMERIC values.  Encoder of CHARN values. Note that it supports UTF-8 values and identifies itself under the TEXT OID because of that. Encoder of TEXT values. Encoder of BYTEA values. Encoder of DATE values. Encoder of  TIMESTAMP values. Encoder of  TIMESTAMPTZ values. Encoder of TIME values. Encoder of TIMETZ values. Encoder of INTERVAL values. Encoder of UUID values. Encoder of JSON values. Unlifts the  encoder to the plain  encoder.xGiven a function, which maps the value into the textual enum label from the DB side, produces a encoder of that value. Lifts the  encoder into the ! encoder of a non-nullable value. Lifts the  encoder into the  encoder of a nullable value.[An encoder of an array dimension, which thus provides support for multidimensional arrays.Accepts:7An implementation of the left-fold operation, such as Data.Foldable.$, which determines the input value.1A component encoder, which can be either another ,  or .OMaps to .PMaps to .QMaps to .RMaps to .SMaps to .TMaps to .UMaps to .VMaps to .WMaps to .XMaps to .YMaps to  .ZMaps to  .[Maps to  .\Maps to  .]Maps to  .^Maps to ._Maps to .`Maps to .aMaps to .8bcd OPQRSTUVWXYZ[\]^_`efghia  5bcd OPQRSTUVWXYZ[\]^_`efghiaNone(!"&(*+-./0134579<>@CFHIJKLNUV<All settings encoded in a single byte-string according to  Mhttp://www.postgresql.org/docs/9.4/static/libpq-connect.html#LIBPQ-CONNSTRINGthe PostgreSQL format.bEncode a host, a port, a user, a password and a database into the PostgreSQL settings byte-string.None(!"&(*+-./0134579<>@CFHIJKLNUVjLocal statement key.jklmnopqlnopjklmnopqNone(!"&(*+-./0134579<>@CFHIJKLNUVrstuvrtuvrstuvNone(!"&(*+-./0134579<>@CFHIJKLNUVwxyz{|}~wxyz{|}~wxyz{|}~None(!"&(*+-./0134579<>@CFHIJKLNUV4Possible details of the connection acquistion error. $A single connection to the database.!\Acquire a connection using the provided settings encoded according to the PostgreSQL format."Release the connection. !" !" !"None(!"&(*+-./0134579<>@CFHIJKLNUV !" !"None(!"&(*+-./0134579<>@CFHIJKLNUVB#7Composable decoder of composite values (rows, records).$A generic array decoder.DHere's how you can use it to produce a specific array value decoder: 0x :: Value [[Text]] x = array (arrayDimension  (arrayDimension  (arrayValue text))) %Decoder of an individual value.&LDecoder of an individual row, which gets composed of column value decoders.E.g.: gx :: Row (Maybe Int64, Text, TimeOfDay) x = (,,) <$> nullableValue int8 <*> value text <*> value time'Decoder of a query result.( Decode no value from the result.Useful for statements like INSERT or CREATE.)7Get the amount of rows affected by such statements as UPDATE or DELETE.*!Exactly one row. Will raise the  error if it's any other.+Foldl multiple rows.,Foldr multiple rows.-Maybe one row or none..)Zero or more rows packed into the vector.,It's recommended to prefer this function to /$, since it performs notably better./'Zero or more rows packed into the list.0JLift an individual non-nullable value decoder to a composable row decoder.1FLift an individual nullable value decoder to a composable row decoder.2Decoder of the BOOL values.3Decoder of the INT2 values.4Decoder of the INT4 values.5Decoder of the INT8 values.6Decoder of the FLOAT4 values.7Decoder of the FLOAT8 values.8Decoder of the NUMERIC values.9Decoder of the CHAR- values. Note that it supports UTF-8 values.:Decoder of the TEXT values.;Decoder of the BYTEA values.<Decoder of the DATE values.=Decoder of the  TIMESTAMP values.>Decoder of the  TIMESTAMPTZ values.NOTICE4Postgres does not store the timezone information of  TIMESTAMPTZ. Instead it stores a UTC value and performs silent conversions to the currently set timezone, when dealt with in the text format. However this library bypasses the silent conversions and communicates with Postgres using the UTC values directly.?Decoder of the TIME values.@Decoder of the TIMETZ values.Unlike in case of  TIMESTAMPTZ5, Postgres does store the timezone information for TIMETZv. However the Haskell's "time" library does not contain any composite type, that fits the task, so we use a pair of s and g- to represent a value on the Haskell's side.ADecoder of the INTERVAL values.BDecoder of the UUID values.CDecoder of the JSON values.D Lifts the $ decoder to the % decoder.E Lifts the # decoder to the % decoder.FA generic decoder of HSTORE values.8Here's how you can use it to construct a specific value: -x :: Value [(Text, Maybe Text)] x = hstore  GNGiven a partial mapping from text to value, produces a decoder of that value.H_A function for parsing a dimension of an array. Provides support for multi-dimensional arrays.Accepts:An implementation of the  replicateM function (Control.Monad.,  Data.Vector.&), which determines the output value.9A decoder of its components, which can be either another H, I or J.ILift a % decoder into an $1 decoder for parsing of non-nullable leaf values.JLift a % decoder into an $- decoder for parsing of nullable leaf values.KLift a % decoder into a #1 decoder for parsing of non-nullable leaf values.LLift a % decoder into a #- decoder for parsing of nullable leaf values.Maps to C.Maps to B.Maps to A.Maps to @.Maps to ?.Maps to >.Maps to =.Maps to <.Maps to ;.Maps to :.Maps to 9.Maps to 8.Maps to 7.Maps to 6.Maps to 5.Maps to 4.Maps to 3.Maps to 2.Maps to (fmap Identity (* def).Maps to (/ def).Maps to (. def).Maps to (- def).Maps to ).Maps to (.J#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL*#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL*'()*-./+,&01%23456789:;<=>?@ABCDEFG$HIJ#KLE#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLNone(!"&(*+-./0134579<>@CFHIJKLNUVM^A specification of a strictly single-statement query, which can be parameterized and prepared.Consists of the following: SQL template,params encoder,result decoder,2a flag, determining whether it should be prepared.The SQL template must be formatted according to Postgres' standard, with any non-ASCII characters of the template must be encoded using UTF-8. According to the format, parameters must be referred to using the positional notation, as in the following: $1, $2, $3G and etc. Those references must be used to refer to the values of the  encoder.^Following is an example of the declaration of a prepared statement with its associated codecs. selectSum :: Hasql.* (Int64, Int64) Int64 selectSum = Hasql.Y sql encoder decoder True where sql = "select ($1 + $2)" encoder =  j (Hasql.Encoding. Hasql.Encoding.)   k (Hasql.Encoding. Hasql.Encoding.%) decoder = Hasql.Decoding. (Hasql.Decoding. Hasql.Decoding.) @The statement above accepts a product of two parameters of type ) and results in a single result of type .O/An error during the decoding of a specific row.PJAppears on the attempt to parse more columns than there are in the result.Q"Appears on the attempt to parse a NULL as some value.RIAppears when a wrong value parser is used. Comes with the error details.SDecoder error details.TVAn error reported by the DB. Consists of the following: Code, message, details, hint.Code>. The SQLSTATE code for the error. It's recommended to use  9http://hackage.haskell.org/package/postgresql-error-codes$the "postgresql-error-codes" package to work with those.MessageQ. The primary human-readable error message (typically one line). Always present.Detailsm. An optional secondary error message carrying more detail about the problem. Might run to multiple lines.Hint. An optional suggestion on what to do about the problem. This is intended to differ from detail in that it offers advice (potentially inappropriate) rather than hard facts. Might run to multiple lines.UbThe database returned an unexpected result. Indicates an improper statement or a schema mismatch.V=An error of the row reader, preceded by the index of the row.WAn unexpected amount of rows.XAn error of the result-decoder.Y{An error on the client-side, with a message generated by the "libpq" library. Usually indicates problems with connection.ZDecoder error details.[UExecute the query, producing either a deserialization failure or a successful result.AWARNING: We need to take special care that the structure of the ResultsDecoding.Error- type in the public API is an exact copy of Error, since we're using coercion.MNOPQRSTUVWXYZ[MNOPQRSTUVWXYZ[MNXYZSTUVWOPQR[ MNOPQRSTUVWXYZ[ !"#$%&'()*+,-./0123456789:;<=>?@A!BCDEFG"#$%&'()*+,-./01234HI5867JKLMNOPQRLSTPUVWXYZ[\]^_`abcd_ef_eg_hi_jk_jl_`mbno_pqbnr_`s_tu_`v_wx_yz_y{_|}_~_~_~_~bb_y_`_`_`_`_`________|_|_|_|___`_`_`_~_~b__|_|_`__`_yb__|__|______`___bbbbb____b_|_|bcbb______`_bb__bbb_`__`_`_______`_`_____`_`_`_`_p _p _p _p _p _p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p _p!_p"_p#_p$_p%_p&_p'_p(_p)_p*_+,_-._-/_-0_-1_23_24_25_67_68_69_6:_;<_;=_;>_;?_;@_;A_;B_;C_;D_EF_GH_GI_GJ_KL_KM_NO_PQ_PR_PR_ST_SU_SV_SW_SX_SY_SZ_S[_S\_S]_S^_S__S`_Sa_Sb_Sc_Sd_Se_Sf_Sg_Sh_Si_jk_jl_jm_jn_jo_jp_jq_jr_js_jt_uv_uw_ux_uy_uz_u{_u|_u}_u~_u__________________t______________________________________________________________________________________________________________________ _ _ _ _ ________________h_h_h_h_h_h _h!_h"_h#_h$_h%_h&_'(_)*_)+_),_)-_)._/0_/1_/2_/3_/4_/5_/6_/7_/8_/9_/:_/;_/<_/=_/>_/?_/@_/A_/B_/C_/D_/E_/F_/G_/H_/I_/J_/K_/L_/M_/N_/O_/P_/Q_/R_/S_/T_/U_/V_WX_WY_WZ_W[_\]_^__^`_^a_^a_bc_bd_be_bf_bg_bh_bi_bj_bk_lm_ln_lo_lp_lq_lr_ls_lt_lu_lv_lw_lx_ly_ly_lz_lz_l{_l{_l|_l|_l}_l}_l~_l~_l_l_____________________________________________________________p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p_p___________________________________p_p_p_________________ _ _ _ _ ___________________ _!_"_#_$_%_&_'_(_)_*_+_,_-_._/_0_1_2_3_4_5_6_7_8_9:_9;_9<_9<_9=_9>_9>_9?_9@_9@_9A_9B_9B_9C_9D_9D_9E_9F_9F_9G_9H_9H_9I_9J_9J_9K_9L_9L_M_N_O_P_QR_QS_QT_QU_QV_W_X_Y_Z_[_\_]_^___`_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_xy_xy_z{_z|_z}_z~_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z_z____________________________________________________________________________________ _ _ _ _ ________________ _!_"_#_$_%_&_'_(_)_*_+_,_-_._/_01_02_03_04_05_06_07_08_09_0:_0;_0<_0=_0>_0?_0@_0A_0B_0C_0D_0E_0F_0G_0H_0I_0J_0K_0L_0M_0N_0O_|P_|Q_|R_|S_|T_|U_|V_|W_|X_|Y_|Z_|[_|\_|]_|^_|__|`_|a_|b_|c_|d_|e_~f_~g_~h_~i_~j_~k_lm_no_np_q_r_s_t_u_v_w_x_y_z_{_|_}_e~_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e_e__________j_j_j_y_y_y_y_y_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`_`__bbbbbbbbbb#       !""#$%#$&#$'#$(#$)#$*#$+#$,#$-#$.#$/#$0#$1#$2#$3#$4#$5#$6#$7#$8#$9#$:#$;#$<#$=#$>#$?#$@#$A#$B#$C#$D#$E#$F#$G#$H#$I#$J#$K#$L#$MNOPNOQRSTUVWUVXUVYUVZUV[UV\UV]UV^UV_UV`UVaUVaUbcUbdUbeUbfUbgUbhUbiUbjUbkUblUbmUbnUboUbpUbqUbrUbstuvtuwtuxyz{yz|yz}yz~yzyzyzyzU   MNO  @@U Q R L   A A U ! B      4 6 T     P   U     U    ? ? U              ! C # " # + ) $ % & ' , ( & ' ) * $ + % ,  - 1 3 . / 0 1 2 ( 3 4 5 6 7 8 9 : ; < = > ? @ A B C * D / - . 0 E F G H I J K 2 L M q N OUPQ  URS"U"TUVWXYZ[\]^_`abcdef ghijkllmmnopqqrstuvwxyz{|}~<TUVWXYZ[\]^_`abcde?@Ahasql_B9Np2ZqBhI878cXwo7SL5hHasql.EncodingHasql.SettingsHasql.ConnectionHasql.Decoding Hasql.Query Hasql.PreludeHasql.Decoding.ValueHasql.Decoding.RowHasql.Decoding.ResultHasql.Decoding.ResultsHasql.Decoding.ArrayHasql.Decoding.Composite Hasql.PTIHasql.Encoding.ValueHasql.Encoding.ParamsHasql.Encoding.ArrayHasql.PreparedStatementRegistryHasql.CommandsHasql.IOHasql.Connection.ImplUnexpectedAmountOfRows Control.Monad replicateM Data.VectorHasqlQueryvalueint8 singleRowArrayValueParamsunit nullableValueboolint2int4float4float8numericchartextbyteadate timestamp timestamptztimetimetzintervaluuidjsonarrayenum arrayValuearrayNullableValuearrayDimensionSettingssettingsConnectionError Connectionacquirerelease CompositeRowResult rowsAffected foldlRows foldrRowsmaybeRow rowsVectorrowsList compositehstorecompositeValuecompositeNullableValueRowError EndOfInputUnexpectedNull ValueError ResultError ServerErrorUnexpectedResult ResultsError ClientErrorrun TextBuilderLazyTextByteStringBuilderLazyByteStringbugbottom forMToZero_ forMFromZero_ strictConsbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwise GHC.MagiclazyGHC.IO.Exception assertErrorinlinemapGHC.Exts groupWith$GHC.Err undefinedGHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negatefail>>=>>fmapreturnControl.Monad.Fixmfix Control.Arrowarrfirstapp|||loop Data.String fromString fromIntegral realToFrac toInteger toRationalguardData.Typeable.InternalmkAppTyjoin<*>pureBoundedEnumEq GHC.FloatFloating FractionalIntegralMonad Data.DataDataFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowGHC.ArrIxTypeableMonadFixIsString Applicative Data.FoldableFoldableData.Traversable Traversable GHC.GenericsGeneric GHC.TypesBoolCharDoubleFloatIntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeIntegerOrderingRatioRational RealWorldIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherStringTypeRepFalseTrueLeftRightLTEQGTJustbytes_6elQVSg5cWdFrvRnfxTUrHData.ByteString.Internal ByteStringscien_03wvk1zJytY0wVzR42F1U4Data.Scientific Scientific Data.Functor<$>text_1l1AN4I48k37RaQ6fm6CEhData.Text.InternalTextMaybetime_AXTdBF9VRQoBOqJT6qtmVHData.Time.Clock.UTCUTCTimeNothingGHC.IO.Handle.TypesHandlerangeindexinRange rangeSizeGHC.STST<**> GHC.UnicodeisSpaceisAlphaisDigit Text.Readread Alternativemplusmzero MonadPlusuntangle ioException heapOverflow stackOverflowallocationLimitExceededblockedIndefinitelyOnSTMblockedIndefinitelyOnMVar ioe_filename ioe_errnoioe_description ioe_locationioe_type ioe_handleIOError InterruptedResourceVanished TimeExpiredUnsupportedOperation HardwareFaultInappropriateTypeInvalidArgument OtherError ProtocolError SystemErrorUnsatisfiedConstraints UserErrorPermissionDeniedIllegalOperationEOFResourceExhausted ResourceBusy NoSuchThing AlreadyExistsunsupportedOperationSystem.TimeouttimeoutSystem.Mem.StableName eqStableNamehashStableNamemakeStableName StableName System.Mem performGCperformMajorGCperformMinorGC System.Exitdie exitSuccess exitFailureexitWithSystem.EnvironmentgetEnvironment withProgNamewithArgsunsetEnvsetEnv lookupEnvgetEnv getProgNamegetArgs!System.Environment.ExecutablePathgetExecutablePath Data.Unique hashUnique newUniqueUnique Data.STRef modifySTRef' modifySTRef Data.RatioapproxRationalData.Functor.Identity runIdentityIdentity Data.Fixed showFixedmod'divMod'div'MkFixedFixed resolution HasResolutionE0UniE1DeciE2CentiE3MilliE6MicroE9NanoE12Pico Data.Complexphase magnitudepolarcismkPolar conjugateimagPartrealPart:+ComplexControl.ConcurrentthreadWaitWriteSTMthreadWaitReadSTMthreadWaitWritethreadWaitReadrunInUnboundThreadrunInBoundThreadisCurrentThreadBoundforkOS forkFinallyrtsSupportsBoundThreadsControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.ChanwriteList2ChangetChanContents isEmptyChan unGetChandupChanreadChan writeChannewChanChansortWith Debug.Trace traceMarkerIO traceMarker traceEventIO traceEvent traceStack traceShowtraceIdtrace putTraceMsgtraceIO tyconModule tyconUQname isNorepType mkNoRepType mkCharConstr mkRealConstrmkIntegralConstr mkCharType mkFloatType mkIntTypemaxConstrIndex constrIndex indexConstr isAlgType readConstr showConstr constrFixity constrFieldsdataTypeConstrsmkConstr mkDataType repConstr constrRep constrType dataTypeRep dataTypeName fromConstrM fromConstrB fromConstrgmapMogmapMpgmapMgmapQigmapQgmapQrgmapQlgmapT dataCast2 dataCast1 dataTypeOftoConstrgunfoldgfoldlDataTypeConstrNoRepCharRepFloatRepIntRepAlgRepDataRep CharConstr FloatConstr IntConstr AlgConstr ConstrRepConIndexInfixPrefixFixity Data.Version makeVersion parseVersion showVersion versionTags versionBranchVersionmfilter<$!>unless replicateM_foldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMfoldMapDefault fmapDefault mapAccumR mapAccumLforMforsequencemapM sequenceAtraverseControl.ApplicativeoptionalgetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListleftApp^<<<<^>>^^>>returnA&&&***secondArrow runKleisliKleisli zeroArrow ArrowZero<+> ArrowPlus+++ ArrowChoice ArrowApply ArrowMonad ArrowLoopreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar GHC.IO.HandlehClose GHC.Conc.IO registerDelay threadDelay closeFdWithioManagerCapabilitiesChangedensureIOManagerIsRunningSystem.IO.Error catchIOErrorannotateIOError modifyIOErrorioeSetFileName ioeSetHandleioeSetLocationioeSetErrorStringioeSetErrorTypeioeGetFileName ioeGetHandleioeGetLocationioeGetErrorStringioeGetErrorTypeisUserErrorTypeisPermissionErrorTypeisIllegalOperationErrorTypeisEOFErrorTypeisFullErrorTypeisAlreadyInUseErrorTypeisDoesNotExistErrorTypeisAlreadyExistsErrorType userErrorTypepermissionErrorTypeillegalOperationErrorType eofErrorType fullErrorTypealreadyInUseErrorTypedoesNotExistErrorTypealreadyExistsErrorType isUserErrorisPermissionErrorisIllegalOperation isEOFError isFullErrorisAlreadyInUseErrorisDoesNotExistErrorisAlreadyExistsError mkIOError tryIOErrorGHC.Conc.Signal runHandlers setHandlerSignal HandlerFunSystem.IO.Unsafe unsafeFixIOControl.ExceptionallowInterruptcatchesHandlerControl.Concurrent.MVar mkWeakMVaraddMVarFinalizermodifyMVarMaskedmodifyMVarMasked_ modifyMVar modifyMVar_withMVarMaskedwithMVarswapMVarControl.Exception.BasebracketOnErrorbracket_finallybracket onExceptiontryJusttry mapException handleJusthandle catchJustcatchPatternMatchFail RecSelError RecConError RecUpdError NoMethodErrorNonTerminationNestedAtomically GHC.Conc.SyncgetUncaughtExceptionHandlersetUncaughtExceptionHandler reportErrorreportStackOverflow writeTVarreadTVar readTVarIO newTVarIOnewTVaralwaysalwaysSucceedscatchSTMthrowSTMorElseretry atomically unsafeIOToSTMmkWeakThreadIdthreadCapability threadStatus runSparksparpseq labelThreadyield myThreadIdthrowTo killThread childHandler numSparksgetNumProcessorssetNumCapabilitiesgetNumCapabilitiesnumCapabilitiesforkOnWithUnmaskforkOnforkIOWithUnmaskforkIOdisableAllocationLimitenableAllocationLimitgetAllocationCountersetAllocationCounterThreadIdBlockedOnOtherBlockedOnForeignCall BlockedOnSTMBlockedOnExceptionBlockedOnBlackHole BlockedOnMVar BlockReason ThreadDied ThreadBlockedThreadFinished ThreadRunning ThreadStatusSTMTVarioErrorasyncExceptionFromExceptionasyncExceptionToExceptionBlockedIndefinitelyOnMVarBlockedIndefinitelyOnSTMDeadlockAllocationLimitExceededAssertionFailedSomeAsyncException UserInterrupt ThreadKilled HeapOverflow StackOverflowAsyncExceptionUndefinedElementIndexOutOfBoundsArrayException ExitFailure ExitSuccessExitCode IOErrorTypeForeign.StorableStorable Data.Dynamic dynTypeRepdynAppdynApply fromDynamicfromDyntoDynDynamic Data.IORefatomicWriteIORefatomicModifyIORef'atomicModifyIORef modifyIORef' modifyIORef mkWeakIORef GHC.IORef writeIORef readIORefnewIORefIORefGHC.IOevaluateuninterruptibleMaskuninterruptibleMask_maskmask_getMaskingStatethrowIOunsafeInterleaveIOunsafeDupablePerformIOunsafePerformIOstToIOFilePathMaskedUninterruptibleMaskedInterruptibleUnmasked MaskingState userError IOException GHC.Exceptionthrow SomeExceptiondisplayException fromException toException Exception ErrorCallRatioZeroDenominatorDenormal DivideByZeroLossOfPrecision UnderflowOverflowArithExceptionGHC.MVar isEmptyMVar tryReadMVar tryPutMVar tryTakeMVarputMVarreadMVartakeMVarnewMVar newEmptyMVarMVar readMaybe readEitherreadsfindnotElem minimumBy maximumByallanyorand concatMapconcatmsumasum sequence_ sequenceA_forM_mapM_for_ traverse_foldlMfoldrMproductsumminimummaximumelemlengthnulltoListfoldl1foldr1foldl'foldlfoldr'foldrfoldMapfold Data.Monoid<>getDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastgetAltAltpartitionEithersrightsleftseither Data.Typeablegcast2gcast1gcasteqTcastrnfTyCon rnfTypeRep showsTypeReptypeOf7typeOf6typeOf5typeOf4typeOf3typeOf2typeOf1typeOftypeReptypeRepFingerprint tyConString typeRepArgs typeRepTyConmkTyCon3 funResultTy splitTyConAppmkFunTy mkTyConApp tyConName tyConModule tyConPackagetyConFingerprintTyCon Typeable1 Typeable2 Typeable3 Typeable4 Typeable5 Typeable6 Typeable7 Data.ProxyProxy Data.OldListunwordswordsunlineslinesunfoldrsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLengthinsertByinsert partition transpose intercalate intersperse intersectBy intersectunionByunion\\deleteBydeletenubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndex elemIndices elemIndex stripPrefix dropWhileEnd Data.Char isSeparatorisSymbol isPunctuationisNumberisMarkisLettergeneralCategory digitToInt NotAssigned PrivateUse SurrogateFormatControlParagraphSeparator LineSeparatorSpace OtherSymbolModifierSymbolCurrencySymbol MathSymbolOtherPunctuation FinalQuote InitialQuoteClosePunctuationOpenPunctuationDashPunctuationConnectorPunctuation OtherNumber LetterNumber DecimalNumber EnclosingMarkSpacingCombiningMarkNonSpacingMark OtherLetterModifierLetterTitlecaseLetterLowercaseLetterUppercaseLetterGeneralCategoryControl.Category>>><<<.idCategoryData.Type.EqualityRefl:~:Data.Ord comparingDown byteSwap64 byteSwap32 byteSwap16 readLitChar lexLitCharlex readParen readListPrecreadPrecreadList readsPrecatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadixText.ParserCombinators.ReadPrec readS_to_Prec readPrec_to_S readP_to_Prec readPrec_to_PReadPrecText.ParserCombinators.ReadP readS_to_P readP_to_SReadSReadP GHC.STRef writeSTRef readSTRefnewSTRefSTReftoTitletoUppertoLowerisLowerisUpperisPrint isControl isAlphaNum isHexDigit isOctDigit isAsciiUpper isAsciiLowerisLatin1isAscii Data.BitstoIntegralSizedpopCountDefaulttestBitDefault bitDefaultpopCountrotateRrotateL unsafeShiftRshiftR unsafeShiftLshiftLisSignedbitSize bitSizeMaybetestBit complementBitclearBitsetBitbitzeroBitsrotateshift complementxor.|..&.BitscountTrailingZeroscountLeadingZeros finiteBitSize FiniteBitslcmgcd^^^oddeven denominator numerator%divModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumtoEnumpredsuccGHC.Charchr Data.FunctiononfixvoidrunSTfixST intToDigit showLitChar showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl'scanl1scanlfoldl1'initlasttailhead Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeswapuncurrycurrysubtractsignumabs*+asTypeOfuntil$!flipconstordapliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA2liftA<**>mconcatmappendmemptyMonoid<$manysome<|>empty Unsafe.Coerce unsafeCoerce/=compare<=&&||not<>maxminbasep_FxX9573ye3E4LZ0W9LfRS8 BasePreludesortOnunconsisSubsequenceOf&$> traceShowMtraceM traceShowIdtrans_3eG64VdP2vzGjP6wJiCp5XControl.Monad.Trans.Class MonadTransliftControl.Monad.Trans.ReaderReaderT runReaderTReaderreader runReader mapReader withReader mapReaderT withReaderTasklocalasks Control.Monad.Trans.State.StrictStateT runStateTStatestaterunState evalState execStatemapState withState evalStateT execStateT mapStateT withStateTgetputmodifymodify'gets liftCallCC'contr_BqM9SfR6KCB7R1324imCke$Data.Functor.Contravariant.DivisiblechosenlostliftD conquereddividedconquerdivide Divisiblechooselose DecidableData.Functor.ContravariantcomparisonEquivalencedefaultEquivalencedefaultComparison>$$<>$<$<phantom>$ contramap Contravariant getPredicate Predicate getComparison ComparisongetEquivalence EquivalencegetOpOpcontr_14Q8rUJbXS79wQgrxkmVCXContravariant.Extras.Contrazip contrazip2 contrazip3 contrazip4 contrazip5 contrazip6 contrazip7 contrazip8 contrazip9 contrazip10 contrazip11 contrazip12 contrazip13 contrazip14 contrazip15 contrazip16 contrazip17 contrazip18 contrazip19 contrazip20 contrazip21 contrazip22 contrazip23 contrazip24 contrazip25 contrazip26 contrazip27 contrazip28 contrazip29 contrazip30 contrazip31 contrazip32 contrazip33 contrazip34 contrazip35 contrazip36 contrazip37 contrazip38 contrazip39 contrazip40 contrazip41 contrazip42datad_CgDdtafiXY68XlqDb5IqXwData.Default.ClassdefDefaultdlist_7AixcwRWCwX32HiPCcE7zz Data.DListDListeithe_B0uGcCotqu555ZqVpUTMQYControl.Monad.Trans.Either swapEitherTbracketEitherT_bracketEitherT hoistEither mapEitherT bimapEitherTrightlefteitherT runEitherTEitherTData.Either.Combinators swapEither eitherToError rightToMaybe leftToMaybe fromRightfromLeft unlessRight unlessLeft whenRightwhenLeftmapRightmapLeftmapBoth fromRight' fromLeft'isRightisLefthasha_2GTZqecVp8NJZrNuKzGxfyData.Hashable.Classhash hashWithSaltHashablelocht_8HB0ZHxbMas0Fzv7KkrO0gDebug.Trace.LocationTH checkTraceIO checkTracecheckIOcheckundeffailureassert __LOCATION__Control.Monad.IO.ClassMonadIOliftIOplace_EfsNOFLgiTlC6tXolnzMeSDevelopment.PlaceholdersplaceholderNoWarning placeholdertodonotImplementedPlaceholderExceptionvecto_A9qWf1eecPQGJD12EBZIxFVectoruuidt_2PEt00jQxGGFqBr6JlDQgYData.UUID.Types.InternalUUIDData.Time.Clock.ScaleDiffTime UniversalTime ModJulianDategetModJulianDatesecondsToDiffTimepicosecondsToDiffTimeData.Time.Calendar.PrivateNumericPadOptionData.Time.Calendar.DaysDayModifiedJulianDaytoModifiedJulianDayaddDaysdiffDaysData.Time.Calendar.OrdinalDate isLeapYearData.Time.Calendar.Gregorian toGregorian fromGregorianfromGregorianValid showGregoriangregorianMonthLengthaddGregorianMonthsClipaddGregorianMonthsRollOveraddGregorianYearsClipaddGregorianYearsRollOverNominalDiffTimeutctDay utctDayTimeData.Time.Clock.UTCDiff addUTCTime diffUTCTimeData.Time.ClockgetCurrentTimeData.Time.LocalTime.TimeZoneTimeZonetimeZoneMinutestimeZoneSummerOnly timeZoneNameminutesToTimeZonehoursToTimeZonetimeZoneOffsetString'timeZoneOffsetStringutc getTimeZonegetCurrentTimeZoneData.Time.LocalTime.TimeOfDay TimeOfDaytodHourtodMintodSecmidnightmiddaymakeTimeOfDayValidutcToLocalTimeOfDaylocalToUTCTimeOfDaytimeToTimeOfDaytimeOfDayToTimedayFractionToTimeOfDaytimeOfDayToDayFractionData.Time.LocalTime.LocalTime ZonedTimezonedTimeToLocalTime zonedTimeZone LocalTimelocalDaylocalTimeOfDayutcToLocalTimelocalTimeToUTCut1ToLocalTimelocalTimeToUT1utcToZonedTimezonedTimeToUTC getZonedTimeutcToLocalZonedTimeData.Time.Format.Locale TimeLocalewDaysmonthsamPm dateTimeFmtdateFmttimeFmt time12FmtknownTimeZonesdefaultTimeLocaleiso8601DateFormatrfc822DateFormatData.Time.Format.Parse ParseTime buildTime parseTimeMparseTimeOrError readSTime readPTime parseTimereadTime readsTimeData.Time.Format FormatTimeformatCharacter formatTimeprofu_2UKNpdWENBh0ulSXykZaIMData.Profunctor.Unsafe.##.rmaplmapdimap ProfunctorControl.Monad.Trans.Maybe liftCatch liftCallCCexceptToMaybeTmaybeToExceptT mapMaybeT runMaybeTMaybeTdecoder nonNullValueErrorEnverrorcheckExecStatus serverErrorsinglevector getResultgetResultMaybeResults clientErrordropRemainders dimensionOIDPTI oidWord32oidPQptiOID ptiArrayOIDmkOIDmkPTIabstimeaclitemboxbpcharcidcidrcirclecstring daterange gtsvectorinet int2vector int4range int8rangelinelsegmacaddrmoneynamenumrangeoid oidvectorpathpointpolygonrecord refcursorregclass regconfig regdictionaryregoper regoperatorregproc regprocedureregtypereltimetid tintervaltsquerytsrange tstzrangetsvector txid_snapshotunknownvarbitvarcharxidxml unsafePTI$fContravariantValuerun'run''$fDefaultValue$fDefaultValue0$fDefaultValue1$fDefaultValue2$fDefaultValue3$fDefaultValue4$fDefaultValue5$fDefaultValue6$fDefaultValue7$fDefaultValue8$fDefaultValue9$fDefaultValue10$fDefaultValue11$fDefaultValue12$fDefaultValue13$fDefaultValue14$fDefaultValue15$fDefaultValue16$fDefaultParams4$fDefaultParams$fDefaultParams0$fDefaultParams1$fDefaultParams2$fDefaultParams3LocalKeyPreparedStatementRegistrynewregister$fHashableLocalKeyCommandsasBytessetEncodingToUTF8setMinClientMessagesToWarningacquireConnection acquirePreparedStatementRegistryreleaseConnectioncheckConnectionStatuscheckServerVersiongetIntegerDatetimesinitConnection getResultsgetPreparedStatementKey checkedSendsendPreparedParametricQuerysendUnpreparedParametricQuerysendParametricQuerysendNonparametricQuery$fDefaultResult$fDefaultResult0$fDefaultResult1$fDefaultResult2$fDefaultResult3$fDefaultResult4 $fDefaultRow $fDefaultRow0 $fDefaultRow1coerceResultsError coerceDecoder coerceEncoder$fProfunctorQuery