§
    
Á³g´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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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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(m)Z)m*Z* d dl+m,Z, d d	l-m.Z.m/Z/ d d
l0m1Z1 d dl2m3Z3 d dl4m5Z5 g d¢Z6 ej7        e8¦  «        Z9 e#d¦  «        Z:e!e"e;         e;ef         Z<e!e=e=e=f         Z>e!e?e!ee?         ee?         f         f         Z@de?fd„ZAde!e=df         de!e=e=e=f         fd„ZBde?ddfd„ZCde?fd„ZD e(d e)d¦  «         e*d¦  «        ¬¦  «        dode?deEddfd„¦   «         ZFdedef         de?d e<ddfd!„ZGde?de?fd"„ZHdpde?d$e?de?fd%„ZId&e?d'ee?         de?fd(„ZJd&e?ddfd)„ZKd&e?d'ee?         de?fd*„ZLd&e?de?fd+„ZMd&e?de?fd,„ZNd-e?de=fd.„ZOd/ePde?fd0„ZQd1eee                  de!ee?         ee=         f         fd2„ZRde?deEfd3„ZSejT        fd4ed5e=deeUddf         fd6„ZVdqde?d7eEde?fd8„ZWde?de!e?e?f         fd9„ZXd:e?d;e?ddfd<„ZYde?deEfd=„ZZd>ed?eddfd@„Z[ G dA„ dBe¦  «        Z\e j]        dCe?dee\ddf         fdD„¦   «         Z^dee\         fdE„Z_dee\         fdF„Z`dGedHede"e         fdI„ZadJe?dKee=         de?fdL„ZbdrdNe?dOe?de?fdP„ZcdNe?de!e?ee=         f         fdQ„ZddNe?de@fdR„ZedNe?de?fdS„ZfdTe?dUee?ge!edf         f         de!e?e@f         fdV„ZgdNe?de@fdW„ZhdNe?de!e?         fdX„ZidTe?de!e?e?e!e?e?f         f         fdY„ZjdTe?de?fdZ„ZkdTe?de?fd[„Zl G d\„ d]¦  «        Zmd^e?demfd_„ZndTe?demfd`„ZodaeEddfdb„Zpdsdc„ZqdeEfdd„Zrdtde?dfe=de!ee=f         fdg„ZsdeEfdh„Ztdiee         dee!eef                  fdj„Zudkee:geEf         diee:         de!ee:         ee:         f         fdl„Zv G dm„ dne&¦  «        ZwdS )ué    N)ÚStringIO)ÚfilterfalseÚteeÚzip_longest)ÚTracebackType)ÚAnyÚBinaryIOÚCallableÚContextManagerÚDictÚ	GeneratorÚIterableÚIteratorÚListÚOptionalÚTextIOÚTupleÚTypeÚTypeVarÚcast)ÚBuildBackendHookCaller)ÚretryÚstop_after_delayÚ
wait_fixed)Ú__version__)ÚCommandErrorÚExternallyManagedEnvironment)Úget_major_minor_version)ÚWINDOWS)Úrunning_under_virtualenv)ÚrmtreeÚdisplay_pathÚ
backup_dirÚaskÚsplitextÚformat_sizeÚis_installable_dirÚnormalize_pathÚrenamesÚget_progÚcaptured_stdoutÚ
ensure_dirÚremove_auth_from_urlÚcheck_externally_managedÚ ConfiguredBuildBackendHookCallerÚTÚreturnc                  ó  — t           j                             t           j                             t          ¦  «        dd¦  «        } t           j                             | ¦  «        } d                     t          | t          ¦   «         ¦  «        S )Nz..zpip {} from {} (python {}))	ÚosÚpathÚjoinÚdirnameÚ__file__ÚabspathÚformatr   r   )Úpip_pkg_dirs    úV/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pip/_internal/utils/misc.pyÚget_pip_versionr<   I   sa   € Ý”'—,’,�rœwŸš­xÑ8Ô8¸$ÀÑEÔE€KÝ”'—/’/ +Ñ.Ô.€Kà'×.Ò.ÝØÝÑ!Ô!ñô ð ó    Úpy_version_info.c                 ó´   — t          | ¦  «        dk     r| dt          | ¦  «        z
  dz  z  } nt          | ¦  «        dk    r
| dd…         } t          d| ¦  «        S )ax  
    Convert a tuple of ints representing a Python version to one of length
    three.

    :param py_version_info: a tuple of ints representing a Python version,
        or None to specify no version. The tuple can have any length.

    :return: a tuple of length three if `py_version_info` is non-None.
        Otherwise, return `py_version_info` unchanged (i.e. None).
    é   )r   NÚVersionInfo)Úlenr   )r>   s    r;   Únormalize_version_inforC   T   sf   € õ ˆ?ÑÔ˜aÒÐØ˜A¥ OÑ 4Ô 4Ñ4¸Ñ<Ñ<ˆˆÝ	ˆ_Ñ	Ô	 Ò	!Ð	!Ø)¨"¨1¨"Ô-ˆå�˜Ñ/Ô/Ð/r=   r4   c                 óÂ   — 	 t          j        | ¦  «         dS # t          $ r<}|j        t          j        k    r|j        t          j        k    r‚ Y d}~dS Y d}~dS d}~ww xY w)z os.path.makedirs without EEXIST.N)r3   ÚmakedirsÚOSErrorÚerrnoÚEEXISTÚ	ENOTEMPTY)r4   Úes     r;   r,   r,   g   s‚   € ðÝ
