+
    LV-j®x  ã                   óÜ  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIt^ RI	t	^ RI
HtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHt ^R	IHt ]P:                  ! R
4      t]P:                  ! R4      t]P@                  ! R4      t!R t" ! R R]4      t# ! R R]4      t$]P:                  ! R4      t%R t& ! R R]4      t' ! R R]4      t(RR lt)RR lt*RR lt+]! ]+4      t,R# )é    N)Úcopy)Úurlparse)ÚAbstractAsyncStreamedFileÚAsyncFileSystemÚsyncÚsync_wrapper)ÚDEFAULT_CALLBACK)ÚFSTimeoutError)ÚAbstractBufferedFile)ÚDEFAULT_BLOCK_SIZEÚglob_translateÚ
isfilelikeÚnullcontextÚtokenize)ÚAllBytesz6<(a|A)\s+(?:[^>]*?\s+)?(href|HREF)=["'](?P<url>[^"']+)z-(?P<url>http[s]?://[-a-zA-Z0-9@:%_+.~#?&/=]+)zfsspec.httpc               ‹   ó6   "  € \         P                  ! R/ V B # 5i)N© )ÚaiohttpÚClientSession)Úkwargss   ,Úl/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/fsspec/implementations/http.pyÚ
get_clientr       s   é € Ü× Ò Ñ* 6Ñ*Ð*ùs   ‚c                   óH  a a€ ] tR t^$t oRtR tRtRRRRRRRRR]R3V 3R llt]	R 4       t
R	 t]R
 4       tR t]R 4       t]V 3R l4       tR!R ltR!R lt]! ]4      tR tR"R ltR#]3R ltR#]RR3R ltR$R ltR tR%R ltR&R ltR tR t R'R lt!R t"R(R lt#Rt$Vt%V ;t&# ))ÚHTTPFileSystemaÆ  
Simple File-System for fetching data via HTTP(S)

``ls()`` is implemented by loading the parent page and doing a regex
match on the result. If simple_link=True, anything of the form
"http(s)://server.com/stuff?thing=other"; otherwise only links within
HTML href tags will be used.

URLs are passed unfiltered to aiohttp, so all addresses are accessible. Where URLs are
supplied by a user, the calling application may wish to filter to prevent scanning.
Ú/TNÚbytesFc                ó”  <€ \         SV `  ! V 3RVRV/VB  Ve   TM\        V n        Wn        W0n        WPn        W`n        T	;'       g    / V n        W n	        W°n
        WÀn        RV n        \        V4      pVP                  RR4      V n        VP                  RR4       VP                  RR4       VP                  RR4       WÐn        R# )	a  
NB: if this is called async, you must await set_client

Parameters
----------
block_size: int
    Blocks to read bytes; if 0, will default to raw requests file-like
    objects instead of HTTPFile instances
simple_links: bool
    If True, will consider both HTML <a> tags and anything that looks
    like a URL; if False, will consider only the former.
same_scheme: True
    When doing ls/glob, if this is True, only consider paths that have
    http/https matching the input URLs.
size_policy: this argument is deprecated
client_kwargs: dict
    Passed to aiohttp.ClientSession, see
    https://docs.aiohttp.org/en/stable/client_reference.html
    For example, ``{'auth': aiohttp.BasicAuth('user', 'pass')}``
get_client: Callable[..., aiohttp.ClientSession]
    A callable, which takes keyword arguments and constructs
    an aiohttp.ClientSession. Its state will be managed by
    the HTTPFileSystem class.
storage_options: key-value
    Any other parameters passed on to requests
cache_type, cache_options: defaults used in open()
ÚasynchronousÚloopNÚuse_listings_cacheFÚlistings_expiry_timeÚ	max_pathsÚskip_instance_cache)ÚsuperÚ__init__r   Ú
block_sizeÚsimple_linksÚsame_schemaÚ
cache_typeÚcache_optionsÚclient_kwargsr   Úencodedr   Ú_sessionr   Úpopr    )Úselfr'   r&   Úsame_schemeÚsize_policyr)   r*   r   r   r+   r   r,   Ústorage_optionsÚrequest_optionsÚ	__class__s   &&&&&&&&&&&&, €r   r%   ÚHTTPFileSystem.__init__4   sÇ   ø€ ôT 	‰Ò˜ÑW¨LÐW¸tÐWÀÒWØ(2Ò(>™*ÔDVˆŒØ(ÔØ&ÔØ$ŒØ*ÔØ*×0Ð0¨bˆÔØ$ŒØŒØ%ŒØˆŒô ˜Ó/ˆØ"1×"5Ñ"5Ð6JÈEÓ"RˆÔØ×ÑÐ2°DÔ9Ø×Ñ˜K¨Ô.Ø×ÑÐ1°4Ô8Ø%Žó    c                ó   € R # )Úhttpr   ©r/   s   &r   ÚfsidÚHTTPFileSystem.fsidu   s   € ár6   c                óD   € \         P                  ! WP                  R 7      # ))r,   )ÚyarlÚURLr,   ©r/   Úurls   &&r   Ú
encode_urlÚHTTPFileSystem.encode_urly   s   € Ü�xŠx˜§\¡\Ô2Ð2r6   c                óì   € V e1   V P                  4       '       d    \        WP                  RR7       R # \        VRR 4      pVe   VP                  4        R # R #   \        \        \
        3 d     L=i ; i)Ngš™™™™™¹?)ÚtimeoutÚ
_connector)Ú
is_runningr   ÚcloseÚTimeoutErrorr
   ÚNotImplementedErrorÚgetattrÚ_close)r   ÚsessionÚ	connectors   && r   Úclose_sessionÚHTTPFileSystem.close_session|   sm   € àÒ §¡× 1Ò 1ðÜ�TŸ=™=°#Õ6Ùô ˜G \°4Ó8ˆ	ØÒ à×ÑÖñ !øô !¤.Ô2EÐFô Ùðús   œA ÁA3Á2A3c              ƒ  ó<  "  € V P                   f~   V P                  ! RRV P                  /V P                  B G R j  x€L
 V n         V P                  '       g7   \
        P                  ! W P                  V P                  V P                   4       V P                   #  L]5i)Nr   r   )r-   r   r   r+   r   ÚweakrefÚfinalizerN   r9   s   &r   Úset_sessionÚHTTPFileSystem.set_session‰   sp   é € Ø�=‰=Ò Ø"&§/¢/Ñ"W°t·y±yÐ"WÀD×DVÑDVÑ"W×WˆDŒMØ×$×$Ð$Ü× Ò  ×'9Ñ'9¸4¿9¹9ÀdÇmÁmÔTØ�}‰}Ðñ Xùs   ‚:B¼B½BÁABc                ó   € V# )z-For HTTP, we always want to keep the full URLr   )ÚclsÚpaths   &&r   Ú_strip_protocolÚHTTPFileSystem._strip_protocol�   s	   € ð ˆr6   c                óJ   <€ \         SV `  V4      p\        V4      ^8”  d   V# R# )é   Ú )r$   Ú_parentÚlen)rV   rW   Úparr4   s   && €r   r]   ÚHTTPFileSystem._parent•   s&   ø€ ô ‰g‰o˜dÓ#ˆÜˆs‹8�aŒ<ØˆJÙr6   c              ‹  ó(  "  € V P                   P                  4       pVP                  V4       \        P	                  V4       V P                  4       G R j  x€L
 pVP                  ! V P                  V4      3/ V P                   B ;_uu_4       GR j  x€L
 pV P                  Wa4       RVP                  9   d+   VP                  R,          P                  R4      ^ ,          pMR pVR9   dŸ    VP                  RR7      G R j  x€L
 pV P                  '       dG   \        P                  V4      \        P                  V4       U	u. uF  q™^,          NK  	  up	,           p
