ó
    0/¡jO+  ã                   ó  • 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
rS SKrS SKrS SKrS SKrSrSr\S-  r " S S\5      r " S S	5      r " S
 S5      r " S S5      r " S S\5      r " S S5      r " S S\5      rg)é    N)ÚAnyi   é   é   c                   ó   • \ rS rSrSrg)ÚUnexpectedEOFé   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r	   ó    Úi/var/www/html/health-monitoring.indevconsultancy.in/venv/lib/python3.13/site-packages/dns/quic/_common.pyr   r      s   † Úr   r   c                   ó8   • \ rS rSrS rS rS rS rS rS r	Sr
g	)
ÚBufferé   c                 ó    • SU l         SU l        g )Nr   F©Ú_bufferÚ	_seen_end©Úselfs    r   Ú__init__ÚBuffer.__init__   s   € ØˆŒØˆ�r   c                 óp   • U R                   (       a  g U =R                  U-  sl        U(       a  SU l         g g )NT)r   r   ©r   ÚdataÚis_ends      r   ÚputÚ
Buffer.put#   s)   € Ø�>�>ØØ�Š˜Ñ�ÞØ!ˆD�Nð r   c                 óf   • [        U R                  5      U:¼  a  gU R                  (       a  [        eg)NTF)Úlenr   r   r   )r   Úamounts     r   ÚhaveÚBuffer.have*   s&   € Üˆt�|‰|Ó Ó&ØØ�>�>ÜÐØr   c                 ó   • U R                   $ ©N)r   r   s    r   Úseen_endÚBuffer.seen_end1   ó   € Ø�~‰~Ðr   c                 ó|   • U R                  U5      (       d   eU R                  S U nU R                  US  U l        U$ r(   )r%   r   )r   r$   r   s      r   ÚgetÚ
Buffer.get4   s>   € Ø�y‰y˜× Ñ Ð Ð Ø�|‰|˜G˜VÐ$ˆØ—|‘| F GÐ,ˆŒØˆr   c                 óZ   • U R                  5       (       d   eU R                  nSU l        U$ )Nr   )r)   r   )r   r   s     r   Úget_allÚBuffer.get_all:   s'   € Ø�}‰}�‰ÐˆØ�|‰|ˆØˆŒØˆr   r   N)r
   r   r   r   r   r    r%   r)   r-   r0   r   r	   r   r   r   r      s    † òò"òòòõr   r   c                   óT   • \ rS rSrS rS rS rS rS rS r	SS jr
S	 rS
 rS rSrg)ÚBaseQuicStreaméA   c                 ód   • Xl         X l        [        5       U l        SU l        S U l        S U l        g ©Nr   )Ú_connectionÚ
_stream_idr   r   Ú
_expectingÚ_headersÚ	_trailers)r   Ú
connectionÚ	stream_ids      r   r   ÚBaseQuicStream.__init__B   s+   € Ø%ÔØ#ŒÜ“xˆŒØˆŒØˆŒØˆ�r   c                 ó   • U R                   $ r(   )r8   r   s    r   ÚidÚBaseQuicStream.idJ   s   € Ø�‰Ðr   c                 ó   • U R                   $ r(   )r:   r   s    r   ÚheadersÚBaseQuicStream.headersM   s   € Ø�}‰}Ðr   c                 ó   • U R                   $ r(   )r;   r   s    r   ÚtrailersÚBaseQuicStream.trailersP   r+   r   c                 óD   • Ub  [         R                   " 5       U-   nU$ S nU$ r(   )Útime)r   ÚtimeoutÚ
expirations      r   Ú_expiration_from_timeoutÚ'BaseQuicStream._expiration_from_timeoutS   s-   € ØÑÜŸš› wÑ.ˆJð Ðð ˆJØÐr   c                 óX   • Ub$  [        U[        R                  " 5       -
  S5      nU$ S nU$ )Ng        )ÚmaxrI   )r   rK   rJ   s      r   Ú_timeout_from_expirationÚ'BaseQuicStream._timeout_from_expirationZ   s2   € ØÑ!Ü˜*¤t§y¢y£{Ñ2°CÓ8ˆGð ˆð ˆGØˆr   c           	      óâ  • U R                   R                  5       (       d  [        S5      e[        R                  R                  U5      nUR                  R                  5       nU(       a  SnO-SnUS[        R                  " U5      R                  S5      -   -  nSU4SUR                  R                  5       4SUR                  R                  5       4S	U4S
