Ë
    ÖÉ�j�  ã                   ó8  — d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZ d dl	Z
d dlZ
d dlZ
d dlZ
d dlZ
d dlZ
d dlZ
d dlZ
d dlZ
dZdZ ej*                  d«      Ze
j.                  j0                  dz  Zdefd„Zd	edefd
„Z G d„ de j<                  «      Zdefd„Z y)é    N)ÚOptionalÚUnionÚcastz224.0.0.251ié  z^[a-zA-Z0-9-]{1,63}\.local$i €  Úreturnc                  óB   — t        t        j                  «       «      dz   S )Nz.local)ÚstrÚuuidÚuuid4© ó    úL/home/uftp/webrtc-recorder/.venv/lib/python3.12/site-packages/aioice/mdns.pyÚcreate_mdns_hostnamer      s   € ÜŒt�z‰z‹|Ó˜xÑ'Ð'r   Únamec                 ó0   — t         j                  | «      d uS ©N)ÚMDNS_HOSTNAME_REÚmatch)r   s    r   Úis_mdns_hostnamer      s   € Ü×!Ñ! $Ó'¨tÐ3Ð3r   c                   óÂ   — e Zd Zdej                  ddfd„Zdeddfd„Zdej                  ddfd„Z	d	e
eef   d
eddfd„Zdd„Zded
eddfd„Z	 ddedee   dee   fd„Zy)ÚMDnsProtocolÚtx_transportr   Nc                 ó¶   — t        j                  «       | _        t        j                  j                  ddt        ¬«      | _        i | _        d | _        || _	        y )NÚ F)Ú
relativizeÚrdclass)
ÚasyncioÚFutureÚ_MDnsProtocol__closedÚdnsÚzoneÚZoneÚMDNS_RDCLASSÚqueriesÚrx_transportr   )Úselfr   s     r   Ú__init__zMDnsProtocol.__init__"   sA   € Ü.5¯n©nÓ.>ˆŒÜ—H‘H—M‘M "°Ä�MÓMˆŒ	ØFHˆŒàAEˆÔØ(ˆÕr   Úexcc                 óÜ   — t        | j                  j                  «       «      D ]+  \  }}|D ]!  }|j                  t        j
                  «       Œ# Œ- | j                  j                  d«       y )NT)Úlistr#   ÚitemsÚset_exceptionr   ÚTimeoutErrorr   Ú
set_result)r%   r'   r   ÚfuturesÚfutures        r   Úconnection_lostzMDnsProtocol.connection_lost*   s^   € ä! $§,¡,×"4Ñ"4Ó"6Ó7ò 	;‰MˆD�'Ø!ò ;�Ø×$Ñ$¤W×%9Ñ%9Õ:ñ;ð	;ð 	�‰× Ñ  Õ&r   Ú	transportc                 óB   — t        t        j                  |«      | _        y r   )r   r   ÚDatagramTransportr$   )r%   r1   s     r   Úconnection_madezMDnsProtocol.connection_made1   s   € Ü ¤×!:Ñ!:¸IÓFˆÕr   ÚdataÚaddrc                 ó0  — 	 t         j                  j                  t        t        |«      «      }t        |t         j                  j                  «      �r|j                  D �]™  }g }|j                  t         j                  j                  t         j                  j                  t         j                  j                  fv r7|t         j                  j                  t         j                  j                  gz  }t         j                  j                  d¬«      }|xj                  t         j                  j                   z  c_        |xj                  t         j                  j"                  z  c_        |D ]C  }	 |j$                  j'                  | j(                  j+                  |j,                  |¬«      «       ŒE |j$                  s�Œf| j0                  j3                  |j5                  «       t6        t8        f«       �Œœ |j$                  D �]V  }|D �]M  }	|	j;                  «       }	t        |	t         j<                  j>                  «      sŒ9|	j@                  tB        k(  sŒM|	j                  t         j                  j                  t         j                  j                  fv sŒŽ|	j                  t         j                  j                  k(  r/tE        jF                  tD        jH                  |	jJ                  «      }
n.tE        jF                  tD        jL                  |	jJ                  «      }
| jN                  jQ                  |j,                  g «      D ]  }|jS                  |
«       Œ �ŒP �ŒY y y # t         j
                  j                  $ r Y y w xY w# t.        $ r Y �Œ"w xY w)Nr   )Úid)r   Úrdtype)*r   ÚmessageÚ	from_wirer   ÚbytesÚ	exceptionÚ	FormErrorÚ