Œ�DÑÔÐÐÐøÝð ð ð àŒ7•e”lÒ"Ð" q¤wµ%´/Ò'AÐ'AØð #Ð"Ð"Ð"Ð"Ð"Ð'AÐ'AÐ'AÐ'AÐ'AÐ'Aøøøøðøøøs   ‚ ˜
A¢+AÁAc                  óÊ   — 	 t           j                             t          j        d         ¦  «        } | dv rt          j        › d�S | S # t          t          t          f$ r Y nw xY wdS )Nr   )z__main__.pyz-cz -m pipÚpip)	r3   r4   ÚbasenameÚsysÚargvÚ
executableÚAttributeErrorÚ	TypeErrorÚ
IndexError)Úprogs    r;   r*   r*   q   sp   € ðÝŒw×Ò¥¤¨¤Ñ,Ô,ˆØÐ(Ð(Ð(Ý”nÐ-Ð-Ð-Ð-àˆKøÝ�I¥zÐ2ð ð ð Øˆðøøøàˆ5s   ‚AA ÁA ÁA ÁA Tr@   g      à?)ÚreraiseÚstopÚwaitFÚdirÚignore_errorsc                 ó>   — t          j        | |t          ¬¦  «         d S )N)rY   Úonerror)Úshutilr!   Úrmtree_errorhandler)rX   rY   s     r;   r!   r!      s    € å
„M�# ]Õ<OÐPÑPÔPÐPÐPÐPr=   ÚfuncÚexc_infoc                 óÔ   — 	 t          j        |¦  «        j        t          j        z   }n# t          $ r Y dS w xY w|r,t          j        |t          j        ¦  «          | |¦  «         dS ‚ )zÑOn Windows, the files in .svn are read-only, so when rmtree() tries to
    remove them, an exception is thrown.  We catch that here, remove the
    read-only attribute, and hopefully continue without problems.N)r3   ÚstatÚst_modeÚS_IWRITErF   Úchmod)r^   r4   r_   Úhas_attr_readonlys       r;   r]   r]   „   sz   € ðÝ!#¤¨¡¤Ô!6½¼Ñ!FÐGÐÐøÝð ð ð àˆˆðøøøð ð å
Œ�•t”}Ñ%Ô%Ð%àˆˆT‰
Œ
ˆ
Øˆàs   ‚'* ª
8·8c                 óD  — t           j                             t           j                             | ¦  «        ¦  «        } |                      t          j        ¦   «         t           j        j        z   ¦  «        r+d| t          t          j        ¦   «         ¦  «        d…         z   } | S )zTGives the display value for a given path, making it relative to cwd
    if possible.ú.N)r3   r4   Únormcaser8   Ú
startswithÚgetcwdÚseprB   ©r4   s    r;   r"   r"   ˜   sr   € õ Œ7×Ò�BœGŸOšO¨DÑ1Ô1Ñ2Ô2€DØ‡‚•r”y‘{”{¥R¤W¤[Ñ0Ñ1Ô1ð .Ø�T�#�bœi™kœkÑ*Ô*Ð,Ð,Ô-Ñ-ˆØ€Kr=   ú.bakÚextc                 óÊ   — d}|}t           j                             | |z   ¦  «        r9|dz  }|t          |¦  «        z   }t           j                             | |z   ¦  «        °9| |z   S )z\Figure out the name of a directory to back up the given dir to
    (adding .bak, .bak2, etc)é   )r3   r4   ÚexistsÚstr)rX   rn   ÚnÚ	extensions       r;   r#   r#   ¡   sh   € ð 	
€AØ€IÝ
Œ'�.Š.˜˜y™Ñ
)Ô
)ð !Ø	ˆQ‰ˆØ�#˜a™&œ&‘Lˆ	õ Œ'�.Š.˜˜y™Ñ
)Ô
)ð !ð �‰?Ðr=   ÚmessageÚoptionsc                 óœ   — t           j                             dd¦  «                             ¦   «         D ]
}||v r|c S Œt	          | |¦  «        S )NÚPIP_EXISTS_ACTIONÚ )r3   ÚenvironÚgetÚsplitr$   )ru   rv   Úactions      r;   Úask_path_existsr~   ¬   sW   € Ý”*—.’.Ð!4°bÑ9Ô9×?Ò?ÑAÔAð ð ˆØ�WÐÐØˆMˆMˆMð åˆw˜Ñ Ô Ð r=   c                 óh   — t           j                             d¦  «        rt          d| › �¦  «        ‚dS )z&Raise an error if no input is allowed.ÚPIP_NO_INPUTz5No input was expected ($PIP_NO_INPUT set); question: N)r3   rz   r{   Ú	Exception©ru   s    r;   Ú_check_no_inputrƒ   ³   s?   € å	„z‡~‚~�nÑ%Ô%ð 
ÝØMÀGÐMÐMñ
ô 
ð 	
ð
ð 
r=   c                 ó  — 	 t          | ¦  «         t          | ¦  «        }|                     ¦   «                              ¦   «         }||vr7t	          d                     |d                     |¦  «        ¦  «        ¦  «         n|S Œ‚)z@Ask the message interactively, with the given possible responsesrp   z>Your response ({!r}) was not one of the expected responses: {}z, )rƒ   ÚinputÚstripÚlowerÚprintr9   r5   )ru   rv   Úresponses      r;   r$   r$   »   s‰   € ð
Ý˜Ñ Ô Ð Ý˜‘>”>ˆØ—>’>Ñ#Ô#×)Ò)Ñ+Ô+ˆØ˜7Ð"Ð"Ýðß’V˜H d§i¢i°Ñ&8Ô&8Ñ9Ô9ñô ð ð ð
 ˆOð
r=   c                 ó>   — t          | ¦  «         t          | ¦  «        S )zAsk for input interactively.)rƒ   r…   r‚   s    r;   Ú	ask_inputr‹   Ê   s   € å�GÑÔÐÝ�‰>Œ>Ðr=   c                 óH   — t          | ¦  «         t          j        | ¦  «        S )z!Ask for a password interactively.)rƒ   Úgetpassr‚   s    r;   Úask_passwordrŽ   Ð   s    € å�GÑÔÐÝŒ?˜7Ñ#Ô#Ð#r=   Úvalc                 óf   — |                       ¦   «         } | dv rdS | dv rdS t          d| ›�¦  «        ‚)zôConvert a string representation of truth to true (1) or false (0).

    True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values
    are 'n', 'no', 'f', 'false', 'off', and '0'.  Raises ValueError if
    'val' is anything else.
    )ÚyÚyesÚtÚtrueÚonÚ1rp   )rs   ÚnoÚfÚfalseÚoffÚ0r   zinvalid truth value )r‡   Ú
