§
    ©	Êje"  ã                  ó  — U d dl mZ d dlZd dlmZ d dlZd dlZd dlm	Z	m
Z
 d dlmZmZmZmZmZ dZej                             d¦  «        Zded<   dd„Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Zdd„Zdd„ZdS )é    )ÚannotationsN)ÚNoReturn)ÚHeadersÚMutableHeaders)ÚASGIAppÚMessageÚReceiveÚScopeÚSend)zapplication/gzipzapplication/x-gzipzapplication/zipzaudio/*z	font/woffz
font/woff2z
image/avifz	image/gifz
image/jpegz	image/pngz
image/webpztext/event-streamzvideo/*Ú_gzip_capacity_limiterz,anyio.lowlevel.RunVar[anyio.CapacityLimiter]Úreturnúanyio.CapacityLimiterc                 ó¶   — 	 t                                ¦   «         S # t          $ r3 t          j        d¦  «        } t                                | ¦  «         | cY S w xY w)zDReturn the capacity limiter used for worker-thread GZip compression.é(   )r   ÚgetÚLookupErrorÚanyioÚCapacityLimiterÚset©Úlimiters    úIC:\Projects\Muse2API\.venv\Lib\site-packages\starlette/middleware/gzip.pyÚ_get_gzip_capacity_limiterr       sc   € ðÝ%×)Ò)Ñ+Ô+Ð+øÝð ð ð õ Ô'¨Ñ+Ô+ˆÝ×"Ò" 7Ñ+Ô+Ð+Øˆˆˆðøøøs   ‚ ›:AÁAc                  ó,   — e Zd Z	 	 	 dedœdd„Zdd„ZdS )ÚGZipMiddlewareéô  é	   é   ©Úexclude_content_typesÚappr   Úminimum_sizeÚintÚcompresslevelÚthread_minimum_sizer    útuple[str, ...]r   ÚNonec               óf   — || _         || _        || _        || _        t	          |¦  «        | _        d S ©N)r!   r"   r$   r%   Ú_normalize_content_typesr    )Úselfr!   r"   r$   r%   r    s         r   Ú__init__zGZipMiddleware.__init__-   s:   € ð ˆŒØ(ˆÔØ*ˆÔØ#6ˆÔ Ý%=Ð>SÑ%TÔ%TˆÔ"Ð"Ð"ó    Úscoper
   Úreceiver	   Úsendr   c              ƒ  ót  K  — |d         dk    r|                       |||¦  «        ƒ d {V —† d S t          |¬¦  «        }d|                     dd¦  «        v r.t          | j         | j        | j        | j        | j        ¬¦  «        }n!t          | j         | j        | j        ¬¦  «        } ||||¦  «        ƒ d {V —† d S )	NÚtypeÚhttp)r.   ÚgzipúAccept-EncodingÚ )r$   r%   r    r   )	r!   r   r   ÚGZipResponderr"   r$   r%   r    ÚIdentityResponder)r+   r.   r/   r0   ÚheadersÚ	responders         r   Ú__call__zGZipMiddleware.__call__<   sê   è è € Ø�Œ=˜FÒ"Ð"Ø—(’(˜5 '¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØˆFå Ð&Ñ&Ô&ˆà�W—[’[Ð!2°BÑ7Ô7Ð7Ð7Ý%Ø”ØÔ!Ø"Ô0Ø$(Ô$<Ø&*Ô&@ðñ ô ˆIˆIõ *¨$¬(°DÔ4EÐ]aÔ]wÐxÑxÔxˆIàˆi˜˜w¨Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r-   N)r   r   r   ©r!   r   r"   r#   r$   r#   r%   r#   r    r&   r   r'   ©r.   r
   r/   r	   r0   r   r   r'   )Ú__name__Ú
__module__Ú__qualname__ÚDEFAULT_EXCLUDED_CONTENT_TYPESr,   r;   © r-   r   r   r   ,   sc   € € € € € ð  ØØ#-ðUð 2PðUð Uð Uð Uð Uð Uð.ð .ð .ð .ð .ð .r-   r   c                  ó@   — e Zd ZU ded<   edœdd„Zdd„Zdd„Zd d„ZdS )!r8   ÚstrÚcontent_encodingr   r!   r   r"   r#   r    r&   r   r'   c               ó¨   — || _         || _        t          |¦  «        | _        t          | _        i | _        d| _        d| _        d| _	        d| _
        d S )NF)r!   r"   r*   r    Úunattached_sendr0   Úinitial_messageÚstartedÚcontent_encoding_setÚcontent_type_is_excludedÚpartial_response)r+   r!   r"   r    s       r   r,   zIdentityResponder.__init__T   sX   € ð ˆŒØ(ˆÔÝ%=Ð>SÑ%TÔ%TˆÔ"Ý)ˆŒ	Ø(*ˆÔØˆŒØ$)ˆÔ!Ø(-ˆÔ%Ø %ˆÔÐÐr-   r.   r
   r/   r	   r0   r   c              ƒ  ó\   K  — || _         |                      ||| j        ¦  «        ƒ d {V —† d S r)   )r0   r!   Úsend_with_compression)r+   r.   r/   r0   s       r   r;   zIdentityResponder.__call__e   s>   è è € ØˆŒ	Ø�hŠh�u˜g tÔ'AÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBr-   Úmessager   c              ƒ  ó  K  — |d         }|dk    rÑ|| _         t          | j         d         ¬¦  «        }d|v | _        |d         dk    | _        |                     dd	¦  «                             d
¦  «        d                              ¦   «                              ¦   «         }||                     d¦  «        d         dz   h}|                     | j	        ¦  «         | _
        d S |dk    r`| j        s| j        s| j
        rK| j        s'd| _        |                      | j         ¦  «        ƒ d {V —† |                      |¦  «        ƒ d {V —† d S |dk    �r | j        �sød| _        |                     dd¦  «        }|                     dd¦  «        }t          |¦  «        | j        k     r?|s=|                      | j         ¦  «        ƒ d {V —† |                      |¦  «        ƒ d {V —† d S |sÄ|                      |d¬¦  «        ƒ d {V —†}t!          | j         d         ¬¦  «        }|                     d¦  «         ||d         k    r.| j        |d<   t'          t          |¦  «        ¦  «        |d<   ||d<   |                      | j         ¦  «        ƒ d {V —† |                      |¦  «        ƒ d {V —† d S |                      |d¬¦  «        ƒ d {V —†}t!          | j         d         ¬¦  «        }|                     d¦  «         ||d         k    r| j        |d<   |d= ||d<   |                      | j         ¦  «        ƒ d {V —† |                      |¦  «        ƒ d {V —† d S |dk    ri|                     dd¦  «        }|                     dd¦  «        }|                      ||¬¦  «        ƒ d {V —†|d<   |                      |¦  «        ƒ d {V —† d S |dk    r=|                      | j         ¦  «        ƒ d {V —† |                      |¦  «        ƒ d {V —† d S d S )Nr2   zhttp.response.startr9   )Úrawzcontent-encodingÚstatuséÎ   zcontent-typer6   ú;r   ú/z/*zhttp.response.bodyTÚbodyr-   Ú	more_bodyF)rW   r5   zContent-EncodingzContent-Lengthzhttp.response.pathsend)rH   r   rJ   rL   r   Ú	partitionÚstripÚlowerÚ
isdisjointr    rK   rI   r0   Úlenr"   Úapply_compressionr   Úadd_vary_headerrE   rD   )r+   rO   Úmessage_typer9   Ú
media_typeÚmedia_typesrV   rW   s           r   rN   z'IdentityResponder.send_with_compressioni   sÎ  è è € Ø˜v”ˆØÐ0Ò0Ð0ð $+ˆDÔ Ý $Ô"6°yÔ"AÐBÑBÔBˆGØ(:¸gÐ(EˆDÔ%Ø$+¨HÔ$5¸Ò$<ˆDÔ!Ø Ÿš ^°RÑ8Ô8×BÒBÀ3ÑGÔGÈÔJ×PÒPÑRÔR×XÒXÑZÔZˆJØ% z×';Ò';¸CÑ'@Ô'@ÀÔ'CÀdÑ'JÐKˆKØ0;×0FÒ0FÀtÔGaÑ0bÔ0bÐ,bˆDÔ)Ð)Ð)ØÐ1Ò1Ð1ØÔ%ð 2Ø)-Ô)>ð 2ØBFÔB_ð 2ð ”<ð 6Ø#�”Ø—i’i Ô 4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø—)’)˜GÑ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÐ1Ò1Ñ1¸$¼,Ñ1ØˆDŒLØ—;’;˜v sÑ+Ô+ˆDØŸš K°Ñ7Ô7ˆIÝ�4‰yŒy˜4Ô,Ò,Ð,°YÐ,à—i’i Ô 4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø—i’i Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Øð )à!×3Ò3°DÀEÐ3ÑJÔJÐJÐJÐJÐJÐJÐJ�å(¨TÔ-AÀ)Ô-LÐMÑMÔM�Ø×'Ò'Ð(9Ñ:Ô:Ð:Ø˜7 6œ?Ò*Ð*Ø26Ô2G�GÐ.Ñ/Ý03µC¸±I´I±´�GÐ,Ñ-Ø&*�G˜F‘Oà—i’i Ô 4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø—i’i Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð "×3Ò3°DÀDÐ3ÑIÔIÐIÐIÐIÐIÐIÐI�å(¨TÔ-AÀ)Ô-LÐMÑMÔM�Ø×'Ò'Ð(9Ñ:Ô:Ð:Ø˜7 6œ?Ò*Ð*Ø26Ô2G�GÐ.Ñ/ØÐ 0Ð1Ø&*�G˜F‘Oà—i’i Ô 4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø—i’i Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ1Ò1Ð1à—;’;˜v sÑ+Ô+ˆDØŸš K°Ñ7Ô7ˆIà$(×$:Ò$:¸4È9Ð$:Ñ$UÔ$UÐUÐUÐUÐUÐUÐUˆG�F‰Oà—)’)˜GÑ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÐ5Ò5Ð5à—)’)˜DÔ0Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ø—)’)˜GÑ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ð 6Ð5r-   rV   ÚbytesrW   Úboolc             ƒ  ó
   K  — |S )zÊApply compression on the response body.

        If more_body is False, the compression stream is finalized. Compression
        resources are only allocated once a body is actually compressed.
        rB   ©r+   rV   rW   s      r   r]   z#IdentityResponder.apply_compression«   s   è è € ð ˆr-   N)r!   r   r"   r#   r    r&   r   r'   r=   )rO   r   r   r'   ©rV   rb   rW   rc   r   rb   )	r>   r?   r@   Ú__annotations__rA   r,   r;   rN   r]   rB   r-   r   r8   r8   Q   s‹   € € € € € € ØÐÐÑð 2Pð&ð &ð &ð &ð &ð &ð"Cð Cð Cð Cð@%ð @%ð @%ð @%ðDð ð ð ð ð r-   r8   c                  óX   ‡ — e Zd ZdZ	 ddedœdˆ fd„Zedd„¦   «         Zdd„Zdd„Z	ˆ xZ
S )r7   r4   r   r   )r%   r    r!   r   r"   r#   r$   r%   r    r&   r   r'   c               óz   •— t          ¦   «                              |||¬¦  «         || _        || _        d | _        d S )Nr   )Úsuperr,   r$   r%   Ú_compressor)r+   r!   r"   r$   r%   r    Ú	__class__s         €r   r,   zGZipResponder.__init__·   sC   ø€ õ 	‰Œ×Ò˜˜lÐBWÐÑXÔXÐXà*ˆÔØ#6ˆÔ Ø26ˆÔÐÐr-   úzlib._Compressc                óŒ   — | j         €7t          j        | j        t          j        dt          j        z   ¦  «        | _         | j         S )Né   )rk   ÚzlibÚcompressobjr$   ÚDEFLATEDÚ	MAX_WBITS)r+   s    r   Ú
compressorzGZipResponder.compressorÆ   s:   € àÔÐ#Ý#Ô/°Ô0BÅDÄMÐSUÕX\ÔXfÑSfÑgÔgˆDÔØÔÐr-   rV   rb   rW   rc   c             ƒ  óÚ   K  — t          |¦  «        | j        k    r<t          ¦   «         }t          j                             | j        |||¬¦  «        ƒ d {V —†S |                      ||¦  «        S )Nr   )r\   r%   r   r   Ú	to_threadÚrun_syncÚ_compress_body)r+   rV   rW   r   s       r   r]   zGZipResponder.apply_compressionÌ   sp   è è € Ýˆt‰9Œ9˜Ô0Ò0Ð0å0Ñ2Ô2ˆGÝœ×1Ò1°$Ô2EÀtÈYÐ`gÐ1ÑhÔhÐhÐhÐhÐhÐhÐhÐhØ×"Ò" 4¨Ñ3Ô3Ð3r-   c                óì   — |r?| j                              |¦  «        | j                              t          j        ¦  «        z   S | j                              |¦  «        | j                              ¦   «         z   S r)   )rt   ÚcompressÚflushrp   ÚZ_SYNC_FLUSHre   s      r   rx   zGZipResponder._compress_bodyÓ   sb   € Øð 	]Ø”?×+Ò+¨DÑ1Ô1°D´O×4IÒ4IÍ$ÔJ[Ñ4\Ô4\Ñ\Ð\ØŒ×'Ò'¨Ñ-Ô-°´×0EÒ0EÑ0GÔ0GÑGÐGr-   )r   r<   )r   rm   rf   )r>   r?   r@   rE   rA   r,   Úpropertyrt   r]   rx   Ú__classcell__)rl   s   @r   r7   r7   ´   s¯   ø€ € € € € ØÐð ð	7ð $.Ø1Oð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð ð ð  ð  ñ „Xð ð
4ð 4ð 4ð 4ðHð Hð Hð Hð Hð Hð Hð Hr-   r7   rO   r   r   c              ƒ  ó$   K  — t          d¦  «        ‚)Nzsend awaitable not set)ÚRuntimeError)rO   s    r   rG   rG   Ù   s   è è € Ý
Ð/Ñ
0Ô
0Ð0r-   Úcontent_typesr&   c                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  ó”   K  — | ]C}|                      d ¦  «        d                              ¦   «                              ¦   «         V — ŒDdS )rT   r   N)rX   rY   rZ   )Ú.0Úcontent_types     r   ú	<genexpr>z+_normalize_content_types.<locals>.<genexpr>Þ   sM   è è € ÐbÐbÀL�×'Ò'¨Ñ,Ô,¨QÔ/×5Ò5Ñ7Ô7×=Ò=Ñ?Ô?ÐbÐbÐbÐbÐbÐbr-   )Útuple)r�   s    r   r*   r*   Ý   s    € ÝÐbÐbÐTaÐbÑbÔbÑbÔbÐbr-   )r   r   )rO   r   r   r   )r�   r&   r   r&   )Ú
__future__r   rp   Útypingr   Úanyio.lowlevelr   Úanyio.to_threadÚstarlette.datastructuresr   r   Ústarlette.typesr   r   r	   r
   r   rA   ÚlowlevelÚRunVarr   rg   r   r   r8   r7   rG   r*   rB   r-   r   ú<module>r�      s˜  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bð"Ð ð  HMÄ~×G\ÒG\Ð]uÑGvÔGvÐ Ð vÐ vÐ vÑ vð	ð 	ð 	ð 	ð".ð ".ð ".ð ".ð ".ñ ".ô ".ð ".ðJ`ð `ð `ð `ð `ñ `ô `ð `ðF"Hð "Hð "Hð "Hð "HÐ%ñ "Hô "Hð "HðJ1ð 1ð 1ð 1ðcð cð cð cð cð cr-   