Ë
    »ÿæiÈJ  ã                  óì  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dl	Zd dl
mZ d dlmZ d dlmZmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZ ej>                  j@                  Z ej>                  jB                  Z! ejD                  e#«      Z$ ejJ                  d	«      Z& ejJ                  d
«      Z' ejJ                  dejP                  «      Z)dd„Z* G d„ de«      Z+ ejX                  e+«       y)é    )ÚannotationsN)Úreplace)ÚAny)Ú
BadCommandÚInstallationError)Ú
HiddenTextÚdisplay_pathÚhide_url)Úmake_command)ÚAuthInfoÚRemoteNotFoundErrorÚRemoteNotValidErrorÚ
RevOptionsÚVersionControlÚ(find_path_to_project_root_from_repo_rootÚvcsz(^git version (\d+)\.(\d+)(?:\.(\d+))?.*$z^[a-fA-F0-9]{40}$a/  ^
    # Optional user, e.g. 'git@'
    (\w+@)?
    # Server, e.g. 'github.com'.
    ([^/:]+):
    # The server-side path. e.g. 'user/project.git'. Must start with an
    # alphanumeric character so as not to be confusable with a Windows paths
    # like 'C:/foo/bar' or 'C:\foo\bar'.
    (\w[^:]*)
    $c                ó>   — t        t        j                  | «      «      S ©N)ÚboolÚ
HASH_REGEXÚmatch)Úshas    új/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/pip/_internal/vcs/git.pyÚlooks_like_hashr   :   s   € Ü”
× Ñ  Ó%Ó&Ð&ó    c                  óÔ  ‡ — e Zd ZdZdZdZdZdZdZe	dd„«       Z
edˆ fd„«       Zdd	„Zdd
„Zed d„«       Zed!d„«       Zed"d„«       Ze	 	 	 	 	 	 	 	 d#d„«       Zed$d„«       Z	 	 	 	 	 	 	 	 	 	 d%d„Z	 d&	 	 	 	 	 	 	 	 	 d%d„Z	 d&	 	 	 	 	 	 	 	 	 d%d„Zed'd„«       Ze	d(d„«       Zed)d„«       Zed*d+d„«       Zed d„«       Zed,ˆ fd„«       Zed&d-d„«       Zed ˆ fd„«       Ze	d.d„«       Zˆ xZ S )/ÚGitÚgitz.gitÚclone)zgit+httpz	git+httpszgit+sshzgit+gitzgit+file)ÚGIT_DIRÚGIT_WORK_TREEÚHEADc                ó   — | gS r   © ©Úrevs    r   Úget_base_rev_argszGit.get_base_rev_argsN   s	   € àˆuˆr   c                ó¢   •— t         j                  j                  d«      r!|j                  di «      }d|d<   d|d<   ||d<   t        ‰| �  |i |¤ŽS )NÚPIP_NO_INPUTÚextra_environÚ0ÚGIT_TERMINAL_PROMPTzssh -oBatchMode=yesÚGIT_SSH_COMMAND)ÚosÚenvironÚgetÚsuperÚrun_command)ÚclsÚargsÚkwargsr*   Ú	__class__s       €r   r2   zGit.run_commandR   sX   ø€ ä�:‰:�>‰>˜.Ô)Ø"ŸJ™J ¸Ó;ˆMØ36ˆMÐ/Ñ0Ø/DˆMÐ+Ñ,Ø&3ˆF�?Ñ#Ü‰wÑ" DÐ3¨FÑ3Ð3r   c                óæ   — | j                  t        |«      «      \  }}|j                  sy| j                  ||j                  «      syt	        | j                  ||j                  «      d   «      }| S )NFr   )Úget_url_rev_optionsr
   r&   Úis_commit_id_equalr   Úget_revision_sha)ÚselfÚurlÚdestÚ_Úrev_optionsÚis_tag_or_branchs         r   Úis_immutable_rev_checkoutzGit.is_immutable_rev_checkout[   si   € Ø×1Ñ1´(¸3³-Ó@‰ˆˆ;Ø�ŠØØ×&Ñ& t¨[¯_©_Ô=ð ô   × 5Ñ 5°d¸K¿O¹OÓ LÈQÑ OÓPÐØ#Ð#Ð#r   c                óò   — | j                  dgddd¬«      }t        j                  |«      }|st        j	                  d|«       yt        |j                  d«      «      t        |j                  d	«      «      fS )
NÚversionzgit versionFT)Úcommand_descÚshow_stdoutÚstdout_onlyzCan't parse git version: %sr$   é   é   )r2   ÚGIT_VERSION_REGEXr   ÚloggerÚwarningÚintÚgroup)r;   rC   r   s      r   Úget_git_versionzGit.get_git_versioni   sq   € Ø×"Ñ"ØˆKØ&ØØð	 #ó 
ˆô "×'Ñ'¨Ó0ˆÙÜ�N‰NÐ8¸'ÔBØÜ�E—K‘K “NÓ#¤S¨¯©°Q«Ó%8Ð9Ð9r   c                ó–   — g d¢}| j                  |ddd|¬«      }|j                  «       }|j                  d«      r|t        d«      d S y)zl
        Return the current branch, or None if HEAD isn't at a branch
        (e.g. detached HEAD).
        )zsymbolic-refú-qr"   ©rG   FT©Úextra_ok_returncodesrE   rF   Úcwdzrefs/heads/N)r2   ÚstripÚ
startswithÚlen)r3   Úlocationr4   ÚoutputÚrefs        r   Úget_current_branchzGit.get_current_branchv   sZ   € ò .ˆØ—‘ØØ!%ØØØð !ó 
ˆð �l‰l‹nˆà�>‰>˜-Ô(Ø”s˜=Ó)Ð+Ð,Ð,àr   c                ó€  — | j                  d|g|ddd¬«      }i }|j                  «       j                  d«      D ]2  }|j                  d«      }|sŒ	 |j                  dd	¬
«      \  }}|||<   Œ4 d|› �}d|› �}	|j                  |«      }
|
�|
dfS |j                  |	«      }
|
dfS # t        $ r t	        d|›�«      ‚w xY w)zö
        Return (sha_or_none, is_branch), where sha_or_none is a commit hash
        if the revision names a remote branch or tag, otherwise None.

        Args:
          dest: the repository directory.
          rev: the revision name.
        zshow-refFTÚignore)rT   rE   rF   Úon_returncodeÚ