ValueError)r�   s    r;   Ú	strtoboolr�   Ö   sJ   € ð �)Š)‰+Œ+€CØ
Ð2Ð2Ð2ØˆqØ	Ð5Ð	5Ð	5ØˆqåÐ7°Ð7Ð7Ñ8Ô8Ð8r=   Úbytesc                 ó  — | dk    rd                      | dz  dz  ¦  «        S | dk    r%d                      t          | dz  ¦  «        ¦  «        S | dk    rd                      | dz  ¦  «        S d                      t          | ¦  «        ¦  «        S )	Ni@B z	{:.1f} MBg     @�@iè  i'  z{} kBz	{:.1f} kBz{} bytes)r9   Úint)rž   s    r;   r&   r&   æ   sŽ   € Øˆ{ÒÐØ×!Ò! %¨&¡.°4Ñ"7Ñ8Ô8Ð8Ø	�Ò	Ð	Ø�~Š~�c %¨$¡,Ñ/Ô/Ñ0Ô0Ð0Ø	�ŠˆØ×!Ò! %¨&¡.Ñ1Ô1Ð1à× Ò ¥ U¡¤Ñ,Ô,Ð,r=   Úrowsc                 ól   ‡— d„ | D ¦   «         } d„ t          | ddiŽD ¦   «         Šˆfd„| D ¦   «         }|‰fS )z¸Return a list of formatted rows and a list of column sizes.

    For example::

    >>> tabulate([['foobar', 2000], [0xdeadbeef]])
    (['foobar     2000', '3735928559'], [10, 4])
    c                 óR   — g | ]$}t          t          t          |¦  «        ¦  «        ‘Œ%S © )ÚtupleÚmaprr   )Ú.0Úrows     r;   ú
<listcomp>ztabulate.<locals>.<listcomp>ù   s(   € Ð1Ð1Ð1 S�E•#•c˜3‘-”-Ñ Ô Ð1Ð1Ð1r=   c                 óR   — g | ]$}t          t          t          |¦  «        ¦  «        ‘Œ%S r¤   )Úmaxr¦   rB   )r§   Úcols     r;   r©   ztabulate.<locals>.<listcomp>ú   s(   € ÐLÐLÐL C�S••S˜#‘”ÑÔÐLÐLÐLr=   Ú	fillvaluery   c           	      ó�   •— g | ]B}d                       t          t          j        |‰¦  «        ¦  «                             ¦   «         ‘ŒCS )ú )r5   r¦   rr   ÚljustÚrstrip)r§   r¨   Úsizess     €r;   r©   ztabulate.<locals>.<listcomp>û   s?   ø€ ÐKÐKÐK¸sˆS�XŠX•c�#œ) S¨%Ñ0Ô0Ñ1Ô1×8Ò8Ñ:Ô:ÐKÐKÐKr=   )r   )r¡   Útabler²   s     @r;   Útabulater´   ñ   s[   ø€ ð 2Ð1¨DÐ1Ñ1Ô1€DØLÐL­;¸Ð+KÈÐ+KÐ+KÐLÑLÔL€EØKÐKÐKÐKÀdÐKÑKÔK€EØ�%ˆ<Ðr=   c                 óD  — t           j                             | ¦  «        sdS t           j                             t           j                             | d¦  «        ¦  «        rdS t           j                             t           j                             | d¦  «        ¦  «        rdS dS )at  Is path is a directory containing pyproject.toml or setup.py?

    If pyproject.toml exists, this is a PEP 517 project. Otherwise we look for
    a legacy setuptools layout by identifying setup.py. We don't check for the
    setup.cfg because using it without setup.py is only available for PEP 517
    projects, which are already covered by the pyproject.toml check.
    Fzpyproject.tomlTzsetup.py)r3   r4   ÚisdirÚisfiler5   rl   s    r;   r'   r'   ÿ   s{   € õ Œ7�=Š=˜ÑÔð ØˆuÝ	„w‡~‚~•b”g—l’l 4Ð)9Ñ:Ô:Ñ;Ô;ð ØˆtÝ	„w‡~‚~•b”g—l’l 4¨Ñ4Ô4Ñ5Ô5ð ØˆtØˆ5r=   ÚfileÚsizec              #   óD   K  — 	 |                       |¦  «        }|sdS |V — Œ)z7Yield pieces of data from a file-like object until EOF.TN)Úread)r¸   r¹   Úchunks      r;   Úread_chunksr½     s5   è è € ðØ—	’	˜$‘”ˆØð 	ØˆEØˆˆˆð	r=   Úresolve_symlinksc                 ó   — t           j                             | ¦  «        } |r t           j                             | ¦  «        } nt           j                             | ¦  «        } t           j                             | ¦  «        S )zN
    Convert a path to its canonical, case-normalized, absolute version.

    )r3   r4   Ú
