Ë
    äš¾jÿ ã                   ó2  — U d dl Z d dlmZ d dlZd dlmZ d dlmZmZm	Z	m
Z
mZ d dlZd dlmZmZmZmZ d dlZd dlZd dlmZ d dlmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d d	l+m,Z, e%rd d
l-m.Z.m/Z/m0Z0m1Z1m2Z2 ejf                  dk\  rd dlm4Z4 nd dl5m4Z4 ejf                  dk\  rd dlm6Z6 nd dl5m6Z6 ejf                  dk  rd dlm7Z7 d dlm8Z9 d dlm:Z: d7d„Z8ngejf                  dd dk(  rd dlm:Z: d dlm;Z7 d dlm8Z8 nBejf                  dd dk(  rd dl<m:Z: d dl;Z7ddl=m8Z8 nejf                  dk\  rd dlm:Z: d dl;Z7ddl=m8Z8 d dl>m?Z? ddl@mAZA ddlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR e%rddlSmTZT ddlUmVZV 	 d7deded d!d"eWd#ef
d$„ZX G d%„ d&«      ZY eeY«      ZZee[eYf   e\d'<    e&d(«      Z] e&d)d!¬*«      Z^d+e[d#ee$e^   ge$e^   f   fd,„Z_ G d-„ d.e jÀ                  «      Za G d/„ d!ea¬0«      Zbd1ed#e[fd2„Zc G d3„ d4«      Zd G d5„ d6«      Zey)8é    N©Údefaultdict)Úcontextmanager)ÚBufferedRandomÚBufferedReaderÚBufferedWriterÚFileIOÚTextIOWrapper)ÚPathÚ	PosixPathÚPurePosixPathÚWindowsPath)Ú
MethodType)ÚBinaryIOÚLiteralÚoverloadÚAnyÚCallableÚ	ContainerÚIterableÚIOÚDictÚ	GeneratorÚListÚOptionalÚTupleÚTypeÚTYPE_CHECKINGÚTypeVarÚUnionÚcast)Úurlparse)Úwarn)ÚOpenBinaryModeÚOpenBinaryModeReadingÚOpenBinaryModeUpdatingÚOpenBinaryModeWritingÚOpenTextMode)é   é
   )Ú	TypeGuard)r)   é   )ÚSelf©r)   é   )Ú_posix_flavour)Ú_make_selector)Ú_PathParentsc                 ó,   — t        t        | «      |«      S ©N)Ú_make_selector_pathlibÚtuple)Úpattern_partsÚ_flavourÚcase_sensitives      ú`/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/cloudpathlib/cloudpath.pyr1   r1   A   s   € Ü%¤e¨MÓ&:¸HÓEÐEó    é   )Ú	posixpath©r)   é   é   )r)   é   )ÚFileCacheMode)Úanypath)ÚClientMismatchErrorÚCloudPathFileExistsErrorÚCloudPathFileNotFoundErrorÚCloudPathIsADirectoryErrorÚ CloudPathLocalPathTraversalErrorÚCloudPathNotADirectoryErrorÚCloudPathNotExistsErrorÚCloudPathNotImplementedErrorÚDirectoryNotEmptyErrorÚIncompleteImplementationErrorÚInvalidPrefixErrorÚMissingDependenciesErrorÚNoStatErrorÚOverwriteDirtyFileErrorÚOverwriteNewerCloudErrorÚOverwriteNewerLocalError)ÚClient©ÚCloudPathInfoÚ	candidateÚbaseÚ
cloud_pathÚ	CloudPathÚresolveÚreturnc           	      ó\  — |r3t        | «      j                  «       }t        |«      j                  «       }nPt        t        j                  j	                  | «      «      }t        t        j                  j	                  |«      «      }|j                  |«      st        d|› d|› d|› d�«      ‚| S )u‡  Guard against path traversal: cloud object keys are opaque strings and may contain ``..``
    segments (or, on Windows, ``\`` separators and drive letters), but cloudpathlib maps them onto
    local paths (the cache directory or a download destination) with plain path arithmetic. Confirm
    ``candidate`` stays within ``base``; raise :class:`CloudPathLocalPathTraversalError` if it
    escapes. Returns ``candidate`` unchanged when it is contained.

    When ``resolve`` is True (the default), both paths are resolved on the filesystem, which also
    follows symlinks â€” appropriate for user-supplied download destinations. When False, a purely
    lexical check (``os.path.normpath``) is used with no filesystem syscalls; this is used for the
    cache mapping, where cloudpathlib only ever writes file content and object keys therefore
    cannot introduce symlinks inside the base directory.
    zRefusing to map cloud path 'z.' to a local path outside its base directory 'z' (it would resolve to 'zh'). The object key contains path segments that escape the local cache directory or download destination.)r   r[   ÚosÚpathÚnormpathÚis_relative_torH   )rW   rX   rY   r[   Úcandidate_cmpÚbase_cmps         r:   Ú_ensure_local_path_within_baserd   o   s¤   € ñ Ü˜Y›×/Ñ/Ó1ˆÜ˜“:×%Ñ%Ó'‰äœRŸW™W×-Ñ-¨iÓ8Ó9ˆÜœŸ™×(Ñ(¨Ó.Ó/ˆØ×'Ñ'¨Ô1Ü.Ø*¨:¨,ð 7ØˆvÐ-¨m¨_ð =VðWó
ð 	
ð
 Ðr;   c                   ó†   — e Zd ZU eed<   dZeed<   ed   ed<   ed   ed<   dd
„Ze	ded   fd„«       Z
e	ded   fd„«       Zy	)ÚCloudImplementationÚnameTÚdependencies_loadedrT   Ú_client_classrZ   Ú_path_classr\   Nc                 óì   — ddg}|D �cg c]  }t        | d|› �«      �Œ|‘Œ }}|rt        d|› �«      ‚| j                  s0t        d| j                  j
                  › d| j                  › d�«      ‚y c c}w )NÚclient_classÚ
path_classÚ_z1Implementation is missing registered components: zMissing dependencies for z6. You can install them with 'pip install cloudpathlib[z]'.)ÚgetattrrM   rh   rO   ri   Ú__name__rg   )ÚselfÚexpectedÚclsÚmissings       r:   Úvalidate_completenessz)CloudImplementation.validate_completeness“   s™   € Ø" LÐ1ˆØ"*ÖO˜3¬g°d¸aÀ¸u¸IÓ.FÑ.N’3ÐOˆÐOÙÜ/ØCÀGÀ9ÐMóð ð ×'Ò'Ü*Ø+¨D×,>Ñ,>×,GÑ,GÐ+Hð I2Ø26·)±)°¸CðAóð ð (ùò Ps
   ‰A1žA1c                 ó:   — | j                  «        | j                  S r4   )ru   ri   ©rq   s    r:   rl   z CloudImplementation.client_class    s   € à×"Ñ"Ô$Ø×!Ñ!Ð!r;   c                 ó:   — | j                  «        | j                  S r4   )ru   rj   rw   s    r:   rm   zCloudImplementation.path_class¥   s   € à×"Ñ"Ô$Ø×ÑÐr;   ©r\   N)rp   Ú