M-\        P                  V4       U	u. uF  q™^,          NK  	  p
p	M. p
R R R 4      GR j  x€L
  \#        4       p\%        V4      pX
 EF~  p\'        V\(        4      '       d
   V^,          pVP+                  R4      '       d.   \-        V4      ^8”  d   VP.                   RVP0                   V 2pVP+                  R4      '       d·   V P2                  '       dA   VP+                  VP5                  R4      R,           4      '       d   VP7                  V4       KÐ  VP9                  RR4      P+                  VP9                  RR4      P5                  R4      R,           4      '       d   VP7                  V4       EK1  EK4  VR9  g   EK>  VP7                  RP;                  VP5                  R4      VP=                  R4      .4      4       EK�  	  V'       gB   VP?                  R4      '       d+   V PA                  VP5                  R4      R	R
7      G R j  x€L
 pV'       d2   V U	u. uF$  p	RT	RR RV	P?                  R4      '       d   RMR/NK&  	  up	# \C        V4      #  ELn EL4 ELÇu up	i u up	i   \          d    . p
 ELZi ; i ELS  + GR j  x€L 
 '       g   i     ELk; i L�u up	i 5i)NúContent-TypeÚ;Úignore)Úerrorsr   z://r8   ÚhttpsF)ÚdetailÚnameÚsizeÚtypeÚ	directoryÚfile)z	text/htmlN)z..z../)"r   r   ÚupdateÚloggerÚdebugrS   ÚgetrA   Ú_raise_not_found_for_statusÚheadersÚ	partitionÚtextr'   Úex2ÚfindallÚexÚUnicodeDecodeErrorÚsetr   Ú