expanduserÚrealpathr8   rh   )r4   r¾   s     r;   r(   r(     sa   € õ
 Œ7×Ò˜dÑ#Ô#€DØð %ÝŒw×Ò Ñ%Ô%ˆˆåŒw�Š˜tÑ$Ô$ˆÝŒ7×Ò˜DÑ!Ô!Ð!r=   c                 ó´   — t          j        | ¦  «        \  }}|                     ¦   «                              d¦  «        r|dd…         |z   }|dd…         }||fS )z,Like os.path.splitext, but take off .tar tooz.taréüÿÿÿN)Ú	posixpathr%   r‡   Úendswith)r4   Úbasern   s      r;   r%   r%   (  s\   € åÔ" 4Ñ(Ô(�I€Dˆ#Ø‡z‚z�|„|×Ò˜VÑ$Ô$ð Ø�2�3�3Œi˜#‰oˆØ�C�R�CŒyˆØ�ˆ9Ðr=   ÚoldÚnewc                 ó‚  — t           j                             |¦  «        \  }}|r5|r3t           j                             |¦  «        st          j        |¦  «         t          j        | |¦  «         t           j                             | ¦  «        \  }}|r*|r*	 t          j        |¦  «         dS # t          $ r Y dS w xY wdS dS )z7Like os.renames(), but handles renaming across devices.N)	r3   r4   r|   rq   rE   r\   ÚmoveÚ
removedirsrF   )rÇ   rÈ   ÚheadÚtails       r;   r)   r)   1  sØ   € õ ”—’˜sÑ#Ô#�J€Dˆ$Øð �ð �RœWŸ^š^¨DÑ1Ô1ð Ý
Œ�DÑÔÐå
„K��SÑÔÐå”—’˜sÑ#Ô#�J€Dˆ$Øð �ð ð	ÝŒM˜$ÑÔÐÐÐøÝð 	ð 	ð 	ØˆDˆDð	øøøðð ð ð s   ÂB, Â,
B:Â9B:c                 ól  — t          | ¦  «        } d}t          ¦   «         r,|                      t          t          j        ¦  «        ¦  «        S ddlm} ddlm} |                      |¦  «        rG |d¦  «        }|D ]7}t          ||¦  «        }|                      t          |¦  «        ¦  «        r dS Œ8dS dS )a£  
    Return True if this is a path pip is allowed to modify.

    If we're in a virtualenv, sys.prefix points to the virtualenv's
    prefix; only sys.prefix is considered local.

    If we're not in a virtualenv, in general we can modify anything.
    However, if the OS vendor has configured distutils to install
    somewhere other than sys.prefix (which could be a subdirectory of
    sys.prefix, e.g. /usr/local), we consider sys.prefix itself nonlocal
    and the domain of the OS vendor. (In other words, everything _other
    than_ sys.prefix is considered local.)

    Caution: this function assumes the head of path has been normalized
    with normalize_path.
    z/usrr   )Ú
get_scheme)ÚSCHEME_KEYSry   TF)
r(   r    ri   rN   ÚprefixÚpip._internal.locationsrÏ   Úpip._internal.models.schemerÐ   Úgetattr)r4   rÑ   rÏ   rÐ   ÚschemeÚkeyÚ
local_paths          r;   Úis_localrØ   B  sÕ   € õ$ ˜$ÑÔ€Dà€FåÑ!Ô!ð Ø�Š�~­c¬jÑ9Ô9Ñ:Ô:Ð:à6Ð6Ð6Ð6Ð6Ð6Ø;Ð;Ð;Ð;Ð;Ð;Ø�?Š?˜6Ñ"Ô"ð 	Ø�Z ‘^”^ˆFØ"ð  ð  �Ý$ V¨SÑ1Ô1�
Ø—?’?¥>°*Ñ#=Ô#=Ñ>Ô>ð  Ø˜4˜4ð à�5à�4r=   ÚmsgÚargsc                 ó*   — t          j        | g|¢R Ž  d S ©N)ÚloggerÚinfo)rÙ   rÚ   s     r;   Úwrite_outputrß   h  s    € Ý
„K�Ð�dÐÐÐÐÐÐr=   c                   óT   — e Zd ZU dZeed<   ededd fd„¦   «         Zed„ ¦   «         Z	dS )ÚStreamWrapperNÚorig_streamr1   c                 ó$   — || _          | ¦   «         S rÜ   )râ   )Úclsrâ   s     r;   Úfrom_streamzStreamWrapper.from_streamo  s   € à%ˆŒØˆs‰uŒuˆr=   c                 ó   — | j         j        S rÜ   )râ   Úencoding©Úselfs    r;   rç   zStreamWrapper.encodingv  s   € àÔÔ(Ð(r=   )
Ú__name__Ú
__module__Ú__qualname__râ   r   Ú__annotations__Úclassmethodrå   Úpropertyrç   r¤   r=   r;   rá   rá   l  sm   € € € € € € Ø€K�ÐÐÑàð fð °ð ð ð ñ „[ðð ð)ð )ñ „Xð)ð )ð )r=   rá   Ústream_namec              #   ó"  K  — t          t          | ¦  «        }t          t          | t                               |¦  «        ¦  «         	 t          t          | ¦  «        V — t          t          | |¦  «         dS # t          t          | |¦  «         w xY w)zËReturn a context manager used by captured_stdout/stdin/stderr
    that temporarily replaces the sys stream *stream_name* with a StringIO.

    Taken from Lib/support/__init__.py in the CPython repo.
    N)rÔ   rN   Úsetattrrá   rå   )rð   Úorig_stdouts     r;   Úcaptured_outputrô   {  s‚   è è € õ �#˜{Ñ+Ô+€KÝ�C��m×7Ò7¸ÑDÔDÑEÔEÐEð/Ý•c˜;Ñ'Ô'Ð'Ð'Ð'å•�[ +Ñ.Ô.Ð.Ð.Ð.ø�•�[ +Ñ.Ô.Ð.Ð.øøøs   ÁA6 Á6Bc                  ó    — t          d¦  «        S )zÜCapture the output of sys.stdout:

       with captured_stdout() as stdout:
           print('hello')
       self.assertEqual(stdout.getvalue(), 'hello
')

    Taken from Lib/support/__init__.py in the CPython repo.
    Ústdout©rô   r¤   r=   r;   r+   r+   Š  s   € õ ˜8Ñ$Ô$Ð$r=   c                  ó    — t          d¦  «        S )z 
    See captured_stdout().
    Ústderrr÷   r¤   r=   r;   Úcaptured_stderrrú   –  s   € õ ˜8Ñ$Ô$Ð$r=   Ú
sequentialÚnamedc            
      óÔ   — t          t          | t          t          | ¦  «        ¦  «        ¦  «        fi |¤Ž}d„ |                     ¦   «         D ¦   «         }||d<   t          dd|¦  «        S )Nc                 ó   — i | ]\  }}||“Œ	S r¤   r¤   )r§   rÖ   Úvalues      r;   ú
<dictcomp>zenum.<locals>.<dictcomp>   s   € Ð:Ð:Ð:™j˜c 5ˆu�cÐ:Ð:Ð:r=   Úreverse_mappingÚEnumr¤   )ÚdictÚzipÚrangerB   ÚitemsÚtype)rû   rü   ÚenumsÚreverses       r;   Úenumr
  ž  sg   € Ý•�Z¥¥s¨:¡¤Ñ!7Ô!7Ñ8Ô8ÐBÐB¸EÐBÐB€EØ:Ð:¨E¯KªK©M¬MÐ:Ñ:Ô:€GØ&€EÐ
