ó
    ÖÁ“iªd  ã                  óx  • S SK Jr  S SKrS SKJr  S SKJrJr  SSKJ	r	  SSK
JrJrJrJrJrJr  SSKJrJrJr  S	S
KJrJrJr  / SQrSr\" SS5       V s/ s H  n \" U 5      PM     sn r " S S\5      r          SS jr      SS jr " S S\5      r     SS jr! " S S\5      r"    SS jr#gs  sn f )é    )ÚannotationsN)ÚSequence)ÚAnyÚLiteralé   )Úframes)ÚDuplicateParameterÚInvalidParameterNameÚInvalidParameterValueÚNegotiationErrorÚPayloadTooBigÚProtocolError)Ú	BytesLikeÚExtensionNameÚExtensionParameteré   )ÚClientExtensionFactoryÚ	ExtensionÚServerExtensionFactory)ÚPerMessageDeflateÚClientPerMessageDeflateFactoryÚ enable_client_permessage_deflateÚServerPerMessageDeflateFactoryÚ enable_server_permessage_deflates     ÿÿé   é   c                  ó~   • \ rS rSrSr\" S5      r S           SS jjrSS jrSS.     SS jjr	SS	 jr
S
rg)r   é!   z!
Per-Message Deflate extension.

úpermessage-deflateNc                óÀ  • Uc  0 nUS;   d   eUS;   d   eSUs=::  a  S::  d   e   eSUs=::  a  S::  d   e   eSU;  d   eXl         X l        X0l        X@l        XPl        U R                   (       d$  [
        R                  " U R                  * S9U l        U R                  (       d2  [
        R                  " SSU R                  * 0U R                  D6U l	        SU l
        g)	z/
Configure the Per-Message Deflate extension.

N)FTr   é   Úwbits©r"   F© )Úremote_no_context_takeoverÚlocal_no_context_takeoverÚremote_max_window_bitsÚlocal_max_window_bitsÚcompress_settingsÚzlibÚdecompressobjÚdecoderÚcompressobjÚencoderÚdecode_cont_data)Úselfr%   r&   r'   r(   r)   s         Úe/home/mande/repo/quber/.venv/lib/python3.13/site-packages/websockets/extensions/permessage_deflate.pyÚ__init__ÚPerMessageDeflate.__init__)   sõ   € ð Ñ$Ø "Ðà)¨]Ó:Ð:Ð:Ø(¨MÓ9Ð9Ð9ØÐ*Õ0¨bÓ0Ð0Ñ0Ð0Ð0ØÐ)Õ/¨RÓ/Ð/Ñ/Ð/Ð/ØÐ/Ó/Ð/Ð/à*DÔ'Ø)BÔ&Ø&<Ô#Ø%:Ô"Ø!2Ôà×.×.Ü×-Ò-°T×5PÑ5PÐ4PÑQˆDŒLà×-×-Ü×+Ò+ñ Ø×1Ñ1Ð1ðà×(Ñ(ñˆDŒLð !&ˆÕó    c           	     óp   • SU R                    SU R                   SU R                   SU R                   S3	$ )Nz-PerMessageDeflate(remote_no_context_takeover=z, local_no_context_takeover=z, remote_max_window_bits=z, local_max_window_bits=Ú))r%   r&   r'   r(   ©r0   s    r1   Ú__repr__ÚPerMessageDeflate.__repr__S   sV   € ð*Ø*.×*IÑ*IÐ)Jð K)Ø)-×)GÑ)GÐ(Hð I&Ø&*×&AÑ&AÐ%Bð C%Ø%)×%?Ñ%?Ð$@Àð	Cð	
r4   )Úmax_sizec               óˆ  • UR                   [        R                  ;   a  U$ UR                   [        R                  L a,  U R                  (       d  U$ UR
                  (       a  SU l        O`UR                  (       d  U$ UR
                  (       d  SU l        U R                  (       a$  [        R                  " U R                  * S9U l        UR
                  (       a6  [        UR                  5      S:  a  [        UR                  5      [        -   nOUR                  nUc  SOUn U R                  R!                  X45      nU R                  R"                  (       a  Uc   e[%        SU5      eUR
                  (       a8  [        UR                  5      S:¼  a  U R                  R!                  [        5        UR
                  (       a  U R                  (       a  U ?[        R*                  " UR                   UUR
                  SUR,                  UR.                  5      $ ! [        R&                   a  n[)        S5      UeSnAff = f)z
Decode an incoming frame.

FTr#   iü  Nr   zdecompression failed)Úopcoder   ÚCTRL_OPCODESÚOP_CONTr/   ÚfinÚrsv1r%   r*   r+   r'   r,   ÚlenÚdataÚbytesÚ_EMPTY_UNCOMPRESSED_BLOCKÚ
decompressÚunconsumed_tailr   Úerrorr   ÚFrameÚrsv2Úrsv3)r0   Úframer:   rB   Ú
max_lengthÚexcs         r1   ÚdecodeÚPerMessageDeflate.decode\   s©  € ð �<‰<œ6×.Ñ.Ó.ØˆLð
 �<‰<œ6Ÿ>™>Ò)Ø×(×(Ø�Ø�y�yØ(-�Ô%øð —:—:Ø�Ø—9—9Ø(,�Ô%ð ×.×.Ü#×1Ò1¸×9TÑ9TÐ8TÑU�”ð �9�9œ˜UŸZ™Z›¨4Ó/ô ˜Ÿ™Ó$Ô'@Ñ@‰Dà—:‘:ˆDØ"Ñ*‘Q°ˆ
ð		AØ—<‘<×*Ñ*¨4Ó<ˆDØ�|‰|×+×+ØÑ+Ð+Ð+Ü# D¨(Ó3Ð3Ø�y�yœS §¡›_°Ó4à—‘×'Ñ'Ô(AÔBð
 �9�9˜×8×8Ø�ä�|Š|Ø�L‰LØØ�I‰IàØ�J‰JØ�J‰Jó
ð 	
øô �z‰zó 	AÜÐ 6Ó7¸SÐ@ûð	Aús   Ä%BH ÈIÈ0H<È<Ic                ó(  • UR                   [        R                  ;   a  U$ UR                   [        R                  LaC  U R                  (       a2  [
        R                  " SSU R                  * 0U R                  D6U l	        U R                  R                  UR                  5      U R                  R                  [
        R                  5      -   nUR                  (       a2  USS [        :X  d   e[!        U5      S:  a  USS nO[#        U5      SS nUR                  (       a  U R                  (       a  U ?	[        R$                  " UR                   UUR                  UR                   [        R                  LUR&                  UR(                  5      $ )z
Encode an outgoing frame.

r"   éüÿÿÿNi   r$   )r<   r   r=   r>   r&   r*   r-   r(   r)   r.   ÚcompressrB   ÚflushÚZ_SYNC_FLUSHr?   rD   rA   Ú
memoryviewrH   rI   rJ   )r0   rK   rB   s      r1   ÚencodeÚPerMessageDeflate.encode¥   s7  € ð �<‰<œ6×.Ñ.Ó.ØˆLð
 �<‰<œvŸ~™~Ò-à×-×-Ü#×/Ò/ñ  Ø×5Ñ5Ð5ð à×,Ñ,ñ �”ð �|‰|×$Ñ$ U§Z¡ZÓ0°4·<±<×3EÑ3EÄd×FWÑFWÓ3XÑXˆØ�9�9ð ˜˜�9Ô 9Ó9Ð9Ð9ä�4‹y˜4ÓØ˜C˜R�y‘ä! $Ó'¨¨Ð,�ð �9�9˜×7×7Ø�ä�|Š|Ø�L‰LØØ�I‰Ià�L‰L¤§¡Ð.Ø�J‰JØ�J‰Jó
ð 	
r4   )r)   r/   r,   r.   r(   r&   r'   r%   ©N)r%   Úboolr&   rY   r'   Úintr(   rZ   r)   zdict[Any, Any] | NoneÚreturnÚNone)r[   Ústr)rK   úframes.Framer:   ú
int | Noner[   r^   )rK   r^   r[   r^   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Únamer2   r8   rN   rV   Ú__static_attributes__r$   r4   r1   r   r   !   sŽ   † ññ
 Ð-Ó.€Dð 48ð&&à$(ð&&ð $(ð&&ð !$ð	&&ð
  #ð&&ð 1ð&&ð 
õ&&ôT
ð  $ñ	G
àðG
ð ð	G
ð
 
õG
÷R-
r4   r   c                ó&  • / nU (       a  UR                  S5        U(       a  UR                  S5        U(       a  UR                  S[        U5      45        USL a  UR                  S5        U$ U(       a  UR                  S[        U5      45        U$ )zK
Build a list of ``(name, value)`` pairs for some compression parameters.

)Úserver_no_context_takeoverN)Úclient_no_context_takeoverNÚserver_max_window_bitsT)Úclient_max_window_bitsNrk   )Úappendr]   )rh   ri   rj   rk   Úparamss        r1   Ú_build_parametersrn   Õ   s‚   € ð (*€FÞ!Ø�‰Ð:Ô;Þ!Ø�‰Ð:Ô;ÞØ�‰Ð/´Ð5KÓ1LÐMÔNØ Ò%Ø�‰Ð6Ô7ð €Mö 
 Ø�‰Ð/´Ð5KÓ1LÐMÔNØ€Mr4   c               óâ  • SnSnSnSnU  HÜ  u  pgUS:X  a$  U(       a  [        U5      eUc  SnM$  [        Xg5      eUS:X  a$  U(       a  [        U5      eUc  SnMN  [        Xg5      eUS:X  a0  Ub  [        U5      eU[        ;   a  [        U5      nM„  [        Xg5      eUS:X  a>  Ub  [        U5      eU(       a  Uc  SnM±  U[        ;   a  [        U5      nMÈ  [        Xg5      e[	        U5      e   UUUU4$ )zÓ
Extract compression parameters from a list of ``(name, value)`` pairs.

If ``is_server`` is :obj:`True`, ``client_max_window_bits`` may be
provided without a value. This is only allowed in handshake requests.

FNrh   Tri   rj   rk   )r	   r   Ú_MAX_WINDOW_BITS_VALUESrZ   r
   )rm   Ú	is_serverrh   ri   rj   rk   re   Úvalues           r1   Ú_extract_parametersrs   í   s&  € ð (-ÐØ',ÐØ)-ÐØ9=Ðã‰ˆØÐ/Ó/Þ)Ü(¨Ó.Ð.Ø‰}Ø-1Ò*ä+¨DÓ8Ð8àÐ1Ó1Þ)Ü(¨Ó.Ð.Ø‰}Ø-1Ò*ä+¨DÓ8Ð8àÐ-Ó-Ø%Ñ1Ü(¨Ó.Ð.ØÔ/Ó/Ü),¨U«Ò&ä+¨DÓ8Ð8àÐ-Ó-Ø%Ñ1Ü(¨Ó.Ð.Þ˜U™]Ø)-Ò&ØÔ1Ó1Ü),¨U«Ò&ä+¨DÓ8Ð8ô ' tÓ,Ð,ñI ðN 	#Ø"ØØð	ð r4   c                  óv   • \ rS rSrSr\" S5      r     S	           S
S jjrSS jr      SS jr	Sr
g)r   i*  aš  
Client-side extension factory for the Per-Message Deflate extension.

Parameters behave as described in `section 7.1 of RFC 7692`_.

.. _section 7.1 of RFC 7692: https://datatracker.ietf.org/doc/html/rfc7692#section-7.1

Set them to :obj:`True` to include them in the negotiation offer without a
value or to an integer value to include them with this value.

Args:
    server_no_context_takeover: Prevent server from using context takeover.
    client_no_context_takeover: Prevent client from using context takeover.
    server_max_window_bits: Maximum size of the server's LZ77 sliding window
        in bits, between 8 and 15.
    client_max_window_bits: Maximum size of the client's LZ77 sliding window
        in bits, between 8 and 15, or :obj:`True` to indicate support without
        setting a limit.
    compress_settings: Additional keyword arguments for :func:`zlib.compressobj`,
        excluding ``wbits``.

r   Nc                óæ   • Ub  SUs=::  a  S::  d  O  [        S5      eUb  USL d  SUs=::  a  S::  d  O  [        S5      eUb  SU;   a  [        S5      eXl        X l        X0l        X@l        XPl        g)	ú7
Configure the Per-Message Deflate extension factory.

Nr   r!   ú/server_max_window_bits must be between 8 and 15Tú/client_max_window_bits must be between 8 and 15r"   zLcompress_settings must not include wbits, set client_max_window_bits instead)Ú
ValueErrorrh   ri   rj   rk   r)   )r0   rh   ri   rj   rk   r)   s         r1   r2   Ú'ClientPerMessageDeflateFactory.__init__D  s�   € ð 'Ñ.°!Ð7MÕ2SÐQSÕ2SÜÐNÓOÐOà"Ñ*Ø%¨Ò-ØÐ*Õ0¨bÕ0äÐNÓOÐOØÑ(¨WÐ8IÓ-IÜð5óð ð
 +EÔ'Ø*DÔ'Ø&<Ô#Ø&<Ô#Ø!2Õr4   c                ón   • [        U R                  U R                  U R                  U R                  5      $ )z
Build request parameters.

)rn   rh   ri   rj   rk   r7   s    r1   Úget_request_paramsÚ1ClientPerMessageDeflateFactory.get_request_paramsd  s5   € ô
 !Ø×+Ñ+Ø×+Ñ+Ø×'Ñ'Ø×'Ñ'ó	
ð 	
r4   c                ór  ^ • [        U 4S jU 5       5      (       a  [        ST R                   35      e[        USS9u  nnnnT R                  (       a  U(       d  [        S5      eT R
                  (       a	  U(       d  SnT R                  c  O)Uc  [        S5      eUT R                  :”  a  [        S5      eT R                  c  Ub  [        S	5      eO;T R                  SL a  O+Uc  T R                  nOUT R                  :”  a  [        S
5      e[        UUU=(       d    SU=(       d    ST R                  5      $ )z>
Process response parameters.

Return an extension instance.

c              3  óT   >#   • U  H  oR                   TR                   :H  v •  M     g 7frX   ©re   ©Ú.0Úotherr0   s     €r1   Ú	<genexpr>ÚIClientPerMessageDeflateFactory.process_response_params.<locals>.<genexpr>{  ó   øé € ÐHÒ4G¨5�z‰z˜TŸY™YÖ&Ò4Gùó   ƒ%(zreceived duplicate F©rq   z#expected server_no_context_takeoverTzexpected server_max_window_bitsz"unsupported server_max_window_bitsz!unexpected client_max_window_bitsz"unsupported client_max_window_bitsr!   )
Úanyr   re   rs   rh   ri   rj   rk   r   r)   ©r0   rm   Úaccepted_extensionsrh   ri   rj   rk   s   `      r1   Úprocess_response_paramsÚ6ClientPerMessageDeflateFactory.process_response_paramsp  sJ  ø€ ô ÔHÑ4GÓH×HÑHÜ"Ð%8¸¿¹¸Ð#DÓEÐEô   °%Ñ8ñ	
Ø&Ø&Ø"Ø"ð ×*×*Þ-Ü&Ð'LÓMÐMð ×*×*Þ-Ø-1Ð*ð ×&Ñ&Ñ.Øð &Ñ-Ü&Ð'HÓIÐIØ'¨$×*EÑ*EÓEÜ&Ð'KÓLÐLð ×&Ñ&Ñ.Ø%Ñ1Ü&Ð'JÓKÐKð 2ð ×(Ñ(¨DÒ0Øð &Ñ-Ø)-×)DÑ)DÑ&Ø'¨$×*EÑ*EÓEÜ&Ð'KÓLÐLä Ø&Ø&Ø"×( bØ"×( bØ×"Ñ"ó
ð 	
r4   )rk   ri   r)   rj   rh   )FFNTN)rh   rY   ri   rY   rj   r_   rk   úint | Literal[True] | Noner)   údict[str, Any] | Noner[   r\   )r[   úSequence[ExtensionParameter])rm   r�   r‹   úSequence[Extension]r[   r   )r`   ra   rb   rc   rd   r   re   r2   r|   rŒ   rf   r$   r4   r1   r   r   *  s�   † ññ. Ð-Ó.€Dð ,1Ø+0Ø-1Ø=AØ37ð3à$(ð3ð %)ð3ð !+ð	3ð
 !;ð3ð 1ð3ð 
õ3ô@

ðg
à,ðg
ð 1ðg
ð 
÷	g
r4   r   c                ón   • U c  / n [        S U  5       5      (       d  [        U 5      [        SS0S9/-   n U $ )z³
Enable Per-Message Deflate with default settings in client extensions.

If the extension is already present, perhaps with non-default settings,
the configuration isn't changed.

c              3  ó\   #   • U  H"  nUR                   [        R                   :H  v •  M$     g 7frX   )re   r   )r‚   Úextension_factorys     r1   r„   Ú3enable_client_permessage_deflate.<locals>.<genexpr>æ  s*   é € ð â!+Ðð 	×ÑÔ"@×"EÑ"EÖEÚ!+ùó   ‚*,ÚmemLevelé   )r)   )r‰   Úlistr   ©Ú
extensionss    r1   r   r   Ú  sV   € ð ÑØˆ
Üñ á!+ó÷ ñ ô ˜*Ó%Ü*Ø#-¨q /ñð)
ñ 
ˆ
ð
 Ðr4   c                  ór   • \ rS rSrSr\" S5      r      S             S	S jjr      S
S jrSr	g)r   iò  aS  
Server-side extension factory for the Per-Message Deflate extension.

Parameters behave as described in `section 7.1 of RFC 7692`_.

.. _section 7.1 of RFC 7692: https://datatracker.ietf.org/doc/html/rfc7692#section-7.1

Set them to :obj:`True` to include them in the negotiation offer without a
value or to an integer value to include them with this value.

Args:
    server_no_context_takeover: Prevent server from using context takeover.
    client_no_context_takeover: Prevent client from using context takeover.
    server_max_window_bits: Maximum size of the server's LZ77 sliding window
        in bits, between 8 and 15.
    client_max_window_bits: Maximum size of the client's LZ77 sliding window
        in bits, between 8 and 15.
    compress_settings: Additional keyword arguments for :func:`zlib.compressobj`,
        excluding ``wbits``.
    require_client_max_window_bits: Do not enable compression at all if
        client doesn't advertise support for ``client_max_window_bits``;
        the default behavior is to enable compression without enforcing
        ``client_max_window_bits``.

r   Nc                ó  • Ub  SUs=::  a  S::  d  O  [        S5      eUb  SUs=::  a  S::  d  O  [        S5      eUb  SU;   a  [        S5      eUc  U(       a  [        S5      eXl        X l        X0l        X@l        XPl        X`l        g)	rv   Nr   r!   rw   rx   r"   zLcompress_settings must not include wbits, set server_max_window_bits insteadzVrequire_client_max_window_bits is enabled, but client_max_window_bits isn't configured)ry   rh   ri   rj   rk   r)   Úrequire_client_max_window_bits)r0   rh   ri   rj   rk   r)   rž   s          r1   r2   Ú'ServerPerMessageDeflateFactory.__init__  s¨   € ð 'Ñ.°!Ð7MÕ2SÐQSÕ2SÜÐNÓOÐOØ&Ñ.°!Ð7MÕ2SÐQSÕ2SÜÐNÓOÐOØÑ(¨WÐ8IÓ-IÜð5óð ð "Ñ)Ö.LÜð>óð ð
 +EÔ'Ø*DÔ'Ø&<Ô#Ø&<Ô#Ø!2ÔØ.LÕ+r4   c                ó®  ^ • [        U 4S jU 5       5      (       a  [        ST R                   35      e[        USS9u  nnnnT R                  (       a	  U(       d  SnT R
                  (       a	  U(       d  SnT R                  c  O,Uc  T R                  nOUT R                  :”  a  T R                  nT R                  c  USL a  T R                  nONUc  T R                  (       a  [        S5      eO.USL a  T R                  nOT R                  U:  a  T R                  n[        UUUU5      [        UUU=(       d    SU=(       d    ST R                  5      4$ )zQ
Process request parameters.

Return response params and an extension instance.

c              3  óT   >#   • U  H  oR                   TR                   :H  v •  M     g 7frX   r€   r�   s     €r1   r„   ÚHServerPerMessageDeflateFactory.process_request_params.<locals>.<genexpr>=  r†   r‡   zskipped duplicate Trˆ   zrequired client_max_window_bitsr!   )r‰   r   re   rs   rh   ri   rj   rk   rž   rn   r   r)   rŠ   s   `      r1   Úprocess_request_paramsÚ5ServerPerMessageDeflateFactory.process_request_params2  so  ø€ ô ÔHÑ4GÓH×HÑHÜ"Ð%7¸¿	¹	°{Ð#CÓDÐDô   °$Ñ7ñ	
Ø&Ø&Ø"Ø"ð" ×*×*Þ-Ø-1Ð*ð ×*×*Þ-Ø-1Ð*ð ×&Ñ&Ñ.Øð &Ñ-Ø)-×)DÑ)DÑ&Ø'¨$×*EÑ*EÓEØ)-×)DÑ)DÐ&ð ×&Ñ&Ñ.Ø%¨Ò-Ø)-×)DÑ)DÐ&øð &Ñ-Ø×6×6Ü*Ð+LÓMÐMð 7à'¨4Ò/Ø)-×)DÑ)DÑ&Ø×,Ñ,Ð/EÓEØ)-×)DÑ)DÐ&ô Ø*Ø*Ø&Ø&ó	ô Ø*Ø*Ø&×,¨"Ø&×,¨"Ø×&Ñ&óð
ð 	
r4   )rk   ri   r)   rž   rj   rh   )FFNNNF)rh   rY   ri   rY   rj   r_   rk   r_   r)   r�   rž   rY   r[   r\   )rm   r�   r‹   r‘   r[   z2tuple[list[ExtensionParameter], PerMessageDeflate])
r`   ra   rb   rc   rd   r   re   r2   r£   rf   r$   r4   r1   r   r   ò  sŸ   † ññ4 Ð-Ó.€Dð ,1Ø+0Ø-1Ø-1Ø37Ø/4ð!Mà$(ð!Mð %)ð!Mð !+ð	!Mð
 !+ð!Mð 1ð!Mð )-ð!Mð 
õ!MðFo
à,ðo
ð 1ðo
ð 
<÷	o
r4   r   c                ór   • U c  / n [        S U  5       5      (       d  [        U 5      [        SSSS0S9/-   n U $ )z³
Enable Per-Message Deflate with default settings in server extensions.

If the extension is already present, perhaps with non-default settings,
the configuration isn't changed.

c              3  ó\   #   • U  H"  nUR                   [        R                   :H  v •  M$     g 7frX   )re   r   )r‚   Úext_factorys     r1   r„   Ú3enable_server_permessage_deflate.<locals>.<genexpr>°  s)   é € ð â%ˆKð 	×ÑÔ:×?Ñ?Ö?Ú%ùr–   é   r—   r˜   )rj   rk   r)   )r‰   r™   r   rš   s    r1   r   r   ¤  s\   € ð ÑØˆ
Üñ á%ó÷ ñ ô ˜*Ó%Ü*Ø')Ø')Ø#-¨q /ñð)
ñ 
ˆ
ð Ðr4   )
rh   rY   ri   rY   rj   r_   rk   rŽ   r[   zlist[ExtensionParameter])rm   r�   rq   rY   r[   z9tuple[bool, bool, int | None, int | Literal[True] | None])r›   z'Sequence[ClientExtensionFactory] | Noner[   z Sequence[ClientExtensionFactory])r›   z'Sequence[ServerExtensionFactory] | Noner[   z Sequence[ServerExtensionFactory])$Ú
__future__r   r*   Úcollections.abcr   Útypingr   r   Ú r   Ú
exceptionsr	   r
   r   r   r   r   r   r   r   Úbaser   r   r   Ú__all__rD   Úranger]   rp   r   rn   rs   r   r   r   r   )Úbitss   0r1   Ú<module>r³      s  ðÝ "ã Ý $ß å ÷÷ ÷ BÑ Aß KÑ Kò€ð 0Ð á16°q¸"´Ó>²¨™3˜tž9±Ñ>Ð ôq
˜	ô q
ðhØ $ðà $ðð 'ðð 7ð	ð
 ôð0:Ø(ð:Ø8<ð:à>ô:ôzm
Ð%;ô m
ð`Ø7ðà%ôô0o
Ð%;ô o
ðdØ7ðà%õùòM ?s   ÁB7