/nU(       a5  UR                  SS[        [        U5      5      R                  5       4/5        U R                   R!                  U R"                  Xs(       + 5        U(       a(  U R                   R%                  U R"                  US5        g g )Nz%cannot send H3 to a non-H3 connections   POSTs   GETs   ?dns=ó   =s   :methods   :schemes
   :authoritys   :path)s   acceptó   application/dns-message)s   content-typerT   s   content-lengthT)r7   Úis_h3ÚSyntaxErrorÚurllibÚparseÚurlparseÚpathÚencodeÚbase64Úurlsafe_b64encodeÚrstripÚschemeÚnetlocÚextendÚstrr#   Úsend_headersr8   Ú	send_data)r   ÚurlÚdatagramÚpostÚ	url_partsrZ   ÚmethodrC   s           r   Úsend_h3ÚBaseQuicStream.send_h3g   s8  € Ø×Ñ×%Ñ%×'Ñ'ÜÐEÓFÐFÜ—L‘L×)Ñ)¨#Ó.ˆ	Ø�~‰~×$Ñ$Ó&ˆÞØ‰FàˆFØ�Hœv×7Ò7¸ÓA×HÑHÈÓNÑNÑNˆDà˜Ð Ø˜×)Ñ)×0Ñ0Ó2Ð3Ø˜I×,Ñ,×3Ñ3Ó5Ð6Ø�tÐØ3ð