ÚÚ rH   )Úmaxsplitzunexpected show-ref line: zrefs/remotes/origin/z
refs/tags/)r2   rU   ÚsplitÚrstripÚ
ValueErrorr0   )r3   r=   r&   rY   ÚrefsÚlineÚref_shaÚref_nameÚ
branch_refÚtag_refr   s              r   r:   zGit.get_revision_sha�   s  € ð —‘Ø˜ÐØØØØ"ð !ó 
ˆð ˆð —L‘L“N×(Ñ(¨Ö.ˆDØ—;‘;˜tÓ$ˆDÙØðHØ$(§J¡J¨s¸Q JÓ$?Ñ!�˜ð %ˆD�ŠNð /ð ,¨C¨5Ð1ˆ
Ø˜s˜eÐ$ˆà�h‰h�zÓ"ˆØˆ?Ø˜�;Ðà�h‰h�wÓˆà�Uˆ|Ðøô! ò Hô !Ð#=¸d¸XÐ!FÓGÐGðHús   ÁB%Â%B=c                óf   — |j                  d«      ryt        |«      sy| j                  ||«      ryy)a$  
        Return true if rev is a ref or is a commit that we don't have locally.

        Branches and tags are not considered in this method because they are
        assumed to be always available locally (which is a normal outcome of
        ``git clone`` and ``git fetch --tags``).
        zrefs/TF)rV   r   Ú
has_commit)r3   r=   r&   s      r   Ú_should_fetchzGit._should_fetch½   s2   € ð �>‰>˜'Ô"àä˜sÔ#àà�>‰>˜$ Ô$ààr   c           	     ó¨  — |j                   }|€J ‚| j                  ||«      \  }}|�$|j                  |«      }t        ||r|nd¬«      }|S t	        |«      st
        j                  d|«       | j                  ||«      s|S | j                  t        dd||j                  «       «      |¬«       | j                  |d¬«      }|j                  |«      }|S )	zµ
        Resolve a revision to a new RevOptions object with the SHA1 of the
        branch, tag, or ref if found.

        Args:
          rev_options: a RevOptions object.
        N)Úbranch_namez:Did not find branch or tag '%s', assuming revision or ref.ÚfetchrP   ©rT   Ú