__module__Ú__qualname__ÚstrÚ__annotations__rh   Úboolr   ru   Úpropertyrl   rm   © r;   r:   rf   rf   �   sk   … Ø
ƒIØ $Ð˜Ó$Ø˜‘>Ó!Ø�kÑ"Ó"óð ð"˜d 8™nò "ó ð"ð ð ˜D Ñ-ò  ó ñ r;   rf   Úimplementation_registryÚTÚ
CloudPathT)ÚboundÚkeyc                 óH   ‡ — dt         t           dt         t           fˆ fd„}|S )Nrs   r\   c                 óv   •— t        | t        «      st        d«      ‚| t        ‰   _        t        ‰   | _        | S )Nz/Only subclasses of CloudPath can be registered.)Ú
issubclassrZ   Ú	TypeErrorr�   rj   Ú_cloud_meta)rs   r…   s    €r:   Ú	decoratorz&register_path_class.<locals>.decorator³   s8   ø€ Ü˜#œyÔ)ÜÐMÓNÐNØ36Ô Ñ$Ô0Ü1°#Ñ6ˆŒØˆ
r;   )r   rƒ   )r…   r‹   s   ` r:   Úregister_path_classrŒ   ²   s(   ø€ ð”tœJÑ'ð ¬D´Ñ,<õ ð Ðr;   c                   óÒ   — e Zd Zedee   dedededef
d„«       Zedee   de	e
df   dededef
d„«       Zdee   de	e
ef   dedede	edef   f
d	„Zd
e
deedf   dee
ef   ddfd„Zy)ÚCloudPathMetars   rY   ÚargsÚkwargsr\   c                  ó   — y r4   r€   ©rs   rY   r�   r�   s       r:   Ú__call__zCloudPathMeta.__call__¾   s   € ð r;   rZ   c                  ó   — y r4   r€   r’   s       r:   r“   zCloudPathMeta.__call__Ã   s   € ð r;   c                 óN  — t        | t        «      st        dt        j                  › d�«      ‚| t        u r¾t        j                  «       D ]T  }|j                  }|€Œ|j                  |d¬«      sŒ&t        j                  |«      } |j                  ||g|¢­i |¤Ž |c S  t        j                  «       D �cg c]$  }|j                  �|j                  j                  ‘Œ& }}t        d|› d|› d�«      ‚t        j                  | «      } | j                  ||g|¢­i |¤Ž |S c c}w )NzOnly subclasses of z) can be instantiated from its meta class.F©Úraise_on_errorúPath z$ does not begin with a known prefix ú.)rˆ   rZ   r‰   rp   r�   Úvaluesrj   Úis_valid_cloudpathÚobjectÚ__new__Ú__init__Úcloud_prefixrN   )	rs   rY   r�   r�   Úimplementationrm   Únew_objÚimplÚvalid_prefixess	            r:   r“   zCloudPathMeta.__call__È   sC  € ô ˜#œyÔ)ÜØ%¤i×&8Ñ&8Ð%9Ð9bÐcóð ð
 ”)ÑÜ"9×"@Ñ"@Ó"Bò #�Ø+×7Ñ7�
ØÑ)¨j×.KÑ.KØ¨uð /Lõ /ô %Ÿn™n¨ZÓ8�GØ'�J×'Ñ'¨°ÐM¸dÒMÀfÒMØ"’Nð#ô 4×:Ñ:Ó<öàØ×#Ñ#Ð/ð × Ñ ×-Ó-ðˆNð ô
 %Ø˜
�|Ð#GÈÐGWÐWXÐYóð ô —.‘. Ó%ˆØˆ�‰�W˜jÐ:¨4Ò:°6Ò:Øˆùòs   Â7)D"rg   Úbases.ÚdicNc                 óÖ  — t        | «      D ]Û  }|j                  d«      rŒt        t        |«      sŒ&t	        t	        t        |«      dd «      sŒBt	        t        |«      j
                  dz   }t        t	        | |«      t        «      r|t	        | |«      j                  _        n|t	        | |«      _        t        t	        | |«      t        «      sŒÁ|t	        | |«      j                  _        ŒÝ y )Nrn   Ú__doc__z' _(Docstring copied from pathlib.Path)_)ÚdirÚ
startswithÚhasattrr   ro   r§   Ú
isinstancer   Ú__func__r   Úfget)rs   rg   r¤   r¥   ÚattrÚ	docstrings         r:   rž   zCloudPathMeta.__init__é   s¶   € ä˜“Hò 	@ˆDà—O‘O CÕ(ÜœD $Õ'ÜœG¤D¨$Ó/°¸DÕAä#¤D¨$Ó/×7Ñ7Ð:cÑc�	äœg c¨4Ó0´:Ô?Ø:C”G˜C Ó&×/Ñ/Õ7à1:”G˜C Ó&Ô.äœg c¨4Ó0´(Õ;ð 7@”G˜C Ó&×+Ñ+Õ3ñ!	@r;   )rp   rz   r{   r   r   r‚   rƒ   r   r“   r    r|   r   Útyper   rž   r€   r;   r:   rŽ   rŽ   ½   s	  „ ØðØ�!‰WðØ",ðØ58ðØDGðà	òó ðð ðØ�!‰WðØ"'¨¨[Ð(8Ñ"9ðØBEðØQTðà	
òó ððØ�!‰WðØ"'¨¨Z¨Ñ"8ðØADðØPSðà	ˆq�+˜zÐ)Ñ	*óðB@˜Cð @¨¨d°C¨iÑ(8ð @¸tÀCÈÀH¹~ð @ÐRVô @r;   rŽ   c                   óf  — e Zd ZU dZeed<   eed<   ddœdeeed f   dede	d	   d
dfd„Z
ed„ «       Zd½d„Zd
eeef   fd„Zdeeef   d
dfd„Zed
efd„«       Zed
efd„«       Zee	 d¾dd ded
ee   fd„«       «       Zeed¾deded
efd„«       «       Ze	 d¿deed f   ded
eeee   f   fd„«       Zd
efd„Zd
efd„Zd
efd„Zded
efd„Zd
efd„Zded
efd„Zded
efd „Z ded
efd!„Z!ded
efd"„Z"ee#jH                  d
efd#„«       «       Z%e#jH                  	 dÀd$ed%ed&e	e   d
dfd'„«       Z&e#jH                  dÁd%ed&e	e   d
dfd(„«       Z'dÂd)ed*ed
efd+„Z(ded
dfd,„Z)ed
efd-„«       Z*d
efd.„Z+dÃd
efd/„Z,dÃd
efd0„Z-dÃd
efd1„Z.ed
efd2„«       Z/ed3ed
efd4„«       Z0d5eee1jd                  f   d
efd6„Z3d7„ Z4d8ed
e5eddf   fd9„Z6	 	 dÄd5eee1jd                  f   d:e	e   d;ed
e5eddf   fd<„Z7	 	 dÄd5eee1jd                  f   d:e	e   d;ed
e5eddf   fd=„Z8d
e5eddf   fd>„Z9e:dÃd?„«       Z;	 	 dÁd@edAe	e<   d
e5e=ee>e   e>e   f   ddf   fdB„Z?	 	 	 	 dÅd@edAe	e<   dCedDed
e5e=ee>e   e>e   f   ddf   f
dE„Z@e	 	 	 	 	 	 	 dÆd&dFdGedHe	e   dIe	e   dJe	e   dKe	e   dLe	e   d
dMfdN„«       ZAe	 	 	 	 	 dÇd&dOdGeBdP   dHddIddJddKe	e   dLe	e   d
dQfdR„«       ZAe	 	 	 	 	 	 dÈd&dSdGeBdT   dHddIddJddKe	e   dLe	e   d
dUfdV„«       ZAe	 	 	 	 	 	 dÈd&dWdGeBdT   dHddIddJddKe	e   dLe	e   d
dXfdY„«       ZAe	 	 	 	 	 	 dÈd&dZdGeBdT   dHddIddJddKe	e   dLe	e   d
d[fd\„«       ZAe	 	 	 	 	 	 dÈd&dOdGedHddIddJddKe	e   dLe	e   d
d]fd^„«       ZAe	 	 	 	 	 	 dÈd&edGedHe	e   dIe	e   dJe	e   dKe	e   dLe	e   d
d_fd`„«       ZA	 	 	 	 	 	 	 dÆd&edGedHe	e   dIe	e   dJe	e   dKe	e   dLe	e   d
d_fda„ZAdbed
efdc„ZCdbed
efdd„ZDd½de„ZEdfeee1jd                  f   d
efdg„ZFdÃdhed
dfdi„ZGdjeHd
efdk„ZI	 	 	 dÉdjedHe	e   dIe	e   dJe	e   d
ef
dl„ZJd
eHfdm„ZK	 	 	 dÉdHe	e   dIe	e   dJe	e   d
efdn„ZLdo„ ZMdped
efdq„ZNdeeeOf   d
efdr„ZPdseee1jd                  f   d
efdt„ZQd
efdu„ZRd
efdv„ZSd¿dwed
efdx„ZTd¿dedyed
eOfdz„ZUded
efd{„ZVed
efd|„«       ZWdÊd5ed:e	e   d
efd}„ZXdÊd~ed:e	e   d
efd„ZYed
efd€„«       ZZed
efd�„«       Z[ed
e=edf   fd‚„«       Z\ed
e=edf   fdƒ„«       Z]ed
efd„„«       Z^ed
efd…„«       Z_ed
e>e   fd†„«       Z`d‡ed
efdˆ„Zad‰ed
efdŠ„Zbd
efd‹„ZcdŒed
efd�„Zddped
efdŽ„ZedÃdCed
e1jÌ                  fd�„ZgdËd�„Zhd‘eee1jd                  f   d
eifd’„Zjd½d“„Zk	 dÊd”eee1jd                  f   dLe	e   d
efd•„Zl	 	 	 	 dÌdbeee1jd                  d f   dCed–edLe	e   d—ed
eeief   fd˜„Zme	 	 	 dÍdbedLe	e   d
efd™„«       Zne	 	 	 dÍdbeidLe	e   d
eifdš„«       Zne	 	 	 dÍdbedLe	e   d
eeid f   fd›„«       Zn	 	 	 dÍdbeee1jd                  ef   dCed–edLe	e   d
eeief   f
dœ„Zne	 	 	 dÍd�edCed–edLe	e   d
ef
dž„«       Zoe	 	 	 dÍd�eidCed–edLe	e   d
eif
dŸ„«       Zoe	 	 	 dÍd�edCed–edLe	e   d
eeid f   f
d „«       Zo	 	 	 dÍd�eee1jd                  ef   dCed–edLe	e   d
eeief   f
d¡„Zoe	 	 dÎd‘edLe	e   d¢e	e<eepe   geqe   f      d
efd£„«       Zre	 	 dÎd‘eidLe	e   d¢e	e<eepe   geqe   f      d
eifd¤„«       Zre	 	 dÎd‘eee1jd                  ef   dLe	e   d¢e	e<eepe   geqe   f      d
eeid f   fd¥„«       ZrdÎd¦„Zre	 	 	 dÍdbedCed–edLe	e   d
ef
d§„«       Zse	 	 	 dÍdbeidCed–edLe	e   d
eif
d¨„«       Zse	 	 	 dÍdbedCed–edLe	e   d
eeid f   f
d©„«       Zs	 	 	 dÍdbeee1jd                  ef   dCed–edLe	e   d
eeief   f
dª„Zse	 	 	 dÍd�edCed–edLe	e   d
ef
d«„«       Zte	 	 	 dÍd�eidCed–edLe	e   d
eif
d¬„«       Zte	 	 	 dÍd�edCed–edLe	e   d
eeid f   f
d­„«       Zt	 	 	 dÍd�eee1jd                  ef   dCed–edLe	e   d
eeief   f
d®„Ztd¯„ Zued
eifd°„«       Zvdeee1jd                  f   ded
efd±„ZwdÊdKe	e   d
dfd²„Zx	 dÊdLe	e   d
efd³„Zy	 dÊd´eidLe	e   d
efdµ„Zzed¶efd·„«       Z{ed¸ed
efd¹„«       Z|ed
e5e<egef   ddf   fdº„«       Z}ed»ed
efd¼„«       Z~y)ÏrZ   a–  Base class for cloud storage file URIs, in the style of the Python standard library's
    [`pathlib` module](https://docs.python.org/3/library/pathlib.html). Instances represent a path
    in cloud storage with filesystem path semantics, and convenient methods allow for basic
    operations like joining, reading, writing, iterating over contents, etc. `CloudPath` almost
    entirely mimics the [`pathlib.Path`](https://docs.python.org/3/library/pathlib.html#pathlib.Path)
    interface, so most familiar properties and methods should be available and behave in the
    expected way.

    Analogous to the way `pathlib.Path` works, instantiating `CloudPath` will instead create an
    instance of an appropriate subclass that implements a particular cloud storage service, such as
    [`S3Path`](../s3path). This dispatching behavior is based on the URI scheme part of a cloud
    storage URI (e.g., `"s3://"`).
    rŠ   rŸ   N)ÚclientrY   Úpartsr²   rT   r\   c          	      óÆ  — d | _         d | _        |rLt        |«      j                  d«      st        |«      dz   }t        |«      dj	                  d„ |D «       «      z   }| j                  |d¬«       | j                  j                  «        t        |«      | _        t        | j                  «      | _
        t        d| j                  › �«      | _        |€"t        |t        «      r|j                   | _        n|| _        |�]t        || j                  j"                  «      s=t%        d|j&                  › d| j&                  › d| j                  j"                  › d�«      ‚d	| _        y )
Nú/c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w)rµ   N)Ústrip©Ú.0Úps     r:   ú	<genexpr>z%CloudPath.__init__.<locals>.<genexpr>!  s   è ø€ Ò3PÀQ°A·G±G¸C·LÑ3Pùs   ‚Tr–   zClient of type [z'] is not valid for cloud path of type [z]; must be instance of [z;], or None to use default client for this cloud path class.F)Ú_handleÚ_clientr|   ÚendswithÚjoinr›   rŠ   ru   Ú_strr"   Ú_urlr   Ú
_no_prefixÚ_pathr«   rZ   r²   rl   rD   Ú	__class__Ú_dirty)rq   rY   r²   r³   s       r:   rž   zCloudPath.__init__  s@  € ð &*ˆŒØ+/ˆŒáä�z“?×+Ñ+¨CÔ0Ü  ›_¨sÑ2�
ä˜Z›¨3¯8©8Ñ3PÈ%Ô3PÓ+PÑPˆJà×Ñ 
¸4ÐÔ@Ø×Ñ×.Ñ.Ô0ô ˜
“OˆŒ	Ü˜TŸY™YÓ'ˆŒ	Ü" Q t§¡Ð&7Ð#8Ó9ˆŒ
ð ˆ>Ü˜*¤iÔ0Ø)×0Ñ0�•à!ˆDŒLàÐ¤j°¸×9IÑ9I×9VÑ9VÔ&WÜ%Ø" 6×#3Ñ#3Ð"4ð 5Ø—N‘NÐ#Ð#;¸D×<LÑ<L×<YÑ<YÐ;Zð [HðIóð ð ˆ�r;   c                 ó†   — t        | dd «      €)| j                  j                  j                  «       | _        | j                  S ©Nr½   )ro   rŠ   rl   Úget_default_clientr½   rw   s    r:   r²   zCloudPath.client<  s7   € ä�4˜ DÓ)Ð1Ø×+Ñ+×8Ñ8×KÑKÓMˆDŒLà�|‰|Ðr;   c                 óü   — | j                   �4| j                  j                  «       r| j                   j                  «        t	        | dd «      }t	        |dd «      t
        j                  k(  r| j                  «        y y )Nr½   Úfile_cache_mode)r¼   Ú_localÚexistsÚclosero   rB   Úcloudpath_objectÚclear_cache)rq   r²   s     r:   Ú__del__zCloudPath.__del__C  se   € à�<‰<Ð#¨¯©×(:Ñ(:Ô(<Ø�L‰L×ÑÔ ô ˜˜y¨$Ó/ˆÜ�6Ð,¨dÓ3´}×7UÑ7UÒUØ×ÑÕð Vr;   c                 óH   — | j                   j                  «       }d|v r|d= |S rÇ   )Ú__dict__Úcopy©rq   Ústates     r:   Ú__getstate__zCloudPath.__getstate__M  s+   € Ø—‘×"Ñ"Ó$ˆð ˜ÑØ�iÐ àˆr;   rÕ   c                 ó:   — | j                   j                  |«       y r4   )rÒ   ÚupdaterÔ   s     r:   Ú__setstate__zCloudPath.__setstate__V  s   € Ø�‰×Ñ˜UÕ#r;   c                 óF   — | j                   t        | j                  «      d  S r4   )rÀ   ÚlenÚanchorrw   s    r:   rÂ   zCloudPath._no_prefixY  s   € à�y‰yœ˜TŸ[™[Ó)Ð+Ð,Ð,r;   c                 ór   — | j                   t        | j                  «      t        | j                  «      z   d  S r4   )rÀ   rÛ   rÜ   Údriverw   s    r:   Ú_no_prefix_no_drivezCloudPath._no_prefix_no_drive]  s*   € à�y‰yœ˜TŸ[™[Ó)¬C°·
±
«OÑ;Ð=Ð>Ð>r;   .r_   r—   c                  ó   — y r4   r€   ©rs   r_   r—   s      r:   r›   zCloudPath.is_valid_cloudpatha  s   € ð r;   c                  ó   — y r4   r€   rá   s      r:   r›   zCloudPath.is_valid_cloudpathg  s   € àPSr;   c                 óÆ   — t        |«      j                  «       j                  | j                  j                  «       «      }|r|st	        d|› d| j                  › d�«      ‚|S )Nú'z4' is not a valid path since it does not start with ')r|   Úlowerr©   rŸ   rN   )rs   r_   r—   Úvalids       r:   r›   zCloudPath.is_valid_cloudpathk  sb   € ô �D“	—‘Ó!×,Ñ,¨S×-=Ñ-=×-CÑ-CÓ-EÓFˆá¡%Ü$Ø�D�6ÐMÈc×N^ÑN^ÐM_Ð_`Ðaóð ð ˆr;   c                 ó:   — | j                   j                  › d| › d�S )Nz('z'))rÄ   rp   rw   s    r:   Ú__repr__zCloudPath.__repr__x  s    € Ø—.‘.×)Ñ)Ð*¨"¨T¨F°"Ð5Ð5r;   c                 ó   — | j                   S r4   )rÀ   rw   s    r:   Ú__str__zCloudPath.__str__{  s   € Ø�y‰yÐr;   c                 óT   — t        t        | «      j                  t        | «      f«      S r4   )Úhashr°   rp   r|   rw   s    r:   Ú__hash__zCloudPath.__hash__~  s    € Ü”T˜$“Z×(Ñ(¬#¨d«)Ð4Ó5Ð5r;   Úotherc                 ó^   — t        |t        | «      «      xr t        | «      t        |«      k(  S r4   )r«   r°   r|   ©rq   rî   s     r:   Ú__eq__zCloudPath.__eq__�  s%   € Ü˜%¤ d£Ó,ÒH´°T³¼cÀ%»jÑ1HÐHr;   c                 ól   — | j                  «       r| j                  «        t        | j                  «      S r4   )Úis_fileÚ_refresh_cacher|   rË   rw   s    r:   Ú
__fspath__zCloudPath.__fspath__„  s&   € Ø�<‰<Œ>Ø×ÑÔ!Ü�4—;‘;ÓÐr;   c                 ój   — t        |t        | «      «      st        S | j                  |j                  k  S r4   ©r«   r°   ÚNotImplementedr³   rð   s     r:   Ú__lt__zCloudPath.__lt__‰  ó)   € Ü˜%¤ d£Ô,Ü!Ð!Ø�z‰z˜EŸK™KÑ'Ð'r;   c                 ój   — t        |t        | «      «      st        S | j                  |j                  k  S r4   r÷   rð   s     r:   Ú__le__zCloudPath.__le__Ž  ó)   € Ü˜%¤ d£Ô,Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(r;   c                 ój   — t        |t        | «      «      st        S | j                  |j                  kD  S r4   r÷   rð   s     r:   Ú__gt__zCloudPath.__gt__“  rú   r;   c                 ój   — t        |t        | «      «      st        S | j                  |j                  k\  S r4   r÷   rð   s     r:   Ú__ge__zCloudPath.__ge__˜  rý   r;   c                  ó   — y)zVFor example "bucket" on S3 or "container" on Azure; needs to be defined for each classNr€   rw   s    r:   rÞ   zCloudPath.drive·  s   € ð 	r;   ÚparentsÚexist_okÚmodec                  ó   — y)zPShould be implemented using the client API without requiring a dir is downloadedNr€   )rq   r  r  r  s       r:   ÚmkdirzCloudPath.mkdir½  s   € ð
 	r;   c                  ó   — y)zMShould be implemented using the client API to create and update modified timeNr€   )rq   r  r  s      r:   ÚtouchzCloudPath.touchÄ  s   € ð 	r;   ÚpresignÚexpire_secondsc                 ó~   — |r| j                   j                  | |¬«      }|S | j                   j                  | «      }|S )N)r  )r²   Ú_generate_presigned_urlÚ_get_public_url)rq   r
  r  Úurls       r:   Úas_urlzCloudPath.as_urlÉ  s@   € ÙØ—+‘+×5Ñ5°dÈ>Ð5ÓZˆCð ˆ