isinstanceÚQueryMessageÚquestionr9   Ú	rdatatypeÚANYÚAÚAAAAÚflagsÚQRÚAAÚanswerÚappendr    Ú
find_rrsetr   ÚKeyErrorr   ÚsendtoÚto_wireÚMDNS_ADDRESSÚ	MDNS_PORTÚ
to_genericÚrdataÚGenericRdatar   r"   ÚsocketÚ	inet_ntopÚAF_INETr5   ÚAF_INET6r#   Úpopr-   )r%   r5   r6   r:   rA   ÚrdtypesÚresponser9   rI   ÚitemÚresultr/   s               r   Údatagram_receivedzMDnsProtocol.datagram_received4   s‚  € ð	Ü—k‘k×+Ñ+¬D´¸Ó,=Ó>ˆGô �gœsŸ{™{×7Ñ7Õ8à#×,Ñ,ó �Ø%'�Ø—?‘?Ü—M‘M×%Ñ%Ü—M‘M—O‘OÜ—M‘M×&Ñ&ð'ñ ð
 ¤§¡§¡´·±×1CÑ1CÐDÑD�GäŸ;™;×3Ñ3°qÐ3Ó9�Ø—’¤#§)¡)§,¡,Ñ.•Ø—’¤#§)¡)§,¡,Ñ.•à%ò !�Fð!Ø Ÿ™×.Ñ.Ø ŸI™I×0Ñ0°h·m±mÈFÐ0ÓSõð!ð —?”?Ø×%Ñ%×,Ñ,Ø ×(Ñ(Ó*¬\¼9Ð,Eöð+ð4 "Ÿ.™.ó 6�Ø"ó 6�DØŸ?™?Ó,�Dä" 4¬¯©×)?Ñ)?Õ@Ø ŸL™L¬LÓ8Ø ŸK™K¬C¯M©M¯O©O¼S¿]¹]×=OÑ=OÐ+PÒPàŸ;™;¬#¯-©-¯/©/Ò9Ü%+×%5Ñ%5´f·n±nÀdÇiÁiÓ%P™Fä%+×%5Ñ%5´f·o±oÀtÇyÁyÓ%Q˜FØ&*§l¡l×&6Ñ&6°v·{±{ÀBÓ&Gò 6˜FØ"×-Ñ-¨fÕ5ò6ò6ñ6ð9 9øô �}‰}×&Ñ&ò 	Ùð	ûô. $ò !Ú ð!ús$   ‚-M% Å6A NÍ%NÎNÎ	NÎNc              ƒ   ó    K  — | j                   j                  «        | j                  j                  «        | j                  ƒ d {  –—†  y 7 Œ­wr   )r$   Úcloser   r   )r%   s    r   r_   zMDnsProtocol.closeh   s7   è ø€ Ø×Ñ×ÑÔ!Ø×Ñ×ÑÔ!Ø�m‰m×Òús   ‚AAÁAÁAÚhostnamec              ƒ   ó"  K  — t         j                  j                  |«      }	 t        j                  t        j
                  |«      }t         j                  j                  }t         j                  j                  t        ||¬«      }| j                  j                  |t         j                   j#                  d|«      «       y # t        $ rA t        j                  t        j                  |«      }t         j                  j                  }Y Œªw xY w­w)N)r   r9   r5   éx   )r   r   Ú	from_textrT   Ú	inet_ptonrV   rB   rD   ÚOSErrorrW   rE   rR   rS   r"   r    Úreplace_rdatasetÚrdatasetÚ
