
    hx@                     "   % 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	  S SK
Jr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJrJrJr  SS	KJr  SS
K J!r!  SSK"J#r#J$r$J%r%  SSK&J'r'J(r(  SSK)J*r*J+r+J,r,J-r-J.r.J/r/  SSK0J1r1  Sr2\(       a  SSK3J4r4  \\\5/\S   4      r6\7" \Rp                  Rs                  S5      5      r:\\7   \;S'   \" 5       r<\\   \;S'   \" S V s0 s H  o \<Rz                  U    _M     sn 5      r>Sr?\" SSSSSS.5      r@ " S S\5      rA\<Rz                  R                  5         \@R                  5        H  u  rDrE\<R                  \D\E5        M     \G" 5       rH\\ R                  S      \;S'    " S S \15      rJgs  sn f )!    N)suppress)Enumauto)	MimeTypes)S_ISREG)MappingProxyType)IOTYPE_CHECKINGAny	AwaitableCallableFinalIteratorListOptionalSetTupleUnioncast   )hdrs)AbstractStreamWriter)ETAG_ANYETagmust_be_empty_body)LooseHeadersPathLike)HTTPForbiddenHTTPNotFoundHTTPNotModifiedHTTPPartialContentHTTPPreconditionFailedHTTPRequestRangeNotSatisfiable)StreamResponse)FileResponse)BaseRequestAIOHTTP_NOSENDFILE
NOSENDFILECONTENT_TYPES).br.gzzapplication/octet-streamr+   r*   z.bz2z.Zz.xz)zapplication/gzipzapplication/x-brotlizapplication/x-bzip2zapplication/x-compresszapplication/x-xzc                   P    \ rS rSrSr\" 5       r\" 5       r\" 5       r\" 5       r	Sr
g)_FileResponseResultJ   z The result of the file response. N)__name__
__module____qualname____firstlineno____doc__r   	SEND_FILENOT_ACCEPTABLEPRE_CONDITION_FAILEDNOT_MODIFIED__static_attributes__r/       J/var/www/html/env/lib/python3.13/site-packages/aiohttp/web_fileresponse.pyr-   r-   J   s"    *IVN66Lr:   r-   _CLOSE_FUTURESc                   `  ^  \ rS rSrSr    S$S\S\S\S\\   S\\	   S	S4U 4S
 jjjr