ð —+‘+×-Ñ-¨dÓ3ˆCØˆ
r;   c                 ó   — t        d«      ‚)NzZCannot change a cloud path's root since all paths are absolute; create a new path instead.)Ú
ValueErrorrð   s     r:   Ú__rtruediv__zCloudPath.__rtruediv__Ò  s   € ÜØhó
ð 	
r;   c                 ó   — | j                   S r4   )rŸ   rw   s    r:   rÜ   zCloudPath.anchor×  s   € à× Ñ Ð r;   c                 ó   — t        | «      S r4   ©r|   rw   s    r:   Úas_urizCloudPath.as_uriÛ  s   € Ü�4‹yÐr;   c                 ó8   — | j                   j                  | «      S r4   )r²   Ú_exists©rq   Úfollow_symlinkss     r:   rÌ   zCloudPath.existsÞ  s   € Ø�{‰{×"Ñ" 4Ó(Ð(r;   c                 ó>   — | j                   j                  | «      dk(  S )Nr¨   ©r²   Ú_is_file_or_dirr  s     r:   Úis_dirzCloudPath.is_dirá  s   € Ø�{‰{×*Ñ*¨4Ó0°EÑ9Ð9r;   c                 ó>   — | j                   j                  | «      dk(  S )NÚfiler  r  s     r:   ró   zCloudPath.is_fileä  s   € Ø�{‰{×*Ñ*¨4Ó0°FÑ:Ð:r;   c                 ó"   — | j                  «       S r4   )rõ   rw   s    r:   ÚfspathzCloudPath.fspathç  s   € à�‰Ó Ð r;   Úuric                 ó   —  | |«      S r4   r€   )rs   r$  s     r:   Úfrom_urizCloudPath.from_urië  s   € á�3‹xˆr;   Úpatternc                 ó’  — t        |t        j                  «      rAt        |t        «      rt	        |j                  | «      «      }n!t        j                  |«      }nt	        |«      }d|v rt        d«      ‚|j                  | j                  «      s|j                  d«      rt        d«      ‚| j                  dk(  rt        d«      ‚|S )Nú..z8Relative paths with '..' not supported in glob patterns.rµ   z%Non-relative patterns are unsupportedÚ z‡.glob is only supported within a bucket or container; you can use `.iterdir` to list buckets; for example, CloudPath('s3://').iterdir())r«   r^   ÚPathLikerZ   r|   Úrelative_tor#  rK   r©   rŸ   rÞ   )rq   r'  Ústr_patterns      r:   Ú_glob_checkszCloudPath._glob_checksï  s´   € Ü�gœrŸ{™{Ô+Ü˜'¤9Ô-Ü! '×"5Ñ"5°dÓ";Ó<‘ä Ÿi™i¨Ó0‘ä˜g›,ˆKà�;ÑÜ.ØJóð ð ×!Ñ! $×"3Ñ"3Ô4¸×8NÑ8NÈsÔ8SÜ.Ð/VÓWÐWà�:‰:˜ÒÜ.ð Zóð ð Ðr;   c                 óF  ‡‡— ˆfd„Šˆˆfd„Š ‰«       }| j                   j                  | |¬«      D ]c  \  }}t        |j                  | «      «      j	                  d«      }t        |«      dk(  r	|d   dk(  rŒFd„ |D «       } ‰|t        |d «      ||«       Œe t        |«      S )	Nc                  ó   •— t        ‰ «      S r4   r   )ÚTrees   €r:   ú<lambda>z*CloudPath._build_subtree.<locals>.<lambda>	  s   ø€ ¤¨TÓ!2€ r;   c                 ód   •— t        |d«      }|€|r ‰«       | |<   yd| |<   y ‰| |   |||«       y)ziUtility to build a tree from nested defaultdicts with a generator
            of nodes (parts) of a path.N)Únext)ÚtrunkÚbranchÚnodesr  Únext_branchr1  Ú_build_trees        €€r:   r9  z-CloudPath._build_subtree.<locals>._build_tree  s@   ø€ ô ˜u dÓ+ˆKàÐ"Ù*0¡£��f’°d��f’ñ ˜E &™M¨;¸¸vÕFr;   ©Ú	recursiverµ   r@   r   r™   c              3   ó    K  — | ]  }|–— Œ y ­wr4   r€   r¸   s     r:   r»   z+CloudPath._build_subtree.<locals>.<genexpr>  s   è ø€ Ò&˜1”QÑ&ùs   ‚)r²   Ú	_list_dirr|   r,  ÚsplitrÛ   r4  Údict)	rq   r;  Ú	file_treeÚfr  r³   r7  r1  r9  s	          @@r:   Ú_build_subtreezCloudPath._build_subtree  s£   ù€ ã2ˆõ		Gñ “Fˆ	àŸ™×.Ñ.¨t¸yÐ.ÓIò 	E‰IˆAˆvÜ˜Ÿ™ dÓ+Ó,×2Ñ2°3Ó7ˆEô �5‹z˜QŠ 5¨¡8¨s¢?Øá& Ô&ˆEÙ˜	¤4¨¨tÓ#4°e¸VÕDð	Eô �I‹Ðr;   r;  c              #   óÚ   K  — | j                  |«      }t        | j                  g |«      }|j                  |«      D ]+  }| t	        |«      t        | j                  «      dz   d  z  –— Œ- y ­w)Nr@   )rB  Ú_CloudPathSelectablerg   Úselect_fromr|   rÛ   )rq   Úselectorr;  r@  Úrootrº   s         r:   Ú_globzCloudPath._glob$  sm   è ø€ Ø×'Ñ'¨	Ó2ˆ	ä#Ø�I‰IØØó
ˆð ×%Ñ% dÓ+ò 	8ˆAàœ#˜a›&¤ T§Y¡Y£°!Ñ!3Ð!5Ð6Ñ6Ó7ñ	8ùs   ‚A)A+r9   Úrecurse_symlinksc              #   óÖ   K  — | j                  |«      }t        |«      j                  }t        t	        |«      t
        |¬«      }| j                  |d|v xs d|v «      E d {  –—†  y 7 Œ­w)N©r9   rµ   ú**©r.  r   r³   r1   r6   r0   rH  ©rq   r'  r9   rI  r7   rF  s         r:   ÚglobzCloudPath.glob1  sp   è ø€ ð ×#Ñ# GÓ,ˆä% gÓ.×4Ñ4ˆÜ!Ü�-Ó ¤.Àô
ˆð —:‘:ØØ�7ˆNò ØØðó
÷ 	
ò 	
ús   ‚AA)Á!A'Á"A)c              #   óÌ   K  — | j                  |«      }t        |«      j                  }t        dt	        |«      z   t
        |¬«      }| j                  |d«      E d {  –—†  y 7 Œ­w)N)rL  rK  TrM  rN  s         r:   ÚrglobzCloudPath.rglobE  sY   è ø€ ð ×#Ñ# GÓ,ˆä% gÓ.×4Ñ4ˆÜ!Ø”e˜MÓ*Ñ*¬NÈ>ô
ˆð —:‘:˜h¨Ó-×-Ò-ús   ‚AA$ÁA"ÁA$c              #   ój   K  — | j                   j                  | d¬«      D ]  \  }}|| k7  sŒ|–— Œ y ­w)NFr:  )r²   r=  )rq   rA  rn   s      r:   ÚiterdirzCloudPath.iterdirT  s9   è ø€ Ø—K‘K×)Ñ)¨$¸%Ð)Ó@ò 	‰DˆAˆqØ�D‹yØ“ñ	ùs   ‚)3¬3c              #   ó  K  — g }g }|j                  «       D ])  \  }}|€|j                  |«      n|j                  |«       Œ+ |r| ||f–— |D ](  }t        j                  | |z  ||   |¬«      E d{  –—†  Œ* |s| ||f–— yy7 Œ­w)z|Utility to yield tuples in the form expected by `.walk` from the file
        tree constructed by `_build_subtree`.
        N©Útop_down)ÚitemsÚappendrZ   Ú_walk_results_from_tree)rG  ÚtreerV  ÚdirsÚfilesÚitemr6  r¨   s           r:   rY  z!CloudPath._walk_results_from_treeY  s­   è ø€ ð
 ˆØˆØ ŸJ™J›Lò 	H‰LˆD�&Ø"( .ˆE�L‰L˜Ô°d·k±kÀ$Ó6Gùð	Hñ Ø˜˜eÐ#Ò#àò 	cˆCÜ ×8Ñ8¸À¹ÀTÈ#ÁYÐYaÐ8Ób×bÑbð	cñ Ø˜˜eÐ#Ó#ð ð cús   ‚A0BÁ2BÁ3BrV  Úon_errorc              #   ó  K  — | g}|rÕ|j                  «       }t        |t        «      r|–— Œ'g }g }	 | j                  j	                  |d¬«      D ]*  \  }}||k(  rŒ|r|n|j                  |j                  «       Œ, 	 |r'|||f–— |t        |«      D �
cg c]  }
||
z  ‘Œ	 c}
z  }n3|j                  |||f«       |t        |«      D �
cg c]  }
||
z  ‘Œ	 c}
z  }|rŒÔyy# t        $ r}	|� ||	«       Y d}	~	Œð‚ d}	~	ww xY wc c}
w c c}
w ­w)aV  Iterative walk that lists one directory level at a time, so callers
        can prune ``dirnames`` in place (when ``top_down=True``) to avoid
        fetching the contents of skipped subtrees.

        Implemented with an explicit stack (like CPython's
        ``pathlib.Path.walk``) to avoid recursion limits on deeply nested trees.
        Fr:  N)	Úpopr«   r6   r²   r=  rX  rg   Ú	ExceptionÚreversed)rq   rV  r^  ÚstackÚtopÚdirnamesÚ	filenamesÚchildr  ÚerrorÚds              r:   Ú
_walk_lazyzCloudPath._walk_lazyl  s!  è ø€ ð HLÀfˆáØ—)‘)“+ˆCä˜#œuÔ%Ø’	Øà"$ˆHØ#%ˆIð	Ø%)§[¡[×%:Ñ%:¸3È%Ð%:Ó%Pò K‘M�E˜6Ø ’|Ø Ù!'‘X¨Y×>Ñ>¸u¿z¹zÕJñKñ Ø˜8 YÐ.Ò.ð ¬8°HÓ+=Ö> a˜# ›'Ò>Ñ>‘ð —‘˜c 8¨YÐ7Ô8Ø¬8°HÓ+=Ö> a˜# ›'Ò>Ñ>�ô9 øô ò ØÐ'Ù˜U”OÜØûð	üò ?ùò ?ùsS   ‚/D	²A
C Á<D	ÂC?Â (D	ÃDÃD	ÃD	Ã	C<Ã'
C7Ã1D	Ã6C7Ã7C<Ã<D	r  Úlazyc              #   óò   K  — |r| j                  ||¬«      E d{  –—†  y	 | j                  d¬«      }| j                  | ||¬«      E d{  –—†  y7 Œ57 Œ# t        $ r}|�	 ||«       n‚ Y d}~yd}~ww xY w­w)aK  Walk the directory tree rooted at this path, similar to
        :meth:`pathlib.Path.walk` and :func:`os.walk`.

        By default (``lazy=False``) the entire subtree is listed up front with a
        single recursive listing, which is the fastest option for a full walk on
        cloud backends.

        Pass ``lazy=True`` to defer listing until each directory is visited (one
        non-recursive listing per directory). This is slower for a full walk,
        but lets callers prune ``dirnames`` in place (when ``top_down=True``) to
        avoid fetching the contents of skipped subtrees entirely -- which can be
        dramatically faster and cheaper for sparse traversals.

        ``follow_symlinks`` is accepted for signature parity with ``pathlib``
        but has no effect on cloud backends, which do not have symlinks.
        )rV  r^  NTr:  rU  )rj  rB  rY  ra  )rq   rV  r^  r  rk  r@  Úes          r:   ÚwalkzCloudPath.walk›  sˆ   è ø€ ñ. Ø—‘°À8�ÓL×LÐLØð	Ø×+Ñ+°dÐ+Ó;ˆIØ×3Ñ3°D¸)ÈhÐ3ÓW×WÑWð Møð
 Xùäò 	ØÐ#Ù˜•àô ûð	üsJ   ‚A7›AœA7¢)A ÁAÁA ÁA7ÁA Á	A4ÁA/Á*A7Á/A4Á4A7r(   Ú	bufferingÚencodingÚerrorsÚnewlineÚforce_overwrite_from_cloudÚforce_overwrite_to_cloudr
   c                  ó   — y r4   r€   ©rq   r  ro  rp  rq  rr  rs  rt  s           r:   ÚopenzCloudPath.openÀ  s   € ð r;   r$   r   r	   c                  ó   — y r4   r€   rv  s           r:   rw  zCloudPath.openÌ  s   € ð r;   r&   )éÿÿÿÿr@   r   c                  ó   — y r4   r€   rv  s           r:   rw  zCloudPath.openØ  ó   € ð r;   r'   r   c                  ó   — y r4   r€   rv  s           r:   rw  zCloudPath.openä  r{  r;   r%   r   c                  ó   — y r4   r€   rv  s           r:   rw  zCloudPath.openð  r{  r;   r   c                  ó   — y r4   r€   rv  s           r:   rw  zCloudPath.openü  s   € ð r;   zIO[Any]c                  ó   — y r4   r€   rv  s           r:   rw  zCloudPath.open  s   € ð r;   c                 ó4  ‡ ‡‡‡‡‡— ‰ j                  «       }|r‰ j                  «       st        d‰ › d�«      ‚|s"t        ˆfd„dD «       «      rt	        d‰ › �«      ‚‰dk(  r‰ j                  «       rt        d‰ › d�«      ‚‰ j                  |¬	«       ‰ j                  j                  «       s*‰ j                  j                  j                  d
d
¬«       dŠn$‰ j                  j                  «       j                  Š‰ j                  j                  ‰||||¬«      }	t        ˆfd„dD «       «      r*|	j                  Šdˆˆˆ ˆfd„}
|
|	_        |	‰ _        d
‰ _        ‰ j                   j"                  t$        j&                  k(  r|	j                  Šˆ ˆfd„}||	_        |	S )Nz2Cannot open directory, only files. Tried to open (ú)c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr4   r€   ©r¹   Úmr  s     €r:   r»   z!CloudPath.open.<locals>.<genexpr>&  s   øè ø€ Ò&E°Q q¨D¤yÑ&Eùó   ƒ)ÚrÚaz@File opened for read or append, but it does not exist on cloud: ÚxzCannot open existing file (z) for creation.)rs  T©r  r  g        )r  ro  rp  rq  rr  c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr4   r€   rƒ  s     €r:   r»   z!CloudPath.open.<locals>.<genexpr>A  s   øè ø€ Ò7˜Qˆq�DŒyÑ7ùr…  )Úwú+rˆ  r‡  c                  ó   •—  ‰| i |¤Ž ‰j                   sy ‰j                  j                  «       j                  ‰k  r(‰dz   }t	        j
                  ‰j                  ||f¬«       ‰j                  ‰¬«       d‰_         y )Nr@   ©Útimes©rt  F)rÅ   rË   ÚstatÚst_mtimer^   ÚutimeÚ_upload_local_to_cloud)r�   r�   Ú	new_mtimert  Úoriginal_mtimerq   Úwrapped_closes      €€€€r:   Ú_patched_close_uploadz-CloudPath.open.<locals>._patched_close_uploadG  ss   ø€ Ù˜tÐ. vÒ.ð —{’{Øð
 —;‘;×#Ñ#Ó%×.Ñ.°Ò?Ø .°Ñ 2�IÜ—H‘H˜TŸ[™[°¸IÐ0FÕGà×+Ñ+ÐE]Ð+Ô^Ø#�•r;   c                  ó6   •—  ‰| i |¤Ž ‰j                  «        y r4   )rÏ   )r�   r�   rq   Úwrapped_close_for_caches     €€r:   Ú_patched_close_empty_cachez2CloudPath.open.<locals>._patched_close_empty_cacheh  s   ø€ Ù'¨Ð8°Ò8ð × Ñ Õ"r;   ry   )rÌ   ró   rG   ÚanyrF   rE   rô   rË   Úparentr  r‘  r’  rw  rÍ   r¼   rÅ   r²   rÊ   rB   Ú
close_file)rq   r  ro  rp  rq  rr  rs  rt  Úexists_on_cloudÚbufferr˜  r›  r–  r—  rš  s   ``     `    @@@r:   rw  zCloudPath.open  s…  ý€ ð Ÿ+™+›-ˆá 4§<¡<¤>Ü,ØDÀTÀFÈ!ÐLóð ñ ¤3Ó&E¸*Ô&EÔ#EÜ,ØRÐSWÐRXÐYóð ð �3Š;˜4Ÿ;™;œ=Ü*Ð-HÈÈÈoÐ+^Ó_Ð_ð 	×ÑÐ7QÐÔRð �{‰{×!Ñ!Ô#Ø�K‰K×Ñ×$Ñ$¨T¸DÐ$ÔAØ ‰Nà!Ÿ[™[×-Ñ-Ó/×8Ñ8ˆNà—‘×!Ñ!ØØØØØð "ó 
ˆô Ó7Ð"6Ô7Ô7à"ŸL™LˆM÷$ð $ð$ 1ˆFŒLð "ˆDŒLð ˆDŒKð �;‰;×&Ñ&¬-×*BÑ*BÒBð '-§l¡lÐ#õ#ð 6ˆFŒLàˆr;   Útargetc                 ó$  — t        | «      t        |«      urt        dt        | «      › �«      ‚| j                  «       rt        d| › d�«      ‚|| k(  r| S |j	                  «       r|j                  «        | j                  j                  | |«       |S )NzBThe target based to rename must be an instantiated class of type: r˜   z6 is a directory; rename/replace the files recursively.)r°   r‰   r  rG   rÌ   Úunlinkr²   Ú
_move_file©rq   r¡  s     r:   ÚreplacezCloudPath.replacer  s�   € Ü�‹:œT &›\Ñ)ÜØTÔUYÐZ^ÓU_ÐT`Ðaóð ð �;‰;Œ=Ü,Ø˜�vÐSÐTóð ð �TŠ>àˆKà�=‰=Œ?Ø�M‰MŒOà�‰×Ñ˜t VÔ,Øˆr;   c                 ó$   — | j                  |«      S r4   )r¦  r¥  s     r:   ÚrenamezCloudPath.rename‡  s   € ð �|‰|˜FÓ#Ð#r;   c                 óè   — | j                  «       rt        d| › d�«      ‚	 t        | j                  «       «       t	        d| › d�«      ‚# t
        $ r Y nw xY w| j                  j                  | «       y )Nr˜   z) is a file; call unlink instead of rmdir.zDirectory not empty: 'z$'. Use rmtree to delete recursively.)ró   rI   r4  rS  rL   ÚStopIterationr²   Ú_removerw   s    r:   ÚrmdirzCloudPath.rmdirŒ  sx   € Ø�<‰<Œ>Ü-Ø˜�vÐFÐGóð ð	Ü�—‘“Ô Ü(Ø(¨¨Ð.RÐSóð øô ò 	Ùð	úà�‰×Ñ˜DÕ!s   ¡(A	 Á		AÁAÚ
other_pathc                 ó   — | |k(  S r4   r€   )rq   r­  s     r:   ÚsamefilezCloudPath.samefileš  s   € à�zÑ!Ð!r;   Ú
missing_okc                 óz   — | j                  «       rt        d| › d�«      ‚| j                  j                  | |«       y )Nr˜   z. is a directory; call rmdir instead of unlink.)r  rG   r²   r«  )rq   r°  s     r:   r£  zCloudPath.unlinkž  s;   € à�;‰;Œ=Ü,Ø˜�vÐKÐLóð ð 	�‰×Ñ˜D *Õ-r;   Údatac                 óŠ   — t        |«      }| j                  d¬«      5 }|j                  |«      cddd«       S # 1 sw Y   yxY w)zÐOpen the file in bytes mode, write to it, and close the file.

        NOTE: vendored from pathlib since we override open
        https://github.com/python/cpython/blob/3.8/Lib/pathlib.py#L1235-L1242
        Úwb©r  N)Ú
memoryviewrw  Úwrite)rq   r²  ÚviewrA  s       r:   Úwrite_byteszCloudPath.write_bytes¦  s>   € ô ˜$ÓˆØ�Y‰Y˜DˆYÓ!ð 	! QØ—7‘7˜4“=÷	!÷ 	!ò 	!ús	   ž9¹Ac                 óÞ   — t        |t        «      s"t        d|j                  j                  z  «      ‚| j                  d|||¬«      5 }|j                  |«      cddd«       S # 1 sw Y   yxY w)zÐOpen the file in text mode, write to it, and close the file.

        NOTE: vendored from pathlib since we override open
        https://github.com/python/cpython/blob/3.10/Lib/pathlib.py#L1146-L1155
        zdata must be str, not %sr‹  ©r  rp  rq  rr  N)r«   r|   r‰   rÄ   rp   rw  r·  )rq   r²  rp  rq  rr  rA  s         r:   Ú