ÑÝ�˜˜EÑ"Ô"Ð"r=   ÚhostÚportc                 ó,   — |€| S d| v rd| › d�} | › d|› �S )z.
    Build a netloc from a host-port pair
    Nú:ú[ú]r¤   )r  r  s     r;   Úbuild_netlocr  ¥  s8   € ð €|ØˆØ
ˆd€{€{à�4ˆ{ˆ{ˆ{ˆØÐÐ�TÐÐÐr=   ÚhttpsÚnetlocrÕ   c                 ó^   — |                       d¦  «        dk    rd| vr
d| vrd| › d�} |› d| › �S )z)
    Build a full URL from a netloc.
    r  é   ú@r  r  z://)Úcount)r  rÕ   s     r;   Úbuild_url_from_netlocr  ±  sP   € ð ‡|‚|�CÑÔ˜AÒÐ #¨VÐ"3Ð"3¸À6Ð8IÐ8Ià�V���ˆØÐ!Ð!˜Ð!Ð!Ð!r=   c                 óz   — t          | ¦  «        }t          j                             |¦  «        }|j        |j        fS )z2
    Return the host-port pair from a netloc.
    )r  ÚurllibÚparseÚurlparseÚhostnamer  )r  ÚurlÚparseds      r;   Úparse_netlocr   »  s5   € õ   Ñ
'Ô
'€CÝŒ\×"Ò" 3Ñ'Ô'€FØŒ?˜FœKÐ'Ð'r=   c                 ó  — d| vr| dfS |                       dd¦  «        \  }} d}d|v r|                     dd¦  «        \  }}n|d}}t          j                             |¦  «        }|�t          j                             |¦  «        }| ||ffS )zp
    Parse out and remove the auth information from a netloc.

    Returns: (netloc, (username, password)).
    r  ©NNrp   Nr  )Úrsplitr|   r  r  Úunquote)r  ÚauthÚpwÚusers       r;   Úsplit_auth_from_netlocr(  Ä  s£   € ð �&ÐÐØ�|Ð#Ð#ð
 —=’=  aÑ(Ô(�L€Dˆ&Ø€BØ
ˆd€{€{ð —:’:˜c 1Ñ%Ô%‰ˆˆbˆbà˜ˆbˆåŒ<×Ò Ñ%Ô%€DØ	€~ÝŒ\×!Ò! "Ñ%Ô%ˆà�D˜"�:ÐÐr=   c                 ó´   — t          | ¦  «        \  } \  }}|€| S |€d}d}n!t          j                             |¦  «        }d}d                     ||| ¬¦  «        S )zÞ
    Replace the sensitive data in a netloc with "****", if it exists.

    For example:
        - "user:pass@example.com" returns "user:****@example.com"
        - "accesstoken@example.com" returns "****@example.com"
    Nú****ry   z:****z{user}{password}@{netloc})r'  Úpasswordr  )r(  r  r  Úquoter9   )r  r'  r+  s      r;   Úredact_netlocr-  á  su   € õ  6°fÑ=Ô=Ñ€FÑˆT�8Ø€|ØˆØÐØˆØˆˆåŒ|×!Ò! $Ñ'Ô'ˆØˆØ&×-Ò-Ø˜H¨Vð .ñ ô ð r=   r  Útransform_netlocc                 ó  — t           j                             | ¦  «        } ||j        ¦  «        }|j        |d         |j        |j        |j        f}t           j                             |¦  «        }|t          d|¦  «        fS )aR  Transform and replace netloc in a url.

    transform_netloc is a function taking the netloc and returning a
    tuple. The first element of this tuple is the new netloc. The
    entire tuple is returned.

    Returns a tuple containing the transformed url as item 0 and the
    original tuple returned by transform_netloc as item 1.
    r   ÚNetlocTuple)
r  r  Úurlsplitr  rÕ   r4   ÚqueryÚfragmentÚ
urlunsplitr   )r  r.  ÚpurlÚnetloc_tupleÚ
url_piecesÚsurls         r;   Ú_transform_urlr9  ÷  sq   € õ Œ<× Ò  Ñ%Ô%€DØ#Ð# D¤KÑ0Ô0€Là”+˜|¨Aœ°´	¸4¼:ÀtÄ}ÐU€JÝŒ<×"Ò" :Ñ.Ô.€DØ•�m \Ñ2Ô2Ð2Ð2r=   c                 ó    — t          | ¦  «        S rÜ   )r(  ©r  s    r;   Ú_get_netlocr<    s   € Ý! &Ñ)Ô)Ð)r=   c                 ó"   — t          | ¦  «        fS rÜ   )r-  r;  s    r;   Ú_redact_netlocr>    s   € Ý˜&Ñ!Ô!Ð#Ð#r=   c                 óB   — t          | t          ¦  «        \  }\  }}|||fS )z†
    Parse a url into separate netloc, auth, and url with no auth.

    Returns: (url_without_auth, netloc, (username, password))
    ©r9  r<  )r  Úurl_without_authr  r%  s       r;   Úsplit_auth_netloc_from_urlrB    s*   € õ (6°c½;Ñ'GÔ'GÑ$Ð‘n�v˜tØ˜V TÐ)Ð)r=   c                 ó8   — t          | t          ¦  «        d         S )z7Return a copy of url with 'username:password@' removed.r   r@  ©r  s    r;   r-   r-     s   € õ ˜#�{Ñ+Ô+¨AÔ.Ð.r=   c                 ó8   — t          | t          ¦  «        d         S )z.Replace the password in a given url with ****.r   )r9  r>  rD  s    r;   Úredact_auth_from_urlrF  $  s   € å˜#�~Ñ.Ô.¨qÔ1Ð1r=   c                   óJ   — e Zd Zdededdfd„Zdefd„Zdefd„Zdedefd	„Z	dS )
