f[F      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE Safe-Inferred*/None (+-./24=BKLFixed integers are stored in little-endian form without additional encoding.0Signed integers are stored in a zz-encoded form.)A list that is stored in a packed format.A F G2 used to select packed sequence encoding/decoding.   fields use H and I% when encoding and decoding messages.Packed values.Lists of values.%Required fields. Parsing will return  if a # value is not found while decoding.7Optional fields. Values that are not found will return J.iFunctions for wrapping and unwrapping record fields. When applied they will have types similar to these:  ::  '1' (& ) ->   ::  ->  '1' (& )  ::  '2' (&   ) -> K     :: K    ->  '2' (&   )  ::  '3' (& L) -> [L]  :: [L] ->  '3' (& L)  ::  '4' (&   ) -> [  ]  :: [  ] ->  '4' (&   ) Extract a value from it's  representation.Wrap it back up again.4An isomorphism lens compatible with the lens package4To provide consistent instances for serialization a F G is needed to make  fields have the same shape as ,  and . This is the   G with a M instance.pFields are merely a way to hold a field tag along with its type, this shouldn't normally be referenced directly.CThis provides better error messages than older versions which used [ is a newtype wrapped used to break overlapping instances for encoding and decoding values  [ is a newtype wrapped used to break overlapping instances for encoding and decoding values##[ is a newtype wrapped used to break overlapping instances for encoding and decoding values&&G selects the normal/typical way for encoding scalar (primitive) values.NIso:   ( n (  a)) = [a] OIso:   ( n (& a)) = [a] PIso:   ( n (  a)) = [a] QIso:   ( n (& a)) = [a] RIso:   ( n (  a)) = K a SIso:   ( n (& a)) = K a TIso:   ( n (  a)) = a UIso:   ( n (& a)) = a 5  !"#$%&'(VWXYNOPQRSTUZ(  !"#$%&'(   !"#$%&'(VWXYNOPQRSTUZNone *+234BM -5A representation of the wire format as described in Fhttps://developers.google.com/protocol-buffers/docs/encoding#structure.For: fixed32, sfixed32, float/For: groups (deprecated)0For: groups (deprecated)1=For: string, bytes, embedded messages, packed repeated fields2For: fixed64, sfixed64, double3=For: int32, int64, uint32, uint64, sint32, sint64, bool, enum4Field identifiers[Empty lists are not written out`)*+,-./01234\5]^_`a6b[789:cdefghijklmnopqrstuvwxyz{|}~ )*+,-./01234\5_`a6789:X)*+,-3210/.4\5]^_`a6b[789:cdefghijklmnopqrstuvwxyz{|}~None 1234=JKM="Encode a Protocol Buffers message.>gEncode a Protocol Buffers message prefixed with a varint encoded 32-bit integer describing it's length.Untyped message encoding ;<=>;<=> ;<=>None 1234=JKMA"Decode a Protocol Buffers message.BgDecode a Protocol Buffers message prefixed with a varint encoded 32-bit integer describing it's length.foldMapM implemented in a way that defers using (mempty :: b) unless the Foldable is empty, this allows the gross hack of pretending Always is a Monoid while strictly evaluating the accumulatorUntyped message decoding,  @ =  ?@AB?@AB?@ABNone -./234=BJKCrThe way to embed a message within another message. These embedded messages are stored as length-delimited fields. For example: &data Inner = Inner { innerField ::  '1' (  ) } deriving (, M ) instance ; Inner instance ?/ Inner data Outer = Outer { outerField ::  '1' ( Inner) } deriving (, M ) instance ; Outer instance ? Outer It's worth noting that  C a  is a  and  instance. The J behavior models that of the Protocol Buffers documentation, effectively . It's done with a fairly big hammer and it isn't possible to override this behavior. This can cause some less-obvious compile errors for paramterized C types: data Inner = Inner{inner ::  '2' (&  )} deriving (, M ) instance ; Inner instance ?& Inner data Outer a = Outer{outer ::  '3' (C a)} deriving (, M ) instance ; a => ; (Outer a) instance ? a => ? (Outer a) This fails because ? needs to know that the message can be merged. The resulting error implies that you may want to add a constraint to the internal  class: 4/tmp/tst.hs:18:10: Could not deduce (protobuf-0.1: (. a)) arising from a use of `protobuf-0.1: " .$gdmdecode' from the context (? a) bound by the instance declaration at /tmp/tst.hs:18:10-39 Possible fix: add an instance declaration for (protobuf-0.1: (, a)) In the expression: (protobuf-0.1:".$gdmdecode) In an equation for @: decode = (protobuf-0.1:0 .$gdmdecode) In the instance declaration for  `'Decode' (Outer a)' The correct fix is to add the  constraint for the message:  - instance (; a) => ? (Outer a) + instance ( (C a), ? a) => ? (Outer a) Iso:   ( n (C a)) = [a] Iso:   ( n (C a)) = K a Iso:   ( n (C a)) = a CDECDECDENone0  !"#$%&'()*+,-./0123456789:CDE04-3210/.65+,)*789:&'( #$% !" CDENone &;<=>?@ABC;<=>?@AB& C !!"##$%&'()*+,--.//01&23'456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWVXYZY[\]^_`abcdefghijklmnopqrstuvwxyz{|}~T\]abcxprotobuf-0.2.0Data.ProtocolBuffers.OrphansData.ProtocolBuffersData.ProtocolBuffers.InternalData.ProtocolBuffers.TypesControl.Alternativeempty Data.TextTextData.IntInt32 Data.WordWord64Data.Functor.IdentityIdentity Data.TaggedTaggedData.ProtocolBuffers.WireData.ProtocolBuffers.EncodeData.ProtocolBuffers.DecodeData.ProtocolBuffers.MessageRequiredValueInt64MessageDecodebase Data.FoldableFoldableFixedSigned PackedList unPackedList PackedFieldrunPackedField EnumerationrunEnumerationPackedRepeatedOptionalHasField FieldTypegetFieldputFieldfieldAlways runAlwaysFieldrunField RepeatedField runRepeated OptionalField runOptional RequiredField runRequiredrunValue DecodeWire decodeWire EncodeWire encodeWire WireField Fixed32FieldEndField StartFieldDelimitedField Fixed64Field VarintFieldTag getWireField wireFieldTag zzEncode32 zzEncode64 zzDecode32 zzDecode64Encodeencode encodeMessageencodeLengthPrefixedMessagedecode decodeMessagedecodeLengthPrefixedMessage runMessageData.Traversable TraversableGHC.BaseFunctorGHC.EnumfromEnumtoEnum Data.MaybeNothingMaybeghc-prim GHC.TypesDoubleGHC.ShowShow$fHasFieldField$fHasFieldField0$fHasFieldField1$fHasFieldField2$fHasFieldField3$fHasFieldField4$fHasFieldField5$fHasFieldField6TFCo:R:RequirednEnumerationTFCo:R:RequirednValueTFCo:R:OptionalnEnumerationTFCo:R:OptionalnValue$fMonoidAlwaysencodePackedListgetVarintPrefixedBS putWireField putWireTag getVarInt putVarSInt putVarUIntdecodePackedList$fDecodeWireAlways$fDecodeWireMaybe $fEncodeWiref$fDecodeWirePackedList$fEncodeWirePackedList$fDecodeWirePackedList0$fEncodeWirePackedList0$fDecodeWirePackedList1$fEncodeWirePackedList1$fDecodeWirePackedList2$fEncodeWirePackedList2$fDecodeWirePackedList3$fEncodeWirePackedList3$fDecodeWirePackedList4$fEncodeWirePackedList4$fDecodeWirePackedList5$fEncodeWirePackedList5$fDecodeWirePackedList6$fEncodeWirePackedList6$fDecodeWirePackedList7$fEncodeWirePackedList7$fDecodeWirePackedList8$fEncodeWirePackedList8$fDecodeWirePackedList9$fEncodeWirePackedList9$fDecodeWirePackedList10$fEncodeWirePackedList10$fDecodeWirePackedList11$fEncodeWirePackedList11$fDecodeWirePackedList12$fEncodeWirePackedList12$fDecodeWireText$fEncodeWireText$fDecodeWire[]$fEncodeWire[]$fDecodeWireByteString$fEncodeWireByteString$fDecodeWireDouble$fEncodeWireDouble$fDecodeWireFloat$fEncodeWireFloat$fDecodeWireBool$fEncodeWireBool$fDecodeWireFixed$fEncodeWireFixed$fDecodeWireFixed0$fEncodeWireFixed0$fDecodeWireFixed1$fEncodeWireFixed1$fDecodeWireFixed2$fEncodeWireFixed2$fDecodeWireSigned$fEncodeWireSigned$fDecodeWireSigned0$fEncodeWireSigned0$fDecodeWireWord64$fEncodeWireWord64$fDecodeWireWord32$fEncodeWireWord32$fDecodeWireInt64$fEncodeWireInt64$fDecodeWireInt32$fEncodeWireInt32$fDecodeWireMaybe0$fEncodeWireMaybe$fDecodeWireValue$fEncodeWireValue$fDecodeWireWireField$fEncodeWireWireField$fEncodeWire[]0$fEncodeHashMapGEncodegencode $fGEncodeU1 $fGEncodeK1 $fGEncode:+: $fGEncode:*: $fGEncodeM1foldMapM$fDecodeHashMapidGDecodegdecode fieldDecode $fGDecodeU1 $fGDecodeK1 $fGDecodeK10 $fGDecodeK11 $fGDecodeK12 $fGDecodeK13 $fGDecodeK14 $fGDecode:+: $fGDecode:*: $fGDecodeM1 GHC.GenericsGeneric Data.MonoidMonoiddeepseq-1.3.0.2Control.DeepSeqNFDataLastFloatGMessageMonoidRepGMessageNFDatagrnfgmemptygmappend$fDecodeWireMessageTFCo:R:RequirednMessageTFCo:R:OptionalnMessage$fGMessageNFDataU1$fGMessageNFDataK1$fGMessageNFData:+:$fGMessageNFData:*:$fGMessageNFDataM1$fNFDataMessage$fGMessageMonoidU1$fGMessageMonoidK1$fGMessageMonoid:+:$fGMessageMonoid:*:$fGMessageMonoidM1$fMonoidMessage