FETCH_HEADr%   )Úarg_revr:   Úmake_newr   r   rJ   Úinforn   r2   r   Úto_argsÚget_revision)r3   r=   r<   r?   r&   r   Ú	is_branchs          r   Úresolve_revisionzGit.resolve_revisionÔ   së   € ð ×!Ñ!ˆð ˆÐˆà×-Ñ-¨d°CÓ8‰ˆˆYàˆ?Ø%×.Ñ.¨sÓ3ˆKÜ! +Á9¹CÐRVÔXˆKàÐô ˜sÔ#Ü�K‰KØLØôð
 × Ñ   sÔ+ØÐð 	�‰Ü˜ $¨¨[×-@Ñ-@Ó-BÓCØð 	ô 	
ð
 ×Ñ˜t¨ÐÓ6ˆØ!×*Ñ*¨3Ó/ˆàÐr   c                ó0   — |sy| j                  |«      |k(  S )z§
        Return whether the current commit hash equals the given name.

        Args:
          dest: the repository directory.
          name: a string name.
        F)rx   )r3   r=   Únames      r   r9   zGit.is_commit_id_equal  s    € ñ àà×Ñ Ó%¨Ñ-Ð-r   c                ód  — |j                  «       }t        j                  d||t        |«      «       |dk  rd}n
|dk(  rd}nd}| j	                  «       dk\  r!| j                  t        dd	g|¢|‘|‘­Ž «       n| j                  t        dg|¢|‘|‘­Ž «       |j                  r¸| j                  |||«      }t        |d
d «      }t        j                  d||«       |€K| j                  ||j                  «      s…t        dd|j                  «       «      }| j                  ||¬«       nV| j                  |«      |k7  rBd|› �}	dd|d|	g}| j                  ||¬«       n"| j                  |«      }
|j                  |
«      }t        j                  d||j                  «       | j!                  ||¬«       y )NzCloning %s%s to %sr   )z--quietrG   r$   )z	--verbosez
--progress)rH   é   r   z--filter=blob:nonerp   zRev options %s, branch_name %sÚcheckoutrP   rr   zorigin/z-bz--trackzResolved %s to commit %s©Ú	verbosity)Ú
to_displayrJ   rv   r	   rN   r2   r   r&   rz   ÚgetattrÚdebugr9   rw   r[   rx   ru   Úupdate_submodules)r;   r=   r<   r?   r�   Úrev_displayÚflagsrp   Úcmd_argsÚtrack_branchr   s              r   Ú	fetch_newzGit.fetch_new  sÕ  € ð "×,Ñ,Ó.ˆÜ�‰Ð(¨#¨{¼LÈÓ<NÔOØ˜Š>Ø%1‰EØ˜!Š^Ø‰Eà/ˆEØ×ÑÓ! WÒ,ð ×ÑÜØØ(ðð ðð ð	ð
 òõð ×Ñœ\¨'ÐE°EÐE¸3ÐEÀÒEÔFà�?Š?à×/Ñ/°°c¸;ÓGˆKÜ! +¨}¸dÓCˆKÜ�L‰LÐ9¸;ÈÔTØÐ"ð ×.Ñ.¨t°[·_±_ÔEÜ+Ø"ØØ#×+Ñ+Ó-ó �Hð
 ×$Ñ$ X°4Ð$Õ8Ø×(Ñ(¨Ó.°+Ò=ð ")¨¨Ð6�àØØØØ ð�ð × Ñ  ¨tÐ Õ4à×#Ñ# DÓ)ˆCØ%×.Ñ.¨sÓ3ˆKä�‰Ð.°°[·_±_ÔEð 	×Ñ˜t¨yÐÕ9r   c                óô   — | j                  t        dd|«      |¬«       g }|dk  r|j                  d«       t        dg|¢|j                  «       ‘­Ž }| j                  ||¬«       | j	                  ||¬«       y )NÚconfigzremote.origin.urlrr   r   rP   r   r€   )r2   r   Úappendrw   r…   ©r;   r=   r<   r?   r�   Úextra_flagsrˆ   s          r   Úswitchz
Git.switchP  s†   € ð 	×ÑÜ˜Ð#6¸Ó<Øð 	ô 	
ð
 ˆà˜Š>Ø×Ñ˜tÔ$ä 
ÐP¨[ÐP¸+×:MÑ:MÓ:OÒPˆØ×Ñ˜ tÐÔ,à×Ñ˜t¨yÐÕ9r   c                ób  — g }|dk  r|j                  d«       | j                  «       dk\  r| j                  ddg|¢|¬«       n| j                  dg|¢|¬«       | j                  |||«      }t	        ddg|¢|j                  «       ‘­Ž }| j                  ||¬«       | j                  ||¬	«       y )
Nr   rP   )rG   é	   rq   z--tagsrr   Úresetz--hardr€   )r�   rN   r2   rz   r   rw   r…   rŽ   s          r   Úupdatez
Git.updatef  sÒ   € ð ˆà˜Š>Ø×Ñ˜tÔ$ð ×ÑÓ! VÒ+à×Ñ˜g xÐ>°+Ð>ÀDÐÕIà×Ñ˜gÐ4¨Ð4¸$ÐÔ?à×+Ñ+¨D°#°{ÓCˆÜØØð
ð ð
ð ×ÑÓ!ò	
ˆð 	×Ñ˜ tÐÔ,à×Ñ˜t¨yÐÕ9r   c                ó"  — | j                  g d¢ddd|¬«      }|j                  «       }	 |d   }|D ]  }|j	                  d«      sŒ|} n |j                  d«      d	   }| j                  |j                  «       «      S # t        $ r t        ‚w xY w)
z¢
        Return URL of the first remote encountered.

        Raises RemoteNotFoundError if the repository does not have a remote
        url configured.
        )rŒ   z--get-regexpzremote\..*\.urlrQ   FTrR   r   zremote.origin.url ra   rG   )r2   Ú