Ú
HiddenTextÚsecretÚredactedr1   Nc                 ó"   — || _         || _        d S rÜ   )rI  rJ  )ré   rI  rJ  s      r;   Ú__init__zHiddenText.__init__*  s   € ØˆŒØ ˆŒˆˆr=   c                 óF   — d                      t          | ¦  «        ¦  «        S )Nz<HiddenText {!r}>)r9   rr   rè   s    r;   Ú__repr__zHiddenText.__repr__.  s   € Ø"×)Ò)­#¨d©)¬)Ñ4Ô4Ð4r=   c                 ó   — | j         S rÜ   ©rJ  rè   s    r;   Ú__str__zHiddenText.__str__1  s
   € ØŒ}Ðr=   Úotherc                 óf   — t          | ¦  «        t          |¦  «        k    rdS | j        |j        k    S )NF)r  rI  )ré   rR  s     r;   Ú__eq__zHiddenText.__eq__5  s/   € Ý�‰:Œ:�˜e™œÒ$Ð$Ø�5ð Œ{˜eœlÒ*Ð*r=   )
rê   rë   rì   rr   rL  rN  rQ  r   ÚboolrT  r¤   r=   r;   rH  rH  )  s•   € € € € € ð!˜sð !¨cð !°dð !ð !ð !ð !ð5˜#ð 5ð 5ð 5ð 5ð˜ð ð ð ð ð+˜Cð + Dð +ð +ð +ð +ð +ð +r=   rH  rÿ   c                 ó$   — t          | d¬¦  «        S )Nr*  rP  )rH  )rÿ   s    r;   Ú
hide_valuerW  >  s   € Ý�e fÐ-Ñ-Ô-Ð-r=   c                 óB   — t          | ¦  «        }t          | |¬¦  «        S )NrP  )rF  rH  )r  rJ  s     r;   Úhide_urlrY  B  s"   € Ý# CÑ(Ô(€HÝ�c HÐ-Ñ-Ô-Ð-r=   Úmodifying_pipc                 ó¦  — ddt           j        j        › �dt           j        j        › dt           j        j        › �g}| o7t          o0t
          j                             t           j        d         ¦  «        |v }|rYt           j	        ddgt           j        dd…         z   }t          d                     d                     |¦  «        ¦  «        ¦  «        ‚dS )	z�Protection of pip.exe from modification on Windows

    On Windows, any operation modifying pip should be run as:
        python -m pip ...
    rL   rg   r   z-mrp   Nz3To modify pip, please run the following command:
{}r¯   )rN   Úversion_infoÚmajorÚminorr   r3   r4   rM   rO   rP   r   r9   r5   )rZ  Ú	pip_namesÚshould_show_use_python_msgÚnew_commands       r;   Ú(protect_pip_from_modification_on_windowsrb  G  sÒ   € ð 	Ø&�cÔÔ$Ð&Ð&Ø?�cÔÔ$Ð?Ð?¥sÔ'7Ô'=Ð?Ð?ð€Ið 	ÐP�'ÐP¥b¤g×&6Ò&6µs´xÀ´{Ñ&CÔ&CÀyÐ&Pð ð "ð 
Ý”~ t¨UÐ3µc´h¸q¸r¸r´lÑBˆÝØB×IÒIØ—’˜Ñ%Ô%ñô ñ
ô 
ð 	
ð
ð 
r=   c                  óð   — t          ¦   «         rdS t          j                             t	          j        d¦  «        d¦  «        } t          j                             | ¦  «        sdS t          j        | ¦  «        ‚)zëCheck whether the current environment is externally managed.

    If the ``EXTERNALLY-MANAGED`` config file is found, the current environment
    is considered externally managed, and an ExternallyManagedEnvironment is
    raised.
    NÚstdlibzEXTERNALLY-MANAGED)	r    r3   r4   r5   Ú	sysconfigÚget_pathr·   r   Úfrom_config)Úmarkers    r;   r.   r.   a  sd   € õ  Ñ!Ô!ð ØˆÝŒW�\Š\�)Ô,¨XÑ6Ô6Ð8LÑMÔM€FÝŒ7�>Š>˜&Ñ!Ô!ð ØˆÝ
&Ô
2°6Ñ
:Ô
:Ð:r=   c                  óZ   — t           j        duot           j                             ¦   «         S )zIs this console interactive?N)rN   ÚstdinÚisattyr¤   r=   r;   Úis_console_interactiverl  p  s"   € åŒ9˜DÐ Ð7¥S¤Y×%5Ò%5Ñ%7Ô%7Ð7r=   é   Ú	blocksizec                 óü   — t          j        ¦   «         }d}t          | d¦  «        5 }t          ||¬¦  «        D ])}|t	          |¦  «        z  }|                     |¦  «         Œ*	 ddd¦  «         n# 1 swxY w Y   ||fS )z5Return (hash, length) for path using hashlib.sha256()r   Úrb)r¹   N)ÚhashlibÚsha256Úopenr½   rB   Úupdate)r4   rn  ÚhÚlengthr˜   Úblocks         r;   Ú	hash_filerx  u  sÆ   € õ 	ŒÑÔ€AØ€FÝ	ˆd�DÑ	Ô	ð ˜QÝ  ¨Ð3Ñ3Ô3ð 	ð 	ˆEØ•c˜%‘j”jÑ ˆFØ�HŠH�U‰OŒOˆOˆOð	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ˆfˆ9Ðs   ¦<A/Á/A3Á6A3c                  ó4   — 	 ddl } n# t          $ r Y dS w xY wdS )z8
    Return whether the wheel package is installed.
    r   NFT)ÚwheelÚImportError)rz  s    r;   Úis_wheel_installedr|  �  s;   € ðØˆˆˆˆøÝð ð ð Øˆuˆuðøøøð ˆ4s   ‚ ‡
”Úiterablec                 ó@   — t          | ¦  «        } t          | | ¦  «        S )zb
    Return paired elements.

    For example:
        s -> (s0, s1), (s2, s3), (s4, s5), ...
    )Úiterr   )r}  s    r;   Úpairwiser€  �  s   € õ �H‰~Œ~€HÝ�x Ñ*Ô*Ð*r=   Úpredc                 óf   — t          |¦  «        \  }}t          | |¦  «        t          | |¦  «        fS )z¡
    Use a predicate to partition entries into false entries and true entries,
    like

        partition(is_odd, range(10)) --> 0 2 4 6 8   and  1 3 5 7 9
    )r   r   Úfilter)r�  r}  Út1Út2s       r;   Ú	partitionr†  ˜  s2   € õ �‰]Œ]�F€BˆÝ�t˜RÑ Ô ¥&¨¨rÑ"2Ô"2Ð2Ð2r=   c                   óx  ‡ — e Zd Z	 	 	 ddedededee         deed                  dee         fˆ fd	„Z	 	 dd