write_textzCloudPath.write_text±  s`   € ô ˜$¤Ô$ÜÐ6¸¿¹×9PÑ9PÑPÓQÐQà�Y‰Y˜C¨(¸6È7ˆYÓSð 	!ÐWXØ—7‘7˜4“=÷	!÷ 	!ò 	!ús   ÁA#Á#A,c                 ór   — | j                  d¬«      5 }|j                  «       cd d d «       S # 1 sw Y   y xY w)NÚrbrµ  ©rw  Úread)rq   rA  s     r:   Ú
read_byteszCloudPath.read_bytesÃ  s0   € Ø�Y‰Y˜DˆYÓ!ð 	 QØ—6‘6“8÷	÷ 	ò 	ús   “-­6c                 óx   — | j                  d|||¬«      5 }|j                  «       cd d d «       S # 1 sw Y   y xY w)Nr†  r»  r¿  )rq   rp  rq  rr  rA  s        r:   Ú	read_textzCloudPath.read_textÇ  s9   € ð �Y‰Y˜C¨(¸6È7ˆYÓSð 	ÐWXØ—6‘6“8÷	÷ 	ò 	ús   –0°9c                  ó   — y©NFr€   rw   s    r:   Úis_junctionzCloudPath.is_junctionÐ  ó   € Ør;   Úfuncc                 óª  ‡ — ‰ j                   j                  |«      }t        |«      r ||i |¤Ž}t        |t        «      rt        |«      }‰ j                  |«      S t        |t        j                  j                  «      rSt        |«      dkD  rEt        |d   t        «      r2t        |t        «      st        |«      nt        } |ˆ fd„|D «       «      S |S )zÓSome functions we can just dispatch to the pathlib version
        We want to do this explicitly so we don't have to support all
        of pathlib and subclasses can override individually if necessary.
        r   c              3   ó¢   •K  — | ]F  }t        |t        «      r4t        |«      |j                  k7  r‰j	                  t        |«      «      –— ŒH y ­wr4   )r«   r   Ú_resolverG  Ú_new_cloudpath)r¹   rº   rq   s     €r:   r»   z.CloudPath._dispatch_to_path.<locals>.<genexpr>ñ  sA   øè ø€ ò "àÜ˜a¤Ô/´H¸Q³KÀ1Ç6Á6Ò4Ið ×#Ñ#¤H¨Q£K×0ñ"ùs   ƒAA)rÃ   Ú__getattribute__Úcallabler«   r   rË  rÌ  ÚcollectionsÚabcÚSequencerÛ   r2   r°   r6   )rq   rÈ  r�   r�   Úpath_versionÚsequence_classs   `     r:   Ú_dispatch_to_pathzCloudPath._dispatch_to_path×  sÉ   ø€ ð
 —z‘z×2Ñ2°4Ó8ˆô �LÔ!Ù'¨Ð8°Ñ8ˆLô �l¤MÔ2ä# LÓ1ˆLØ×&Ñ& |Ó4Ð4ô �|¤[§_¡_×%=Ñ%=Ô>Ü�LÓ! AÒ%Ü˜<¨™?¬MÔ:ô +5°\Ä<Ô*P”�\Ô"ÔV[ð ñ "ó "à%ô"ó ð ð  Ðr;   c                 ó^   — t        |t        t        f«      st        S | j	                  d|«      S )NÚ__truediv__)r«   r|   r   rø   rÔ  rð   s     r:   rÖ  zCloudPath.__truediv__ü  s*   € Ü˜%¤#¤}Ð!5Ô6Ü!Ð!à×%Ñ% m°UÓ;Ð;r;   Úpathsegmentsc                 ó(   —  | j                   dg|¢­Ž S )NÚjoinpath©rÔ  ©rq   r×  s     r:   rÙ  zCloudPath.joinpath  s   € Ø%ˆt×%Ñ% jÐ@°<Ò@Ð@r;   c                 ó   — | S r4   r€   rw   s    r:   ÚabsolutezCloudPath.absolute  ó   € Øˆr;   c                  ó   — y©NTr€   rw   s    r:   Úis_absolutezCloudPath.is_absolute  s   € Ør;   Ústrictc                 ó   — | S r4   r€   )rq   râ  s     r:   r[   zCloudPath.resolve  rÞ  r;   Úwalk_upc           
      óz  — t        |t        «      st        | › d|› d�«      ‚| j                  |j                  k7  r+t        | › d| j                  › d|› d|j                  › d�«      ‚t	        |¬«      }t
        j                  dk  r|j                  d«        | j                  j                  |j                  fi |¤ŽS )	Nz is a cloud path, but z is notz is a z path, but z path)rä  r.   rä  )
r«   rZ   r  rÜ   r?  ÚsysÚversion_infor`  rÃ   r,  )rq   rî   rä  r�   s       r:   r,  zCloudPath.relative_to  s¯   € ô ˜%¤Ô+Ü ˜vÐ%;¸E¸7À'ÐJÓKÐKØ�;‰;˜%Ÿ,™,Ò&ÜØ�&˜˜tŸ{™{˜m¨;°u°g¸VÀEÇLÁLÀ>ÐQVÐWóð ô ˜gÔ&ˆä×Ñ˜gÒ%Ø�J‰J�yÔ!à%ˆt�z‰z×%Ñ% e§k¡kÑ<°VÑ<Ð<r;   c                 óF   — 	 | j                  |«       y# t        $ r Y yw xY w©NTF)r,  r  rð   s     r:   ra   zCloudPath.is_relative_to  s*   € ð	Ø×Ñ˜UÔ#ØøÜò 	Ùð	ús   ‚ ”	 Ÿ c                 ó$   — | j                  d«      S )Nrg   rÚ  rw   s    r:   rg   zCloudPath.name&  ó   € à×%Ñ% fÓ-Ð-r;   c                 ó’  — t         j                  dk  rt        d«      ‚|j                  | j                  | j
                  z   «      r&|t        | j                  | j
                  z   «      d  }n6|j                  | j                  «      r|t        | j                  «      dz
  d  }t        | j                  «      j                  ||¬«      S )Nr>   z)full_match requires Python 3.13 or higherr@   rK  )
ræ  rç  ÚNotImplementedErrorr©   rÜ   rÞ   rÛ   r   rß   Ú
full_match)rq   r'  r9   s      r:   rî  zCloudPath.full_match*  s°   € Ü×Ñ˜gÒ%Ü%Ð&QÓRÐRð ×Ñ˜dŸk™k¨D¯J©JÑ6Ô7Øœc $§+¡+°·
±
Ñ":Ó;Ð=Ð>‰GØ×Ñ §¡Ô,àœc $§+¡+Ó.°Ñ2Ð4Ð5ˆGô ˜T×5Ñ5Ó6×AÑAØ Nð Bó 
ð 	
r;   Úpath_patternc                 ó0  — |j                  | j                  | j                  z   dz   «      r(|t        | j                  | j                  z   dz   «      d  }t	        |¬«      }t
        j                  dk  r|j                  d«        | j                  d|fi |¤ŽS )Nrµ   rK  r.   r9   Úmatch)	r©   rÜ   rÞ   rÛ   r?  ræ  rç  r`  rÔ  )rq   rï  r9   r�   s       r:   rñ  zCloudPath.match:  s…   € à×"Ñ" 4§;¡;°·±Ñ#;¸cÑ#AÔBØ'¬¨D¯K©K¸$¿*¹*Ñ,DÀsÑ,JÓ(KÐ(MÐNˆLä ^Ô4ˆä×Ñ˜gÒ%Ø�J‰JÐ'Ô(à%ˆt×%Ñ% g¨|ÑF¸vÑFÐFr;   c                 ó`   — t         j                  dk  rt        d«      ‚| j                  d«      S )Nr>   z%parser requires Python 3.13 or higherÚparser)ræ  rç  rí  rÔ  rw   s    r:   ró  zCloudPath.parserF  s-   € ä×Ñ˜gÒ%Ü%Ð&MÓNÐNà×%Ñ% hÓ/Ð/r;   c                 ó$   — | j                  d«      S )Nr�  rÚ  rw   s    r:   r�  zCloudPath.parentM  ó   € à×%Ñ% hÓ/Ð/r;   c                 ó$   — | j                  d«      S )Nr  rÚ  rw   s    r:   r  zCloudPath.parentsQ  s   € à×%Ñ% iÓ0Ð0r;   c                 ó^   — | j                  d«      }|d   dk(  r|dd  }| j                  g|¢­S )Nr³   r   rµ   r@   )rÔ  rÜ   )rq   r³   s     r:   r³   zCloudPath.partsU  s:   € à×&Ñ& wÓ/ˆØ�‰8�sŠ?Ø˜!˜"�IˆEà—‘Ð$˜eÑ$Ð$r;   c                 ó$   — | j                  d«      S )NÚstemrÚ  rw   s    r:   rù  zCloudPath.stem]  rë  r;   c                 ó$   — | j                  d«      S )NÚsuffixrÚ  rw   s    r:   rû  zCloudPath.suffixa  rõ  r;   c                 ó$   — | j                  d«      S )NÚsuffixesrÚ  rw   s    r:   rý  zCloudPath.suffixese  s   € à×%Ñ% jÓ1Ð1r;   rù  c                 ó‚   — 	 | j                  d|«      S # t        $ r! | j                  || j                  z   «      cY S w xY w)NÚ	with_stem)rÔ  ÚAttributeErrorÚ	with_namerû  )rq   rù  s     r:   rÿ  zCloudPath.with_stemi  sA   € ð	6Ø×)Ñ)¨+°tÓ<Ð<øÜò 	6à—>‘> $¨¯©Ñ"4Ó5Ò5ð	6ús   ‚ ”'>½>rg   c                 ó&   — | j                  d|«      S )Nr  rÚ  )rq   rg   s     r:   r  zCloudPath.with_namep  s   € Ø×%Ñ% k°4Ó8Ð8r;   c                 óB   — | j                  dj                  |«      «      S )z›Create a new CloudPath with the same client out of the given segments.
        The first segment will be interpreted as the bucket/container name.
        rµ   )rÌ  r¿   rÛ  s     r:   Úwith_segmentszCloudPath.with_segmentss  s   € ð ×"Ñ" 3§8¡8¨LÓ#9Ó:Ð:r;   rû  c                 ó&   — | j                  d|«      S )NÚwith_suffixrÚ  )rq   rû  s     r:   r  zCloudPath.with_suffixy  s   € Ø×%Ñ% m°VÓ<Ð<r;   c                 óð   — | j                  «        | j                  j                  |«      }t        |«      r ||i |¤Ž}t	        |t
        t        f«      r!|j                  «       }| j                  |«      S |S r4   )	rô   rË   rÍ  rÎ  r«   r   r   r[   rÌ  )rq   rÈ  r�   r�   rÒ  s        r:   Ú_dispatch_to_local_cache_pathz'CloudPath._dispatch_to_local_cache_path~  ss   € Ø×ÑÔà—{‘{×3Ñ3°DÓ9ˆô �LÔ!Ù'¨Ð8°Ñ8ˆLô �l¤Y´Ð$<Ô=à'×/Ñ/Ó1ˆLØ×&Ñ& |Ó4Ð4ð  Ðr;   c                 óZ   — t        d| j                  › d�«       | j                  d|¬«      S )z£Note: for many clients, we may want to override so we don't incur
        network costs since many of these properties are available as
        API calls.
        z%stat not implemented as API call for z_ so file must be downloaded to calculate stats; this may take a long time depending on filesizer‘  )r  )r#   rÄ   r  r  s     r:   r‘  zCloudPath.stat‘  s=   € ô
 	Ø3°D·N±NÐ3Cð DOð Pô	