splitlinesÚ
IndexErrorr   rV   rc   Ú_git_remote_to_pip_urlrU   )r3   rX   ÚstdoutÚremotesÚfound_remoteÚremoter<   s          r   Úget_remote_urlzGit.get_remote_url„  s¬   € ð —‘Ú:Ø!%ØØØð !ó 
ˆð ×#Ñ#Ó%ˆð	&Ø" 1™:ˆLó ˆFØ× Ñ Ð!5Õ6Ø%�Ùð ð × Ñ  Ó% aÑ(ˆØ×)Ñ)¨#¯)©)«+Ó6Ð6øô ò 	&Ü%Ð%ð	&ús   ªA> Á>Bc                ó  — t        j                  d| «      r| S t        j                  j	                  | «      r#t        j                  | «      j                  «       S t        j                  | «      }|r|j                  d«      S t        | «      ‚)a8  
        Convert a remote url from what git uses to what pip accepts.

        There are 3 legal forms **url** may take:

            1. A fully qualified url: ssh://git@example.com/foo/bar.git
            2. A local project.git folder: /path/to/bare/repository.git
            3. SCP shorthand for form 1: git@example.com:foo/bar.git

        Form 1 is output as-is. Form 2 must be converted to URI and form 3 must
        be converted to form 1.

        See the corresponding test test_git_remote_url_to_pip() for examples of
        sample inputs/outputs.
        z\w+://zssh://\1\2/\3)Úrer   r.   ÚpathÚexistsÚpathlibÚPurePathÚas_uriÚ	SCP_REGEXÚexpandr   )r<   Ú	scp_matchs     r   r˜   zGit._git_remote_to_pip_url¢  sq   € ô" �8‰8�I˜sÔ#àˆJÜ�7‰7�>‰>˜#Ôô ×#Ñ# CÓ(×/Ñ/Ó1Ð1Ü—O‘O CÓ(ˆ	Ùà×#Ñ#Ð$4Ó5Ð5ä! #Ó&Ð&r   c                óZ   — 	 | j                  dddd|z   g|d¬«       y# t        $ r Y yw xY w)zU
        Check if rev is a commit that is available in the local repository.
        ú	rev-parserP   z--verifyzsha^F)rT   Úlog_failed_cmdT)r2   r   )r3   rX   r&   s      r   rm   zGit.has_commitÁ  sG   € ð
		Ø�O‰OØ˜d J°¸±Ð=ØØ$ð ô ð øô !ò 	Ùð	ús   ‚ ž	*©*c                óX   — |€d}| j                  d|gdd|¬«      }|j                  «       S )Nr"   r©   FT©rE   rF   rT   )r2   rU   )r3   rX   r&   Úcurrent_revs       r   rx   zGit.get_revisionÑ  sA   € àˆ;ØˆCØ—o‘oØ˜#ÐØØØð	 &ó 