edeeeef                  dee         defˆ fd„Z		 ddedeeeef                  defˆ fd„Z
	 	 dd
edeeeef                  dee         defˆ fd„Z	 ddeeeef                  dee         fˆ fd„Z	 ddeeeef                  dee         fˆ fd„Z	 ddeeeef                  dee         fˆ fd„Z	 	 ddedeeeef                  dedefˆ fd„Z	 	 ddedeeeef                  dedefˆ fd„Zˆ xZS )r/   NÚconfig_holderÚ
source_dirÚbuild_backendÚbackend_pathÚrunner).NÚpython_executablec                 ó`   •— t          ¦   «                              |||||¦  «         || _        d S rÜ   )ÚsuperrL  rˆ  )ré   rˆ  r‰  rŠ  r‹  rŒ  r�  Ú	__class__s          €r;   rL  z)ConfiguredBuildBackendHookCaller.__init__§  s=   ø€ õ 	‰Œ×ÒØ˜ |°VÐ=Nñ	
ô 	
ð 	
ð +ˆÔÐÐr=   Úwheel_directoryÚconfig_settingsÚmetadata_directoryr1   c                 ód   •— | j         j        }t          ¦   «                              |||¬¦  «        S ©N)r’  r“  )rˆ  r’  r�  Úbuild_wheel©ré   r‘  r’  r“  Úcsr�  s        €r;   r–  z,ConfiguredBuildBackendHookCaller.build_wheelµ  s9   ø€ ð ÔÔ/ˆÝ‰wŒw×"Ò"Ø¨RÐDVð #ñ 
ô 
ð 	
r=   Úsdist_directoryc                 ób   •— | j         j        }t          ¦   «                              ||¬¦  «        S ©N)r’  )rˆ  r’  r�  Úbuild_sdist)ré   r™  r’  r˜  r�  s       €r;   rœ  z,ConfiguredBuildBackendHookCaller.build_sdistÀ  s-   ø€ ð ÔÔ/ˆÝ‰wŒw×"Ò" ?ÀBÐ"ÑGÔGÐGr=   c                 ód   •— | j         j        }t          ¦   «                              |||¬¦  «        S r•  )rˆ  r’  r�  Úbuild_editabler—  s        €r;   rž  z/ConfiguredBuildBackendHookCaller.build_editableÆ  s9   ø€ ð ÔÔ/ˆÝ‰wŒw×%Ò%Ø¨RÐDVð &ñ 
ô 
ð 	
r=   c                 ó`   •— | j         j        }t          ¦   «                              |¬¦  «        S r›  )rˆ  r’  r�  Úget_requires_for_build_wheel©ré   r’  r˜  r�  s      €r;   r   z=ConfiguredBuildBackendHookCaller.get_requires_for_build_wheelÑ  ó+   ø€ ð ÔÔ/ˆÝ‰wŒw×3Ò3ÀBÐ3ÑGÔGÐGr=   c                 ó`   •— | j         j        }t          ¦   «                              |¬¦  «        S r›  )rˆ  r’  r�  Úget_requires_for_build_sdistr¡  s      €r;   r¤  z=ConfiguredBuildBackendHookCaller.get_requires_for_build_sdist×  r¢  r=   c                 ó`   •— | j         j        }t          ¦   «                              |¬¦  «        S r›  )rˆ  r’  r�  Úget_requires_for_build_editabler¡  s      €r;   r¦  z@ConfiguredBuildBackendHookCaller.get_requires_for_build_editableÝ  s+   ø€ ð ÔÔ/ˆÝ‰wŒw×6Ò6ÀrÐ6ÑJÔJÐJr=   TÚ_allow_fallbackc                 ód   •— | j         j        }t          ¦   «                              |||¬¦  «        S ©N)r“  r’  r§  )rˆ  r’  r�  Ú prepare_metadata_for_build_wheel©ré   r“  r’  r§  r˜  r�  s        €r;   rª  zAConfiguredBuildBackendHookCaller.prepare_metadata_for_build_wheelã  s:   ø€ ð ÔÔ/ˆÝ‰wŒw×7Ò7Ø1ØØ+ð 8ñ 
ô 
ð 	
r=   c                 ód   •— | j         j        }t          ¦   «                              |||¬¦  «        S r©  )rˆ  r’  r�  Ú#prepare_metadata_for_build_editabler«  s        €r;   r­  zDConfiguredBuildBackendHookCaller.prepare_metadata_for_build_editableð  s:   ø€ ð ÔÔ/ˆÝ‰wŒw×:Ò:Ø1ØØ+ð ;ñ 
ô 
ð 	
r=   )NNNr"  rÜ   )NT)rê   rë   rì   r   rr   r   r
   rL  r   r–  rœ  rž  r   r   r¤  r¦  rU  rª  r­  Ú__classcell__)r�  s   @r;   r/   r/   ¦  sh  ø€ € € € € ð '+Ø04Ø+/ð+ð +àð+ð ð+ð ð	+ð
 ˜s”mð+ð ˜ )Ô,Ô-ð+ð $ Cœ=ð+ð +ð +ð +ð +ð +ð" 59Ø,0ð		