ð ×1Ñ1°&È/Ð1ÓZÐZr;   c                 ó   — t        | «      S )z,Return a CloudPathInfo object for this path.rU   rw   s    r:   ÚinfozCloudPath.infoœ  s   € ä˜TÓ"Ð"r;   Údestinationc                 ó  — t        |«      }| j                  «       st        d| › �«      ‚| j                  «       rF|j	                  «       rt        || j                  z  || «      }| j                  j                  | |«      S |j                  d¬«       | j                  «       D ][  }t        | «      }|j                  d«      s|dz   }t        |«      t        |«      d  }t        ||z  ||«      }|j                  |«       Œ] |S )Nz-Cannot download because path does not exist: T)r  rµ   )r   rÌ   rJ   ró   r  rd   rg   r²   Ú_download_filer  rS  r|   r¾   rÛ   Údownload_to)rq   r  rA  ÚrelÚrel_destr¡  s         r:   r  zCloudPath.download_to¡  só   € Ü˜;Ó'ˆà�{‰{Œ}Ü)Ð,YÐZ^ÐY_Ð*`ÓaÐaà�<‰<Œ>Ø×!Ñ!Ô#Ü<Ø $§)¡)Ñ+¨[¸$ó�ð —;‘;×-Ñ-¨d°KÓ@Ð@à×Ñ tÐÔ,Ø—\‘\“^ò &�Ü˜$“i�Ø—|‘| CÔ(Ø ™)�Cä˜q›6¤# c£( *Ð-�Ü7¸ÀhÑ8NÐP[Ð]^Ó_�Ø—‘˜fÕ%ð&ð Ðr;   c                 óx   — | j                  «       rt        d| › d�«      ‚| j                  j                  | «       y)z Delete an entire directory tree.r˜   z* is a file; call unlink instead of rmtree.N)ró   rI   r²   r«  rw   s    r:   ÚrmtreezCloudPath.rmtreeº  s9   € à�<‰<Œ>Ü-Ø˜�vÐGÐHóð ð 	�‰×Ñ˜DÕ!r;   Úsourcec                 ó4  — t        |«      }|j                  «       r7|j                  «       D ]"  }| |j                  z  j	                  ||¬«       Œ$ | S | j                  «       r | j                  «       r| |j                  z  }n| }|j                  ||¬«       |S )z-Upload a file or directory to the cloud path.r�  )r   r  rS  rg   Úupload_fromrÌ   Ú_upload_file_to_cloud)rq   r  rt  rº   Údsts        r:   r  zCloudPath.upload_fromÂ  s�   € ô �f“ˆà�=‰=Œ?Ø—^‘^Ó%ò b�Ø˜Ÿ™‘×+Ñ+¨AÐH`Ð+Õaðbð ˆKð �{‰{Œ} §¡¤Ø˜VŸ[™[Ñ(‘à�à×%Ñ% fÐG_Ð%Ô`àˆJr;   Úpreserve_metadataÚ
remove_srcc                 ób  — | j                  «       st        d| › d�«      ‚t        j                  |«      }| j	                  «       r0| j                  ||¬«      }t        t        t        t        f   |«      S t        |t        «      s| j                  |«      S | j                  |j                  u ræ|j                  «       r|j	                  «       r|| j                  z  }|€0t        j                   j#                  dd«      j%                  «       dv }|sW|j                  «       rG|j'                  «       j(                  | j'                  «       j(                  k\  rt+        d|› d| › d	�«      ‚t        t        | j                  j-                  | ||¬
«      «      S |j                  «       r|j/                  «       r8t        t        t        t        f   |j1                  | j2                  |¬«      «      S t        t        t        t        f   || j                  z  j1                  | j2                  |¬«      «      S )Nr˜   z must exist to copy.r�  Ú%CLOUDPATHLIB_FORCE_OVERWRITE_TO_CLOUDÚFalse©Ú1ÚtruezFile (z) is newer than (z5). To overwrite pass `force_overwrite_to_cloud=True`.)r  )rÌ   r  rC   Ú
to_anypathr  Úcopytreer!   r    r   r-   r«   rZ   r  r²   rg   r^   ÚenvironÚgetrå   r‘  r’  rR   r¤  ró   r  r#  )rq   r¡  r  r  rt  r  r  Úresults           r:   Ú_copyzCloudPath._copyÚ  sü  € ð �{‰{Œ}Ü˜u T FÐ*>Ð?Ó@Ð@ä×(Ñ(¨Ó0ˆà�;‰;Œ=Ø—]‘]ØØ)Að #ó ˆFô œœd¤D˜jÑ)¨6Ó2Ð2ä˜+¤yÔ1Ø×#Ñ# KÓ0Ð0ð �;‰;˜+×,Ñ,Ñ,Ø×!Ñ!Ô#¨×(:Ñ(:Ô(<Ø)¨D¯I©IÑ5�à'Ð/Ü+-¯:©:¯>©>Ø;¸Wó,ç‘%“'˜]ð,+Ð(ñ
 -Ø×&Ñ&Ô(Ø×$Ñ$Ó&×/Ñ/°4·9±9³;×3GÑ3GÒGä.Ø˜[˜MÐ):¸4¸&ð A<ð =óð ô œ˜dŸk™k×4Ñ4°T¸;ÐS]Ð4Ó^Ó_Ð_ð ×%Ñ%Ô'¨;×+>Ñ+>Ô+@ÜÜœ$¤˜*Ñ%Ø×+Ñ+ØŸ™Ð>Vð ,ó óð ô Üœ$¤˜*Ñ%Ø  4§9¡9Ñ,×9Ñ9ØŸ™Ð>Vð :ó óð r;   c                  ó   — y r4   r€   ©rq   r¡  r  r  rt  s        r:   rÓ   zCloudPath.copy  ó   € ð r;   c                  ó   — y r4   r€   r(  s        r:   rÓ   zCloudPath.copy!  r)  r;   c                  ó   — y r4   r€   r(  s        r:   rÓ   zCloudPath.copy*  ó   € ð $'r;   c                 ó.   — | j                  ||||d¬«      S )z6Copy self to target folder or file, if self is a file.F©r  r  rt  r  ©r&  r(  s        r:   rÓ   zCloudPath.copy3  s)   € ð �z‰zØØ+Ø/Ø%=Øð ó 
ð 	
r;   Ú
target_dirc                  ó   — y r4   r€   ©rq   r0  r  r  rt  s        r:   Ú	copy_intozCloudPath.copy_intoC  r)  r;   c                  ó   — y r4   r€   r2  s        r:   r3  zCloudPath.copy_intoL  r)  r;   c                  ó   — y r4   r€   r2  s        r:   r3  zCloudPath.copy_intoU  r,  r;   c                 ó¬   — t        j                  |«      | j                  z  }| j                  ||||d¬«      }t	        t
        t        t        f   |«      S )z9Copy self into target directory, preserving the filename.Fr.  ©rC   r!  rg   r&  r!   r    r   r-   ©rq   r0  r  r  rt  Útarget_pathr%  s          r:   r3  zCloudPath.copy_into^  sW   € ô ×(Ñ(¨Ó4°t·y±yÑ@ˆà—‘ØØ+Ø/Ø%=Øð ó 
ˆô ”Eœ$¤˜*Ñ% vÓ.Ð.r;   Úignorec                  ó   — y r4   r€   ©rq   r  rt  r:  s       r:   r"  zCloudPath.copytreeq  ó   € ð r;   c                  ó   — y r4   r€   r<  s       r:   r"  zCloudPath.copytreey  r=  r;   c                  ó   — y r4   r€   r<  s       r:   r"  zCloudPath.copytree�  s   € ð $'r;   c                 ó4  — | j                  «       st        d| › d�«      ‚t        j                  |«      }|j	                  «       r|j                  «       rt        d|› d�«      ‚t        | j                  «       «      }|�, || j                  |D �cg c]  }|j                  ‘Œ c}«      }n
t        «       }|j                  dd¬«       t        |t        «      }|D ]¶  }|j                  |v rŒ|j                  «       r2||j                  z  }	|rt        |	||«       |j!                  |	|¬«       ŒT|j                  «       sŒe||j                  |j                  j#                  d«      rd	ndz   z  }
|rt        |
||«       |j%                  |
||¬
«       Œ¸ |S c c}w )z1Copy self to a directory, if self is a directory.zOrigin path z@ must be a directory. To copy a single file use the method copy.zDestination path z! of copytree must be a directory.Tr‰  r�  rµ   r*  )rt  r:  )r  rI   rC   r!  rÌ   ró   rE   ÚlistrS  rß   rg   Úsetr  r«   r   rd   rÓ   r¾   r"  )rq   r  rt  r:  Úcontentsrˆ  Úignored_namesÚdestination_is_localÚsubpathÚfile_destinationÚdir_destinations              r:   r"  zCloudPath.copytree‰  s”  € à�{‰{Œ}Ü-Ø˜t˜fÐ$dÐeóð ô ×(Ñ(¨Ó5ˆà×ÑÔ K×$7Ñ$7Ô$9Ü*Ø# K =Ð0QÐRóð ô ˜Ÿ™›Ó'ˆàÐÙ" 4×#;Ñ#;ÈhÖ=WÈ¸a¿f»fÒ=WÓX‰Mä›EˆMà×Ñ $°ÐÔ6ô  *¨+´tÓ<Ðàò 	ˆGØ�|‰|˜}Ñ,ØØ�‰Ô Ø#.°·±Ñ#=Ð Ù'Ü2Ð3CÀ[ÐRYÔZØ—‘Ð-ÐH`�ÕaØ—‘Õ!Ø"-Ø—L‘L¨'¯,©,×*?Ñ*?ÀÔ*D¡BÈ#ÑNñ#�ñ (Ü2°?ÀKÐQXÔYØ× Ñ Ø#Ø-EØ!ð !õ ð	ð( ÐùòA >Xs   ÂF
c                  ó   — y r4   r€   r(  s        r:   ÚmovezCloudPath.move¼  r)  r;   c                  ó   — y r4   r€   r(  s        r:   rJ  zCloudPath.moveÅ  r)  r;   c                  ó   — y r4   r€   r(  s        r:   rJ  zCloudPath.moveÎ  r,  r;   c                 ó.   — | j                  ||||d¬«      S )z2Move self to target location, removing the source.Tr.  r/  r(  s        r:   rJ  zCloudPath.move×  s)   € ð �z‰zØØ+Ø/Ø%=Øð ó 
ð 	
r;   c                  ó   — y r4   r€   r2  s        r:   Ú	move_intozCloudPath.move_intoç  r)  r;   c                  ó   — y r4   r€   r2  s        r:   rO  zCloudPath.move_intoð  r)  r;   c                  ó   — y r4   r€   r2  s        r:   rO  zCloudPath.move_intoù  r,  r;   c                 ó¬   — t        j                  |«      | j                  z  }| j                  ||||d¬«      }t	        t
        t        t        f   |«      S )zQMove self into target directory, preserving the filename and removing the source.Tr.  r7  r8  s          r:   rO  zCloudPath.move_into  sW   € ô ×(Ñ(¨Ó4°t·y±yÑ@ˆà—‘ØØ+Ø/Ø%=Øð ó 
ˆô ”Eœ$¤˜*Ñ% vÓ.Ð.r;   c                 óÊ   — 	 | j                   }|j                  «       r7|j                  «       r|j	                  «        yt        j                  |«       yy# t        $ r Y yw xY w)zRemoves cache if it existsN)rË   rH   rÌ   ró   r£  Úshutilr  )rq   Úlocals     r:   rÏ   zCloudPath.clear_cache  sT   € ð	Ø—K‘KˆEð
 �<‰<Œ>Ø�}‰}ŒØ—‘•ä—‘˜eÕ$ð	 øô	 0ò 	ñ ð	ús   ‚A Á	A"Á!A"c                 óŠ   — t        | j                  j                  | j                  z  | j                  j                  | d¬«      S )z!Cached local version of the file.F)r[   )rd   r²   Ú_local_cache_dirrÂ   rw   s    r:   rË   zCloudPath._local$  s:   € ô .Ø�K‰K×(Ñ(¨4¯?©?Ñ:Ø�K‰K×(Ñ(ØØô	
ð 	
r;   c                 óÔ   — t        |«      }|j                  d«      r|dd }|j                  | j                  «      s| j                  › |› �} | j                  j                  |g|¢­Ž S )zÜUse the scheme, client, cache dir of this cloudpath to instantiate
        a new cloudpath of the same type with the path passed.

        Used to make results of iterdir and joins have a unified client + cache.
        rµ   r@   N)r|   r©   rÜ   r²   rZ   )rq   r_   r³   s      r:   rÌ  zCloudPath._new_cloudpath.  sf   € ô �4‹yˆð �?‰?˜3ÔØ˜˜�8ˆDð �‰˜tŸ{™{Ô+Ø—k‘k�] 4 &Ð)ˆDà$ˆt�{‰{×$Ñ$ TÐ2¨EÒ2Ð2r;   c                 ó  — 	 | j                  «       }|€0t        j                  j	                  dd«      j                  «       dv }|sK| j                  j                  «       r1| j                  j                  «       j                  |j                  k  ry| j                  j                  j                  dd¬«       | j                  | j                  «       t        j                  | j                  |j                  |j                  f¬«       | j                  rt        d| j                  › d| › d	�«      ‚| j                  j                  «       j                  |j                  kD  rt        d| j                  › d| › d
