ó
    0/¡jì$  ã                   óÎ   • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	rS SK
r
S SKrS SKrS SKJr  S SKJrJrJrJrJr   " S S\5      r " S S\5      r " S S	\5      rg)
é    N)ÚNullContext)ÚQUIC_MAX_DATAGRAMÚAsyncQuicConnectionÚAsyncQuicManagerÚBaseQuicStreamÚUnexpectedEOFc                   ó`   ^ • \ rS rSrU 4S jrS rS rSS jrSS jrS r	S r
S	 rS
 rSrU =r$ )ÚTrioQuicStreamé   c                 óX   >• [         TU ]  X5        [        R                  " 5       U l        g ©N)ÚsuperÚ__init__ÚtrioÚ	ConditionÚ_wake_up)ÚselfÚ
connectionÚ	stream_idÚ	__class__s      €Úg/var/www/html/health-monitoring.indevconsultancy.in/venv/lib/python3.13/site-packages/dns/quic/_trio.pyr   ÚTrioQuicStream.__init__   s   ø€ Ü‰Ñ˜Ô/ÜŸšÓ(ˆ�ó    c              ƒ   ó:  #   •  U R                   R                  U5      (       a  g Xl        U R                   IS h  v•N   U R                  R	                  5       I S h  v•N   S S S 5      IS h  v•N   SU l        Mw   N? N N! , IS h  v•N  (       d  f       N&= f7f)Nr   )Ú_bufferÚhaveÚ
_expectingr   Úwait)r   Úamounts     r   Úwait_forÚTrioQuicStream.wait_for    sj   é € ØØ�|‰|× Ñ  ×(Ñ(ØØ$ŒOØ—}—}“}Ø—m‘m×(Ñ(Ó*×*Ð*÷ %—}àˆDŒOñ ñ %Ù*÷ %—}—}�}üsV   ‚9B»A;¼B¿BÁA=ÁBÁ"BÁ-A?Á.BÁ=BÁ?BÂBÂB
ÂBÂBc              ƒ   ó  #   •  U R                   R                  5       (       a  g U R                   IS h  v•N   U R                  R                  5       I S h  v•N   S S S 5      IS h  v•N   Mi   N8 N N
! , IS h  v•N  (       d  f       N= f7fr   )r   Úseen_endr   r   ©r   s    r   Úwait_for_endÚTrioQuicStream.wait_for_end)   s\   é € ØØ�|‰|×$Ñ$×&Ñ&ØØ—}—}“}Ø—m‘m×(Ñ(Ó*×*Ð*÷ %—}ñ ñ %Ù*÷ %—}—}�}üsV   ‚2B´A-µB¸A3ÁA/ÁA3ÁBÁ&A1Á'BÁ/A3Á1BÁ3B
Á9A<Á:B
ÂBc              ƒ   ó~  #   • Uc  [        S 5      nO[        R                  " U5      nU   U R                  R	                  5       (       a;  U R                  5       I S h  v•N   U R                  R                  5       sS S S 5        $ U R                  S5      I S h  v•N   [        R                  " SU R                  R                  S5      5      u  nU R                  U5      I S h  v•N   U R                  R                  U5      sS S S 5        $  N¯ Nu N,! , (       d  f       [        R                  R                  e= f7f)Né   z!H)r   r   Úmove_on_afterÚ_connectionÚis_h3r%   r   Úget_allr    ÚstructÚunpackÚgetÚdnsÚ	exceptionÚTimeout)r   ÚtimeoutÚcontextÚsizes       r   ÚreceiveÚTrioQuicStream.receive0   sé   é € Ø‰?Ü! $Ó'‰Gä×(Ò(¨Ó1ˆGÚØ×Ñ×%Ñ%×'Ñ'Ø×'Ñ'Ó)×)Ð)Ø—|‘|×+Ñ+Ó-÷ ‰Wð
 —m‘m AÓ&×&Ð&Ü Ÿ-š-¨¨d¯l©l×.>Ñ.>¸qÓ.AÓB‘�Ø—m‘m DÓ)×)Ð)Ø—|‘|×'Ñ'¨Ó-÷ ‰Wá)ñ 'á)÷ ŒWô �m‰m×#Ñ#Ð#üs_   ‚(D=ª3DÁDÁDÁ;
D=ÂDÂDÂA
DÃ$DÃ%DÄ
D=ÄDÄDÄDÄ
D:Ä D=c              ƒ   óŽ   #   • U R                  U5      nU R                  R                  U R                  X25      I S h  v•N   g  N7fr   )Ú_encapsulater*   ÚwriteÚ
_stream_id)r   ÚdatagramÚis_endÚdatas       r   ÚsendÚTrioQuicStream.send@   s5   é € Ø× Ñ  Ó*ˆØ×Ñ×$Ñ$ T§_¡_°dÓC×CÓCùs   ‚;A½A¾Ac              ƒ   óô   #   • U R                  X5      (       a@  U R                   IS h  v•N   U R                  R                  5         S S S 5      IS h  v•N   g g  N0 N! , IS h  v•N  (       d  f       g = f7fr   )Ú_common_add_inputr   Únotify)r   r>   r=   s      r   Ú
_add_inputÚTrioQuicStream._add_inputD   sF   é € Ø×!Ñ! $×/Ñ/Ø—}—}“}Ø—‘×$Ñ$Ô&÷ %—}�}ð 0ß$—}—}’}üsD   ‚'A8©AªA8­AÁA8ÁAÁA8ÁA8ÁA5Á$A'Á%A5Á1A8c              ƒ   ó,   #   • U R                  5         g 7fr   )Ú_closer$   s    r   ÚcloseÚTrioQuicStream.closeI   s   é € Ø�‰�ùs   ‚c              ƒ   ó   #   • U $ 7fr   © r$   s    r   Ú
__aenter__ÚTrioQuicStream.__aenter__N   ó
   é € Øˆùó   ‚c              ƒ   óú   #   • U R                  5       I S h  v•N   U R                   IS h  v•N   U R                  R                  5         S S S 5      IS h  v•N   g ND N1 N	! , IS h  v•N  (       d  f       g= f7f©NF)rH   r   rC   )r   Úexc_typeÚexc_valÚexc_tbs       r   Ú	__aexit__ÚTrioQuicStream.__aexit__Q   sH   é € Ø�j‰j‹l×ÐØ—=—=“=Ø�M‰M× Ñ Ô"÷ !—=àñ 	ß —=—=‘=àüsT   ‚A;–A—A;«A¬A;¯A!Á
A;ÁAÁA;ÁA;ÁA;Á!A8Á'A*Á(A8Á4A;)r   r   r   ©F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r    r%   r6   r?   rD   rH   rL   rU   Ú__static_attributes__Ú__classcell__©r   s   @r   r
   r
      s6   ø† õ)ò ò+ô$ô Dò'ò
ò
÷ð r   r
   c                   óX   ^ • \ rS rSrS
U 4S jjrS rS rSS jrS rS
S jr	S r
S	rU =r$ )ÚTrioQuicConnectionéX   c                 ó(  >• [         TU ]  XX4XV5        [        R                  R                  U R                  [        R
                  S5      U l        [        R                  " 5       U l        [        R                  " 5       U l	        S U l
        SU l        g )Nr   F)r   r   r   ÚsocketÚ_afÚ
SOCK_DGRAMÚ_socketÚEventÚ_handshake_completeÚ	_run_doneÚ_worker_scopeÚ_send_pending)r   r   ÚaddressÚportÚsourceÚsource_portÚmanagerr   s          €r   r   ÚTrioQuicConnection.__init__Y   sc   ø€ Ü‰Ñ˜¨d¸KÔQÜ—{‘{×)Ñ)¨$¯(©(´F×4EÑ4EÀqÓIˆŒÜ#'§:¢:£<ˆÔ ÜŸš›ˆŒØ!ˆÔØ"ˆÕr   c              ƒ   óT  #   •  U R                   (       aU  U R                  R                  [        R                  R                  U R                   U R                  5      5      I S h  v•N   U R                  R                  U R                  5      I S h  v•N   U R                  (       Gde  U R                  S5      u  pU R                  (       a  Sn[        R                  " [        R                  " 5       U-   S9 U l        U R                  R!                  ["        5      I S h  v•N nU R$                  R'                  X0R                  [(        R(                  " 5       5        S S S 5        S U l        U R+                  U5        U R-                  5       I S h  v•N   SU l        U R$                  R/                  [(        R(                  " 5       5      nU H(  u  p5U R                  R1                  U5      I S h  v•N   M*     U R                  (       d  GMe  SU l	        U R                  R3                  5         U R4                  R7                  5         g  GNå GN» GN/! , (       d  f       Nú= f NÑ Nt! SU l	        U R                  R3                  5         U R4                  R7                  5         f = f7f)NFg        )ÚdeadlineT)Ú_sourcerf   Úbindr0   ÚinetÚlow_level_address_tuplerd   ÚconnectÚ_peerÚ_doneÚ_get_timer_valuesrk   r   ÚCancelScopeÚcurrent_timerj   Úrecvr   r*   Úreceive_datagramÚtimeÚ_handle_timerÚ_handle_eventsÚdatagrams_to_sendr?   rH   rh   Úset)r   Ú
expirationÚintervalr<   Ú	datagramsÚ_s         r   Ú_workerÚTrioQuicConnection._workera   sï  é € ð"	+Ø�|�|Ø—l‘l×'Ñ'Ü—H‘H×4Ñ4°T·\±\À4Ç8Á8ÓLó÷ ð ð —,‘,×&Ñ& t§z¡zÓ2×2Ð2Ø—j—j�jØ)-×)?Ñ)?ÀÓ)FÑ&�Ø×%×%ð  #�HÜ×%Ò%Ü!×.Ò.Ó0°8Ñ;òàÔ'Ø%)§\¡\×%6Ñ%6Ô7HÓ%I×I�HØ×$Ñ$×5Ñ5°hÇ
Á
ÌDÏIÊIËKÔX÷	ð
 &*�Ô"Ø×"Ñ" :Ô.Ø×)Ñ)Ó+×+Ð+ð &+�Ô"Ø ×,Ñ,×>Ñ>¼t¿yºy»{ÓK�	Û#,‘K�HØŸ,™,×+Ñ+¨HÓ5×5Ò5ñ $-ð/ —j—j’jð4 ˆDŒJØ�L‰L×ÑÔ Ø×$Ñ$×(Ñ(Õ*òAò 3ò  J÷õ úñ ,ñ 6øàˆDŒJØ�L‰L×ÑÔ Ø×$Ñ$×(Ñ(Õ*üs‹   ‚J(„A!I( Á%I
Á&,I( ÂIÂA&I( Ã9(IÄ!IÄ"=IÅ3I( ÆI$ÆAI( Ç1I&Ç2I( È<J(É
I( ÉI( ÉIÉ
I!ÉI( É&I( É(=J%Ê%J(c              ƒ   ót  #   • Sn U R                   R                  5       nUc  g [        U[        R                  R
                  R                  5      (       Ga	  U R                  5       (       Ga—  U R                  c   eU R                  R                  U5      nU GHd  n[        U[        R                  R
                  R                  5      (       aš  U R                  R                  UR                  5      nU(       al  UR                  c  UR                   Ul        OUR"                  c  UR                   Ul        UR$                  (       a  UR'                  SS5      I S h  v•N   MÍ  MÏ  MÑ  [        U[        R                  R
                  R(                  5      (       d  GM  U R                  R                  UR                  5      nU(       d  GM6  UR'                  UR*                  UR$                  5      I S h  v•N   GMg     GOxU R                  R                  UR                  5      nU(       a.  UR'                  UR*                  UR,                  5      I S h  v•N   GO[        U[        R                  R
                  R.                  5      (       a  U R0                  R3                  5         OÎ[        U[        R                  R
                  R4                  5      (       a"  SU l        U R8                  R;                  5         Oy[        U[        R                  R
                  R<                  5      (       aF  U R                  R                  UR                  5      nU(       a  UR'                  SS5      I S h  v•N   US-  nUS:”  a   Sn[>        R@                  " S5      I S h  v•N   GM¥   GNK GNµ GNW N; N7f)Nr   Tr   é   é
   )!r*   Ú
next_eventÚ
isinstanceÚaioquicÚquicÚeventsÚStreamDataReceivedr+   Ú_h3_connÚhandle_eventÚh3ÚHeadersReceivedÚ_streamsr/   r   Ú_headersÚheadersÚ	_trailersÚstream_endedrD   ÚDataReceivedr>   Ú
end_streamÚHandshakeCompletedrh   r„   ÚConnectionTerminatedrz   rf   rH   ÚStreamResetr   Úsleep)r   ÚcountÚeventÚ	h3_eventsÚh3_eventÚstreams         r   r‚   Ú!TrioQuicConnection._handle_events†   sª  é € ØˆØØ×$Ñ$×/Ñ/Ó1ˆEØ‰}ØÜ˜%¤§¡×!4Ñ!4×!GÑ!G×HÒHØ—:‘:—<’<ØŸ=™=Ñ4Ð4Ð4Ø $§¡× :Ñ :¸5Ó A�IÜ$-˜Ü% h´·
±
×0AÑ0A×0QÑ0Q×RÑRØ%)§]¡]×%6Ñ%6°u·±Ó%G˜FÞ%Ø#)§?¡?Ñ#:Ø6>×6FÑ6F F¥OØ%+×%5Ñ%5Ñ%=Ø7?×7GÑ7G FÔ$4Ø#+×#8×#8Ø*0×*;Ñ*;¸CÀÓ*F×$FÒ$Fñ $9ñ  &ô (¨´'·*±*×2CÑ2C×2PÑ2P×QÔQØ%)§]¡]×%6Ñ%6°u·±Ó%G˜Fß%™vØ&,×&7Ñ&7Ø$,§M¡M°8×3HÑ3Hó'"÷ !"ó !"ó %.ð" "Ÿ]™]×.Ñ.¨u¯©Ó?�FÞØ$×/Ñ/°·
±
¸E×<LÑ<LÓM×MÐMùÜ˜E¤7§<¡<×#6Ñ#6×#IÑ#I×JÑJØ×(Ñ(×,Ñ,Õ.Ü˜E¤7§<¡<×#6Ñ#6×#KÑ#K×LÑLØ!�”
Ø—‘×"Ñ"Õ$Ü˜E¤7§<¡<×#6Ñ#6×#BÑ#B×CÑCØŸ™×*Ñ*¨5¯?©?Ó;�ÞØ ×+Ñ+¨C°Ó6×6Ð6Ø�Q‰JˆEØ�r‹zà�Ü—j’j “m×#Ð#òS ò" %Gò!"ò Nñ 7ñ
 $ùsh   ‚EN8Å N+Å!;N8Æ!*N8Ç)N8Ç9N.Ç:A N8ÉN1ÉDN8Í8N4Í9*N8Î#N6Î$N8Î.N8Î1N8Î4N8Î6N8c              ƒ   ó¢   #   • U R                   R                  XU5        SU l        U R                  b  U R                  R	                  5         g g 7f)NT)r*   Úsend_stream_datark   rj   Úcancel)r   r§   r>   r=   s       r   r:   ÚTrioQuicConnection.write³   sF   é € Ø×Ñ×)Ñ)¨&¸Ô?Ø!ˆÔØ×ÑÑ)Ø×Ñ×%Ñ%Õ'ð *ùs   ‚AAc              ƒ   ó2  #   • U R                   (       a  g [        R                  " 5        IS h  v•N nUR                  U R                  5        S S S 5      IS h  v•N   U R
                  R                  5         g  NJ N!! , IS h  v•N  (       d  f       N6= f7fr   )Ú_closedr   Úopen_nurseryÚ
start_soonr‰   ri   r„   )r   Únurserys     r   ÚrunÚTrioQuicConnection.run¹   sX   é € Ø�<�<ØÜ×$Ò$×&Ô&¨'Ø×Ñ˜tŸ|™|Ô,÷ '×&à�‰×ÑÕ÷ '×&×&Ò&üsD   ‚,B®A9¯B²A=ÁBÁA;Á BÁ;BÁ=BÂBÂBÂBc              ƒ   ó¢  #   • Uc  [        S 5      nO[        R                  " U5      nU   U R                  R	                  5       I S h  v•N   U R
                  (       a  [        eU R                  R                  S5      n[        X5      nX@R                  U'   UsS S S 5        $  NZ! , (       d  f       [        R                  R                  e= f7frQ   )r   r   r)   rh   r   rz   r   r*   Úget_next_available_stream_idr
   r˜   r0   r1   r2   )r   r3   r4   r   r§   s        r   Úmake_streamÚTrioQuicConnection.make_streamÀ   sž   é € Ø‰?Ü! $Ó'‰Gä×(Ò(¨Ó1ˆGÚØ×*Ñ*×/Ñ/Ó1×1Ð1Ø�z�zÜ#Ð#Ø×(Ñ(×EÑEÀeÓLˆIÜ# DÓ4ˆFØ'-�M‰M˜)Ñ$Ø÷ ‰WÙ1÷ ŒWô �m‰m×#Ñ#Ð#üs/   ‚(CªB%ÁB#Á	AB%Â
CÂ#B%Â%
CÂ/ Cc              ƒ   óœ  #   • U R                   (       dµ  U R                  b6  U R                  R                  U R                  S   U R                  S   5        SU l         U R                  R                  5         SU l        U R                  b  U R                  R                  5         U R                  R                  5       I S h  v•N   g g  N7f)Nr   rŒ   T)r®   Ú_managerÚclosedry   r*   rH   rk   rj   r«   ri   r   r$   s    r   rH   ÚTrioQuicConnection.closeÏ   s™   é € Ø�|�|Ø�}‰}Ñ(Ø—‘×$Ñ$ T§Z¡Z°¡]°D·J±J¸q±MÔBØˆDŒLØ×Ñ×"Ñ"Ô$Ø!%ˆDÔØ×!Ñ!Ñ-Ø×"Ñ"×)Ñ)Ô+Ø—.‘.×%Ñ%Ó'×'Ñ'ð ñ (ùs   ‚CCÃC
ÃC)r®   rz   rh   ri   rk   rf   rj   r   rW   )rX   rY   rZ   r[   r   r‰   r‚   r:   r²   r¶   rH   r\   r]   r^   s   @r   r`   r`   X   s-   ø† ÷#ò#+òJ+$ôZ(òô$÷	(ð 	(r   r`   c                   ó`   ^ • \ rS rSrS\R
                  SS4U 4S jjr S	S jrS rS r	Sr
U =r$ )
ÚTrioQuicManageréÛ   NFc                 ó<   >• [         TU ]  X#[        XE5        Xl        g r   )r   r   r`   Ú_nursery)r   r±   ÚconfÚverify_modeÚserver_namer–   r   s         €r   r   ÚTrioQuicManager.__init__Ü   s   ø€ ô 	‰Ñ˜Ô,>ÀÔPØ�r   c                 óˆ   • U R                  XX4U5      u  pgU(       a%  U R                  R                  UR                  5        U$ r   )Ú_connectrÀ   r°   r²   )r   rl   rm   rn   ro   Úwant_session_ticketr   Ústarts           r   rx   ÚTrioQuicManager.connectç   s>   € ð #Ÿm™mØ˜6Ð0Có
Ñˆö Ø�M‰M×$Ñ$ Z§^¡^Ô4ØÐr   c              ƒ   ó   #   • U $ 7fr   rK   r$   s    r   rL   ÚTrioQuicManager.__aenter__ñ   rN   rO   c              ƒ   ó˜   #   • [        U R                  R                  5       5      nU H  nUR                  5       I S h  v•N   M     g N	7frQ   )ÚlistÚ_connectionsÚvaluesrH   )r   rR   rS   rT   Úconnectionsr   s         r   rU   ÚTrioQuicManager.__aexit__ô   sD   é € ô ˜4×,Ñ,×3Ñ3Ó5Ó6ˆÛ%ˆJØ×"Ñ"Ó$×$Ò$ñ &àñ %ùs   ‚<A
¾A¿
A
)rÀ   )iU  Nr   T)rX   rY   rZ   r[   ÚsslÚCERT_REQUIREDr   rx   rL   rU   r\   r]   r^   s   @r   r½   r½   Û   s7   ø† ð Ø×%Ñ%ØØ÷	 ð RVôò÷ð r   r½   )rc   rÒ   r-   r€   Úaioquic.h3.connectionr�   Úaioquic.h3.eventsÚaioquic.quic.configurationÚaioquic.quic.connectionÚaioquic.quic.eventsr   Údns.exceptionr0   Údns.inetÚdns._asyncbackendr   Údns.quic._commonr   r   r   r   r   r
   r`   r½   rK   r   r   Ú<module>rÝ      sb   ðó Û 
Û Û ã Û Û !Û Û Û ã Û Ý )÷õ ô:�^ô :ôz@(Ð,ô @(ôFÐ&õ r   