h&si      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                      Safe-Inferred hoscType specialised hoscType specialised hoscType specialised .hoscType specialised hoscType specialised hoscType specialised hoscType specialised  hoscType specialised  hoscType specialised  hoscType specialised  hoscType specialised  hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType specialised hoscType-specialised  of hoscType-specialised  of hoscType-specialised  of .hoscType-specialised  of .hoscType-specialised .hoscType-specialised .   Safe-Inferred hosc(The IEEE byte representation of a float.hosc Inverse of . hosc)The IEEE byte representation of a double.!hosc Inverse of f64_i64."hoscTransform a haskell string into a C string (a null suffixed byte string).#hosc Inverse of ".$hoscTransform a haskell string to a pascal string (a length prefixed byte string).%hosc Inverse of $. !"#$% !"#$% Safe-InferredV?&hoscType specialised  (big-endian).'hoscType specialised  (big-endian). )encode_int16 0x0102 == L.pack [0x01,0x02](hoscLittle-endian. ,encode_int16_le 0x0102 == L.pack [0x02,0x01])hosc,Encode a signed 64-bit integer (big-endian).*hoscType specialised  (big-endian).+hoscType specialised  (big-endian). *encode_word16 0x0102 == L.pack [0x01,0x02],hoscLittle-endian. -encode_word16_le 0x0102 == L.pack [0x02,0x01]-hoscType specialised ..hoscLittle-endian variant of -./hosc"Encode an unsigned 64-bit integer.0hoscEncode a signed 8-bit integer.1hosc"Encode an un-signed 8-bit integer.2hosc#Encode an un-signed 16-bit integer. !encode_u16 0x0102 == L.pack [1,2]3hoscLittle-endian. $encode_u16_le 0x0102 == L.pack [2,1]4hoscEncode a signed 16-bit integer.5hoscEncode a signed 32-bit integer.6hosc"Encode an unsigned 32-bit integer. )encode_u32 0x01020304 == L.pack [1,2,3,4]7hoscLittle-endian. ,encode_u32_le 0x01020304 == L.pack [4,3,2,1]8hosc+Encode a 32-bit IEEE floating point number. (encode_f32 1.0 == L.pack [63, 128, 0, 0]9hoscLittle-endian variant of 8.:hosc+Encode a 64-bit IEEE floating point number.;hoscLittle-endian variant of :.<hoscEncode an Ascii string (Ascii at Datum is an alias for a Char8 Bytetring).=hoscType specialised .>hoscLittle-endian variant of =.?hoscType specialised .@hoscType specialised .AhoscLittle-endian variant of @.BhoscType specialised .ChoscType specialised .Dhosc"Decode an un-signed 8-bit integer.EhoscDecode a signed 8-bit integer.Fhosc!Decode an unsigned 8-bit integer.GhoscLittle-endian variant of F.HhoscDecode a signed 16-bit integer.IhoscLittle-endian variant of H.JhoscDecode a signed 32-bit integer. 3decode_i32 (L.pack [0x00,0x00,0x03,0xe7]) == 0x03e7KhoscLittle-endian variant of J. 6decode_i32_le (L.pack [0xe7,0x03,0x00,0x00]) == 0x03e7Lhosc"Decode an unsigned 32-bit integer. +decode_u32 (L.pack [1,2,3,4]) == 0x01020304Mhosc$Little-endian variant of decode_u32. .decode_u32_le (L.pack [1,2,3,4]) == 0x04030201Nhosc+Decode a 32-bit IEEE floating point number.OhoscLittle-endian variant of N.Phosc+Decode a 64-bit IEEE floating point number.Qhosc#Decode an Ascii string, inverse of <.RhoscRead n bytes from h and run f.ShoscType-specialised reader for .ThoscR of A.Uhosc of -.Vhosc of ..WhoscE of .XhoscH of .YhoscJ of .ZhoscK of .[hoscL of .\hoscM of .]hosc of 6.^hosc of 7._hoscN of .`hoscO of .ahosc5Read u8 length prefixed Ascii string (pascal string).bhoscBundle header as a (strict) . #S.C.length bundleHeader_strict == 8chosc#Bundle header as a lazy ByteString. L.length bundleHeader == 8dhoscThe number of bytes required to align an Osc value to the next 4-byte boundary. map align [0::Int .. 7] == [0,3,2,1,0,3,2,1] map align [512::Int .. 519] == [0,3,2,1,0,3,2,1]?&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd?&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd Safe-Inferred$ehosc#The basic elements of Osc messages.vhoscA real-valued time stamp. For Osc proper this is an Ntp64 time in real-valued (fractional) form. For SuperCollider Nrt programs this is elapsed time since the start of the score. This is the primary form of timestamp used by hosc.whosc9Four-byte midi message: port-id, status-byte, data, data.yhosc Type for " arrays, these are stored with an e length prefix.zhosc0Type for Ascii strings (strict Char8 ByteString){hosc"Type enumerating Datum categories.|hoscType-specialised pack.}hoscType-specialised unpack.~hoscType-specialised pack.hoscType-specialised unpack.hoscType-specialised unpack.hoscType-specialised unpack.hosc(List of required data types (tag, name).hosc'List of optional data types (tag,name).hosc"List of all data types (tag,name).hoscLookup name of type.hoscErroring variant.hosc,Single character identifier of an Osc datum.hoscType and name of e.hosce as  if Int32 or Int64. let d = [Int32 5,Int64 5,Float 5.5,Double 5.5] map datum_integral d == [Just (5::Int),Just 5,Nothing,Nothing]hosce as - if Int32, Int64, Float, Double or TimeStamp. let d = [Int32 5,Int64 5,Float 5,Double 5,TimeStamp 5] mapMaybe datum_floating d == replicate 5 (5::Double)hoscType generalised e. int32 (1::Int32) == int32 (1::Integer) d_int32 (int32 (maxBound::Int32)) == maxBound int32 (((2::Int) ^ (64::Int))::Int) == Int32 0hoscType generalised Int64. int64 (1::Int32) == int64 (1::Integer) d_int64 (int64 (maxBound::Int64)) == maxBoundhoscType generalised Float. float (1::Int) == float (1::Double) floatRange (undefined::Float) == (-125,128) isInfinite (d_float (float (encodeFloat 1 256 :: Double))) == TruehoscType generalised Double. double (1::Int) == double (1::Double) double (encodeFloat 1 256 :: Double) == Double 1.157920892373162e77hoscj of pack. ?string "string" == AsciiString (ByteString.Char8.pack "string")hoscFour-tuple variant of m  w. )midi (0,0,0,0) == Midi (MidiData 0 0 0 0)hoscy of ~.hosc0Message argument types are given by a signature. 3signatureFor [Int32 1,Float 1,string "1"] == ",ifs"hosc-The descriptor is an Ascii encoded signature. 7descriptor [Int32 1,Float 1,string "1"] == ascii ",ifs"hoscDescriptor tags are comma prefixed.1eutsrqponmljkgfihvwxyz{|}~1{z|}y~wxveutsrqponmljkgfih Safe-Inferred% Safe-Inferred, hoscAn Osc  is either a  or a .hoscAn Osc bundle, a v and a sequence of 9s. Do not allow recursion, all contents must be messages.hoscAn Osc message, an  and a sequence of e.hoscOsc address pattern. This is strictly an Ascii value, however it is very common to pattern match on addresses and matching on Data.ByteString.Char8 requires OverloadedStrings.hosc constructor. It is an  if the + doesn't conform to the Osc specification.hosc constructor. It is an  if the  list is empty.hosc of .hosc of .hoscConstant indicating a bundle to be executed immediately. It has the Ntp64 representation of 1. ntpr_to_ntpi immediately == 1hoscThe v of  , if the  is a  this is .hoscRetrieve the set of  s from a .hoscIf  is a  add  timestamp, else .hoscIf  is a  or a  with an  immediate, time tag and with one element, return the , else .hoscIs  immediate, ie. a  with timestamp , or a plain Message.hosc Variant of  for .hoscDoes  have the specified .hoscDo any of the s at  have the specified .hoscDoes  have the specified , ie.  or .hoscOsc "s can be ordered (time ascending). Safe-Inferred2{hosc Unix/Posix time in real-valued (fractional) form. The Unix/Posix epoch is January 1, 1970.hoscNtp' time in real-valued (fractional) form.hoscType for binary (integeral) representation of a 64-bit Ntp timestamp (ie. ntpi). The Ntp epoch is January 1, 1900. Ntp v4 also includes a 128-bit format, which is not used by Osc.hosc3Convert an NtpReal timestamp to an Ntp64 timestamp. *ntpr_to_ntpi 0 == 0 fmap ntpr_to_ntpi timehosc Convert an * timestamp to a real-valued Ntp timestamp. ntpi_to_ntpr 0 == 0.0hosc Difference (in seconds) between Ntp and Posix epochs. ntp_posix_epoch_diff / (24 * 60 * 60) == 25567 25567 `div` 365 == 70hosc4Convert a PosixReal timestamp to an Ntp64 timestamp.hoscConvert  Unix/Posix to Ntp.hoscConvert Ntp to  Unix/Posix.hoscConvert  to  Unix/Posix.hoscConvert Time to .hoscConvert  to Time.hosc>The time at 1970-01-01:00:00:00 which is the Unix/Posix epoch.hoscConvert  to  Unix/Posix.hosc%utc_to_posix of Clock.getCurrentTime.hosc&realToFrac of Clock.Posix.getPOSIXTime get_ct = getCurrentTimeAsPosix get_pt = getPosixTimeAsPosix (ct,pt) <- get_ct >>= \t0 -> get_pt >>= \t1 -> return (t0,t1) print (pt - ct,pt - ct < 1e-5)hoscRead current real-valued Ntp timestamp.  Safe-Inferred=!hosc&A character parser with no user state.hosc+Precision value for floating point numbers.hosc Variant of  that deletes trailing zeros. map (showFloatWithPrecision (Just 4)) [1, 2.0, pi] == ["1.0", "2.0", "3.1416"]hoscHex encoded byte sequence. /showBytes [0, 15, 16, 144, 255] == "000f1090ff"hoscEscape whites space (space, tab, newline) and the escape character (backslash). mapM_ (putStrLn . escapeString) ["str", "str ", "st r", "s\tr", "s\\tr", "\nstr"]hoscPrinter for Datum. aDatumSeq = [Int32 1,Float 1.2,string "str",midi (0,0x90,0x40,0x60),blob [12,16], TimeStamp 100.0] map (showDatum (Just 5)) aDatumSeq == ["1","1.2","str","00904060","0c10","429496729600"]hoscPrinter for Message. aMessage = Message "/addr" [Int32 1, Int64 2, Float 3, Double 4, string "five", blob [6, 7], midi (8, 9, 10, 11)] showMessage (Just 4) aMessage aMessageSeq = [Message "/c_set" [Int32 1, Float 2.3], Message "/s_new" [string "sine", Int32 (-1), Int32 1, Int32 1]] map (showMessage (Just 4)) aMessageSeqhoscPrinter for Bundle aBundle = Bundle 1 [Message "/c_set" [Int32 1, Float 2.3, Int64 4, Double 5.6], Message "/memset" [string "addr", blob [7, 8]]] showBundle (Just 4) aBundlehoscPrinter for Packet.hosc$Run p then q, returning result of p.hoscp4 as lexeme, i.e. consuming any trailing white space.hosc.Any non-space character. Allow escaped space.hoscParser for string.hoscParser for Osc address.hoscParser for Osc signature.hoscParser for decimal digit.hosc Parser for non-negative integer.hoscParser for integer.hoscParser for non-negative float.hoscParser for non-negative float.hoscParser for hexadecimal digit.hosc Byte parser.hoscByte sequence parser.hosc Datum parser.hoscMessage parser.hoscBundle tag parser.hoscBundle parser.hoscPacket parser.hosc Run parser.hoscRun datum parser. parseDatum 'i' "-1" == Int32 (-1) parseDatum 'f' "-2.3" == Float (-2.3)hoscRun message parser. aMessageSeq = [Message "/c_set" [Int32 1, Float 2.3, Int64 4, Double 5.6], Message "/memset" [string "addr", blob [7, 8]]] map (parseMessage . showMessage (Just 4)) aMessageSeq == aMessageSeqhoscRun bundle parser. aBundle = Bundle 1 [Message "/c_set" [Int32 1, Float 2.3, Int64 4, Double 5.6], Message "/memset" [string "addr", blob [7, 8]]] parseBundle (showBundle (Just 4) aBundle) == aBundlehoscRun packet parser. aPacket = Packet_Bundle (Bundle 1 [Message "/c_set" [Int32 1, Float 2.3, Int64 4, Double 5.6], Message "/memset" [string "addr", blob [7, 8]]]) parsePacket (showPacket (Just 4) aPacket) == aPacket""  Safe-InferredA.hosc*Generate a list of zero bytes for padding.hosc#Nul byte (0) and then zero padding.hoscBuilder for an Osc .hoscEncode an Osc .hoscEncode an Osc , ie.  of . let m = [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0] encodeMessage (Message "/g_free" [Int32 0]) == L.pack mhoscEncode an Osc , ie.  of . let m = [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0] let b = [35,98,117,110,100,108,101,0,0,0,0,0,0,0,0,1,0,0,0,16] ++ m encodeBundle (Bundle immediately [Message "/g_free" [Int32 0]]) == L.pack bhoscEncode an Osc  to a strict .  Safe-InferredDhoscAlign byte string, if required.hosc Encode Osc e.MidiData: Bytes from MSB to LSB are: port id, status byte, data1, data2. encode_datum (blob [1, 2, 3, 4]) == B.pack [0, 0, 0, 4, 1, 2, 3, 4]hosc Encode Osc . m = Message "/n_set" [int32 (-1), string "freq", float 440, string "amp", float 0.1] e = blob_unpack (encodeMessage m) length e == 40 e == [47,110,95,115,101,116,0,0,44,105,115,102,115,102,0,0,255,255,255,255,102,114,101,113,0,0,0,0,67,220,0,0,97,109,112,0,61,204,204,205]hosc Encode Osc  as an Osc blob.hosc Encode Osc .b = Bundle 0.0 [m] e = blob_unpack (encodeBundle b) length e == 60 e == [35,98,117,110,100,108,101,0,0,0,0,0,0,0,0,0,0,0,0,40,47,110,95,115,101,116,0,0,44,105,115,102,115,102,0,0,255,255,255,255,102,114,101,113,0,0,0,0,67,220,0,0,97,109,112,0,61,204,204,205]hosc Encode Osc .  Safe-InferredI4hosc.Get a 32 bit integer in big-endian byte order.hosc.Get a 64 bit integer in big-endian byte order.hoscGet an aligned Osc string.hoscGet an aligned Osc string.hosc'Get binary data prefixed by byte count.hoscGet an Osc datum.hosc Get an Osc %, fail if type descriptor is invalid.hoscGet a sequence of Osc !s, each one headed by its length.hosc;Get a bundle. Fail if bundle header is not found in packet.hosc Get an Osc .hoscDecode an Osc  from a lazy ByteString. let b = ByteString.Lazy.pack [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0] decodeMessage b == Message "/g_free" [Int32 0]hoscDecode an Osc  from a lazy ByteString.hosc,Decode an Osc packet from a lazy ByteString. let b = ByteString.Lazy.pack [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0] decodePacket b == Packet_Message (Message "/g_free" [Int32 0])hosc4Decode an Osc packet from a strict Char8 ByteString.  Safe-InferredK hosc%The plain byte count of an Osc value.hosc1The storage byte count (aligned) of an Osc value.hoscDecode an Osc datumhosc>Decode a sequence of Osc datum given a type descriptor string.hoscDecode an Osc .hosc:Decode a sequence of length prefixed (Int32) Osc messages.hoscDecode an Osc .hoscDecode an Osc . let b = B.pack [47,103,95,102,114,101,101,0,44,105,0,0,0,0,0,0] decodePacket b == Packet_Message (Message "/g_free" [Int32 0])hosc with  count.hosc with  count. Safe-InferredMhoscGet the system time, epoch start of 1970 UTC, leap-seconds ignored. getSystemTime is typically much faster than getCurrentTime, however it is not available in Hugs.hoscSystem time with fractional part in microseconds (us) instead of nanoseconds (ns). Safe-InferredOhoscThe  pauseThread limit (in seconds). Values larger than this require a different thread delay mechanism, see  sleepThread0. The value is the number of microseconds in  maxBound::Int.hoscPause current thread for the indicated duration (in seconds), see .hosc/Pause current thread until the given time, see .hoscSleep current thread for the indicated duration (in seconds). Divides long sleeps into parts smaller than .hoscSleep current thread until the given time. Divides long sleeps into parts smaller than . Safe-InferredO Safe-InferredPhoscRepeat action until predicate f is  when applied to result.hoscRepeat action until f does not give  when applied to result. Safe-InferredThosc0Abstract over the underlying transport protocol.hoscEncode and send an Osc packet.hosc!Receive and decode an Osc packet.hoscClose an existing connection.hoscBracket Osc communication.hosc of .hosc of .hosc Variant of  that runs .hosc Variant of  that runs .hosc Variant of  that runs .hosc Wait for a ! where the supplied predicate is ", discarding intervening packets.hosc Wait for a , where the supplied function does not give !, discarding intervening packets.hosc .hosc , ie. an incoming  or immediate mode  with one element.hoscA  for variant using  to match on the  of incoming Packets.hosc Variant on  that returns matching .hosc Variant of  that runs . Safe-Inferred[9hoscTransport connection.hosc is  with a  constraint.hosc is the union of  and .hoscReceiver monad.hosc!Receive and decode an Osc packet.hosc Sender monad.hoscEncode and send an Osc packet.hosc)Bracket Open Sound Control communication.hosc of .hoscType restricted synonym for sendOsc.hoscType restricted synonym for sendOsc.hosc Variant of  that runs packet_to_bundle.hosc Variant of  that runs packet_to_message.hoscErroring variant.hosc Variant of  that runs packetMessages.hosc Wait for a Packet! where the supplied predicate is ", discarding intervening packets.hosc Wait for a Packet, where the supplied function does not give !, discarding intervening packets.hosc packet_is_immediate.hosc packet_to_message, ie. an incoming Message or immediate mode Bundle with one element.hoscA  for variant using packet_has_address to match on the Address_Pattern of incoming Packets.hosc Variant on  that returns matching Message.hosc Variant of  that runs  messageDatum.hosc over ReaderT.hosc over ReaderT.hosc over ReaderT.hosc over ReaderT. Safe-Inferred_hosc#The Udp transport handle data type.hosc6Return the port number associated with the Udp socket.hoscSend data over Udp using .hoscSend data over Udp using .hoscSend packet over Udp.hoscReceive packet over Udp.hosc Close Udp.hoscBracket Udp communication.hosc!Create and initialise Udp socket.hoscSet option, ie.  or .hosc Get option.hoscMake a  connection.hoscTrivial  server socket. import Control.Concurrent  let u0 = udpServer "127.0.0.1" 57300 t0 <- forkIO (Fd.withTransport u0 (\fd -> forever (Fd.recvMessage fd >>= print >> print "Received message, continuing"))) killThread t0 let u1 = openUdp "127.0.0.1" 57300 Fd.withTransport u1 (\fd -> Fd.sendMessage fd (Packet.message "/n" []))hosc Variant of ' that doesn't require the host address.hosc-Send to specified address using 'C.sendAllTo.hosc/Recv variant to collect message source address.hosc is an instance of . Safe-Inferredcx hosc#The Tcp transport handle data type.hoscSend data over Tcp.hoscSend packet over Tcp.hoscReceive packet over Tcp.hosc Close Tcp.hoscBracket UDP communication.hosc!Create and initialise Tcp socket.hoscConvert  to .hoscCreate and initialise Tcp.hoscMake a  connection. import Sound.Osc.Datum import Sound.Osc.Time let t = openTcp "127.0.0.1" 57110 let m1 = Packet.message "/dumpOsc" [Int32 1] let m2 = Packet.message "/g_new" [Int32 1] Fd.withTransport t (\fd -> let f = Fd.sendMessage fd in f m1 >> pauseThread 0.25 >> f m2)hosc connection at s and run f.hosc A trivial  Osc server.hosc is an instance of  Transport. Safe-Inferreddlhosc Variant of + where time is given in fractional seconds.hosc Variant of  that implements an n second . Safe-Inferreddeutsrqponmljkgfhivwxyz{|}~ Safe-Inferredeeutsrqponmljkgfhivwxyz{|}~ Safe-Inferredfeutsrqponmljkgfhivwxyz{|}~eutsrqponmljkgfhivwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                        hosc-0.20-1upVR8Rqz0VLJrvLHi36zf Sound.OscSound.Osc.Coding.ConvertSound.Osc.Coding.CastSound.Osc.Coding.ByteSound.Osc.DatumSound.Osc.AliasSound.Osc.PacketSound.Osc.TimeSound.Osc.TextSound.Osc.Coding.Encode.BuilderSound.Osc.Coding.Encode.BaseSound.Osc.Coding.Decode.BinarySound.Osc.Coding.Decode.BaseSound.Osc.Time.SystemSound.Osc.Time.ThreadSound.Osc.Time.Thread.MonadIOSound.Osc.WaitSound.Osc.Transport.FdSound.Osc.Transport.MonadSound.Osc.Transport.Fd.UdpSound.Osc.Transport.Fd.TcpSound.Osc.Time.TimeoutSound.Osc.Core Sound.Osc.FdbaseControl.Monad.IO.ClassliftIOMonadIO int_to_word8 int_to_word32 int_to_word16 int_to_int8 int_to_int16 int_to_int32 int_to_int64 int8_to_int int16_to_int int32_to_int int64_to_int word8_to_int word16_to_int word32_to_intword16_to_word32word32_to_word16word32_to_int32word32_to_int64word64_to_int64int64_to_int32int64_to_word32word64_to_double word8_to_enumword16_to_enum enum_to_word8enum_to_word16 word8_to_char char_to_word8f32_w32w32_f32f64_w64w64_f64str_cstrcstr_strstr_pstrpstr_str encode_int8 encode_int16encode_int16_le encode_int64 encode_word8 encode_word16encode_word16_le encode_word32encode_word32_le encode_word64 encode_i8 encode_u8 encode_u16 encode_u16_le encode_i16 encode_i32 encode_u32 encode_u32_le encode_f32 encode_f32_le encode_f64 encode_f64_le encode_ascii decode_word16decode_word16_le decode_int16 decode_word32decode_word32_le decode_int64 decode_word64 decode_u8 decode_i8 decode_u16 decode_u16_le decode_i16 decode_i16_le decode_i32 decode_i32_le decode_u32 decode_u32_le decode_f32 decode_f32_le decode_f64 decode_ascii read_decode read_word32read_word32_le write_word32write_word32_leread_i8read_i16read_i32 read_i32_leread_u32 read_u32_le write_u32 write_u32_leread_f32 read_f32_le read_pstrbundleHeader_strict bundleHeaderalignDatumInt32Int64FloatDouble AsciiStringBlob TimeStampMidid_int32d_int64d_floatd_doubled_ascii_stringd_blob d_timestampd_midiTimeMidiDataAscii DatumTypeasciiascii_to_string blob_pack blob_unpackblob_unpack_int midi_packmidi_unpack_intosc_types_requiredosc_types_optional osc_types osc_type_nameosc_type_name_err datum_tagdatum_type_namedatum_integraldatum_floatingint32int64floatdoublestringmidiblob signatureFor descriptordescriptor_tags $fOrdDatum $fEqDatum $fReadDatum $fShowDatum $fOrdMidiData $fEqMidiData$fShowMidiData$fReadMidiDataMIDIASCIIBLOB Datum_TypePacketPacket_Message Packet_Bundle packetMessage packetBundleBundle bundleTimebundleMessagesMessagemessageAddress messageDatumAddress_PatternmessagemessageSignaturemessageDescriptorbundlep_bundle p_message immediately packetTimepacketMessagespacket_to_bundlepacket_to_messagepacket_is_immediate at_packetmessage_has_addressbundle_has_addresspacket_has_address $fOrdBundle $fEqPacket $fReadPacket $fShowPacket $fEqBundle $fReadBundle $fShowBundle $fOrdMessage $fEqMessage $fReadMessage $fShowMessage PosixRealNtpRealNtp64 ntpr_to_ntpi ntpi_to_ntprntp_posix_epoch_diff posix_to_ntpi posix_to_ntpr ntpr_to_posix ntpi_to_posixntpr_to_posixtimeposixtime_to_ntpr posix_epoch utc_to_posixgetCurrentTimeAsPosixgetPosixTimeAsPosix currentTimeP FpPrecisionshowFloatWithPrecision showBytes escapeString showDatum showMessage showBundle showPacket>>~lexemeP stringCharPstringP oscAddressP oscSignaturePdigitPallowNegativePnonNegativeIntegerPintegerPnonNegativeFloatPfloatP hexdigitPbytePbyteSeqPdatumPmessageP bundleTagPbundlePpacketPrunP parseDatum parseMessage parseBundle parsePacket build_packet encodePacket encodeMessage encodeBundleencodePacket_strictextend encode_datumencode_message_blob get_packet decodeMessage decodeBundle decodePacketdecodePacket_strictgetSystemTimeAsNtpRealgetSystemTimeInMicrosecondspauseThreadLimitpauseThreadForpauseThreadUntilTimesleepThreadForsleepThreadUntilTimetime pauseThreadwaitpauseThreadUntil sleepThreadsleepThreadUntiluntilPredicate untilMaybe Transport sendPacket recvPacketclose withTransport sendMessage sendBundle recvBundle recvMessage recvMessages waitUntilwaitFor waitImmediate waitMessage waitAddress waitReply waitDatum Connection DuplexOscRecvOscSendOscwithTransport_recvMessage_err$fSendOscReaderT$fRecvOscReaderT$fDuplexOscReaderT$fTransportReaderTUdp udpSocketudpPort udp_send_dataudp_sendAll_dataudp_send_packetudp_recv_packet udp_closewith_udp udp_socket set_udp_opt get_udp_optopenUdp udpServer udp_serversendTorecvFrom$fTransportUdpTcp tcpHandle tcp_send_datatcp_send_packettcp_recv_packet tcp_closewith_tcp tcp_socket socket_to_tcp tcp_handleopenTcp tcp_server_f tcp_server$fTransportTcp timeout_rrecvPacketTimeoutGHC.Real fromIntegralGHC.EnumtoEnumfromEnumbinary-0.8.9.0 Data.Binaryencodedecodebytestring-0.11.3.1Data.ByteString.LazyhPuthGetData.ByteString.Internal ByteStringGHC.WordWord8Integral GHC.FloatFloatingGHC.Base.GHC.Errerrorid GHC.MaybeNothing Data.Eithereither time-1.11.1.1"Data.Time.Clock.Internal.POSIXTime POSIXTime Data.Time.Clock.Internal.UTCTimeUTCTimeNumeric showFFloatpaddingnul_and_padding getInt32be getInt64be get_string get_ascii get_bytes get_datum get_messageget_message_seq get_bundlesizestorage decode_datumdecode_datum_seqdecode_message_seqb_taketakeghc-prim GHC.TypesIntb_dropdropTrue Data.Functorvoid&network-3.1.2.7-KNHfqAMEio28ZpzOUR7EEhNetwork.Socket.ByteString.IOsendsendAllNetwork.Socket.Options Broadcast RecvTimeOutNetwork.Socket.TypesSocketNetwork.Socket.SockAddracceptSystem.Timeouttimeout