�«      ‚y # t        $ r Y y w xY w)NÚ'CLOUDPATHLIB_FORCE_OVERWRITE_FROM_CLOUDr  r  Tr‰  rŽ  úLocal file (ú) for cloud path (a  ) has been changed by your code, but is being requested for download from cloud. Either (1) push your changes to the cloud, (2) remove the local file, or (3) pass `force_overwrite_from_cloud=True` to overwrite; or set env var CLOUDPATHLIB_FORCE_OVERWRITE_FROM_CLOUD=1.zÿ) is newer on disk, but is being requested for download from cloud. Either (1) push your changes to the cloud, (2) remove the local file, or (3) pass `force_overwrite_from_cloud=True` to overwrite; or set env var CLOUDPATHLIB_FORCE_OVERWRITE_FROM_CLOUD=1.)r‘  rP   r^   r#  r$  rå   rË   rÌ   r’  r�  r  r  r“  rÅ   rQ   rS   )rq   rs  Ústatss      r:   rô   zCloudPath._refresh_cache@  sb  € ð	Ø—I‘I“KˆEð &Ð-Ü)+¯©¯©Ø9¸7ó*ç‰e‹g˜ð*'Ð&ñ 'Ø—;‘;×%Ñ%Ô'Ø—‘× Ñ Ó"×+Ñ+¨e¯n©nÒ<ð �K‰K×Ñ×$Ñ$¨T¸DÐ$ÔAØ×Ñ˜TŸ[™[Ô)ô �H‰H�T—[‘[¨¯©¸¿¹Ð(HÕIà�;Š;Ü)Ø˜tŸ{™{˜mÐ+=¸d¸Vð DWð Xóð ð �;‰;×ÑÓ×&Ñ&¨¯©Ò7Ü*Ø˜tŸ{™{˜mÐ+=¸d¸Vð DWð Xóð ð 8øôC ò 	ñ ð	ús   ‚F  Æ 	FÆFc                 ó4  — | j                   j                  «       rt        d«      ‚| j                  | j                   |¬«      }| j	                  «       }t        j                  | j                   |j                  |j                  f¬«       d| _        d| _	        |S )z.Uploads cache file at self._local to the cloudz2Only individual files can be uploaded to the cloudr�  rŽ  FN)
rË   r  r  r  r‘  r^   r“  r’  rÅ   r¼   )rq   rt  Úuploadedr]  s       r:   r”  z CloudPath._upload_local_to_cloudl  s€   € ð �;‰;×ÑÔÜÐQÓRÐRà×-Ñ-Ø�K‰KÐ2Jð .ó 
ˆð
 —	‘	“ˆÜ
�‰�—‘ U§^¡^°U·^±^Ð$DÕEð ˆŒØˆŒàˆr;   Ú
local_pathc                 ó°  — |€0t         j                  j                  dd«      j                  «       dv }|r| j                  j                  || «       | S 	 | j                  «       }|r'|j                  «       j                  |j                  kD  r| j                  j                  || «       | S t        d| j                  › d| › d�«      ‚# t        $ r d}Y Œpw xY w)zfUploads file at `local_path` to the cloud if there is not a newer file
        already there.
        Nr  r  r  r[  r\  zð) is newer in the cloud disk, but is being requested to be uploaded to the cloud. Either (1) redownload changes from the cloud or (2) pass `force_overwrite_to_cloud=True` to overwrite; or set env var CLOUDPATHLIB_FORCE_OVERWRITE_TO_CLOUD=1.)r^   r#  r$  rå   r²   Ú_upload_filer‘  rP   r’  rR   rË   )rq   r`  rt  r]  s       r:   r  zCloudPath._upload_file_to_cloud„  sä   € ð $Ð+Ü')§z¡z§~¡~Ø7¸ó(ç‰e‹g˜ð('Ð$ñ $à�K‰K×$Ñ$ØØôð ˆKð	Ø—I‘I“KˆEñ
 ˜Ÿ™Ó*×3Ñ3°e·n±nÒDØ�K‰K×$Ñ$ØØôð
 ˆKô 'Ø˜4Ÿ;™;˜-Ð'9¸$¸ð @Qð Ró
ð 	
øô ò 	ØŠEð	ús   ÁC ÃCÃCÚ_source_typec           	      óÆ   — 	 ddl m} |j                  | j                  |j	                  «       |j                  d„ |j                  «       ¬«      ¬«      S # t        $ r Y yw xY w)zVPydantic special method. See
        https://docs.pydantic.dev/2.0/usage/types/custom/r   )Úcore_schemac                 ó   — t        | «      S r4   r  )rˆ  s    r:   r2  z8CloudPath.__get_pydantic_core_schema__.<locals>.<lambda>»  s
   € œc !›f€ r;   )Úreturn_schema)ÚserializationN)Úpydantic_corere  Ú no_info_after_validator_functionÚvalidateÚ
any_schemaÚ$plain_serializer_function_ser_schemaÚ
str_schemaÚImportError)rs   rc  Ú_handlerre  s       r:   Ú__get_pydantic_core_schema__z&CloudPath.__get_pydantic_core_schema__°  sm   € ð	Ý1à×?Ñ?Ø—‘Ø×&Ñ&Ó(Ø)×NÑNÙ$Ø"-×"8Ñ"8Ó":ð Oó ð @ó ð øô ò 	Ùð	ús   ‚AA Á	A ÁA Úvc                 ó   —  | |«      S )z[Used as a Pydantic validator. See
        https://docs.pydantic.dev/2.0/usage/types/custom/r€   )rs   rr  s     r:   rk  zCloudPath.validateÂ  s   € ñ �1‹vˆr;   c              #   ó(   K  — | j                   –— y­w)zgPydantic special method. See
        https://pydantic-docs.helpmanual.io/usage/types/#custom-data-typesN)Ú	_validate)rs   s    r:   Ú__get_validators__zCloudPath.__get_validators__È  s   è ø€ ð �m‰mÓùs   ‚Úvaluec                 ó   —  | |«      S )zlUsed as a Pydantic validator. See
        https://pydantic-docs.helpmanual.io/usage/types/#custom-data-typesr€   )rs   rw  s     r:   ru  zCloudPath._validateÎ  s   € ñ �5‹zÐr;   ry   ).©F)FFN)TN)Fi  ©Trà  )TNFF)r†  ry  NNNNN)NNNNN)ry  NNNNN)NNNr4   )r\   rV   )TFNF)TFN)NN)rp   rz   r{   r§   rf   r}   r|   r    r-   r   rž   r   r²   rÐ   r   r   rÖ   rÙ   rÂ   rß   r   Úclassmethodr~   r+   r›   rè   rê   Úintrí   rñ   rõ   rù   rü   rÿ   r  rÐ  ÚabstractmethodrÞ   r  r	  r  r  rÜ   r  rÌ   r  ró   r#  r&  r^   r+  r.  rB  r   rH  rO  rQ  rS  ÚstaticmethodrY  r   r   r   rj  rn  rw  r   r¦  r¨  r¬  r¯  r£  Úbytesr¹  r¼  rÁ  rÃ  rÆ  rÔ  r   rÖ  rÙ  rÝ  rá  r[   r,  ra   rg   rî  rñ  ró  r�  r  r³   rù  rû  rý  rÿ  r  r  r  r  Ústat_resultr‘  r  r   r  r  r  r&  rÓ   r3  r   r   r"  rJ  rO  rÏ   rË   rÌ  rô   r”  r  rq  rk  rv  ru  r€   r;   r:   rZ   rZ   ÿ   sA  … ñð %Ó$ØÓð &*ò	)à˜#˜t [Ð0Ñ1ð)ð ð)ð ˜Ñ"ð	)ð
 
ó)ðV ñó ðóð˜d 3¨ 8™nó ð$ $ s¨C x¡.ð $°Tó $ð ð-˜Cò -ó ð-ð ð? Sò ?ó ð?ð Øà7:ñØðØ04ðà	�4‰òó ó ðð ØÙS cÐS¸4ÐSÈ$ÒSó ó àSààCHñ
Ø˜˜kÐ)Ñ*ð
Ø<@ð
à	ˆt�Y˜t‘_Ð$Ñ	%ò
ó ð
ð6˜#ó 6ð˜ó ð6˜#ó 6ðI˜Cð I Dó Ið ˜Có  ð
(˜Cð ( Dó (ð
)˜Cð ) Dó )ð
(˜Cð ( Dó (ð
)˜Cð ) Dó )ð> Ø×Ñð�sò ó ó ðð 	×ÑàSWñØðØ/3ðØCKÈCÁ=ðà	òó ðð 	×Ññ˜dð °¸#±ð È$ò ó ðñ˜dð ¸Cð Ècó ð
 #ð 
¨$ó 
ð
 ð!˜ò !ó ð!ð˜ó ñ)¨dó )ñ:¨dó :ñ;¨tó ;ð ð!˜ò !ó ð!ð ð˜3ð  4ò ó ðð E¨#¨r¯{©{Ð*:Ñ$;ð Àó ò0ð:8¨ð 8°)¸DÀ$ÈÐ<LÑ2Mó 8ð  *.Ø!%ñ	
à�s˜BŸK™KÐ'Ñ(ð
ð ! ™ð
ð ð	
ð
 
�4˜˜tÐ#Ñ	$ó
ð. *.Ø!%ñ	.à�s˜BŸK™KÐ'Ñ(ð.ð ! ™ð.ð ð	.ð
 
�4˜˜tÐ#Ñ	$ó.ð˜ 4¨¨tÐ#3Ñ4ó ð
 ò$ó ð$ð( Ø'+ñ-?àð-?ð ˜8Ñ$ð-?ð 
�5˜˜t C™y¨$¨s©)Ð3Ñ4°d¸DÐ@Ñ	Aó	-?ðb Ø'+Ø %Øñ#àð#ð ˜8Ñ$ð#ð ð	#ð
 ð#ð 
�5˜˜t C™y¨$¨s©)Ð3Ñ4°d¸DÐ@Ñ	Aó#ðJ ð  #ØØ"&Ø $Ø!%Ø59Ø37ñ	àð	ð ð	ð ˜3‘-ð		ð
 ˜‘ð	ð ˜#‘ð	ð %-¨T¡Nð	ð #+¨4¡.ð	ð 
ò	ó ð	ð ð
 ØØØ59Ø37ñ	àð	ð ˜1‘:ð	ð ð		ð
 ð	ð ð	ð %-¨T¡Nð	ð #+¨4¡.ð	ð 
ò	ó ð	ð ð %'ØØØØ59Ø37ñ	à&ð	ð ˜5‘>ð	ð ð		ð
 ð	ð ð	ð %-¨T¡Nð	ð #+¨4¡.ð	ð 
ò	ó ð	ð ð %'ØØØØ59Ø37ñ	à%ð	ð ˜5‘>ð	ð ð		ð
 ð	ð ð	ð %-¨T¡Nð	ð #+¨4¡.ð	ð 
ò	ó ð	ð ð %'ØØØØ59Ø37ñ	à%ð	ð ˜5‘>ð	ð ð		ð
 ð	ð ð	ð %-¨T¡Nð	ð #+¨4¡.ð	ð 
ò	ó ð	ð ð ØØØØ59Ø37ñ	àð	ð ð	ð ð		ð
 ð	ð ð	ð %-¨T¡Nð	ð #+¨4¡.ð	ð 
ò	ó ð	ð ð Ø"&Ø $Ø!%Ø59Ø37ñ	àð	ð ð	ð ˜3‘-ð		ð
 ˜‘ð	ð ˜#‘ð	ð %-¨T¡Nð	ð #+¨4¡.ð	ð 
ò	ó ð	ð ØØ"&Ø $Ø!%Ø59Ø37ñ\àð\ð ð\ð ˜3‘-ð	\ð
 ˜‘ð\ð ˜#‘ð\ð %-¨T¡Nð\ð #+¨4¡.ð\ð 
ó\ð|˜dð  tó ð*$˜Tð $ dó $ó
"ð" 5¨¨b¯k©kÐ)9Ñ#:ð "¸tó "ñ. ð .°ó .ð	! ð 	!¨#ó 	!ð #'Ø $Ø!%ñ!àð!ð ˜3‘-ð!ð ˜‘ð	!ð
 ˜#‘ð!ð 
ó!ð$˜Eó ð #'Ø $Ø!%ñ	à˜3‘-ðð ˜‘ðð ˜#‘ð	ð
 
óòð#  cð # ¸só # ðJ<  s¨MÐ'9Ñ!:ð <¸tó <ðA e¨C°·±Ð,<Ñ&=ð AÀ$ó Að˜$ó ð˜Tó ñ˜dð ¨tó ñ= ð =°ð =Àó =ð" Dð ¨Tó ð ð.�cò .ó ð.ñ
 #ð 
