a àMÒeDã@s|ddlZddlZddlZddlZddlZze d¡Ze d¡ZWne yZdZdZYn0ej j Gdd„dej j ƒƒZ dS)éNÚtcpÚudpéécsXeZdZdZgd¢Z‡fdd„Zddd„Zedd d „ƒZdd d „Z eddd„ƒZ ‡Z S)ÚWKSz WKS record)ÚaddressÚprotocolÚbitmapcs6tƒ ||¡| |¡|_| |¡|_| |¡|_dS)N)ÚsuperÚ__init__Z_as_ipv4_addressrZ _as_uint8rZ _as_bytesr )ÚselfÚrdclassÚrdtyperrr ©Ú __class__©ú6/usr/lib/python3.9/site-packages/dns/rdtypes/IN/WKS.pyr *s  z WKS.__init__NTc Ksfg}t|jƒD]:\}}tddƒD]&}|d|?@r | t|d|ƒ¡q qd |¡}d|j|j|fS)Nréé€ú z%s %d %s)Ú enumerater ÚrangeÚappendÚstrÚjoinrr) r ÚoriginÚ relativizeÚkwÚbitsÚiZbyteÚjÚtextrrrÚto_text0s  z WKS.to_textcCs| ¡}| ¡}| ¡r"t|ƒ}n t |¡}tƒ} | ¡D]¨} |  ¡j} |  ¡rZt| ƒ} n6|t krr|t krrt dƒ‚|t kr€d} nd} t  | | ¡} | d}t | ƒ}||dkrÊt||dƒD]}|  d¡qº| |d| d?B| |<q:tj | ¡} |||||| ƒS)Nzprotocol must be TCP or UDPrrrérr)Z get_stringÚisdigitÚintÚsocketÚgetprotobynameÚ bytearrayÚ get_remainingZunescapeÚvalueÚ _proto_udpÚ _proto_tcpÚNotImplementedErrorZ getservbynameÚlenrrÚdnsÚrdataZ_truncate_bitmap)Úclsr rÚtokrrZ relativize_torrr Útokenr*ZservZ protocol_textrÚlÚ_rrrÚ from_text9s0         z WKS.from_textFcCs<| tj |j¡¡t d|j¡}| |¡| |j¡dS)Nz!B) Úwriter/Zipv4Z inet_atonrÚstructÚpackrr )r ÚfileÚcompressrZ canonicalizerrrrÚ_to_wireYs z WKS._to_wirecCs*| d¡}| ¡}| ¡}||||||ƒS)Né)Z get_bytesZ get_uint8r))r1r rÚparserrrrr rrrÚfrom_wire_parser_s zWKS.from_wire_parser)NT)NTN)NNF)N) Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__r r"Ú classmethodr6r<r?Ú __classcell__rrrrr"s  ÿ  r)r&r8Z dns.immutabler/Zdns.ipv4Z dns.rdatar'r,r+ÚOSErrorZ immutabler0ZRdatarrrrrÚs