isinstanceÚtupleÚ
startswithr^   ÚschemeÚnetlocr(   ÚrstripÚaddÚreplaceÚjoinÚlstripÚendswithÚ_ls_realÚsorted)r/   r@   rg   r   ÚkwrL   ÚrÚmimetypert   ÚuÚlinksÚoutÚpartsÚls   &&&,          r   r…   ÚHTTPFileSystem._ls_real�   s(  é € à�[‰[×ÑÓˆØ
�	‰	�&ÔÜ�‰�SÔØ×(Ñ(Ó*×*ˆØ—;’;˜tŸ™¨sÓ3ÑC°t·{±{×C×CÒCÀqØ×,Ñ,¨QÔ4à §¡Ô*ØŸ9™9 ^Õ4×>Ñ>¸sÓCÀAÕF‘à�àÐ.Ô.ðØ!"§¡¨x Ó!8×8�DØ×(×(Ð(Ü #§¡¨DÓ 1Ä2Ç:Á:ÈdÔCSÓ4TÑCS¸a°q·T°TÑCSÑ4TÕ T™ä/1¯z©z¸$Ô/?Ó @Ñ/?¨! 1§ Ñ/?˜Ð @˜ð �÷% D×Cô( ‹eˆÜ˜“ˆÜˆAÜ˜!œU×#Ò#Ø�a•D�Ø�|‰|˜C× Ò ¤S¨£V¨a¤Zà—|‘|�n C¨¯© ~°a°SÐ9�Ø�|‰|˜F×#Ò#Ø×#×#Ð#¨¯©°S·Z±ZÀ³_ÀsÕ5J×(KÒ(KØ—G‘G˜A–JØ—Y‘Y˜w¨Ó/×:Ñ:Ø—K‘K ¨Ó0×7Ñ7¸Ó<¸sÕB÷ò ð —G‘G˜A—Jò	ð ˜M×)à—G‘G˜CŸH™H c§j¡j°£o°q·x±xÀ³}Ð%EÓF×Gñ# ÷$ �s—|‘| C×(Ò(ØŸ™ c§j¡j°£o¸e˜ÓD×DˆCßñ óñ �Að	 ˜AØ˜DØ¨1¯:©:°c¯?ª?™KÀóñ
 ñð ô ˜#“;Ðòk +ÚCò 9ùâ4Tùâ @øÜ)ô Ø“Eðú÷ D×C×CÔCúñR Eùòùs%  ‚APÁOÁ<PÂOÂPÂAO.Ã.OÄO
ÄOÄ+OÅO
Å	OÅO.Å OÅ7OÆOÆ
O.ÆPÆO+ÆAPÇ.APÈ2PÉ,PÉ1APËPË2APÌ?PÍ%PÍ;PÍ<PÎPÎ PÎ-	PÎ6PÏPÏ
OÏ
OÏO(Ï$O.Ï'O(Ï(O.Ï+PÏ.P	Ï4O7Ï5
P	Ð P	Ð
PÐPc              ‹  óÖ   "  € V P                   '       d&   WP                  9   d   V P                  V,          pV# V P                  ! V3R V/VB G Rj  x€L
 pW@P                  V&   V#  L5i)rg   N)r    Údircacher…   )r/   r@   rg   r   rŒ   s   &&&, r   Ú_lsÚHTTPFileSystem._lsÙ   sc   é € Ø×"×"Ð" s¯m©mÔ';Ø—-‘- Õ$ˆCð ˆ
ð Ÿš cÑC°&ÐC¸FÑC×CˆCØ!$�M‰M˜#ÑØˆ
ñ Dùs   ‚AA)ÁA'ÁA)c                ó^   € VP                   R8X  d   \        V4      hVP                  4        R# )zE
Raises FileNotFoundError for 404s, otherwise uses raise_for_status.
i”  N)ÚstatusÚFileNotFoundErrorÚraise_for_status)r/   Úresponser@   s   &&&r   rq   Ú*HTTPFileSystem._raise_not_found_for_statusã   s'   € ð �?‰?˜cÔ!Ü# CÓ(Ð(Ø×!Ñ!Ö#r6   c              ‹  ó†  "  € V P                   P                  4       pVP                  V4       \        P	                  V4       Vf   VeJ   W#8X  d   R# VP                  R/ 4      P                  4       pV P                  WV4      G R j  x€L
 VR&   WeR&   V P                  4       G R j  x€L
 pVP                  ! V P                  V4      3/ VB ;_uu_4       GR j  x€L
 pVP                  4       G R j  x€L
 p	V P                  W�4       R R R 4      GR j  x€L
  V	#  L‘ Lt LC L- L  + GR j  x€L 
 '       g   i     X	# ; i5i)Nr6   rr   ÚRange)r   r   rm   rn   ro   r.   Ú_process_limitsrS   rp   rA   Úreadrq   )
r/   r@   ÚstartÚendr   r‡   rr   rL   rˆ   rŒ   s
   &&&&,     r   Ú	_cat_fileÚHTTPFileSystem._cat_fileë   sü   é € Ø�[‰[×ÑÓˆØ
�	‰	�&ÔÜ�‰�SÔàÒ ¢ØŒ|ÙØ—f‘f˜Y¨Ó+×0Ñ0Ó2ˆGà%)×%9Ñ%9¸#ÀcÓ%J×JˆG�GÑØ#ˆy‰MØ×(Ñ(Ó*×*ˆØ—;’;˜tŸ™¨sÓ3Ñ:°r×:×:Ò:¸aØŸ™›—.ˆCØ×,Ñ,¨QÔ4÷ ;×:ð ˆ
ñ  Ká*Ù:Ù ÷ ;×:×:Ñ:ð ˆ
üs„   ‚BEÂDÂ	EÂ'DÂ(2EÃDÃEÃD$Ã2D Ã3D$ÄEÄD"ÄEÄEÄEÄ D$Ä"EÄ$D>	Ä*D-Ä+
D>	Ä6D>	Ä8	Ec              ‹  óÈ  "  € V P                   P                  4       pVP                  V4       \        P	                  V4       V P                  4       G R j  x€L
 pVP                  ! V P                  V4      3/ VB ;_uu_4       GR j  x€L
 p \        VP                  R,          4      p	VP                  V	4       V P                  W�4       \        V4      '       d   Tp
M\        VR4      p
 RpV'       dQ   VP                   P#                  V4      G R j  x€L
 pV
P%                  V4       VP'                  \)        V4      4       KX   \        V4      '       g   V
P+                  4        R R R 4      GR j  x€L
  R #  EL& Lõ  \        \        3 d    R p	 Lëi ; i Lƒ  \        T4      '       g   T
P+                  4        i i ; i LM  + GR j  x€L 
 '       g   i     R # ; i5i)Nzcontent-lengthÚwbT)r   r   rm   rn   ro   rS   rp   rA   Úintrr   Ú
ValueErrorÚKeyErrorÚset_sizerq   r   ÚopenÚcontentr�   ÚwriteÚrelative_updater^   rG   )r/   ÚrpathÚlpathÚ
chunk_sizeÚcallbackr   r‡   rL   rˆ   ri   ÚoutfileÚchunks   &&&&&,      r   Ú	_get_fileÚHTTPFileSystem._get_fileý   sp  é € ð �[‰[×ÑÓˆØ
�	‰	�&ÔÜ�‰�UÔØ×(Ñ(Ó*×*ˆØ—;’;˜tŸ™¨uÓ5Ñ<¸×<×<Ò<ÀðÜ˜1Ÿ9™9Ð%5Õ6Ó7�ð ×Ñ˜dÔ#Ø×,Ñ,¨QÔ6Ü˜%× Ò Ø‘ä˜u dÓ+�ð$Ø�ßØ"#§)¡)§.¡.°Ó"<×<�EØ—M‘M %Ô(Ø×,Ñ,¬S°«ZÖ8ð ô
 " %×(Ò(Ø—M‘M”O÷+ =×<Ñ<ò +Ù<øô ¤Ð)ô Ø’ðúñ =øô " %×(Ò(Ø—M‘M•Oð )ú÷) =×<×<Ó<üsµ   ‚AG"ÁE<Á2G"Â	E?Â
G"ÂGÂFÂ+AGÃ.	FÃ8FÄFÄ1FÅ	!GÅ*G"Å5GÅ6G"Å?G"ÆFÆGÆFÆGÆFÆ$G Ç GÇG"ÇG	ÇGÇ
G	ÇG	Ç	G"ÚpostÚ	overwritec              ‹  ó  aaa"  € VR 8w  d   \        R4      hVVV3R lpV P                  P                  4       p	V	P                  V4       V P	                  4       G Rj  x€L
 p
VP                  4       pVR9  d   \        RV: 24      h\        W¥4      pV! V P                  V4      3RV! 4       /V	B ;_uu_4       GRj  x€L
 pV P                  WÂ4       RRR4      GRj  x€L
  R#  Lˆ L) L
  + GRj  x€L 
 '       g   i     R# ; i5i)rµ   zExclusive writec            	     ó  <"  € \        S\        P                  4      '       d   \        S4      p R pM\	        SR4      p RpT ;_uu_ 4       pV'       d4   SP                  VP                  ^ ^4      4       VP                  ^ 4       MSP                  \        VRR4      4       VP                  S4      pV'       d3   V5x € SP                  \        V4      4       VP                  S4      pK:   RRR4       R#   + '       g   i     R# ; i5i)FÚrbTri   N)rz   ÚioÚIOBaser   r¨   r§   ÚseekrJ   r�   r«   r^   )ÚcontextÚuse_seekÚfr±   r¯   r®   r­   s       €€€r   Ú
gen_chunksÚ,HTTPFileSystem._put_file.<locals>.gen_chunks(  sÃ   øé € ô ˜%¤§¡×+Ò+Ü% eÓ,�Ø ‘ä˜u dÓ+�Ø�ç‘˜AßØ×%Ñ% a§f¡f¨Q°£lÔ3Ø—F‘F˜1•Ià×%Ñ%¤g¨a°¸Ó&>Ô?àŸ™˜zÓ*�ßØ“KØ×,Ñ,¬S°«ZÔ8ØŸF™F :Ó.’Eð ÷ ——’üs%   ƒADÁ
A0C8Â;2C8Ã.
DÃ8D		Ä	DNz.method has to be either 'post' or 'put', not: Údata)r´   Úput)
rI   r   r   rm   rS   Úlowerr¥   rJ   rA   rq   )r/   r­   r¬   r®   r¯   ÚmethodÚmoder   r¿   r‡   rL   ÚmethÚresps   &f&ff&&,     r   Ú	_put_fileÚHTTPFileSystem._put_file  sÛ   úé € ð �;ÔÜ%Ð&7Ó8Ð8÷	/ð. �[‰[×ÑÓˆØ
�	‰	�&ÔØ×(Ñ(Ó*×*ˆà—‘“ˆØ˜Ô(ÜØ@ÀÁ
ÐKóð ô �wÓ'ˆÙ˜Ÿ™¨Ó.ÑH±Z³\ÐHÀR×H×HÒHÈDØ×,Ñ,¨TÔ9÷ I×HÑHñ +÷ I×H×HÕHüsa   …AD
ÁC'ÁA D
Â?C)Ã D
ÃC-ÃD
Ã C+Ã!D
Ã)D
Ã+D
Ã-D	Ã3C6Ã4
D	Ã?D	Ä	D
c              ‹  óX  "  € V P                   P                  4       pVP                  V4        \        P	                  V4       V P                  4       G R j  x€L
 pVP                  ! V P                  V4      3/ VB G R j  x€L
 pT;_uu_4       GR j  x€L
  V'       d   V P                  Wa4       VP                  R8  uuR R R 4      GR j  x€L
  #  L{ LS LB L  + GR j  x€L 
 '       g   i     R # ; i  \         d     R# \        P                   d    T'       d   h  R# i ; i5i)Ni�  F)r   r   rm   rn   ro   rS   rp   rA   rq   r•   r–   r   ÚClientError)r/   rW   Ústrictr   r‡   rL   rˆ   s   &&&,   r   Ú_existsÚHTTPFileSystem._existsM  sË   é € Ø�[‰[×ÑÓˆØ
�	‰	�&Ôð	Ü�L‰L˜ÔØ ×,Ñ,Ó.×.ˆGØ—k’k $§/¡/°$Ó"7Ñ>¸2Ñ>×>ˆAß—q’qßØ×4Ñ4°QÔ=Ø—x‘x #‘~÷ —q’qñ /Ù>ß—q—q•qûô !ô 	ÚÜ×"Ñ"ô 	ßØÚð	üs¾   ‚,D*¯(C8 ÁCÁ)C8 ÂCÂC8 ÂCÂC8 Â(CÃ C8 ÃCÃC8 ÃD*ÃC8 ÃC8 ÃC8 ÃC8 ÃC5	Ã!C$Ã"
C5	Ã-C5	Ã/C8 Ã3D*Ã5C8 Ã8D'ÄD*ÄD'ÄD'Ä"D'Ä#D*Ä&D'Ä'D*c              ‹  óD   "  € V P                   ! V3/ VB G R j  x€L
 #  L5i©N)rÍ   )r/   rW   r   s   &&,r   Ú_isfileÚHTTPFileSystem._isfile_  s   é € Ø—\’\ $Ñ1¨&Ñ1×1Ð1Ñ1ùs   ‚ ™š c                ó–  € VR8w  d   \         hVe   TMV P                  pV P                  P                  4       p	V P                  V	R&   V	P                  V4       / p
T;'       g4    V
P                  V P                  ! V3/ VB 4      ;'       g
    V
R,          p\        V P                  V P                  4      pV'       dn   V'       df   V
P                  RR4      '       dN   \        V V3RTRTRTRTR	T;'       g    V P                  R
T;'       g    V P                  RV P                  /V	B # \        V V3RVRV P                  RV/V	B # )aS  Make a file-like object

Parameters
----------
path: str
    Full URL with protocol
mode: string
    must be "rb"
block_size: int or None
    Bytes to download in one request; use instance value if None. If
    zero, will return a streaming Requests file-like instance.
kwargs: key-value
    Any other parameters, passed to requests calls
r¸   r   ri   ÚpartialTrL   r&   rÅ   r)   r*   r   )rI   r&   r   r   r   rm   Úinfor   r   rS   rp   ÚHTTPFiler)   r*   ÚHTTPStreamFile)r/   rW   rÅ   r&   Ú
autocommitr)   r*   ri   r   r‡   rÕ   rL   s   &&&&&&&&,   r   Ú_openÚHTTPFileSystem._openb  sq  € ð2 �4Œ<Ü%Ð%Ø#-Ò#9‘Z¸t¿¹ˆ
Ø�[‰[×ÑÓˆØ!×.Ñ.ˆˆ>ÑØ
�	‰	�&ÔØˆØ×MÐM�t—{‘{ 4§9¢9¨TÑ#<°VÑ#<Ó=×MÐMÀÀfÅˆÜ�t—y‘y $×"2Ñ"2Ó3ˆßŸ$ 4§8¡8¨I°t×#<Ò#<ÜØØñð  ðð &ð	ð
 ðð ðð &×8Ð8¨¯©ðð ,×AÐA¨t×/AÑ/Aðð —Y‘Yðð ñð ô "ØØñð ðð —Y‘Yð	ð
  ðð ñð r6   c           	   ‹  óì   "  € V P                  4       G R j  x€L
 pVf$    V P                  ! V3/ VB G R j  x€L
 R,          p\        V V3RV P                  RVRV/VB #  LH L*  \         d     L.i ; i5i)Nri   r   rL   )rS   Ú_infor–   ÚAsyncStreamFiler   )r/   rW   rÅ   ri   r   rL   s   &&&&, r   Ú
open_asyncÚHTTPFileSystem.open_async›  s—   é € Ø×(Ñ(Ó*×*ˆØŠ<ðØ"Ÿjšj¨Ñ8°Ñ8×8¸&ÕA�ô ØØñ
ð —‘ð
ð ð	
ð
 ð
ð ñ
ð 	
ñ +ñ 9øÜ$ô ÙðüsB   ‚A4–A—A4 A# ¶A!·A# ÁA4Á!A# Á#A1Á.A4Á0A1Á1A4c                óB   € \        WP                  V P                  4      # )z;Unique identifier; assume HTTP files are static, unchanging)r   r   Úprotocolr?   s   &&r   ÚukeyÚHTTPFileSystem.ukey«  s   € ä˜Ÿ[™[¨$¯-©-Ó8Ð8r6   c           
   ‹  ó¦  "  € / pV P                  4       G Rj  x€L
 pR F[  p TP                  \        V P                  V4      3RVRV/V P                  BVB G Rj  x€L
 4       VP                  R4      e    MK]  	  RVRR/VCR	R
/C#  Lq L/  \         d6   pTR8X  d   \        T4      Th\        P                  RTR7        Rp?Kª  Rp?ii ; i5i)a  Get info of URL

Tries to access location via HEAD, and then GET methods, but does
not fetch the data.

It is possible that the server does not supply any size information, in
which case size will be given as None (and certain operations on the
corresponding file will not work).
Nrp   r1   rL   ri   r\   )Úexc_inforh   rj   rl   )Úheadrp   )
rS   rm   Ú
_file_inforA   r   rp   Ú	Exceptionr–   rn   ro   )r/   r@   r   rÕ   rL   ÚpolicyÚexcs   &&,    r   rÜ   ÚHTTPFileSystem._info¯  só   é € ð ˆØ×(Ñ(Ó*×*ˆã%ˆFð/Ø—‘Ü$ØŸ™¨Ó,ñà$*ðð !(ðð Ÿ+™+ð	ð
 !ñ÷ ôð —8‘8˜FÓ#Ò/Ùñ 0ñ &ð& ˜˜V TÐB¨TÐB°6¸6ÑBÐBñ+ +ñ
øô ô /Ø˜U”?ä+¨CÓ0°cÐ9Ü—‘˜R¨#�×.Ò.ûð	/üsJ   ‚C˜B
™	C£9BÁB
ÁBÁ8CÂBÂCÂ*C	ÃCÃ	CÃCc           	   ‹  óü  "  € Ve   V^8  d   \        R4      h^ RIpVP                  R4      pV P                  V4      pT;'       g    VP                  R4      pVP	                  R4      ^ 8¼  d   VP	                  R4      M
\        V4      pVP	                  R4      ^ 8¼  d   VP	                  R4      M
\        V4      p\        Wx4      p	VP                  RR4      p
\        V4      '       gU   V P                  ! V3/ VB G Rj  x€L
 '       d(   V
'       g   V.# YP                  ! V3/ VB G Rj  x€L
 /# V
'       g   . # / # RVRV	 9   dC   VRV	 P                  R4      p	VRV	^,            pW^,           R P                  R4      ^,           pM#RpW^,           R P                  R4      ^,           pR	V9   dB   Ve<   VP	                  R	4      pWR P                  R4      ^,           pWÎ,
          V,           pMRpV P                  ! V3R
VRRRR/VB G Rj  x€L
 p\        Y'       d   RMR,           4      pVP                  ! V4      p\!        VP#                  4       4       UUu/ uFo  w  ppVP%                  VP'                  R4      4      '       g   K.  V'       g7   VR,          R8X  d)   VP                  R4      '       d   VP'                  R4      MTVbKq  	  pppV
'       d   V# \)        V4      #  ELì ELÃ Làu uppi 5i)zÝ
Find files by glob-matching.

This implementation is idntical to the one in AbstractFileSystem,
but "?" is not considered as a character for globbing, because it is
so common in URLs, often identifying the "query" part.
Nzmaxdepth must be at least 1r   Ú*Ú[rg   Fr\   z**ÚmaxdepthÚwithdirsTrj   rk   )z/**z/*)r¥   Úrer„   rX   Úfindr^   Úminr.   Ú	has_magicrÍ   rÜ   ÚrindexÚcountÚ_findr   Úcompiler†   ÚitemsÚmatchr   Úlist)r/   rW   rï   r   rñ   Úends_with_slashÚappend_slash_to_dirnameÚidx_starÚ	idx_braceÚmin_idxrg   ÚrootÚdepthÚidx_double_starsÚdepth_double_starsÚallpathsÚpatternÚprÕ   rŒ   s   &&&,                r   Ú_globÚHTTPFileSystem._globÑ  sÇ  é € ð Ò H¨q¤LÜÐ:Ó;Ð;ÛàŸ-™-¨Ó,ˆØ×#Ñ# DÓ)ˆØ"1×"QÐ"Q°T·]±]À=Ó5QÐØ%)§Y¡Y¨s£^°qÔ%8�4—9‘9˜S”>¼cÀ$»iˆØ&*§i¡i°£n¸Ô&9�D—I‘I˜c”N¼sÀ4»yˆ	ä�hÓ*ˆà—‘˜H eÓ,ˆä˜�ŠØ—\’\ $Ñ1¨&Ñ1×1Ö1ßØ ˜6�Mà ¯
ª
°4Ñ(B¸6Ñ(B×"BÐCÐCçØ�Ià�IØ�D˜˜'�NÔ"Ø˜8˜G�n×+Ñ+¨CÓ0ˆGØ˜˜' A�+Ð&ˆDØ 1�˜Ð'×-Ñ-¨cÓ2°QÕ6‰EàˆDØ 1�˜Ð'×-Ñ-¨cÓ2°QÕ6ˆEà�4Œ<ØÒ#Ø#'§9¡9¨T£?Ð Ø%)Ð*;Ð%<×%BÑ%BÀ3Ó%GÈ!Õ%KÐ"ØÕ2°XÕ=‘à�àŸšØñ
Ø ð
Ø+/ð
Ø8<ð
Ø@Fñ
÷ 
ˆô ! ¶©ÀRÕ!HÓIˆØ—*’*˜WÓ%ˆô " (§.¡.Ó"2Ô3ô

ñ 4‘��4Ø�}‰}˜QŸX™X c›]×+ôß.Ø˜•L KÔ/Ø—J‘J˜s—O’Oð —‘˜”ð Øòñ 4ð 	ñ 

÷ ØˆJä˜“9Ðòa 2ò #Cñ,
ùó

ùsu   ‚AK<ÁB:K<ÄK.Ä	K<ÄK<ÄK<Ä.K1Ä/K<Ä<CK<ÈK4ÈAK<É!+K6ÊK6Ê$K6Ê>K6ËK<Ë1K<Ë4K<Ë6K<c              ƒ  ó„   "  €  \        V P                  V4      G R j  x€L
 4      #  L  \        \        3 d     R# i ; i5i)NF)Úboolr’   r–   r¥   )r/   rW   s   &&r   Ú_isdirÚHTTPFileSystem._isdir  s9   é € ð	Ü˜dŸh™h t›n×,Ó-Ð-Ñ,øÜ!¤:Ð.ô 	Úð	üs,   ‚A „( �&ž( ¥A ¦( ¨=¹A ¼=½A c              ‹  ó¦  "  € V P                  V4      pVP                  R/ 4      p\        \        V4      4      VR&   V P	                  4       G Rj  x€L
 pVP
                  ! V P                  V4      3RVRV/VB ;_uu_4       GRj  x€L
 pVP                  4        RRR4      GRj  x€L
  R#  L] L( L
  + GRj  x€L 
 '       g   i     R# ; i5i)a(  
Write bytes to a remote file over HTTP.

Parameters
----------
path : str
    Target URL where the data should be written
value : bytes
    Data to be written
mode : str
    How to write to the file - 'overwrite' or 'append'
**kwargs : dict
    Additional parameters to pass to the HTTP request
rr   úContent-LengthNrÁ   )rX   r.   Ústrr^   rS   rÂ   rA   r—   )	r/   rW   ÚvaluerÅ   r   r@   rr   rL   rˆ   s	   &&&&,    r   Ú
_pipe_fileÚHTTPFileSystem._pipe_file!  s¼   é € ð ×"Ñ" 4Ó(ˆØ—*‘*˜Y¨Ó+ˆÜ$'¬¨E«
£OˆÐ Ñ!à×(Ñ(Ó*×*ˆà—;’;Ø�O‰O˜CÓ ñ
Ø',ð
Ø6=ð
ØAG÷
÷ 
ò 
àØ×ÑÔ ÷
÷ 
ñ 
ñ +÷
÷ 
÷ 
õ 
üs`   ‚ACÁB.Á6CÂB0ÂCÂB4ÂCÂ'B2Â(CÂ0CÂ2CÂ4C	Â:B=Â;
C	ÃC	Ã	C)r-   r&   r*   r)   r+   r,   r   r   r(   r'   r    )r8   rf   )T)NNi  P )F)r¸   NNNNN)r¸   NrÐ   )rµ   )'Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rá   Úsepr   r%   Úpropertyr:   rA   ÚstaticmethodrN   rS   ÚclassmethodrX   r]   r…   r’   r   Úlsrq   r    r	   r²   rÈ   rÍ   rÑ   rÙ   rÞ   râ   rÜ   r  r  r  Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r4   Ú__classdict__s   @@r   r   r   $   s  ù‡ € ñ
ð !€HØ
€Cð ØØØØØØØØØØ÷?&ðB ñó ðò3ð ñ
ó ð
òð ñó ðð ôó ðô:ôxñ 
�cÓ	€Bò$ôð& (1Ð;Kô$ðD Ø!ØØô0:ôdò$2ô7ôr
ò 9ò CôDGòR÷!ô !r6   r   c                   ó|   a a€ ] tR tRt oRtR	V 3R lltR
V 3R lltR t]! ]4      t	R t
R t]! ]4      tRtVtV ;t# )rÖ   i<  aC  
A file-like object pointing to a remote HTTP(S) resource

Supports only reading, with read-ahead of a predetermined block-size.

In the case that the server does not supply the filesize, only reading of
the complete file in one go is supported.

Parameters
----------
url: str
    Full URL of the remote resource, including the protocol
session: aiohttp.ClientSession or None
    All calls will be made within this session, to avoid restarting
    connections where the server allows this
block_size: int or None
    The amount of read-ahead to do, in bytes. Default is 5MB, or the value
    configured for the FileSystem creating this file
size: None or int
    If given, this is the size of the file in bytes, and we don't attempt
    to call the server to find the value.
kwargs: all other key-values are passed to requests calls.
c                ó®   <€ VR 8w  d   \        R4      hW n        W�n        W n        W0n        RVRVRR/V n        \        SV `  ! RRVRVRVR	VR
VRV/VB  R# )r¸   zFile mode not supportedrh   ri   rj   rl   ÚfsrW   rÅ   r&   r)   r*   Nr   )rI   r   r   r@   rL   Údetailsr$   r%   )r/   r%  r@   rL   r&   rÅ   r)   r*   ri   r   r   r   r4   s   &&&&&&&&&&&,€r   r%   ÚHTTPFile.__init__U  s�   ø€ ð �4Œ<Ü%Ð&?Ó@Ð@Ø(ÔØŒ	ØŒØŒØ  V¨T°6¸6ÐBˆŒÜ‰Òñ 	
Øð	
àð	
ð ð	
ð "ð		
ð
 "ð	
ð (ð	
ð ô	
r6   c                ó^  <€ V^ 8  dK   V P                   ^ 8X  d:   V P                  e   V P                  V P                  8:  g   V P                  4        V P                  f   V^ 8  d   V P                  4        M'\	        V P                  V P                   ,
          V4      p\
        SV `  V4      # )zýRead bytes from file

Parameters
----------
length: int
    Read up to this many bytes. If negative, read all content to end of
    file. If the server has not supplied the filesize, attempting to
    read only part of the data will raise a ValueError.
)Úlocri   Ú	blocksizeÚ
_fetch_allró   r$   r�   )r/   Úlengthr4   s   &&€r   r�   ÚHTTPFile.readt  s}   ø€ ð �aŒZ˜DŸH™H¨œMà—Y‘YÒ*¨t¯y©y¸D¿N¹NÔ/Jà�O‰OÔØ�9‰9ÒØ˜ŒzØ—‘Ô!øä˜Ÿ™ T§X¡XÕ-¨vÓ6ˆFÜ‰w‰|˜FÓ#Ð#r6   c           	   ƒ  ó`  "  € \         P                  RV  24       \        V P                  \        4      '       gÍ   V P
                  P                  ! V P                  P                  V P                  4      3/ V P                  B G Rj  x€L
 pT;_uu_4       GRj  x€L
  VP                  4        VP                  4       G Rj  x€L
 p\	        \        V4      RRVR7      V n        \        V4      V n        RRR4      GRj  x€L
  R# R#  L€ Lo LI L  + GRj  x€L 
 '       g   i     R# ; i5i)z�Read whole file in one shot, without caching

This is only called when position is still at zero,
and read() is called without a byte-count.
zFetch all for N)ri   Úfetcherr*  rÁ   )rn   ro   rz   Úcacher   rL   rp   r%  rA   r@   r   r—   r�   r^   ri   )r/   rˆ   rŒ   s   &  r   Úasync_fetch_allÚHTTPFile.async_fetch_all‹  sÆ   é € ô 	�‰�~ d VÐ,Ô-Ü˜$Ÿ*™*¤h×/Ò/Ø—l‘l×&Ò& t§w¡w×'9Ñ'9¸$¿(¹(Ó'CÑSÀtÇ{Á{ÑS×SˆAß—q’qØ×"Ñ"Ô$ØŸF™F›H—n�Ü%Ü˜S›¨4¸4Àcô�”
ô   ›H�”	÷ —q‘qñ 0ÙSÙá$÷ —q—q“qüsr   ‚BD.ÂD	Â	D.ÂDÂD.Â$DÃDÃ1DÃ5D.Ä DÄ	D.ÄD.ÄDÄD.ÄD+	ÄDÄ
D+	Ä#D+	Ä%	D.c                óH  € VP                  RR4      p\        P                  ! RV4      pV'       g   R# V^,          R8X  d   R;rEM3V^,          P                  R4       Uu. uF  p\	        V4      NK  	  upw  rEV^,          R8X  d   RM\	        V^,          4      pWEV3# u upi )zParse the Content-Range headerúContent-Ranger\   zbytes (\d+-\d+|\*)/(\d+|\*)Nrí   Ú-)NNN)rp   rñ   rú   Úsplitr¤   )r/   rr   ÚsÚmrž   rŸ   ÚxÚtotals   &&      r   Ú_parse_content_rangeÚHTTPFile._parse_content_rangež  s�   € à�K‰K˜¨Ó,ˆÜ�HŠHÐ3°QÓ7ˆßØ#Ð#àˆQ�4�3Œ;ØÐˆE�Cà*+¨A­$¯*©*°S¬/Ó:©/ Qœ#˜až&©/Ñ:‰JˆEØ˜!� œ‘¬¨Q¨q­T«ˆØ˜5Ð Ð ùò ;s   Á Bc           	   ƒ  ó*  "  € \         P                  RV  RV RV 24       V P                  P                  4       pVP	                  R/ 4      P                  4       pRV RV^,
           2VR&   \         P                  V P
                   RVR,           24       V P                  P                  ! V P                  P                  V P
                  4      3RV/VB G Rj  x€L
 pT;_uu_4       GRj  x€L
  VP                  R	8X  d    RRR4      GRj  x€L
  R
# VP                  4        VP                  ^Î8H  ;'       gc    V P                  VP                  4      ^ ,          V8H  ;'       g6    \        VP                  P                  RV^,           4      4      W!,
          8*  pV'       d   VP                  4       G Rj  x€L
 pM�V^ 8”  d   \!        R4      h^ p. p VP"                  P                  R4      G Rj  x€L
 p	V	'       d4   VP%                  V	4       V\'        V	4      ,          pW‚V,
          8”  d   MK_   R
P)                  V4      RW!,
           pTuuRRR4      GRj  x€L
  #  ELŠ ELz EL[ L² Ly L  + GRj  x€L 
 '       g   i     R# ; i5i)a  Download a block of data

The expectation is that the server returns only the requested bytes,
with HTTP code 206. If this is not the case, we first check the headers,
and then stream the output - if the data size is bigger than we
requested, an exception is raised.
zFetch range for z: r5  rr   úbytes=r›   z : Ni   r6   r  z¨The HTTP server doesn't appear to support range requests. Only reading this file from the beginning is supported. Open with block_size=0 for a streaming file interface.i   )rn   ro   r   r   r.   r@   rL   rp   r%  rA   r•   r—   r;  rr   r¤   r�   r¥   r©   Úappendr^   r‚   )
r/   rž   rŸ   r   rr   rˆ   Úresponse_is_rangerŒ   Úclr±   s
   &&&       r   Úasync_fetch_rangeÚHTTPFile.async_fetch_range¬  s*  é € ô 	�‰Ð'¨ v¨R°¨w°a¸°uÐ=Ô>Ø—‘×!Ñ!Ó#ˆØ—*‘*˜Y¨Ó+×0Ñ0Ó2ˆØ# E 7¨!¨C°!­G¨9Ð5ˆ�ÑÜ�‰˜Ÿ™�z  W¨WÕ%5Ð$6Ð7Ô8Ø—,‘,×"Ò"Ø�G‰G×Ñ˜tŸx™xÓ(ñ
Ø29ð
Ø=Cñ
÷ 
ˆ÷ —1’1Ø�x‰x˜3Œà÷ —1‘1ð ×ÑÔ ð —‘˜C‘÷ Pð PØ×,Ñ,¨Q¯Y©YÓ7¸Õ:¸eÑC÷Pð Pä�q—y‘y—}‘}Ð%5°s¸QµwÓ?Ó@ÀCÅKÑOð ÷ !àŸF™F›H—n‘Ø˜”Ü ðMóð ð �Ø�ØØ"#§)¡)§.¡.°Ó"7×7�EçØŸ
™
 5Ô)Øœc %›jÕ(˜Ø e¥Ô+Ø!ñ ,ð Ø—h‘h˜s“m M c¥kÐ2�Ø÷S —1’1ò
õ ñ$ %ñ 8÷? —1—1“1üs»   ‚CJÃI'ÃJÃ0I*Ã1JÃ4I6ÄJÄI-ÄJÄ%I6Ä?,I6Å,=I6Æ*I6Æ=I0Æ>:I6Ç8I2Ç9I6ÈAI6ÉJÉ!I4É"JÉ*JÉ-JÉ0I6É2I6É4JÉ6J	É<I?É=
J	ÊJ	Ê
	J)r   r0  r&  r   rL   ri   r@   )NNr¸   r   NNNF©éÿÿÿÿ)r  r  r  r  r  r%   r�   r1  r   r+  r;  rB  Ú_fetch_ranger  r  r   r!  s   @@r   rÖ   rÖ   <  s?   ù‡ € ñ÷0
÷>$ò.%ñ" ˜oÓ.€Jò!ò9ñv  Ð 1Ó2‡L€Lr6   rÖ   z([*[])c                 ó4   € \         P                  V 4      pVR J# rÐ   )Úmagic_checkÚsearch)r7  rú   s   & r   rô   rô   í  s   € Ü×Ñ˜qÓ!€EØ˜ÐÐr6   c                   ól   a a€ ] tR tRt oRV 3R lltR	R ltR
R lt]! ]4      tR t	V 3R lt
RtVtV ;t# )r×   iò  c                ó.  <a aa€ SP                  R R4      S n        SS n        VS n        VS n        VR8w  d   \
        hRSRR/S n        \        SS `   ! RRVRSRVR	R
/SB  VV V3R lp\        S P                  V4      S n
        VP                  S n        R# )r   Fr¸   rh   ri   Nr%  rW   rÅ   r)   Únonec               “   óä   <"  € SP                   P                  ! SP                  P                  S4      3/ SB P	                  4       G R j  x€L
 p SP                  P                  V S4       V #  L"5irÐ   )rL   rp   r%  rA   Ú
__aenter__rq   )rˆ   r   r/   r@   s    €€€r   ÚcorÚ$HTTPStreamFile.__init__.<locals>.corý  sY   øé € Ø—l‘l×&Ò& t§w¡w×'9Ñ'9¸#Ó'>ÑIÀ&ÑI×TÑTÓV×VˆAØ�G‰G×/Ñ/°°3Ô7ØˆHñ Wùs   ƒAA0ÁA.Á#A0r   )r.   r   r@   r   rL   r¥   r&  r$   r%   r   rˆ   )	r/   r%  r@   rÅ   r   rL   r   rO  r4   s	   f&f&&&l €r   r%   ÚHTTPStreamFile.__init__ó  s�   û€ Ø"ŸJ™J ~°uÓ=ˆÔØˆŒØˆŒ	ØˆŒØ�4Œ<ÜÐØ  V¨TÐ2ˆŒÜ‰ÒÑQ˜BÐQ SÐQ¨tÐQÀÐQÈ&ÒQ÷	ô
 �d—i‘i Ó%ˆŒØ—G‘GˆŽ	r6   c                ój   € V^ 8X  d
   V^8X  d   R# WP                   8X  d
   V^ 8X  d   R# \        R4      h)r   NzCannot seek streaming HTTP file)r)  r¥   )r/   r)  Úwhences   &&&r   r»   ÚHTTPStreamFile.seek  s0   € Ø�!Œ8˜ !œÙØ—(‘(Œ?˜v¨œ{ÙÜÐ:Ó;Ð;r6   c              ƒ  ó°   "  € V P                   P                  P                  V4      G R j  x€L
 pV ;P                  \	        V4      ,          un        V#  L(5irÐ   )rˆ   r©   r�   r)  r^   )r/   ÚnumrŒ   s   && r   Ú_readÚHTTPStreamFile._read  s<   é € Ø—F‘F—N‘N×'Ñ'¨Ó,×,ˆØ�Š”C˜“HÕ�Øˆ
ñ -ùs   ‚)A«A¬)Ac              ƒ  óB   "  € V P                   P                  4        R # 5irÐ   )rˆ   rG   r9   s   &r   rK   ÚHTTPStreamFile._close  s   é € Ø�‰�‰Žùs   ‚c                ó‚   <€ \         P                  ! V P                  4       V P                  4       \        SV `  4        R # rÐ   )ÚasyncioÚrun_coroutine_threadsaferK   r   r$   rG   ©r/   r4   s   &€r   rG   ÚHTTPStreamFile.close  s&   ø€ Ü×(Ò(¨¯©«¸¿	¹	ÔBÜ‰‰Žr6   )r   r&  r   rˆ   rL   r@   )r¸   NN)r   rD  )r  r  r  r  r%   r»   rW  r   r�   rK   rG   r  r  r   r!  s   @@r   r×   r×   ò  s/   ù‡ € ÷ô$<ôñ
 ˜Ó€Dò÷õ r6   r×   c                   óL   a a€ ] tR tRt oRV 3R lltRR ltV 3R ltRtVtV ;t	# )rÝ   i  c                óš   <€ W n         WPn        R V n        VR8w  d   \        hRVRR /V n        Wpn        \        SV `  WVRR7       W`n        R # )Nr¸   rh   ri   rL  )r%  rW   rÅ   r)   )	r@   rL   rˆ   r¥   r&  r   r$   r%   ri   )	r/   r%  r@   rÅ   r   rL   ri   r   r4   s	   &&&&&&&,€r   r%   ÚAsyncStreamFile.__init__  sQ   ø€ ð ŒØŒØˆŒØ�4Œ<ÜÐØ  V¨TÐ2ˆŒØŒÜ‰Ñ˜B¨tÀÐÔGØŽ	r6   c              ƒ  óæ  "  € V P                   fŒ   V P                  P                  ! V P                  P	                  V P
                  4      3/ V P                  B P                  4       G R j  x€L
 pV P                  P                  W P
                  4       W n         V P                   P                  P                  V4      G R j  x€L
 pV ;P                  \        V4      ,          un        V#  L€ L*5irÐ   )rˆ   rL   rp   r%  rA   r@   r   rN  rq   r©   r�   r)  r^   )r/   rV  rˆ   rŒ   s   &&  r   r�   ÚAsyncStreamFile.read)  s©   é € Ø�6‰6Š>Ø—l‘l×&Ò&Ø—‘×"Ñ" 4§8¡8Ó,ñØ04·±ñç‰j‹l÷ˆAð �G‰G×/Ñ/°·8±8Ô<ØŒFØ—F‘F—N‘N×'Ñ'¨Ó,×,ˆØ�Š”C˜“HÕ�Øˆ
ññ
 -ùs%   ‚A*C1Á,C-Á-AC1ÃC/Ã)C1Ã/C1c              ƒ  óž   <"  € V P                   e"   V P                   P                  4        R V n         \        SV `  4       G R j  x€L
  R #  L5irÐ   )rˆ   rG   r$   r^  s   &€r   rG   ÚAsyncStreamFile.close4  s3   øé € Ø�6‰6ÒØ�F‰F�L‰LŒNØˆDŒFÜ‰g‰m‹o×Ôùs   ƒAAÁAÁA)r&  r   rˆ   rL   ri   r@   )r¸   NNNrD  )
r  r  r  r  r%   r�   rG   r  r  r   r!  s   @@r   rÝ   rÝ     s   ù‡ € ÷ô	÷õ r6   rÝ   c              ‹   ód  "  € VP                  4       pVP                  R / 4      P                  4       pRV RV^,
           2VR&   V P                  ! V3R V/VB G Rj  x€L
 pVP                  4        T;_uu_4       GRj  x€L
  VP	                  4       G Rj  x€L
 pRRR4      GRj  x€L
  V'       dB   \        VR4      ;_uu_ 4       p	V	P                  V4       V	P                  X4       RRR4       R# X#  Lš Ly Lc LU  + GRj  x€L 
 '       g   i     Ll; i  + '       g   i     R# ; i5i)rr   r>  r5  r›   Nzr+b)r   r.   rp   r—   r�   r¨   r»   rª   )
rL   r@   rž   rŸ   rl   r   rr   rˆ   rŒ   r¾   s
   &&&&&,    r   Ú	get_rangerh  ;  sß   é € à�[‰[‹]€FØ�j‰j˜ BÓ'×,Ñ,Ó.€GØ ˜w a¨¨a­ yÐ1€GˆGÑØ�kŠk˜#Ñ9 wÐ9°&Ñ9×9€AØ×ÑÔß�qŠqØ—F‘F“H�nˆ÷ �qçÜ�$˜×Ô !Ø�F‰F�5ŒMØ�G‰G�CŒL÷ Ñð ˆ
ñ 	:áÙ÷ �q�qŠqú÷ ×Ðüs�   ‚AD0ÁC8Á"D0Â C:ÂD0ÂD ÂC<ÂD ÂD0Â(C>Â)D0Â5D0Ã	#DÃ,D0Ã:D0Ã<D Ã>D0Ä D	ÄD	Ä
D	ÄD	ÄD0ÄD-	Ä'	D0c              ‹  óð  "  € \         P                  RV 4       VP                  4       pVP                  RR4      pVP	                  R/ 4      P                  4       pRVR&   WSR&   / pVR8X  d   VP
                  ! V 3RV/VB G Rj  x€L
 pM3VR	8X  d   VP                  ! V 3RV/VB G Rj  x€L
 pM\        R
V 24      hT;_uu_4       GRj  x€L
  VP                  4        RVP                  9   dJ   RVP                  9  g   VP                  R,          R9   d    \        VP                  R,          4      VR&   MFRVP                  9   d6   \        VP                  R,          P                  R4      ^,          4      VR&   RVP                  9   d-   VP                  R,          P                  R4      ^ ,          VR&   VP                  P	                  R4      R8X  d   RVR&   \        VP                  4      VR&   R F;  pVP                  P	                  V4      '       g   K&  VP                  V,          Wh&   K=  	  RRR4      GRj  x€L
  V#  ELÉ EL§ ELˆ L  + GRj  x€L 
 '       g   i     T# ; i5i)zÐCall HEAD on the server to get details about the file (size/checksum etc.)

Default operation is to explicitly allow redirects and use encoding
'identity' (no compression) to get the true size of the target.
zRetrieve file size for %sÚallow_redirectsTrr   ÚidentityzAccept-Encodingræ   Nrp   z)size_policy must be "head" or "get", got r  zContent-Encodingri   r4  r   rb   rc   r‰   zAccept-RangesrL  FrÔ   r@   )rk  r\   )ÚETagzContent-MD5ÚDigestzLast-Modified)rn   ro   r   r.   rp   ræ   Ú	TypeErrorr—   rr   r¤   r6  rs   r  r@   )	r@   rL   r1   r   Úarræ   rÕ   rˆ   Úchecksum_fields	   &&&,     r   rç   rç   L  s  é € ô ‡L�LÐ,¨cÔ2Ø�[‰[‹]€FØ	�‰Ð% tÓ	,€BØ�:‰:�i Ó$×)Ñ)Ó+€DØ(€DÐ	ÑØˆ9Ñà€DØ�fÔØ—,’,˜sÑA°BÐA¸&ÑA×A‰Ø	˜Ô	Ø—+’+˜cÑ@°2Ð@¸Ñ@×@‰äÐCÀKÀ=ÐQÓRÐRß�qŠqØ	×ÑÔà˜qŸy™yÔ(ð "¨¯©Ô2°a·i±iÐ@RÕ6Sð Xô 7ô  # 1§9¡9Ð-=Õ#>Ó?��V‘øØ §	¡	Ô)Ü˜qŸy™y¨Õ9×?Ñ?ÀÓDÀQÕGÓHˆD�‰Là˜QŸY™YÔ&Ø Ÿy™y¨Õ8×BÑBÀ3ÓGÈÕJˆD�Ñà�9‰9�=‰=˜Ó)¨VÔ3ð $ˆD�‰Oä˜!Ÿ%™%“jˆˆU‰ãPˆNØ�y‰y�}‰}˜^×,Ô,Ø'(§y¡y°Õ'@�Ó$ñ Q÷1 �qð8 €KòC Bâ@÷ �q�qŒqð8 €Küsy   ‚BI6ÂIÂ$I6Â*IÂ+!I6ÃIÃI6ÃEIÈ#IÈ<I6ÉIÉI6ÉI6ÉI6ÉI6ÉI3	ÉI"É 
I3	É+I3	É-	I6c              �   ó’   "  € Vf   \        4       G R j  x€L
 p\        V .VO5RV/VB G R j  x€L
 pVP                  R4      #  L. L5i)NrL   ri   )r   rç   rp   )r@   rL   Úargsr   rÕ   s   &&*, r   Ú
_file_sizers    sG   é € Ø‚Ü"›×$ˆÜ˜CÐB°4ÒB¨ÐB¸6ÑB×B€DØ�8‰8�FÓÐñ %ÙBùs   ‚A”A•A­A®AÁArÐ   )ræ   )-r\  r¹   Úloggingrñ   rQ   r   Úurllib.parser   r   r=   Úfsspec.asynr   r   r   r   Úfsspec.callbacksr	   Úfsspec.exceptionsr
   Úfsspec.specr   Úfsspec.utilsr   r   r   r   r   Úcachingr   rø   rw   ru   Ú	getLoggerrn   r   r   rÖ   rH  rô   r×   rÝ   rh  rç   rs  Ú	file_sizer   r6   r   Ú<module>r~     sß   ðÛ Û 	Û Û 	Û Ý Ý !ã Û ç VÓ VÝ -Ý ,Ý ,÷õ õ ð ‡Z‚ZÐMÓN€Ø‡j‚jÐEÓF€Ø	×	Ò	˜=Ó	)€ò+ôU!�_ô U!ôpk3Ð#ô k3ð\ �jŠj˜Ó"€òô
&Ð)ô &ôRÐ/ô ô@ô"0ôfñ ˜Ó$‚	r6   