f$[ E      !"#$%&'()*+,-./0123456789:;<=>?@ABCDNoneMFixed integers are stored in little-endian form without additional encoding. 1Signed integers are stored in a zz-encoded form. *A list that is stored in a packed format. A E F( used to select packed sequence encoding/ decoding.   fields use G and H& 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 I. 5Functions for wrapping and unwrapping record fields. 5 When applied they will have types similar to these:   ::   (%  ) ->    ::   ->   (%  )   ::    (%   ) -> J     :: J    ->    (%   )   ::    (% K) -> [K]  :: [K] ->    (% K)   ::    (% ) -> []  :: [] ->    (% ) Extract a value from it's  representation. Wrap it back up again. 5An isomorphism lens compatible with the lens package 4To provide consistent instances for serialization a E F is needed to  make  fields have the same shape as ,  and  .  This is the  F with a L instance. MFields 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 %% selects the normal/4typical way for encoding scalar (primitive) values. MIso:   (  n (  a)) = [a]  NIso:   (  n (% a)) = [a]  OIso:   ( n (  a)) = [a]  PIso:   ( n (% a)) = [a]  QIso:   ( n (  a)) = J a  RIso:   ( n (% a)) = J a  SIso:   ( n (  a)) = a  TIso:   ( n (% a)) = a  1  !"#$%&'MNOPQRSTU(  !"#$%&'   !"#$%&'MNOPQRSTUNone ,4A representation of the wire format as described in   Fhttps://developers.google.com/protocol-buffers/docs/encoding#structure -For: fixed32, sfixed32, float .For: groups (deprecated) /For: groups (deprecated) 0>For: string, bytes, embedded messages, packed repeated fields 1For: fixed64, sfixed64, double 2>For: int32, int64, uint32, uint64, sint32, sint64, bool, enum 3Field identifiers V Empty lists are not written out `()*+,-./0123W4XYZ[\5]V6789^_`abcdefghijklmnopqrstuvwxyz{|}~ ()*+,-./0123W4Z[\56789X()*+,210/.-3W4XYZ[\5]V6789^_`abcdefghijklmnopqrstuvwxyz{|}~None<#Encode a Protocol Buffers message. =]Encode a Protocol Buffers message prefixed with a varint encoded 32-bit integer describing it' s length. Untyped message encoding :;<=:;<= :;<=None@#Decode a Protocol Buffers message. A]Decode a Protocol Buffers message prefixed with a varint encoded 32-bit integer describing it' s length. IfoldMapM implemented in a way that defers using (mempty :: b) unless the G Foldable is empty, this allows the gross hack of pretending Always is 4 a Monoid while strictly evaluating the accumulator Untyped message decoding,  ? =   >?@A>?@A>?@ANoneB3The way to embed a message within another message. @ These embedded messages are stored as length-delimited fields.  For example:   data Inner = Inner  { innerField ::   (  )  } deriving (, L)   instance : Inner  instance > Inner  data Outer = Outer  { outerField ::   ( Inner)  } deriving (, L)   instance : Outer  instance > Outer It's worth noting that  B a  is a  and  instance. The  behavior models 9 that of the Protocol Buffers documentation, effectively . It' s done with a fairly big hammer  and it isn'Zt possible to override this behavior. This can cause some less-obvious compile errors for  paramterized B types:   data Inner = Inner{inner ::  D2 (%  )} deriving (, L)  instance : Inner  instance > Inner  data Outer a = Outer{outer ::  D3 (B a)} deriving (, L)  instance : a => : (Outer a)  instance > a => > (Outer a) This fails because >C 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:    /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: .$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 ( (B a), > a) => > (Outer a) Iso:   ( n (B a)) = [a]  Iso:   ( n (B a)) = J a  Iso:   ( n (B a)) = a  BCDBCDBCDNone0  !"#$%&'()*+,-./0123456789BCD03,210/.-54*+()6789%&' "#$ ! BCDNone %:;<=>?@AB:;<=>?@A % B  !""#$$%&'()*+,-../0012'34(56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUSVWSXYSXZS[\S[]^_`Sabcdefghijklmnopqrstuvwxyz{|}~SVSSS^_Scdeprotobuf-0.1.1Data.ProtocolBuffersData.ProtocolBuffers.InternalData.ProtocolBuffers.TypesControl.AlternativeemptyData.TypeLevelD1 Data.TextTextD2Data.IntInt32D3D4 Data.WordWord64Data.Functor.IdentityIdentity Data.TaggedTaggedData.ProtocolBuffers.WireData.ProtocolBuffers.EncodeData.ProtocolBuffers.DecodeData.ProtocolBuffers.MessageRequiredValueInt64MessageDecodeFixedSigned 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 runMessagebaseData.Traversable TraversableGHC.BaseFunctorGHC.EnumfromEnumtoEnum Data.MaybeNothingMaybeghc-prim GHC.TypesDoubleGHC.ShowShow$fHasFieldField$fHasFieldField0$fHasFieldField1$fHasFieldField2$fHasFieldField3$fHasFieldField4$fHasFieldField5$fHasFieldField6$fMonoidAlwaysencodePackedListgetVarintPrefixedBS putWireField putWireTag getVarInt putVarSInt putVarUIntdecodePackedList$fDecodeWireEnumeration$fDecodeWireEnumeration0$fEncodeWireEnumeration$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$fDecodeWireMaybe$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.1Control.DeepSeqNFDataLastFloatGMessageMonoidRepGMessageNFDatagrnfgmemptygmappend$fDecodeWireMessage $fEncodeWiref$fGMessageNFDataU1$fGMessageNFDataK1$fGMessageNFData:+:$fGMessageNFData:*:$fGMessageNFDataM1$fNFDataMessage$fGMessageMonoidU1$fGMessageMonoidK1$fGMessageMonoid:+:$fGMessageMonoid:*:$fGMessageMonoidM1$fMonoidMessage