S\\   S\S\S	\4S jrS\S\\   S\S\S	\4
S jrSSS\\   S\S\S	\4
U 4S jjr\S\S\\S4   S\S	\4S j5       rSSS\S\S	\\   4U 4S jjrSSS	\\   4U 4S jjrSSS\S	\\\\R8                     \R<                  \\   4   4S jrS\S	\\\ RB                     \R<                  \\   4   4S jr"SSS	\\   4U 4S jjr#SSS\R8                  S \R<                  S!\\   S	\\   4
U 4S" jjr$S#r%U =r&$ )%r%   \   z,A response object can be used to send files.Npath
chunk_sizestatusreasonheadersreturnc                 d   > [         TU ]  X4US9  [        R                  " U5      U l        X l        g )N)rA   rB   rC   )super__init__pathlibPath_path_chunk_size)selfr?   r@   rA   rB   rC   	__class__s         r;   rG   FileResponse.__init___   s-     	wG\\$'
%r:   fobjoffsetc                 F    UR                  U5        UR                  U5      $ N)seekread)rL   rO   rP   r@   s       r;   _seek_and_readFileResponse._seek_and_readl   s    		&yy$$r:   writercountc                   #    U R                   n[        R                  " 5       nUR                  S U R                  X#U5      I S h  vN nU(       a[  UR                  U5      I S h  vN   XE-
  nUS::  a  O7UR                  S UR                  [        XT5      5      I S h  vN nU(       a  M[  UR                  5       I S h  vN   U$  N Nb N+ N7fNr   )	rK   asyncioget_event_looprun_in_executorrU   writerT   mindrain)rL   rW   rO   rP   rX   r@   loopchunks           r;   _sendfile_fallbackFileResponse._sendfile_fallbackp   s      %%
%%'**$%%tZ
 
 ,,u%%%&Ez..tTYYJ@VWWE e lln
 & XsN   ACCC%C&8CC
C,C?C CC
CCrequestr&   c                   >#    [         TU ]  U5      I S h  vN nUc   e[        (       d  U R                  (       a  U R	                  XRX45      I S h  vN $ UR
                  nUR                  nUc   e UR                  XrX45      I S h  vN   [         TU ]%  5       I S h  vN   U$  N NV N ! [         a    U R	                  XRX45      I S h  vN  s $ f = f N77frR   )
rF   preparer(   compressionrc   _loop	transportsendfileNotImplementedError	write_eof)	rL   re   rO   rP   rX   rW   ra   rj   rM   s	           r;   	_sendfileFileResponse._sendfile   s      ww//!!!:))00vMMM}}%%	$$$	N--	??? g!!!! 0 N @" 	N00vMMMM	N 	"so   CB&:CB(!C4B, 	B*
B, CC C(C*B, ,CCCCCC
etag_valueetags.weakc                   ^ ^ [        U5      S:X  a  US   R                  [        :X  a  g[        U U4S jU 5       5      $ )Nr   r   Tc              3   v   >#    U  H.  nT(       d  UR                   (       a  M  UR                  T:H  v   M0     g 7frR   )is_weakvalue).0etagrp   rr   s     r;   	<genexpr>+FileResponse._etag_match.<locals>.<genexpr>   s(      
16$dll$DJJ*$s   99)lenrv   r   any)rp   rq   rr   s   ` `r;   _etag_matchFileResponse._etag_match   s:    u:?uQx~~9 
16
 
 	
r:   last_modifiedc                    >#    U R                  [        R                  5        SU l        X l        X0l        [        TU ]  U5      I S h  vN $  N7f)NF)
set_statusr    status_code_length_checkrx   r   rF   rg   )rL   re   rp   r   rM   s       r;   _not_modifiedFileResponse._not_modified   sD      	334"	* W_W----s   AAA	Ac                    >#    U R                  [        R                  5        SU l        [        TU ]  U5      I S h  vN $  N7frZ   )r   r"   r   content_lengthrF   rg   )rL   re   rM   s     r;   _precondition_failed!FileResponse._precondition_failed   s8      	.::;W_W----s   9AAAaccept_encodingc                 d   U R                  U5      u  p4nU(       d  [        R                  SUS4$ UR                  S SUR                  S 3nUR
                  =nb(  U R                  XgSS9(       d  [        R                  SXE4$ UR                  =nb4  Uc1  UR                  UR                  5       :  a  [        R                  SXE4$ UR                  =n	b(  U R                  XiSS9(       a  [        R                  SXE4$ UR                  =n
b4  U	c1  UR                  U
R                  5       ::  a  [        R                  SXE4$ UR                  S5      n[        [         5         ["        R$                  " UR'                  5       5      nSSS5        [        R(                  XU4$ ! , (       d  f       N!= f)zReturn the response result, io object, stat result, and encoding.

If an uncompressed file is returned, the encoding is set to
:py:data:`None`.

This method should be called from a thread executor
since it calls os.stat which may block.
Nx-F)rr   Trb)_get_file_path_stat_encodingr-   r6   st_mtime_nsst_sizeif_matchr}   r7   if_unmodified_sincest_mtime	timestampif_none_matchr8   if_modified_sinceopenr   OSErrorosstatfilenor5   )rL   re   r   	file_pathstfile_encodingrp   ifmatch
unmodsinceifnonematchmodsincerO   s               r;   _make_responseFileResponse._make_response   s    (,'H'H(
$	} &55tREEq)2::a.9
 '''G4T=M=Me >N >
 ';;T2TT #666ZCj2244&;;T2TT #000K=$BRBR$ CS C
 '33T2LL !222X?#x1133&33T2LL~~d#g
 'B  #,,dEE s   !%F!!
F/c                    U R                   n[        R                  5        H|  u  p4XA;  a  M  UR                  UR                  U-   5      n[        [        5         UR                  5       n[        UR                  5      (       a  XVU4sS S S 5        s  $  S S S 5        M~     UR                  5       n[        UR                  5      (       a  X&S 4$ S US 4$ ! , (       d  f       M  = frR   )rJ   ENCODING_EXTENSIONSitemswith_suffixsuffixr   r   lstatr   st_moder   )rL   r   r   file_extensionr   compressed_pathr   s          r;   r   )FileResponse._get_file_path_stat_encoding   s     JJ	-@-F-F-H)N3'33I4D4D~4UVO'"$**,2::&&*=	 #" ' #" .I ^^#BJJ//ytCCT2tCC #"s   .C
C#	c                 F  >#    [         R                  " 5       nUR                  R                  [        R
                  S5      R                  5       n UR                  S U R                  X5      I S h  vN u  pEpgU["        R$                  L a6  U R                  [        R                  5        [        TU ]9  U5      I S h  vN $ U["        R&                  L a  U R)                  U5      I S h  vN $ U["        R*                  L aC  UR,                  S SUR.                  S 3nUR0                  n	U R3                  XU	5      I S h  vN $ Uc   e U R5                  XXg5      I S h  vN UR                  S UR6                  5      n
[8        R;                  U
5        U
R=                  [8        R>                  5        $  GNC! [         a:    U R                  [        R                  5        [        TU ]9  U5      I S h  vN  s $ [         a:    U R                  [         R                  5        [        TU ]9  U5      I S h  vN  s $ f = f GN GNZ GN N! UR                  S UR6                  5      n
[8        R;                  U
5        U
R=                  [8        R>                  5        f = f7f)N r   r   ) r[   get_running_looprC   getr   ACCEPT_ENCODINGlowerr]   r   PermissionErrorr   r   r   rF   rg   r   r   r-   r6   r7   r   r8   r   r   r   r   _prepare_open_filecloser<   addadd_done_callbackremove)rL   re   ra   r   response_resultrO   r   r   rp   r   close_futurerM   s              r;   rg   FileResponse.prepare   s-    '') "//--d.B.BBGMMO	2=A=Q=Qd))7> 84O2 1@@@OOM5561111FFF227;;;1>>>NN1-Qrzz!n=JKKM++GOOO	B00RR  //djjAL |,**>+@+@AK8  	2OOM5561111 	2 OOL4451111		2 2 <
 P S  //djjAL |,**>+@+@As   AJ! F8 2F53F8 :AJ!>I?+J!*I+AJ! I	J!I  I
!I $AJ!5F8 8;H>3G64H>9J!;:H>5H86H>;J!=H>>J!J!J!
I AJJ!r   r   c                   >#    U R                   nUR                  nUR                  nUnS n	UR                  =n
b  XzR	                  5       ::  a   UR
                  nUR                  n	UR                  nU	b  U	S:  a  Uc  X-  n	U	S:  a  Sn	Xi-
  nO[#        Ub  UOUU5      U	-
  nX:  aV  SU 3U R                  [        R                  '   U R                  [        R                  5        [        TU ]A  U5      I S h  vN $ [$        R                  nU R                  U5        [        R&                  U R                  ;  a\  [(        R*                  S:  a  [,        R.                  nO[,        R0                  nU" U R2                  5      S   =(       d    [4        U l        U(       aN  X@R                  [        R8                  '   [        R:                  U R                  [        R<                  '   SU l        UR@                  S SUR                  S 3U l!        Xpl"        Xl#        SU R                  [        RH                  '   U[$        R                  :X  a:  U	nUc   eSRK                  XU-   S	-
  U5      U R                  [        R                  '   US:X  d  [M        URN                  U5      (       a  [        TU ]A  U5      I S h  vN $ U	=(       d    SnU RQ                  XX5      I S h  vN $ ! [         aZ    SU 3U R                  [        R                  '   U R                  [        R                  5        [        TU ]A  U5      I S h  vN  s $ f = f GNR N Np7f)
Nzbytes */r   )      Fr   r   byteszbytes {}-{}/{}r   ))_statusr   r   if_ranger   
http_rangestartstop
ValueError_headersr   CONTENT_RANGEr   r#   r   rF   rg   r_   r!   CONTENT_TYPEsysversion_infor)   guess_file_type
guess_typerJ   FALLBACK_CONTENT_TYPEcontent_typeCONTENT_ENCODINGr   VARY_compressionr   rx   r   r   ACCEPT_RANGESformatr   methodrn   )rL   re   rO   r   r   rA   	file_size
file_mtimerX   r   ifrangerngendguesser
real_startrP   rM   s                   r;   r   FileResponse._prepare_open_file,  s     	KK
#'''G0JBSBSBU4U6((		%(XX"  19&Eqy !"%-E 3?C	9MPUU  % ;C9+8NDMM$"4"45OO$B$N$NO!&!999+77 '
 DMM17*'77'22 '

 3A 6 O:OD3@MM$//0'+';';DMM$))$ !&D~~a("**Q8	'#,3d(()'333J)))0@0G0G.2I1DMM$,,-
 A:+GNNFCC111 !^^G6AAA{  6 7?yk4Jd001 > J JK"W_W55556` :P 2
 Bsi   AM$K% 3BM:M;G M;M<$M M!M%AM	 MM	MM		MMM)rK   r   r   rJ   r   r   rx   r   )i      NN)'r0   r1   r2   r3   r4   r   intr   strr   rG   r	   r   r   rU   r   rc   rn   staticmethodr   r   boolr}   floatr   r   r-   ioBufferedReaderr   stat_resultr   rH   rI   r   rg   r   r9   __classcell__)rM   s   @r;   r%   r%   \   s]   6
 % $*.&& & 	&
 & ,'& 
& &%2c7 %C %S %U %*24S'CFOR	*$,.sG=@IL	* 
 
E$),< 
t 
PT 
 
	.$	.25	.FK	.	&	'	..$.	&	'.6F$6F7:6F	Xb&7&78"..(SV-W
6FpD"D	x%r~~x}D	ED&+B] +Bx@T7U +BZvBvB vB NN	vB
  }vB 
&	'vB vBr:   r%   )Kr[   r   r   rH   r   
contextlibr   enumr   r   	mimetypesr   r   r   typesr   typingr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   abcr   helpersr   r   r   typedefsr   r   web_exceptionsr   r   r    r!   r"   r#   web_responser$   __all__web_requestr&   r   _T_OnChunkSentr   environr   r(   __annotations__r)   encodings_mapr   r   ADDITIONAL_CONTENT_TYPESr-   clearr   r   	extensionadd_typesetr<   Futurer%   )exts   0r;   <module>r     s    	 	  
     "      % 7 7 ,  )
( (E7IdO#;<= rzz~~.BCD
E$K D"++uY - '6DEns-
%
%c
**nE  3  ,! %%"&! $     ! ! #7==?L)<3  @ -0EGNN4() 1FB> FBI Fs   #F