ˆð × Ñ Ó"Ð"r   c                ó\  — | j                  ddgdd|¬«      j                  «       }t        j                  j	                  |«      s t        j                  j                  ||«      }t        j                  j                  t        j                  j                  |d«      «      }t        ||«      S )z‘
        Return the path to Python project root, relative to the repo root.
        Return None if the project root is in the repo root.
        r©   z	--git-dirFTr¬   z..)r2   rU   r.   r    ÚisabsÚjoinÚabspathr   )r3   rX   Úgit_dirÚ	repo_roots       r   Úget_subdirectoryzGit.get_subdirectoryÝ  sˆ   € ð —/‘/Ø˜+Ð&ØØØð	 "ó 
÷
 ‰%‹'ð 	ô �w‰w�}‰}˜WÔ%Ü—g‘g—l‘l 8¨WÓ5ˆGÜ—G‘G—O‘O¤B§G¡G§L¡L°¸$Ó$?Ó@ˆ	Ü7¸À)ÓLÐLr   c                ó  •— t        |«      \  }}}}}|j                  d«      rŒ|dt        |j                  d«      «        }|t        j
                  j                  |«      j                  dd«      j                  d«      z   }|j                  d«      dz   }	|d|	 t        ||	d ||||f«      z   }d|vr>d|vsJ ‚|j                  d	d
«      }t        ‰| �-  |«      \  }}
}|j                  dd«      }nt        ‰| �-  |«      \  }}
}||
|fS )a9  
        Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'.
        That's required because although they use SSH they sometimes don't
        work with a ssh:// scheme (e.g. GitHub). But we need a scheme for
        parsing. Hence we remove it again afterwards and return it as a stub.
        ÚfileNÚ/Ú\Ú+rG   z://zfile:zgit+z
git+ssh://zssh://Ú )ÚurlsplitÚendswithrW   ÚlstripÚurllibÚrequestÚurl2pathnamer   ÚfindÚ
urlunsplitr1   Úget_url_rev_and_auth)r3   r<   ÚschemeÚnetlocr    ÚqueryÚfragmentÚinitial_slashesÚnewpathÚ
after_plusr&   Ú	user_passr6   s               €r   rÃ   zGit.get_url_rev_and_authï  s*  ø€ ô 19¸³Ñ-ˆ�˜˜e XØ�?‰?˜6Ô"Ø"Ð#;¤c¨$¯+©+°cÓ*:Ó&;Ð%;Ð<ˆOØ%¬¯©×(CÑ(CÀDÓ(I×(QÑ(QØ�có)ç‰f�S‹kñˆGð  Ÿ™ SÓ)¨AÑ-ˆJØ˜˜*Ð%¬
Ø˜
˜Ð$ f¨g°u¸hÐGó)ñ ˆCð ˜ÑØ #Ñ%Ð%Ð%Ø—+‘+˜f lÓ3ˆCÜ"'¡'Ñ">¸sÓ"CÑˆC��iØ—+‘+˜h¨Ó+‰Cä"'¡'Ñ">¸sÓ"CÑˆC��ià�C˜Ð"Ð"r   c                óÚ   — g d¢}|dk  r|j                  d«       t        j                  j                  t        j                  j	                  |d«      «      sy | j                  ||¬«       y )N)Ú	submoduler”   z--initz--recursiver   rP   z.gitmodulesrr   )r�   r.   r    r¡   r°   r2   )r3   rX   r�   Úargvs       r   r…   zGit.update_submodules  sS   € â?ˆà˜Š>Ø�K‰K˜Ôä�w‰w�~‰~œbŸg™gŸl™l¨8°]ÓCÔDØØ�‰ØØð 	õ 	
r   c                ó  •— t         ‰| �  |«      }|r|S 	 | j                  ddg|dddd¬«      }t        j                  j                  |j                  d«      «      S # t        $ r t        j                  d|«       Y y t        $ r Y y w xY w)	Nr©   z--show-toplevelFTÚraise)rT   rE   rF   r^   rª   zKcould not determine if %s is under git control because git is not availablez
)r1   Úget_repository_rootr2   r   rJ   r„   r   r.   r    Únormpathrd   )r3   rX   ÚlocÚrr6   s       €r   rÑ   zGit.get_repository_root  sŸ   ø€ ä‰gÑ)¨(Ó3ˆÙØˆJð	Ø—‘ØÐ/Ð0ØØ!Ø Ø%Ø$ð  ó ˆAô" �w‰w×Ñ §¡¨Ó 0Ó1Ð1øô ò 	Ü�L‰Lð/àôñ
 Ü ò 	Ùð	ús   –A ÁB	Á>B	ÂB	c                 ó   — y)zEIn either https or ssh form, requirements must be prefixed with git+.Tr$   )Úrepo_urls    r   Úshould_add_vcs_url_prefixzGit.should_add_vcs_url_prefix5  s   € ð r   )r&   ÚstrÚreturnz	list[str])r4   r   r5   r   rÙ   rØ   )r<   rØ   r=   rØ   rÙ   r   )rÙ   ztuple[int, ...])rX   rØ   rÙ   ú