ð 	
àð	
ð " $ s¨C x¤.Ô1ð	
ð % SœMð		
ð
 
ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð QUðHð HØ"ðHØ5=¸dÀ3ÈÀ8¼nÔ5MðHà	ðHð Hð Hð Hð Hð Hð 59Ø,0ð		
ð 	
àð	
ð " $ s¨C x¤.Ô1ð	
ð % SœMð		
ð
 
ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð ;?ðHð HØ'¨¨S°#¨X¬Ô7ðHà	ˆcŒðHð Hð Hð Hð Hð Hð ;?ðHð HØ'¨¨S°#¨X¬Ô7ðHà	ˆcŒðHð Hð Hð Hð Hð Hð ;?ðKð KØ'¨¨S°#¨X¬Ô7ðKà	ˆcŒðKð Kð Kð Kð Kð Kð 59Ø $ð	
ð 
àð
ð " $ s¨C x¤.Ô1ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð  59Ø $ð	
ð 
àð
ð " $ s¨C x¤.Ô1ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r=   r/   )F)rm   )T)r  )r1   N)rm  )xÚ
contextlibrG   r�   rq  ÚioÚloggingr3   rÄ   r\   ra   rN   re  Úurllib.parser  r   Ú	itertoolsr   r   r   Útypesr   Útypingr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Úpip._vendor.pyproject_hooksr   Úpip._vendor.tenacityr   r   r   rL   r   Úpip._internal.exceptionsr   r   rÒ   r   Úpip._internal.utils.compatr   Úpip._internal.utils.virtualenvr    Ú__all__Ú	getLoggerrê   rÝ   r0   ÚBaseExceptionÚExcInfor    rA   rr   r0  r<   rC   r,   r*   rU  r!   r]   r"   r#   r~   rƒ   r$   r‹   rŽ   r�   Úfloatr&   r´   r'   ÚDEFAULT_BUFFER_SIZErž   r½   r(   r%   r)   rØ   rß   rá   Úcontextmanagerrô   r+   rú   r
  r  r  r   r(  r-  r9  r<  r>  rB  r-   rF  rH  rW  rY  rb  r.   rl  rx  r|  r€  r†  r/   r¤   r=   r;   ú<module>rÂ     sô
  ðð Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð$ ?Ð >Ð >Ð >Ð >Ð >Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dà Ð Ð Ð Ð Ð Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø .Ð .Ð .Ð .Ð .Ð .Ø CÐ CÐ CÐ CÐ CÐ Cðð ð €ð$ 
ˆÔ	˜8Ñ	$Ô	$€à€GˆC�L„L€Ø
��]Ô# ]°MÐAÔ
B€Ø�C˜˜c�MÔ"€Ø�C˜˜x¨œ}¨h°s¬mÐ;Ô<Ð<Ô=€ð˜ð ð ð ð ð0¨E°#°s°(¬Oð 0ÀÀcÈ3ÐPSÀmÔ@Tð 0ð 0ð 0ð 0ð&�Sð ˜Tð ð ð ð ð	�#ð 	ð 	ð 	ð 	ð €ˆtÐ*Ð*¨1Ñ-Ô-°J°J¸s±O´OÐDÑDÔDðQð Q�ð Q Dð Q°Tð Qð Qð Qñ EÔDðQð˜h s¨C xÔ0ð ¸ð Àwð ÐSWð ð ð ð ð(�sð ˜sð ð ð ð ðð �Cð ˜cð ¨sð ð ð ð ð!˜Sð !¨8°C¬=ð !¸Sð !ð !ð !ð !ð
˜Sð 
 Tð 
ð 
ð 
ð 
ð�ð ˜x¨œ}ð °ð ð ð ð ð�sð ˜sð ð ð ð ð$˜#ð $ #ð $ð $ð $ð $ð9�3ð 9˜3ð 9ð 9ð 9ð 9ð -�uð - ð -ð -ð -ð -ð�8˜H SœMÔ*ð ¨u°T¸#´YÀÀSÄ	Ð5IÔ/Jð ð ð ð ð˜Sð  Tð ð ð ð ð$ !#Ô 6ðð Ø
ðØðàˆu�d˜DÐ Ô!ðð ð ð ð
"ð 
"˜ð 
"°ð 
"Àð 
"ð 
"ð 
"ð 
"ð�3ð ˜5  c œ?ð ð ð ð ð�ð ˜3ð  4ð ð ð ð ð"#�3ð #˜4ð #ð #ð #ð #ðL�cð  #ð ¨$ð ð ð ð ð)ð )ð )ð )ð )�Hñ )ô )ð )ð Ôð/ ð /¨°=À$ÈÐ3LÔ)Mð /ð /ð /ñ Ôð/ð	%˜¨Ô6ð 	%ð 	%ð 	%ð 	%ð%˜¨Ô6ð %ð %ð %ð %ð#�cð # Cð #¨D°¬Ið #ð #ð #ð #ð	�sð 	 (¨3¤-ð 	°Cð 	ð 	ð 	ð 	ð"ð " #ð "¨sð "Àð "ð "ð "ð "ð(˜ð (  s¨H°S¬MÐ'9Ô!:ð (ð (ð (ð (ð 3ð ¨;ð ð ð ð ð:˜#ð  #ð ð ð ð ð,3Ø	ð3Ø (¨#¨°°c¸3°h´Ð)?Ô @ð3à
ˆ3�ÐÔð3ð 3ð 3ð 3ð(*˜ð * ð *ð *ð *ð *ð$˜3ð $ 5¨¤:ð $ð $ð $ð $ð* Cð *¨E°#°s¸EÀ#ÀsÀ(¼OÐ2KÔ,Lð *ð *ð *ð *ð/˜cð / cð /ð /ð /ð /ð2˜cð 2 cð 2ð 2ð 2ð 2ð
+ð +ð +ð +ð +ñ +ô +ð +ð*.�cð .˜jð .ð .ð .ð .ð.�#ð .˜*ð .ð .ð .ð .ð

¸Dð 
ÀTð 
ð 
ð 
ð 
ð4;ð ;ð ;ð ;ð8 ð 8ð 8ð 8ð 8ð
	ð 	�Cð 	 Cð 	°e¸CÀ¸H´oð 	ð 	ð 	ð 	ð	˜Dð 	ð 	ð 	ð 	ð+�x ”}ð +¨°%¸¸S¸´/Ô)Bð +ð +ð +ð +ð3Ø
�A�3˜�9Ô
ð3à�qŒkð3ð ˆ8�AŒ;˜ œÐ#Ô$ð3ð 3ð 3ð 3ðU
ð U
ð U
ð U
ð U
Ð'=ñ U
ô U
ð U
ð U
ð U
r=   