°xÀ±~ð 
ÐQUó 
ñ 
G #ð 
G°xÀ±~ð 
GÐQUó 
Gð ð0˜ò 0ó ð0ð ð0˜ò 0ó ð0ð ð1˜˜t S˜yÑ)ò 1ó ð1ð ð%�u˜S #˜X‘ò %ó ð%ð ð.�cò .ó ð.ð ð0˜ò 0ó ð0ð ð2˜$˜s™)ò 2ó ð2ð6˜cð 6 dó 6ð9˜cð 9 dó 9ð;¨dó ;ð= #ð =¨$ó =ð
 °#ð  È3ó  ñ&	[ Dð 	[°B·N±Nó 	[ó#ð
 u¨S°"·+±+Ð-=Ñ'>ð À4ó ó2"ð 48ñà�c˜2Ÿ;™;Ð&Ñ'ðð #+¨4¡.ðð 
ó	ð6 !%Ø"'Ø37Ø ñ<à�c˜2Ÿ;™;¨Ð3Ñ4ð<ð ð<ð  ð	<ð
 #+¨4¡.ð<ð ð<ð 
ˆt�TˆzÑ	ó<ð| ð ØØ37ñàðð
 #+¨4¡.ðð 
òó ðð ð ØØ37ñàðð
 #+¨4¡.ðð 
òó ðð ð ØØ37ñ'àð'ð
 #+¨4¡.ð'ð 
ˆt�[Ð Ñ	!ò'ó ð'ð !%Ø"'Ø37ñ
à�c˜2Ÿ;™;¨Ð,Ñ-ð
ð ð
ð  ð	
ð
 #+¨4¡.ð
ð 
ˆt�TˆzÑ	ó
ð  ð !%Ø"'Ø37ñàðð ðð  ð	ð
 #+¨4¡.ðð 
òó ðð ð !%Ø"'Ø37ñàðð ðð  ð	ð
 #+¨4¡.ðð 
òó ðð ð !%Ø"'Ø37ñ'àð'ð ð'ð  ð	'ð
 #+¨4¡.ð'ð 
ˆt�[Ð Ñ	!ò'ó ð'ð !%Ø"'Ø37ñ/à˜#˜rŸ{™{¨DÐ0Ñ1ð/ð ð/ð  ð	/ð
 #+¨4¡.ð/ð 
ˆt�TˆzÑ	ó/ð& ð 48ØKOñ	àðð #+¨4¡.ðð ˜ 3¨°©Ð"6¸	À#¹Ð"FÑGÑHð	ð
 
òó ðð ð 48ØKOñ	àðð #+¨4¡.ðð ˜ 3¨°©Ð"6¸	À#¹Ð"FÑGÑHð	ð
 
òó ðð ð 48ØKOñ	'à˜3 §¡¨TÐ1Ñ2ð'ð #+¨4¡.ð'ð ˜ 3¨°©Ð"6¸	À#¹Ð"FÑGÑHð	'ð
 
ˆt�[Ð Ñ	!ò'ó ð'ó1ðf ð !%Ø"'Ø37ñàðð ðð  ð	ð
 #+¨4¡.ðð 
òó ðð ð !%Ø"'Ø37ñàðð ðð  ð	ð
 #+¨4¡.ðð 
òó ðð ð !%Ø"'Ø37ñ'àð'ð ð'ð  ð	'ð
 #+¨4¡.ð'ð 
ˆt�[Ð Ñ	!ò'ó ð'ð !%Ø"'Ø37ñ
à�c˜2Ÿ;™;¨Ð,Ñ-ð
ð ð
ð  ð	
ð
 #+¨4¡.ð
ð 
ˆt�TˆzÑ	ó
ð  ð !%Ø"'Ø37ñàðð ðð  ð	ð
 #+¨4¡.ðð 
òó ðð ð !%Ø"'Ø37ñàðð ðð  ð	ð
 #+¨4¡.ðð 
òó ðð ð !%Ø"'Ø37ñ'àð'ð ð'ð  ð	'ð
 #+¨4¡.ð'ð 
ˆt�[Ð Ñ	!ò'ó ð'ð !%Ø"'Ø37ñ/à˜#˜rŸ{™{¨DÐ0Ñ1ð/ð ð/ð  ð	/ð
 #+¨4¡.ð/ð 
ˆt�TˆzÑ	ó/ò&%ð ð
˜ò 
ó ð
ð3 5¨¨b¯k©kÐ)9Ñ#:ð 3ÀCð 3ÈDó 3ñ$*¸À$¹ð *ÐSWó *ð\ 48ñà"*¨4¡.ðð 
óð6 48ñ)
àð)
ð #+¨4¡.ð)
ð 
ó	)
ðX ð¸ò ó ðð" ð˜ð  ò ó ðð
 ð 9¨X°s°e¸T°kÑ-BÀDÈ$Ð-NÑ#Oò ó ðð
 ð˜cð  dò ó ñr;   )Ú	metaclassr_   c                 óª   — d}d}t        | «      j                  |«      D ]-  }|r|dk(  rŒ|dk(  r|j                  |«      \  }}}Œ&||z   |z   }Œ/ |xs |S )Nrµ   r*  r™   r)  )r|   r>  Ú
rpartition)r_   ÚsepÚnewpathrg   rn   s        r:   rË  rË  Ü  sp   € Ø
€Cð €GÜ�D“	—‘ Ó$ò 'ˆÙ�t˜s’{àØ�4Š<à#×.Ñ.¨sÓ3‰MˆG�Q˜ØØ˜C‘- $Ñ&‰ð'ð Š>�cÐr;   c                   ó   — e Zd Zdeddfd„Zy)Ú_CloudPathSelectableAccessorÚscandir_funcr\   Nc                 ó   — || _         y r4   )Úscandir)rq   rˆ  s     r:   rž   z%_CloudPathSelectableAccessor.__init__ø  s	   € Ø#ˆ�r;   )rp   rz   r{   r   rž   r€   r;   r:   r‡  r‡  ÷  s   „ ð$ Xð $°$ô $r;   r‡  c                   óÄ   — e Zd Z	 ddedee   dededdf
d„Zdefd„Zdd	edefd
„Z	defd„Z
defd„Zedefd„«       Zd„ Zeedd deed   ddf   fd„«       «       ZeZd„ Zy)rD  rg   r  ÚchildrenrÌ   r\   Nc                 óp   — || _         || _        || _        || _        t	        | j
                  «      | _        y r4   )Ú_nameÚ_all_childrenÚ_parentsr  r‡  rŠ  Ú	_accessor)rq   rg   r  rŒ  rÌ   s        r:   rž   z_CloudPathSelectable.__init__ý  s1   € ð ˆŒ
Ø%ˆÔØˆŒØˆŒä5°d·l±lÓCˆ�r;   c                 óT   — dj                  | j                  | j                  gz   «      S )Nrµ   )r¿   r�  rg   rw   s    r:   rè   z_CloudPathSelectable.__repr__  s    € Ø�x‰x˜Ÿ™¨¯©¨Ñ3Ó4Ð4r;   r  c                 ó   — | j                   d uS r4   )r�  r  s     r:   r  z_CloudPathSelectable.is_dir  s   € Ø×!Ñ!¨Ð-Ð-r;   c                 ó   — | j                   S r4   )r  rw   s    r:   rÌ   z_CloudPathSelectable.exists  s   € Ø�|‰|Ðr;   c                  ó   — yrÅ  r€   rw   s    r:   Ú
is_symlinkz_CloudPathSelectable.is_symlink  rÇ  r;   c                 ó   — | j                   S r4   )rŽ  rw   s    r:   rg   z_CloudPathSelectable.name  s   € à�z‰zÐr;   c                 óœ   — t        || j                  | j                  gz   | j                  j	                  |d «      || j                  v ¬«      S )N)rÌ   )rD  r�  rg   r�  r$  )rq   Úparts     r:   Ú_make_child_relpathz(_CloudPathSelectable._make_child_relpath  sH   € ä#ØØ�M‰M˜TŸY™Y˜KÑ'Ø×Ñ×"Ñ" 4¨Ó.Ø˜4×-Ñ-Ð-ô	
ð 	
r;   rG  )rD  NNc              #   óX   ‡ K  — ˆ fd„‰ j                   j                  «       D «       –— y ­w)Nc              3   ón   •K  — | ],  \  }}t        |‰j                  ‰j                  gz   |«      –— Œ. y ­wr4   )rD  r�  rŽ  )r¹   rg  Úgrand_childrenrG  s      €r:   r»   z/_CloudPathSelectable.scandir.<locals>.<genexpr>)  s5   øè ø€ ò 
á%��~ô ! ¨¯©¸¿¹¸Ñ(DÀn×Uñ
ùs   ƒ25)r�  rW  )rG  s   `r:   rŠ  z_CloudPathSelectable.scandir$  s(   øè ø€ ó

à)-×);Ñ);×)AÑ)AÓ)Cô
ó 	
ùs   ƒ'*c              #   ó   K  — t        t        «      }| j                  | «      5 }|D ]$  }||j                  «          j	                  |«       Œ& | |d   D �cg c]  }|j
                  ‘Œ c}|d   D �cg c]  }|j
                  ‘Œ c}f–— |d   D ]  }|j                  «       E d {  –—†  Œ 	 d d d «       y c c}w c c}w 7 Œ# 1 sw Y   y xY w­wré  )r   rA  rŠ  r  rX  rg   rn  )rq   Ú
dirs_filesrW  rg  rA  Ú	child_dirs         r:   rn  z_CloudPathSelectable.walk0  sÉ   è ø€ ä ¤Ó&ˆ
Ø�\‰\˜$Óð 	, 5Øò 9�Ø˜5Ÿ<™<›>Ñ*×1Ñ1°%Õ8ð9ð ¨°DÑ)9Ö: A˜Ÿ›Ò:ÈZÐX]ÑM^Ö<_È¸Q¿V»VÒ<_Ð_Ò_à'¨Ñ-ò ,�	Ø$Ÿ>™>Ó+×+Ñ+ñ,÷	,ð 	,ùò
 ;ùÒ<_ð ,ø÷	,ð 	,üsF   ‚!C£2CÁB6Á(	CÁ1B;
Â!CÂ%C Â&CÂ-	CÂ6CÃCÃCrz  ry  )rp   rz   r{   r|   r   r   r~   rž   rè   r  rÌ   r–  r   rg   rš  r~  r   r   rŠ  Ú_scandirrn  r€   r;   r:   rD  rD  ü  sç   „ ð ñDàðDð �c‘ðDð ð	Dð
 ðDð 
óDð5˜#ó 5ñ. dð .°tó .ð˜ó ð˜Dó ð ð�cò ó ðò
ð Øð
Ø$ð
à	�9Ð?Ñ@À$ÈÐLÑ	Mò
ó ó ð
ð €Hó,r;   rD  rz  )frÐ  rÏ  r   Úcollections.abcÚ
contextlibr   Úior   r   r   r	   r
   r^   Úpathlibr   r   r   r   rT  ræ  Útypesr   Útypingr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   Úurllib.parser"   Úwarningsr#   Ú	_typeshedr$   r%   r&   r'   r(   rç  r+   Útyping_extensionsr-   r0   r1   r5   r2   r=   Úpathlib._localÚlegacy.globÚcloudpathlib.enumsrB   r*  rC   Ú
exceptionsrD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   r²   rT   Úcloudpath_inforV   r~   rd   rf   r�   r|   r}   r‚   rƒ   rŒ   ÚABCMetarŽ   rZ   rË  r‡  rD  r€   r;   r:   ú<module>r²     s  ðÜ 
Ý #Û Ý %ß TÕ TÛ 	÷ó ó Û 
Ý ÷÷ ÷ ÷ ÷ õ( "Ý á÷õ ð ×Ñ�wÒÞ å+à×Ñ�wÒÞå&ð ×Ñ�gÒÝ&Ý@Ý$ôFð 	×Ñ�b�qÐ˜WÒ$Ý$Ý3Þ&Ø×Ñ�b�qÐ˜WÒ$Ý+Û&æ+Ø×Ñ˜Ò Ý$Û&Ý+õ -å ÷÷ ÷ ÷ ó ñ& Ýå )ð KOñØðØðØ-8ðØCGðà	ó÷< ñ  ñ< ;FÐFYÓ:ZÐ ˜˜cÐ#6Ð6Ñ7Ó Zñ ˆCƒL€Ù�\¨Ô5€
ð˜Sð  X¨t°JÑ/?Ð.@À$ÀzÑBRÐ.RÑ%Só ô>@�C—K‘Kô >@ôDS˜-õ Sðz.�=ð  Só ÷6$ñ $÷
?,ò ?,r;   