ˆö Ø�N‰NàAØ&¬¬C°«MÓ(:×(AÑ(AÓ(CÐDðôð 	×Ñ×%Ñ% d§o¡o°wÄÔIÞØ×Ñ×&Ñ& t§¡¸À$ÕGð r   c                 óŽ   • U R                   R                  5       (       a  U$ [        U5      n[        R                  " SU5      U-   $ )Nz!H)r7   rU   r#   ÚstructÚpack)r   rf   Úls      r   Ú_encapsulateÚBaseQuicStream._encapsulateƒ   s;   € Ø×Ñ×!Ñ!×#Ñ#ØˆOÜ�‹MˆÜ�{Š{˜4 Ó# hÑ.Ð.r   c                 ó
  • U R                   R                  X5         U R                  S:„  =(       a%    U R                   R                  U R                  5      =(       d    U R                   R                  $ ! [
         a     gf = f)Nr   T)r   r    r9   r%   r)   r   r   s      r   Ú_common_add_inputÚ BaseQuicStream._common_add_input‰   sh   € Ø�‰×Ñ˜Ô&ð	à—‘ !Ñ#×J¨¯©×(9Ñ(9¸$¿/¹/Ó(J÷'à—‘×&Ñ&ð'øô ó 	Ùð	ús   �AA5 Á5
BÂBc                 ó†   • U R                   R                  U R                  5        U R                  R	                  SS5        g )Nr   T)r7   Úclose_streamr8   r   r    r   s    r   Ú_closeÚBaseQuicStream._close’   s.   € Ø×Ñ×%Ñ% d§o¡oÔ6Ø�‰×Ñ˜˜dÕ#r   )r   r7   r9   r:   r8   r;   N©T)r
   r   r   r   r   r@   rC   rF   rL   rP   rj   rp   rs   rw   r   r	   r   r   r3   r3   A   s5   † òòòòòòôHò8/òõ$r   r3   c                   óT   • \ rS rSr   SS jrS rS rSS jrSS jrSS jr	S	 r
S
rg)ÚBaseQuicConnectioné—   Nc                 ó^  • SU l         Xl        X l        X0l        SU l        X`l        0 U l        UbE  UR                  5       (       a0  [        R                  R                  R                  US5      U l        OS U l        [        R                  R                  U5      U l        [        R                  R#                  X#45      U l        UcN  US:w  aH  U R                   [&        R(                  :X  a  SnO'U R                   [&        R*                  :X  a  SnO[,        eU(       a	  XE4U l        g S U l        g )NFr   z0.0.0.0z::)Ú_doner7   Ú_addressÚ_portÚ_closedÚ_managerÚ_streamsrU   ÚaioquicÚh3r<   ÚH3ConnectionÚ_h3_connÚdnsÚinetÚaf_for_addressÚ_afÚlow_level_address_tupleÚ_peerÚsocketÚAF_INETÚAF_INET6ÚNotImplementedErrorÚ_source)r   r<   ÚaddressÚportÚsourceÚsource_portÚmanagers          r   r   ÚBaseQuicConnection.__init__˜   sá   € ð ˆŒ
Ø%ÔØŒØŒ
ØˆŒØŒØˆŒØÑ 7§=¡=§?¡?Ü#ŸJ™J×1Ñ1×>Ñ>¸zÈ5ÓQˆD�Mà ˆDŒMÜ—8‘8×*Ñ*¨7Ó3ˆŒÜ—X‘X×5Ñ5°w°oÓFˆŒ
Ø‰>˜k¨QÓ.Ø�x‰xœ6Ÿ>™>Ó)Ø"‘Ø—‘œVŸ_™_Ó,Ø‘ä)Ð)ÞØ"Ð0ˆD�LàˆD�Lr   c                 ó   • U R                   S L$ r(   )r‡   r   s    r   rU   ÚBaseQuicConnection.is_h3º   s   € Ø�}‰} DÐ(Ð(r   c                 ó   • U R                   U	 g r(   )rƒ   )r   r=   s     r   rv   ÚBaseQuicConnection.close_stream½   s   € Ø�M‰M˜)Ñ$r   c                 óZ   • U R                   c   eU R                   R                  XU5        g r(   )r‡   rc   )r   r=   rC   r   s       r   rc   ÚBaseQuicConnection.send_headersÀ   s&   € Ø�}‰}Ñ(Ð(Ð(Ø�‰×"Ñ" 9°vÕ>r   c                 óZ   • U R                   c   eU R                   R                  XU5        g r(   )r‡   rd   )r   r=   r   r   s       r   rd   ÚBaseQuicConnection.send_dataÄ   s&   € Ø�}‰}Ñ(Ð(Ð(Ø�‰×Ñ 	°Õ8r   c                 óÚ   • [         R                   " 5       nU R                  R                  5       nUc  US-   n[        X2-
  S5      nU R                  (       a  U(       a  [        US5      nX44$ )Ni  r   gš™™™™™©?)rI   r7   Ú	get_timerrO   r�   Úmin)r   Úclosed_is_specialÚnowrK   Úintervals        r   Ú_get_timer_valuesÚ$BaseQuicConnection._get_timer_valuesÈ   s`   € Ü�iŠi‹kˆØ×%Ñ%×/Ñ/Ó1ˆ
ØÑØ˜t™ˆJÜ�zÑ'¨Ó+ˆØ�<�<Ö-ô ˜8 TÓ*ˆHØÐ%Ð%r   c                 óp   • [         R                   " 5       nX::  a  U R                  R                  U5        g g r(   )rI   r7   Úhandle_timer)r   rK   r¥   s      r   Ú_handle_timerÚ BaseQuicConnection._handle_timerÕ   s,   € Ü�iŠi‹kˆØÓØ×Ñ×)Ñ)¨#Õ.ð r   )r   r‹   r�   r7   r~   r‡   r‚   r�   r€   r’   rƒ   )Nr   N)Fry   )r
   r   r   r   r   rU   rv   rc   rd   r§   r«   r   r	   r   r   r{   r{   —   s1   † ð ØØô  òD)ò%ô?ô9ô&õ/r   r{   c                   ó0   • \ rS rSrSS\S-  S\4S jjrSrg)ÚAsyncQuicConnectionéÛ   NrJ   Úreturnc              ƒ   ó   #   • g 7fr(   r	   )r   rJ   s     r   Úmake_streamÚAsyncQuicConnection.make_streamÜ   s   é € Øùs   ‚r	   r(   )r
   r   r   r   Úfloatr   r²   r   r	   r   r   r®   r®   Û   s   † ñ¨°©ð À÷ ð r   r®   c                   óL   • \ rS rSr S
S jr     SS jrS rS rS rS r	S	r
g)ÚBaseQuicManageréà   Nc                 ód  • 0 U l         X0l        0 U l        0 U l        XPl        Uc†  S n[        U[        5      (       a  UnSnU(       a  S/nOSS/n[        R                  R                  R                  UUUS9nUb0  [        R                  R                  U5      u  p‰UR                  X‰S9  Xl        g )NTr…   Údoqzdoq-i03)Úalpn_protocolsÚverify_modeÚserver_name)ÚcafileÚcapath)Ú_connectionsÚ_connection_factoryÚ_session_ticketsÚ_tokensÚ_h3Ú
isinstancerb   r„   ÚquicÚconfigurationÚQuicConfigurationrˆ   Ú	_tls_utilÚ#convert_verify_to_cafile_and_capathÚload_verify_locationsÚ_conf)
r   Úconfr»   Úconnection_factoryr¼   r…   Úverify_pathrº   r½   r¾   s
             r   r   ÚBaseQuicManager.__init__á   s½   € ð ˆÔØ#5Ô Ø "ˆÔØˆŒØŒØ‰<ØˆKÜ˜+¤s×+Ñ+Ø)�Ø"�ÞØ"& ‘à"'¨Ð!3�Ü—<‘<×-Ñ-×?Ñ?Ø-Ø'Ø'ð @ð ˆDð
 Ñ&Ü!$§¡×!RÑ!RØó"‘�ð ×*Ñ*°&Ð*ÑHØ�
r   c                 óZ  • U R                   R                  X45      nUb  US4$ U R                  nU(       a[   U R                  R	                  X45      n	[
        R
                  " U5      nX˜l        [        R                  " U R                  X5      n
OS n
U(       a[   U R                  R	                  X45      n[
        R
                  " U5      nX¸l        [        R                  " U R                  X5      nOS n[        R                  R                   R#                  UU
US9n[$        R&                  R)                  X45      nUR+                  U[,        R,                  " 5       5        U R/                  XÑX#X@5      nXpR                   X4'   US4$ ! [         a     GN)f = f! [         a     NÕf = f)NF)rÆ   Úsession_ticket_handlerÚtoken_handlerT)r¿   r-   rË   rÁ   ÚpopÚcopyÚsession_ticketÚKeyErrorÚ	functoolsÚpartialÚsave_session_ticketrÂ   ÚtokenÚ
save_tokenr„   rÅ   r<   ÚQuicConnectionrˆ   r‰   rŒ   ÚconnectrI   rÀ   )r   r“   r”   r•   r–   Úwant_session_ticketÚ
want_tokenr<   rÌ   rÕ   rÑ   rÚ   rÒ   ÚqconnÚ	lladdresss                  r   Ú_connectÚBaseQuicManager._connectþ   sŒ  € ð ×&Ñ&×*Ñ*¨G¨?Ó;ˆ
ØÑ!Ø Ð&Ð&Ø�z‰zˆÞðØ!%×!6Ñ!6×!:Ñ!:¸G¸?Ó!K�ä—y’y “�Ø&4Ô#ô &/×%6Ò%6Ø×(Ñ(¨'ó&Ñ"ð &*Ð"ÞðØŸ™×(Ñ(¨'¨Ó9�ä—y’y “�Ø"”
ô
 &×-Ò-¨d¯o©o¸wÓM‰Mà ˆMä—‘×'Ñ'×6Ñ6ØØ#9Ø'ð 7ð 
ˆô
 —H‘H×4Ñ4°g°_ÓEˆ	Ø�‰�i¤§¢£Ô-Ø×-Ñ-Ø˜D¨+ó
ˆ
ð .8×Ñ˜7˜/Ñ*Ø˜DÐ!Ð!øôG ó âðûô  ó áðús#   ¸8F Â8F Æ
FÆFÆ
F*Æ)F*c                 óB   •  U R                   X4	 g ! [         a     g f = fr(   )r¿   rÖ   )r   r“   r”   s      r   ÚclosedÚBaseQuicManager.closed6  s)   € ð	Ø×!Ñ! 7 /Ñ2øÜó 	Ùð	ús   ‚ ‘
�c                 ó   • U R                   $ r(   )rÃ   r   s    r   rU   ÚBaseQuicManager.is_h3<  s   € Ø�x‰xˆr   c                 óà   • [        U R                  5      nU[        :¼  a@  [        U R                  R	                  5       5      S[
         nU H  nU R                  U	 M     X0R                  X4'   g r6   )r#   rÁ   ÚMAX_SESSION_TICKETSÚlistÚkeysÚSESSIONS_TO_DELETE)r   r“   r”   Úticketro   Úkeys_to_deleteÚkeys          r   rÙ   Ú#BaseQuicManager.save_session_ticket?  sf   € ô �×%Ñ%Ó&ˆØÔ#Ó#Ü! $×"7Ñ"7×"<Ñ"<Ó">Ó?ÀÔBTÐUˆNÛ%�Ø×)Ñ)¨#Ò.ñ &à17×Ñ˜w˜oÒ.r   c                 óà   • [        U R                  5      nU[        :¼  a@  [        U R                  R	                  5       5      S[
         nU H  nU R                  U	 M     X0R                  X4'   g r6   )r#   rÂ   rê   rë   rì   rí   )r   r“   r”   rÚ   ro   rï   rð   s          r   rÛ   ÚBaseQuicManager.save_tokenJ  s^   € ô �—‘ÓˆØÔ#Ó#Ü! $§,¡,×"3Ñ"3Ó"5Ó6°qÔ9KÐLˆNÛ%�Ø—L‘L Ò%ñ &à(-�‰�g�_Ò%r   )rË   rÀ   r¿   rÃ   rÁ   rÂ   )NF)éU  Nr   TT)r
   r   r   r   r   râ   rå   rU   rÙ   rÛ   r   r	   r   r   r¶   r¶   à   s6   † àJOôð@ ØØØ Øô6"òpòò	8õ	.r   r¶   c                   ó   • \ rS rSrSS jrSrg)ÚAsyncQuicManageriV  Nc                 ó   • [         er(   )r‘   )r   r“   r”   r•   r–   s        r   rÝ   ÚAsyncQuicManager.connectW  s   € Ü!Ð!r   r	   )rô   Nr   )r
   r   r   r   rÝ   r   r	   r   r   rö   rö   V  s   † ÷"r   rö   )r\   rÔ   r×   rŽ   rm   rI   Úurllib.parserW   Útypingr   Úaioquic.h3.connectionr„   Úaioquic.quic.configurationÚaioquic.quic.connectionÚdns._tls_utilrˆ   Údns.inetÚQUIC_MAX_DATAGRAMrê   rí   Ú	Exceptionr   r   r3   r{   r®   r¶   rö   r	   r   r   Ú<module>r     sž   ðó Û Û Û Û Û Û Ý ã Û !Û ã Û àÐ ØÐ ð )¨AÑ-Ð ô	�Iô 	÷ ñ  ÷FS$ñ S$÷lA/ñ A/ôHÐ,ô ÷
s.ñ s.ôl"�õ "r   