from_rdata)r%   r`   r6   r   r5   r9   rR   s          r   ÚpublishzMDnsProtocol.publishm   sº   è ø€ Ü�x‰x×!Ñ! (Ó+ˆð	(Ü×#Ñ#¤F§N¡N°DÓ9ˆDÜ—]‘]—_‘_ˆFô
 —	‘	×&Ñ&¬|ÀFÐQUÐ&ÓVˆØ�	‰	×"Ñ" 4¬¯©×)@Ñ)@ÀÀeÓ)LÕMøô ò 	(Ü×#Ñ#¤F§O¡O°TÓ:ˆDÜ—]‘]×'Ñ'ŠFð	(üs*   ‚ D£>C Á!A!DÃADÄ	DÄDÄDÚtimeoutc              ƒ   ó.  K  — t         j                  j                  |«      }t        j                  «       }|| j
                  v r| j
                  |   j                  |«       n”t        |g«      | j
                  |<   t         j                  j                  |t         j                  j                  ¬«      }d|_        d|_        | j                  j                  |j!                  «       t"        t$        f«       	 t        j&                  ||¬«      ƒ d {  –—† || j
                  v r<| j
                  |   j)                  |«       | j
                  |   s| j
                  |= S S S 7 ŒN# t        j*                  $ rM Y || j
                  v r<| j
                  |   j)                  |«       | j
                  |   s| j
                  |= y y y w xY w# || j
                  v r<| j
                  |   j)                  |«       | j
                  |   s| j
                  |= w w w xY w­w)N)r9   r   )rj   )r   r   rc   r   r   r#   ÚaddÚsetr:   Ú
make_queryrB   rD   r8   rF   r   rM   rN   rO   rP   Úwait_forÚdiscardr,   )r%   r`   rj   r   r/   r:   s         r   ÚresolvezMDnsProtocol.resolvey   s»  è ø€ ô �x‰x×!Ñ! (Ó+ˆÜ&-§n¡nÓ&6ˆà�4—<‘<Ñà�L‰L˜Ñ×"Ñ" 6Õ*ô "% f X£ˆD�L‰L˜ÑÜ—k‘k×,Ñ,¨T¼#¿-¹-¿/¹/Ð,ÓJˆGØˆGŒJØˆGŒMØ×Ñ×$Ñ$ W§_¡_Ó%6¼ÄyÐ8QÔRð	+Ü ×)Ñ)¨&¸'ÔB×Bð �t—|‘|Ñ#Ø—‘˜TÑ"×*Ñ*¨6Ô2Ø—|‘| DÒ)ØŸ™ TÑ*ð *ð $ð	 CùÜ×#Ñ#ò 	Øà�t—|‘|Ñ#Ø—‘˜TÑ"×*Ñ*¨6Ô2Ø—|‘| DÒ)ØŸ™ TÑ*ð *ð $ð	ûð �t—|‘|Ñ#Ø—‘˜TÑ"×*Ñ*¨6Ô2Ø—|‘| DÒ)ØŸ™ TÑ*ð *ð $üsQ   ‚C5HÃ8E# ÄE!ÄE# ÄAHÅ!E# Å#GÅ6G Å7AHÇGÇG ÇAHÈH)r   N)g      ð?)Ú__name__Ú
__module__Ú__qualname__r   r3   r&   Ú	Exceptionr0   ÚBaseTransportr4   r   r<   r   Útupler]   r_   ri   r   Úfloatrq   r   r   r   r   r   !   s»   „ ð) W×%>Ñ%>ð )À4ó )ð' 9ð '°ó 'ðG¨×)>Ñ)>ð GÀ4ó Gð06 e¨E°3¨JÑ&7ð 06¸uð 06Èó 06óhð

