A>&      !"#$%Safe;A four hexadecimal digits group representing a 16-Bit chunkAn all zeros 16-Bit chunk!A separator between 16-Bit chunksPA double-colon stands for a unique compression of many consecutive 16-Bit chunks=An embedded IPv4 address as representation of the last 32-Bit  Safe  Returns the & of an IPv6 address. Given an arbitrary list of , returns the corresponding &.'Returns the corresponding & of an IPv6 address token. Returns ( if a list of " constitutes a valid IPv6 Address. (This is the main function which returns ) the list of a tokenized IPv6 address text representation validated against RFC 4291 and canonized in conformation with RFC 5952, or *. Returns )` the list of tokenized pure IPv6 address, always rewriting an embedded IPv4 address if present. Tokenize a & into ) a list of , or *.++An embedded IPv4 address have to be rewritten to output a pure IPv6 Address text representation in hexadecimal digits. But some well-known prefixed IPv6 addresses have to keep visible in their text representation the fact that they deals with IPv4 to IPv6 transition process (RFC 5952 Section 5):-IPv4-compatible IPv6 address like "::1.2.3.4".IPv4-mapped IPv6 address like "::ffff:1.2.3.4"/IPv4-translated address like "::ffff:0:1.2.3.4"1IPv4-translatable address like "64:ff9b::1.2.3.4"(ISATAP address like "fe80::5efe:1.2.3.4"Rewrites an embedded % into the corresponding list of pure  tokens. \ipv4AddrToIPv6AddrTokens (IPv4Addr "127.0.0.1") == [SixteenBits "7f0",Colon,SixteenBits "1"] ' , +-./012      ' , +-./012SafeReturns ) a random ] token based on a mask "____", each underscore being replaced by a random hexadecimal digit. 4randIPv6AddrChunk "_f__" == Just (SixteenBit "bfd4")Generates a random partial  with n Given a MAC address, returns ) the corresponding  list, or *. wmacAddrToIPv6AddrTokens "fa:1d:58:cc:95:16" == Just [SixteenBit "fa1d",Colon,SixteenBit "58cc",Colon,SixteenBit "9516"]9Given a valid name of a local network interface, returns )9 the list of tokens of the interface's IPv6 address, or *. getTokIPv6AddrOf "eth0" == Just [SixteenBit "fe80",DoubleColon,SixteenBit "fa1d",Colon,SixteenBit "58cc",Colon,SixteenBit "9516"]:Given a valid name of a local network interface, returns ) the corresponding list of % of the interface's MAC Address, or *. bgetTokMacAddrOf "eth0" == Just [SixteenBit "fa1d",Colon,SixteenBit "58cc",Colon,SixteenBit "9516"]None Returns )) the text representation of a canonized # in conformation with RFC 5952, or *. MmaybeIPv6Addr "0:0::FFFF:192.0.2.128" == Just (IPv6Addr "::ffff:192.0.2.128")Returns ) a pure , or *. KmaybePureIPv6Addr "::ffff:192.0.2.128" == Just (IPv6Addr "::ffff:c000:280")Returns ) a pure and fully expanded , or *. cmaybeFullIPv6Addr "::ffff:192.0.2.128" == Just (IPv6Addr "0000:0000:0000:0000:0000:ffff:c000:0280")Returns (E if arguments are two textual representations of a same IPv6 address.fReturns the reverse lookup domain name corresponding of the given IPv6 address (RFC 3596 Section 2.5). }toIP6ARPA (IPv6Addr "4321:0:1:2:3:4:567:89ab") == "b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.IP6.ARPA." <Returns the Windows UNC path name of the given IPv6 Address. stoUNC (IPv6Addr "2001:0DB8:002a:1005:230:48ff:fe73:989d") == "2001-db8-2a-1005-230-48ff-fe73-989d.ipv6-literal.net"! Given an , returns the corresponding 3." Given an IPv6addr, returns the corresponding 4 address.#Returns ) the canonized + of the given local network interface, or *. getIPv6AddrOf "eth0"$Returns a random .%Returns a random #, optionally with the given prefix. .randIPv6AddrWithPrefix (Just "4321:0:1:2:3:4")  !"#$%5  !"#$% "! #$%  !"#$%56       !"#$%&'()*+,-./012312456789:;<=>?@ABCDIPv6A_BN1oMOMughT1BOV0b7pQJlText.IPv6Addr.TypesText.IPv6Addr.InternalText.IPv6Addr.Manip Text.IPv6Addr IPv6AddrToken SixteenBitAllZerosColon DoubleColonIPv4AddrIPv6Addr$fShowIPv6Addr fromIPv6Addripv6TokensToText isIPv6AddrmaybeTokIPv6AddrmaybeTokPureIPv6AddrmaybeIPv6AddrTokensipv4AddrToIPv6AddrTokens expandTokensfromDoubleColon toDoubleColonipv6TokensToIPv6AddrnetworkInterfacesIPv6AddrListmacAddrrandIPv6AddrChunkrandPartialIPv6AddrmacAddrToIPv6AddrTokensgetTokIPv6AddrOfgetTokMacAddrOf maybeIPv6AddrmaybePureIPv6AddrmaybeFullIPv6Addr sameIPv6Addr toIP6ARPAtoUNC toHostNametoIPv6 getIPv6AddrOf randIPv6AddrrandIPv6AddrWithPrefixtext_HmqVQnZSpjaC156ABqPhneData.Text.InternalTextipv6TokenToTextghc-prim GHC.TypesTruebaseGHC.BaseJustNothingipv4AddrRewrite countIPv4Addr sixteenBitipv4Addr doubleColoncolonipv6AddrFullChunkhexaCharnetwo_A6pE0dLgMEk2GtUa1JtTJQNetwork.SocketHostNameiprou_51qGM7UdLbAGjwdVd1zynT Data.IP.AddrIPv6 $fEqIPv6Addr