str | None)r=   rØ   r&   rØ   rÙ   ztuple[str | None, bool])r=   rØ   r&   rØ   rÙ   r   )r=   rØ   r<   r   r?   r   rÙ   r   )r=   rØ   r|   rÚ   rÙ   r   )
r=   rØ   r<   r   r?   r   r�   rL   rÙ   ÚNone)r   )rX   rØ   rÙ   rØ   )r<   rØ   rÙ   rØ   )rX   rØ   r&   rØ   rÙ   r   r   )rX   rØ   r&   rÚ   rÙ   rØ   )r<   rØ   rÙ   z tuple[str, str | None, AuthInfo])rX   rØ   r�   rL   rÙ   rÛ   )rÖ   rØ   rÙ   r   )!Ú__name__Ú
__module__Ú__qualname__r|   ÚdirnameÚ	repo_nameÚschemesÚunset_environÚdefault_arg_revÚstaticmethodr'   Úclassmethodr2   rA   rN   r[   r:   rn   rz   r9   rŠ   r�   r”   r�   r˜   rm   rx   r´   rÃ   r…   rÑ   r×   Ú__classcell__)r6   s   @r   r   r   >   s3  ø„ Ø€DØ€GØ€Ið€Gð 1€MØ€Oàòó ðð ô4ó ð4ó$ó:ð òó ðð0 ò+ó ð+ðZ òó ðð, ð+Øð+Ø'ð+Ø6@ð+à	ò+ó ð+ðZ ò.ó ð.ð=:Øð=:Ø(ð=:Ø7Að=:ØNQð=:à	ó=:ðH ð:àð:ð ð:ð  ð	:ð
 ð:ð 
ó:ð6 ð:àð:ð ð:ð  ð	:ð
 ð:ð 
ó:ð< ò7ó ð7ð: ò'ó ð'ð< òó ðð ó	#ó ð	#ð òMó ðMð" ô#ó ð#ð< ó
ó ð
ð ô2ó ð2ð0 òó ôr   r   )r   rØ   rÙ   r   )-Ú
__future__r   ÚloggingÚos.pathr.   r¢   rŸ   Úurllib.parser¾   Úurllib.requestÚdataclassesr   Útypingr   Úpip._internal.exceptionsr   r   Úpip._internal.utils.miscr   r	   r
   Úpip._internal.utils.subprocessr   Ú pip._internal.vcs.versioncontrolr   r   r   r   r   r   r   Úparser»   rÂ   Ú	getLoggerrÜ   rJ   ÚcompilerI   r   ÚVERBOSEr¥   r   r   Úregisterr$   r   r   Ú<module>r÷      sÞ   ðÝ "ã Û Û Û 	Û Û Ý Ý ç Bß GÑ GÝ 7÷÷ ñ ð �<‰<× Ñ €Ø�\‰\×$Ñ$€
ð 
ˆ×	Ñ	˜8Ó	$€ð �B—J‘JðóÐ ð ˆR�Z‰ZÐ+Ó,€
ð ˆB�J‰Jð		ð ‡J�Jó€	ó'ôzˆ.ô zðz €‡�ˆSÕ r   