N cð 
N°ð 
N¸ó 
Nð 9<ñ+Øð+Ø&.¨u¡oð+à	�#‰ô+r   r   c               ƒ   óŽ  ‡K  — t        j                  «       } t        j                  t        j                  t        j                  «      }|j                  t        j                  t        j                  d«       t        t        d«      r/|j                  t        j                  t        j                  d«       |j                  dt        f«       | j                  d„ |¬«      ƒ d{  –—† \  Š}t        j                  t        j                  t        j                  «      }|j                  t        j                  t        j                  d«       t        t        d«      r/|j                  t        j                  t        j                  d«       |j                  t        j                  t        j                  t        j                  t         «      dz   «       t"        j$                  dk(  r|j                  dt        f«       n|j                  t         t        f«       | j                  ˆfd	„|¬«      ƒ d{  –—† \  }}|S 7 �ŒZ7 Œ­w)
z
    Using a single socket works fine on Linux, but on OS X we need to use
    separate sockets for sending and receiving.
    é   ÚSO_REUSEPORTr   c                  ó*   — t        j                  «       S r   )r   ÚDatagramProtocolr   r   r   ú<lambda>z&create_mdns_protocol.<locals>.<lambda>¥   s   € ”×(Ñ(Ó*€ r   )ÚsockNs       Úwin32c                  ó   •— t        ‰ ¬«      S )N©r   )r   r‚   s   €r   r~   z&create_mdns_protocol.<locals>.<lambda>º   s   ø€ ”¨,Ô7€ r   )r   Úget_event_looprT   rV   Ú
SOCK_DGRAMÚ
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRÚhasattrr{   ÚbindrP   Úcreate_datagram_endpointÚ
IPPROTO_IPÚIP_ADD_MEMBERSHIPÚ	inet_atonrO   ÚsysÚplatform)ÚloopÚtx_sockÚ_Úrx_sockÚprotocolr   s        @r   Úcreate_mdns_protocolr•   •   s¨  øè ø€ ô
 ×!Ñ!Ó#€Dô �m‰mœFŸN™N¬F×,=Ñ,=Ó>€GØ×Ñ”v×(Ñ(¬&×*=Ñ*=¸qÔAÜŒv�~Ô&Ø×Ñœ6×,Ñ,¬f×.AÑ.AÀ1ÔEØ‡L�L�"”i�Ô!à ×9Ñ9Ù*Øð :ó ÷ �O€L�!ô �m‰mœFŸN™N¬F×,=Ñ,=Ó>€GØ×Ñ”v×(Ñ(¬&×*=Ñ*=¸qÔAÜŒv�~Ô&Ø×Ñœ6×,Ñ,¬f×.AÑ.AÀ1ÔEØ×ÑÜ×ÑÜ× Ñ Ü×ÑœÓ&Ð)<Ñ<ôô
 ‡|�|�wÒØ�‰�bœ)�_Õ%à�‰”l¤IÐ.Ô/à×5Ñ5Û7Øð 6ó ÷ �K€A€xð
 €Oð5ùð*ús%   ƒC#IÃ&I Ã'EIÈ6IÈ7
IÉI)!r   ÚrerT   rŽ   r	   Útypingr   r   r   Údns.exceptionr   Ú	dns.flagsÚdns.messageÚdns.nameÚ	dns.rdataÚdns.rdataclassÚdns.rdatasetÚdns.rdatatypeÚdns.zonerO   rP   Úcompiler   Ú
rdataclassÚINr"   r   r   Úboolr   r}   r   r•   r   r   r   ú<module>r¥      s¥   ðÛ Û 	Û Û 
Û ß (Ñ (ã Û Û Û Û Û Û Û Û à€Ø€	Ø�2—:‘:Ð<Ó=Ð à�~‰~× Ñ  6Ñ)€ð(˜có (ð4˜3ð 4 4ó 4ôq+�7×+Ñ+ô q+ðh) Lô )r   