PK APOCALYPSE V1

APOCALYPSE V1

Current Path : /opt/hc_python/lib/python3.12/site-packages/__pycache__/
Upload File :
Current File : //opt/hc_python/lib/python3.12/site-packages/__pycache__/nodeenv.cpython-312.pyc

�

���gS���j�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ejdkrddlmZnddlmZddlZddlZddlZddlZddlZ	ddlmZddlZe
j6d�ZddlZej<Zd	Z%ejLjNZ'ejLjPZ(da)ejdd
k\Z*ejV�dk(Z,ejV�j[d�Z.d
a/d�Z0Gd�de1�Z2e3d�ee4e2��D��e2_5d�Z6d�Z7d�Z8d�Z9d�Z:e:�Z;d�Z<dFd�Z=d�Z>d�Z?dGd�Z@		dHd�ZAd�ZBd�ZCd�ZDd �ZEd!�ZFej�d"��ZHdId#�ZId$�ZJd%�ZKdJd&�ZLd'�ZMd(�ZNd)�ZOd*�ZPd+�ZQd,�ZRd-�ZSd.�ZTd/�ZUd0�ZVd1�ZWd2�ZXd3�ZYd4�ZZd5�Z[d6�Z\d7�Z]d8d9d:�Z^d;d<d:�Z_d=Z`d>Zad?Zbd@ZcdAZddBZedCZfdDZgehdEk(re]�yy#e$r<ddl mZddl!m"Ze
j6d�Zddl#Z#e#jHj<ZY���wxYw)Kz�
    nodeenv
    ~~~~~~~
    Node.js virtual environment

    :copyright: (c) 2014 by Eugene Kalinin
    :license: BSD, see LICENSE for more details.
�N)�r)�quote)�SafeConfigParser�	iteritems)�ConfigParser�itemsz1.9.1r�Windows)�CYGWIN�MSYSFc�
�|rtr|S	|jd�S#t$r\	|jd�|cYS#t$r9	|jd�jd�cYcYS#t$rYnwxYwYY|SwxYwwxYw)z:Convert given text to UTF-8 encoding (as far as possible).�utf8�cp1252)�is_PY3�encode�UnicodeDecodeError�decode)�texts �6/opt/hc_python/lib/python3.12/site-packages/nodeenv.py�to_utf8rDs����6���
��{�{�6�"�"����	��K�K����K��!�	�
��{�{�8�,�3�3�F�;�;��%�
��
����K�
	��	�sS��	B�<�B�	A>�A*�%A>�&B�*	A6�3A>�5A6�6A>�9B�=A>�>Bc�^�eZdZdZdZdZdZdZdZdZ	dZ
dZdZdZ
dZed
d��Zed	��Zy)�Configz"
    Configuration namespace.
    �latestF�2�makeTNc	�Z�t|�D�].}tjj|�}tjj	|�s�Ct�}|j
|�d}|j|�s�rtt|��D]�\}}|jd�s|j||�s�*t|t�r|j||�}n|j||�}|r9t!dj#tjj%|�||��t'|||�����1tjj	d�rCt)dd�5}t'|d|j+d�dj-��d	d	d	�y	y	#1swYy	xYw)
z�
        Load configuration from the given files in reverse order,
        if they exist and have a [nodeenv] section.
        Additionally, load version from .node-version if file exists.
        �nodeenv�_zCONFIG {0}: {1} = {2}z
.node-version�r�node�rN)�reversed�os�path�
expanduser�existsr�read�has_sectionr�vars�
startswith�
has_option�
isinstance�bool�
getboolean�get�print�format�basename�setattr�open�	readlines�strip)	�cls�configfiles�verbose�
configfile�ini_file�section�attr�val�v_files	         r�_loadzConfig._loadjsY��#�;�/�J����+�+�J�7�J��7�7�>�>�*�-��#�~�H��M�M�*�%��G��'�'��0��&�t�C�y�1�	��c��?�?�3�'��&�&�w��5���c�4�(�"�-�-�g�t�<�C�"�,�,�w��5�C���1�8�8����(�(��4�d�C�A�B���T�3�'�2�0�4�7�7�>�>�/�*��o�s�+�v���V�V�%5�%5�a�%8��%;�%A�%A�%C�D�,�+�+�+�+�s�).F!�!F*c
��td�tddjd�ttt	|���D��z�y)z0
        Print defaults for the README.
        z
    [nodeenv]z    z
    c3�RK�|]\}}|jd�s	|�d|�����!y�w)rz = N�r))�.0�k�vs   r�	<genexpr>zConfig._dump.<locals>.<genexpr>�s-����%&�+G�4�1�a��<�<��$��A��+G�s�%'N)r/�join�sortedrr()r6s r�_dumpzConfig._dump�sA��
	�o��
�f�x�}�}�%&�+1�)�D��I�2F�+G�%&�&�&�	'�)F)�__name__�
__module__�__qualname__�__doc__r�npm�with_npm�jobs�without_ssl�debug�profiler�prebuilt�ignore_ssl_certs�mirror�classmethodr?rI�rJrrrXsj���
�D�
�C��H��D��K��E��G��D��H���
�F��"E��"E�H�'��'rJrc#�LK�|]\}}|jd�s||f���y�w)rNrB)rCr<r=s   rrFrF�s,�����!8�I�D�#��?�?�3��
�3�K�!8�s�"$c�D�|jd�jdd�S)z
    Remove new-lines and
    �utf-8�
�)r�replace)�outs r�clear_outputra�s ���:�:�g��&�&�t�R�0�0rJc�,�|j|dzd�S)zC
    Remove bin directory of the current environment from PATH
    �:r^)r_)�env�env_bin_dirs  r�remove_env_bin_from_pathrf�s���;�;�{�S�(�"�-�-rJc���|jdd�jd�dd}t|�dk\r|djd�d|d<tt	t
|��S)	z:
    Parse version string to a tuple of integer parts
    rEr^�.Nr��+r)r_�split�len�tuple�map�int)�version_strrEs  r�
parse_versionrq�s^��	���C��$�*�*�3�/���3�A�
�1�v��{���t�z�z�#��q�!��!����S�!���rJc���|jdk(rLtjddgtj��j	�\}}tt
|��St|j�S)z7
    Parse the node version from the argparse args
    �systemr�	--version)�stdout)r�
subprocess�Popen�PIPE�communicaterqra)�argsr`�errs   r�node_version_from_argsr|�s[���y�y�H���#�#�
�[�!�*�/�/�;�;F�;�=�	��S��\�#�.�/�/�����#�#rJc�t�tjd�}|jtj�d�}|tj_tj�}|jtj�tjd��}|j|�|j|�|S)z&
    Create logger for diagnostic
    rc��|j|�}t|dd�rdnd}|jj|t	|�z�|j�y)N�	continuedFz%sz%s
)r0�getattr�stream�writer�flush)�self�record�msg�fss    r�emitzcreate_logger.<locals>.emit�sF���k�k�&�!���V�[�%�8�T�f�������"�w�s�|�+�,��
�
�rJz%(message)s)�fmt)
�logging�	getLogger�setLevel�INFO�
StreamHandlerr��DEBUG�	Formatter�setFormatter�
addHandler)�loggrr��ch�	formatters    r�
create_loggerr��s���

���i�(�E�	�N�N�7�<�<� ��
"&�G����
�	�	�	 �B��K�K��
�
���!�!�m�4�I��O�O�I��
���R���LrJc��tjd��}|jddt��|jdddd	tj
d
��|jdd
dtjd��ts�|jdddtjd��|jddd��|jdddtjd��|jdd dtjd!��|jd"d#dtjd$��|jd%d&d'd(d)tj�*�|jd+d,d-tjd.��|jd/d0dd1d2d3��|jd4d5dd6d2d7��|jd8d9d:d;d<��|jd=d>d?d@dAdB�C�|jdDdEdF��|jdGdHdIdd2dJ��|jdKdLdd2dM��|jdNdOdtjdP��|jdQdRdStjdT��|jdUdVdd2dW��|jdXdYdZdd2d[��|jd\d]d^dd2d_��|jd`dadd2db��|jdcd,dtjdd��|jdedfdtj dg��|jdhdidjdk�l�|S)mz.
    Make a command line argument parser.
    z%(prog)s [OPTIONS] DEST_DIR)�usagert�version)�actionr�z-nz--noder�NODE_VERz�The node.js version to use, e.g., --node=0.4.3 will use the node-v0.4.3 to create the new environment. The default is last stable version (`latest`). Use `lts` to use the latest LTS release. Use `system` to use system-wide node.)�dest�metavar�default�helpz--mirror�storerWz1Set mirror server of nodejs.org to download from.)r�r�r�r�z-jz--jobsrQzOSets number of parallel commands at node.js compilation. The default is 2 jobs.)r�r�r�z--load-average�load_averagezQSets maximum load average for executing parallel commands at node.js compilation.)r�r��
--without-sslrR�
store_truez!Build node.js without SSL support)r�r�r�r��--debugrSz"Build debug variant of the node.js�	--profilerTzEnable profiling for node.jsz--makez-m�	make_path�	MAKE_PATHzPath to make command)r�r�r�r�z--sourcerU�store_falsezInstall node.js from the sourcez-vz	--verboser8FzVerbose modez-qz--quiet�quietz
Quiet modez-Cz
--config-file�config_fileNzfLoad a different file than '~/.nodeenvrc'. Pass an empty string for no config (use built-in defaults).z-rz--requirements�requirementsr^�FILENAMEz?Install all the packages listed in the given requirements file.)r�r�r�r�z--prompt�promptz:Provides an alternative prompt prefix for this environmentz-lz--list�listz Lists available node.js versionsz--update�updatez+Install npm packages from file without nodez
--with-npmrPz�Build without installing npm into the new virtual environment. Required for node.js < 0.6.3. By default, the npm included with node.js is used. Under Windows, this defaults to true.z--npmrO�NPM_VERz�The npm version to use, e.g., --npm=0.3.18 will use the npm-0.3.18.tgz tarball to install. The default is last available version (`latest`).z--no-npm-clean�no_npm_cleanz9Skip the npm 0.x cleanup.  Cleanup is enabled by default.z--python-virtualenvz-p�python_virtualenvzUse current python virtualenvz--clean-src�-c�	clean_srcz)Remove "src" directory after installationz--force�forcez.Force installation in a pre-existing directoryz
--prebuiltz/Install node.js from prebuilt package (default)z--ignore_ssl_certsrVz5Ignore certificates for package downloads. - UNSAFE -�DEST_DIR�env_dir�?zDestination directory)r�r��nargsr�)�argparse�ArgumentParser�add_argument�nodeenv_versionrrrW�is_WINrQrRrSrTrrUrPrOrV)�parsers r�make_parserr��s����
$�
$�+�-�F�����I���@�����h�V�Z����0��1������X�v�}�}�
@��B�
�����(�����%�	�	&�
	����>�&�	�	'�
	����-���);�);�4�	�	6�
	����G�����5�	�	7�
	����i�����/�	�	1�
	����d���'��K�K�		�	!�	����Z� �&�/�/�2�	�	4�
����k��)�U�
���
����i��'�5�
���
����o�M�4�F��G�
�����
�R��
N��P�
�����
I��K�����h�V��U�
/��1�
������U�
:��<�
����:��V�_�_�A��B�����e��6�:�:�<��=�����~��U�
H��J�
����t�*=��U�
,��.�
����t�+��U�
8��:�
������U�
=��?�
����:��V�_�_�
>��@�
����#5��V�%<�%<�
D��F�
�����#�
$��&��MrJc���t�}|j�}|j�
gd�|_ny|jsg|_netjj|j�s*|j
dj|j��|jg|_|s|S|js)|js|js|j
d�|S)z]
    Parses command line arguments.

    Set `check` to False to skip validation checks.
    )z	./tox.iniz./setup.cfgz~/.nodeenvrcz Config file '{0}' doesn't exist!z<You must provide a DEST_DIR or use current python virtualenv)r��
parse_argsr�r"r#r%�errorr0r�r�r�)�checkr�rzs   rr�r�zs����]�F�����D�����G���
�
�
�����w�w�~�~�d�.�.�/��L�L�;�B�B�� � �"�
#� �,�,�-�������9�9��%�%�d�l�l��L�L�9�
:��KrJc��tjj|�sMtj	d|td����tj|�tj	d�ytj	d|�y)z
    Create directory
    z * Creating: %s ... T�r��extra�done.z * Directory %s already existsN)r"r#r%�loggerrS�dict�makedirs)r#s r�mkdirr��sS���7�7�>�>�$�����+�T���9M��N�
���D�����W�����5�t�<rJc���tjtjztjztjztj
z}t
j||�y�N)�stat�S_IRWXU�S_IXGRP�S_IRGRP�S_IROTH�S_IXOTHr"�chmod)�filename�	mode_0755s  r�make_executabler��sF��������,����� $���-�/3�|�|�<�I��H�H�X�y�!rJc�v�t|�}trt|t�st|d�}tj
j
|�sitjd|td����t|d�5}|j|�ddd�t|�tjd�yt|d	�5}|j�}ddd�|vrtjd
|�y|stjd|�y|r=tjd|�t|d
�5}|j|�ddd�ytjd|�t|d�5}|j|�ddd�y#1swY��xYw#1swY��xYw#1swYyxYw#1swYyxYw)z-
    Create file and write content in it
    r\z * Writing %s ... Tr�r��wbNr��rbz * Content %s already in placez: * File %s exists with different content;  not overwritingz * Appending data to %s�abz" * Overwriting %s with new content)rrr+�bytesr"r#r%r�rSr�r3r�r�r&�info)r��content�	overwrite�append�f�cs      r�	writefiler��sV���g��G�
�j��%�0����)��
�7�7�>�>�$�����)�4�t�d�7K��L�
�$��
��
�G�G�G���������W���
�$��
������A���a�<��L�L�9�4�@����K�K�+�,0�
2����K�K�1�4�8��d�D�!�Q����� �"�����8�$�?�
�$��
��
�G�G�G���
�1�
���
��"����
�s0�;F�F�3F#�0F/�F�F �#F,�/F8c	���g}g}|D]T}t|�dkDr|dddz|ddz}d|vsd|vsd|vsd	|vrd
|jdd�z}|j|��Vdj|�}tjd|z�|rdj|�}tj}	|r2tjj�}
|r|
j|�nd}
	t
j|tjd|	||
|�
�}|j$}	|	r�|	j'�}
|
snq	t(r |
j+d�j-�}
n|
j+d�j-�}
|j|
�|rtj1|
�|	r��|j3�|j4r9|r|D]}tj7|��t9d|�d|j4����|j4|fS#t$r4tj �d}tj#d|�d|����wxYw#t.$r"|
j+d�j-�}
Y��wxYw)z'
    Execute cmd line in sub-shell
    �-N�z...i��� r]�"�'z"%s"z\"z ** Running command %s)�stderr�stdinru�cwdrd�shellr zError z while executing command �mbcsr
�cp866zCommand z failed with error code )rlr_r�rGr�rSrvrxr"�environ�copyr�rw�STDOUT�	Exception�sys�exc_infor�ru�readliner�r�rstriprr��wait�
returncode�critical�OSError)�cmd�show_stdout�in_shellr��	extra_env�
all_output�	cmd_parts�part�cmd_descrurd�proc�e�line�ss               r�callitr
�s:��
�J��I����t�9�r�>����9�u�$�t�C�D�z�1�D��$�;�$�$�,�#��+�����D�L�L��e�4�4�D��������x�x�	�"�H�
�L�L�)�H�4�5���h�h�s�m���_�_�F���j�j�o�o�����J�J�y�!��������
�)�)��f���H�.���[�[�F�
���� ����	1���{�{�6�*�1�1�3���{�{�6�*�1�1�3��	���$����K�K����	�I�I�K�����������"� ��!�4�?�?�4�5�	5��?�?�J�&�&��=���L�L�N�1������a��J�K�
���"�	1��;�;�w�'�.�.�0�D�	1�s�!*H�-AI�=H=�(I+�*I+c�B�t|�dkDrt�d|�d�StS)N)r�z/v�/)rq�src_base_url)rps r�get_root_urlrs ���[�!�F�*�(�+�6�6��rJc�2�tjd�dk(S)N�
HOST_GNU_TYPEzx86_64-pc-linux-musl)�	sysconfig�get_config_varrYrJr�is_x86_64_muslrs���#�#�O�4�8N�N�NrJc�0�tj�dk(S)N�riscv64)�platform�machinerYrJr�
is_riscv64r!s�������*�*rJc�L�idd�dd�dd�dd�dd�dd�dd�d	d�d
d�dd�dd�d
d�dd�dd�dd�dd�}tj�j�|tj�d�}tst
rd|z}nt
�rd}nd|z}d|�|��}t|�|zS)N�x86�i686�x86_64�x64�amd64�AMD64�armv6l�armv7l�armv8l�aarch64�arm64zarm64/v8�armv8zarmv8.4�ppc64le�s390xr)rs�archz-win-%(arch)s.zipz-linux-x64-musl.tar.gzz-%(system)s-%(arch)s.tar.gzznode-v)rrs�lowerrr��	is_CYGWINrr)r��archmap�sysinfo�postfixr�s     r�get_node_bin_urlr/%s3���
�%���%��	�%��	�%�	�
	�%��	�(�
�	�(��	�(��	�7��	���	�G��	���	�7��	�9��	��� 	�9�!�G�&�/�/�#�)�)�+���(�(�*�+��G���%��/��	�	�*��/�'�9���&��0�H��� �8�+�+rJc�(�d|z}t|�|zS)Nznode-v%s.tar.gz)r)r��tar_names  r�get_node_src_urlr2Fs�� �7�*�H��� �8�+�+rJc/�K�tj|i|��}	|��|j�y#|j�wxYw�w)z!Compatibility layer because py26.N)�tarfiler3�close)rz�kwargs�tfs   r�tarfile_openr8Ks7����
���t�	&�v�	&�B����
���
�����
�s�A�.�A�A�Ac��|dkDr.	tjt|�j��Syy#t$r;}t
j
dj||��|dz}|dk(r|�Yd}~nd}~wwxYw|dkDr�|�P)zMDo multiple attempts to avoid incomplete data in case
    of unstable networkrz*Incomplete read while reading from {} - {}r N)�io�BytesIO�urlopenr&�IncompleteReadr��warningr0)�node_url�	n_attemptrs   r�_download_node_filerAUs����a�-�		��:�:�g�h�/�4�4�6�7�7�����	��N�N��%�v�h��2�
�
��N�I��A�~�����
	���a�-�s�+5�	A9�1A4�4A9c
��tjdtd����t|�}tjdtd����tst
r.t
j|�}tjd�}d�}n6t|��}tjd�}tjd	�}|5}tj|j�}d
|z}	||�D�
cgc] }
tj|	||
���|
��"}}
|j!||�ddd�ycc}
w#1swYyxYw)z
    Download source code
    rhTr�r��namelistc��|Sr�rY)r	s r�<lambda>z#download_node_src.<locals>.<lambda>ps��rJ)�fileobj�
getmembers�namez0node-v%s[^/]*/(README\.md|CHANGELOG\.md|LICENSE)N)r�r�r�rAr�r+�zipfile�ZipFile�operator�methodcallerr8�
attrgetter�re�escaper�match�
extractall)r?�src_dirrz�dl_contents�ctx�members�member_name�archive�node_ver�rexp_string�member�extract_lists            r�download_node_srcr\es���K�K��4�$�/�K�0�%�h�/�K�
�K�K��4�$�/�K�0�
���o�o�k�*���'�'�
�3��!���;�/���'�'��5���)�)�&�1��	���9�9�T�Y�Y�'��I����"�'�*�
�*���x�x��[��%8�9�A�
�*�	�
�
	���7�L�1�

���
�	

��s�/D6�/%D1�D6�1D6�6D?c�&�d}ddt�d|�d�i}tj|d|�}trOt	j
tj�}tj|_tj||��Stj|�S)Nz$https://github.com/ekalinin/nodeenv/z
User-Agentznodeenv/z (�))�context)
r��urllib2�RequestrV�ssl�
SSLContext�PROTOCOL_TLS�	CERT_NONE�verify_moder<)�url�home_url�headers�reqr_s     rr<r<�sm��5�H��/�8�L�M�G�
�/�/�#�t�W�
-�C���.�.��!1�!1�2��!�m�m������s�G�4�4��?�?�3��rJc�d�tj|�D]�}tjj||�}tjj||�}tjj	|�r	tj||||��|tjj|�rJtjj|�r��tjtj|�|���tj||���y#t$rt
||||�Y��wxYwr�)r"�listdirr#rG�isdir�shutil�copytreer��islink�symlink�readlink�copy2)�src�dst�symlinks�ignore�itemr	�ds       rroro�s����
�
�3����G�G�L�L��d�#���G�G�L�L��d�#��
�7�7�=�=���
1�����1�h��7��w�w�~�~�a� ��w�w�~�~�a�(��J�J�r�{�{�1�~�q�1����Q��"� ���
1���A�x��0�
1�s�9D�D/�.D/c�.�tjdtd����trt	|d�}t|�n;tr3t	|d�}t|�tt	|dd�t�n|}|td|z�z}tj|�\}t||d�tr?d	D]:}t	|d|�}tjj|�s�0t|��<tjdtd����y
)z1
    Copy prebuilt binaries into environment
    rhTr�r��Scripts�binrz
/node-v%s*)rO�npx�node.exeN)r�r�r�r�rGr�r+r��CYGWIN_NODEr�globror"r#r%r�)r�rR�node_versionr��src_folder_tpl�
src_folderr�s       r�copy_node_from_prebuiltr��s����K�K��4�$�/�K�0�
��G�Y�'��
�d��	��G�U�#��
�d���$�w��v�.��<����w�|�l�'B�C�C�N��)�)�N�+�K�J��Z��t�$��2�H��G�U�H�5�H��w�w�~�~�h�'���)�3�
�K�K��4�$�/�K�0rJc���i}ddg}t�fd�|�}t||�D��cgc]8\}}|�1t|�dkDrdj||�ndj|���:}	}}t	t
jdt
jd�dkDr�tjd	�}
|
std
��tjd|
�t|d�}t|d
�}t|�tjj!|�st#dd|
|g�dj|tj$j'dd��|d<ddt)|�zg}
�j*r|
j-d��jr|
j-d��j.r|
j-d��j0}t#|
�j2d||�tj5dt7d����t#|g|	z�j2d||�tj5dt7d����t#|dzg�j2d||�ycc}}w)Nzload-averagerQc�<��t�|jdd��S)N�-r)r�r_)�xrzs �rrEz%build_node_from_src.<locals>.<lambda>�s���'�$��	�	�#�s� 3�4rJrz	--{0}={1}z--{0}�majorri�python2zbPython >=3.0 virtualenv detected, but no python2 command (required for building node.js) was foundz$ * Temporarily pointing python to %s�tmpbin�python�lnz-sz{}:{}�PATHr^z./configurez--prefix=%sr�r�r�Trhr�r�z install)rn�ziprlr0r�r��version_inforn�whichr�r�rSrGr�r"r#r%r
r�r.�_quoterRr�rTr�r8r�r�)r�rR�node_src_dirrzrd�make_param_names�make_param_valuesrH�value�	make_opts�python2_path�node_tmpbin_dir�node_tmpbin_link�conf_cmd�make_cmds   `           r�build_node_from_srcr��s&���
�C�&��/���4�����/�1B�C��D�K�D�%����u�:��>�	���4��'�&�~�~�d�3�	4�C����s����#�*:�*:�1�*=�>��B��|�|�I�.����D��
�	���;�\�J��w��1�����:��
�o���w�w�~�~�.�/��D�$��.>�?�@��n�n�_�%'�Z�Z�^�^�F�B�%?�A��F��	���w��'��H��������(��z�z����	�"��|�|�����$��~�~�H�
�8�T�\�\�4��s�;�
�K�K��4�$�/�K�0�
�H�:�	�!�4�<�<��|�S�I�
�K�K��4�$�/�K�0�
�H�z�!�"�D�L�L�$��c�J��Ws�=Ic�f�	t|||�y#t$rtjd��wxYw)z`
    Download source code for node.js, unpack it
    and install it in virtual environment.
    r^N)�install_node_wrapped�
BaseExceptionr�r�)r�rRrzs   r�install_noder��s0��
��W�g�t�4�������B��
��s�
� 0c� �t|�}t|td|jz��}|jrdnd}t
j
d|�d|j�d�td���	�|jrt|j�}nt|j�}tjj|�s	t|||�t
j
d
td���	�|jrt%|||j�nt'||||�t
j
d�y#tj$r=d
|vrt|j!d
d�||�nt
j#d|z�Y��wxYw)Nznode-v%srU�sourcez * Install z node (z) Tr�r�r%rzFailed to download from %srhz done.)�abspathrGrrrUr�r�r�r/r2r"r#r%r\r`�	HTTPErrorr_r>r�r�)r�rRrzr��src_typer?s      rr�r�s:���g��G�����d�i�i�)?�!@�A�L�!�]�]�z��H�
�K�K�h��	�	�B��T�*��,��}�}�#�D�I�I�.��#�D�I�I�.���7�7�>�>�,�'�	H��h���6��K�K��4�$�/�K�0��}�}����$�)�)�<��G�W�l�D�A�
�K�K����� � �	H��(�"�!�(�"2�"2�7�E�"B�")�4�1����;�h�F�G��
	H�s�
D=�=A
F
�F
c
�D�tjd|jztd����ttj
|jrdnd|j��}tjdd	d
jtt|dd��|j�f|tjtjtj�
�}|j�\}}|jrtj|�tjd�y)�\
    Download source code for npm, unpack it
    and install it in virtual environment.
    � * Install npm.js (%s) ... Tr�r��no�yes)�clean�npm_install�bashr�z. {0} && npm install -g npm@{1}r|�activate)rdr�rur�r�N)r�r�rOr�r"r�r�rvrwr0r�rGrxr�ryr8)r��_src_dirrzrdrr`rs       r�install_npmr�%s���
�K�K�-����8��T�*��,�
�
�
�
��'�'�d�U��H�H��C�
����D�-�4�4��t�G�U�J�7�8����
�	
�
��o�o����� � ��D��
�
�
�F�C���|�|����C��
�K�K��rJc�j�tjd|jztd����d|jz}t	j
t
|�j��}t|d�}t|dd�}tjj|�rtj|�tjjt|d	��rtjt|d	��tjjt|d
��rtjt|d
��tj |d�5}|j#|�ddd�d
|jz}tj$t||�|�tj&t||dd	�t|d	��tj&t||dd
�t|d
��t(r�tj&t|d
�t|dd
��tj$t|d�t|dd��d}	dj+|	|j�}
t-t|dd�t
|
�j��yy#1swY��;xYw)r�r�Tr�r�z*https://github.com/npm/cli/archive/v%s.zipr{�node_modulesrOznpm.cmdz
npm-cli.jsrNzcli-%sr|z)https://raw.githubusercontent.com/npm/cliz
{}/{}/bin/npm)r�r�rOr�r:r;r<r&rGr"r#r%rn�rmtree�removerIrJrQror�r+r0r�)r�rRrz�npm_url�npm_contents�bin_path�node_modules_path�zipf�npm_ver�
npm_gh_url�npm_bin_urls           r�install_npm_winr�Ds���
�K�K�-����8��T�*��,�:�T�X�X�E�G��:�:�g�g�.�3�3�5�6�L��G�Y�'�H��X�~�u�=��	�w�w�~�~�'�(��
�
�'�(�	�w�w�~�~�d�8�Y�/�0�
�	�	�$�x��+�,�	�w�w�~�~�d�8�\�2�3�
�	�	�$�x��.�/�	����s�	+�t����� �
,�����!�G�
�O�O�D��'�*�,=�>�
�K�K��W�g�u�i�8��X�y�)�+�
�K�K��W�g�u�l�;��X�|�,�.�����D��<�0���%��6�	8�����X�~�6��W�e�^�<�	>�@�
�%�,�,�Z����B���$�w��u�-�w�{�/C�/H�/H�/J�K��
,�	+�s�J(�(J2c�F�tjdtd����t|j�j�D�cgc]}|j
���}}t|dd�}|jjd�dk(r|jn|jd	z}|jd
k(s|dk\rdt|�zd
z}ndt|�zdzdz}|D]#}|s�t|d|izg|jd���%tjd�ycc}w)z*
    Install node.js packages via npm
    z  * Install node.js packages ... Tr�r�r|r�rhriz.0rz1.0.0z. z && npm install -g %(pack)sz && npm install %(pack)sz && npm activate %(pack)s�pack)r�r�rr�N)
r�r�r�r3r�r4r5rGrO�countr�r
r8)r�rz�package�packages�
activate_path�real_npm_verr�s       r�install_packagesr�ns%���K�K�2��T�*��,��T�&�&�'�1�1�3�5�3�%,��
�
��3�
�5���%��4�M�#�x�x�~�~�c�2�a�7�4�8�8�T�X�X��_�L��x�x�8��|�w�6��V�M�*�*�+�,���V�M�*�*�(�)�)�*��������6�7�#�#�%�26�,�,��	O���K�K����%5s�Dc��tr7tttd�}t	|d�}t	|d�}t	|d�}n6t
ttd�}t	|d�}t	|d�}t	|d�}trt|�|jd	k(r	t|d<t	d
d�}|jxs?dtjjtjj|��z}|jd	k(r�tj j#�}|j%d
t'|d
|�i�dD]J}	t)j*d|	gt(j,|��j/�\}
}t1|
�}|s�Jn|sJd��|j3�D�]`\}}
t	||�}|
j5d|�}
|
j5dtjj|��}
|
j5d|�}
|
j5dtjj|��}
|
j5d|�}
trGt7ddtjj|�gdd��\}}|
j5d|d�}
n|
j5dd�}
d}|j8r?t:j=|d�}t>j=|d�}||
z|z}
tA|�}tC||
|����ctjjE|�s/tr	t7d |dgd!d!�y#tjLd|�y#y##tF$rtHjKd"�Yy#wxYw)$z7
    Install virtual environment activation script
    )zactivate.batzdeactivate.batzActivate.ps1r{r~z
nodejs.exe)r��
activate.fish�shimr|r�nodejsrs�libr�z(%s)r�)r�rr�)rurdz-Did not find nodejs or node system executable�__NODE_VIRTUAL_PROMPT__�__NODE_VIRTUAL_ENV__�
__SHIM_NODE__�__BIN_NAME__�__MOD_NAME__�cygpathz-wF)r�r�__NPM_CONFIG_PREFIX__rz$NODE_VIRTUAL_ENVr^)r��mklinkTz'Error: Failed to create nodejs.exe linkN)'r��ACTIVATE_BAT�DEACTIVATE_BAT�ACTIVATE_PS1rG�ACTIVATE_SH�
ACTIVATE_FISH�SHIMr+r�rr�r"r#r1r�r�r�r�rfrvrwrxryrarr_r
r��DISABLE_PROMPTr.�
ENABLE_PROMPTr,r�r%r�r�r�rq)r�rz�files�bin_dir�	shim_node�shim_nodejs�mod_dirr�rd�	candidate�which_node_outputrrHr��	file_path�cyg_bin_dir�need_append�disable_prompt�
enable_prompts                   r�install_activater��s
���(�,�(�
��
�w�	�*����*�-�	��7�L�1��$�*��
��
�w��&����&�)�	��7�H�-���
�g���y�y�H����f�
��5�.�)�G�
�[�[�
O�F�R�W�W�%5�%5�b�g�g�o�o�g�6N�%O�O�F��y�y�H���j�j�o�o����
�
�F�4�S��[�'�J�K�L�+�I�#-�#3�#3��)�$�!���C�$1�1<���
!��q�%�%6�7�I���
,��I�I�I�y�����
��g���$�'�	��/�/�";�V�D���/�/�"8�"$�'�'�/�/�'�":�<���/�/�/�9�=���/�/�.�"�'�'�2B�2B�7�2K�L���/�/�.�'�:���#��D�"�'�'�/�/�'�":�;�!�E�3�N�A�{��o�o�&=�{�1�~�N�G��o�o�&=�&9�;�G����!�!�+�/�/��b�9�N�)�-�-�d�B�7�M�$�w�.��>�G��~�.�K��)�W�[�9�9'�<�7�7�>�>�+�&��
H���+�z�:�D�$�G�
�J�J�v�{�+�'���
H����F�G�
H�s�5M�M?�>M?c��ts6tt|dd�d�5}|jt�ddd�yy#1swYyxYw)Nr|�
predeactivate�a)r�r3rGr��PREDEACTIVATE_SH)r��hooks  r�set_predeactivate_hookr��s;���
�$�w���7��
=���J�J�'�(�>�
=��
=�
=�s	�>�Ac��tjj|�rC|js7tjd|�|jstjd�ttt|d���}t|�|jdk7rt|||�n@tt|d��tt|d��tt|dd��t||�t!|�dks|j"r"t$st&rt(nt*}||||�|j,rt/||�|jrt1|�|j2rt5j6|�y	y	)
z3
    Creates a new environment in ``env_dir``.
    z! * Environment already exists: %srirtrsr|r�r�)r�rN)r"r#r%r�r�r�r�r��exitrr�rGr�rr�r�r|rPr�r+r�r�r�r�r�r�rnr�)r�rzrR�instfuncs    r�create_environmentr��s��
�w�w�~�~�g��t�'=�'=����7��A��z�z��H�H�Q�K��g�d�7�E�2�3�4�G�	�'�N��y�y�H���W�g�t�,�
�d�7�E�"�#�
�d�7�E�"�#�
�d�7�E�>�2�3��W�d�#��d�#�i�/�4�=�=�&,�	�?�{����'�4�(������$�'�����w�'��~�~��
�
�g��rJc��tdtz�}tj|j	�jd��S)Nz
%s/index.jsonzUTF-8)r<r�json�loadsr&r)�responses r�_get_versions_jsonr�s1�����5�6�H��:�:�h�m�m�o�,�,�W�5�6�6rJc�l�t�D�cgc]}|djd���c}ddd�Scc}w)Nr�rE����r��lstrip)�dcts r�get_node_versionsr�s7��2D�2F�G�2F�3�C�	�N�!�!�#�&�2F�G��"��M�M��Gs�1c���t�}tdt|�d�D�cgc]
}|||dz��}}|D]&}tj	dj|���(ycc}w)z;
    Prints into stdout all available node.js versions
    r��	N)r��rangerlr�r�rG)�versions�pos�chunks_of_8�chunks    r�print_node_versionsrsg��!�"�H�).�q�#�h�-��)C��)C�#���S�1�W��)C��������D�I�I�e�$�%���s�A c�@�t�ddjd�S)z,
    Return last stable node.js version
    rr�rEr�rYrJr�get_last_stable_node_versionr	s"�����"�9�-�4�4�S�9�9rJc�8�td�t�D�d�S)z7
    Return the last node.js version marked as LTS
    c3�NK�|]}|dr|djd����y�w)�ltsr�rEN)r�)rCrEs  rrFz,get_last_lts_node_version.<locals>.<genexpr>#s-����<�.�Q�!�E�(��9��$�$�S�)�.�s�#%N)�nextr�rYrJr�get_last_lts_node_versionrs&���<�,�.�<�=A�C�CrJc��|jr�ttd�rtj}t|�Sttd�r<tjtjk7rtj}t|�Sdt
jvrtj}t|�Stjd�tjd�t�S|j}t|�S)N�real_prefix�base_prefix�CONDA_PREFIXz!No python virtualenv is availableri)r��hasattrr��prefixrr"r�r�r�r�r�r)rz�ress  r�get_env_dirr's�������3�
�&��*�*�C��3�<���S�-�
(�S�_�_��
�
�-J��*�*�C��3�<���r�z�z�
)��*�*�C��3�<��	
�L�L�<�=��H�H�Q�K��3�<���l�l���3�<�rJc��dtjvrtj�yt	d��}tj|j|j�t	�}|jj�dk(r&tr tjd�td�|jad}|jr(d|jvr
|jan&|j}nt#�s
t%�rd	}nd
}t �d|za|jr|jj�dk(rt'�|_n,|jj�d
k(rt)�|_|j*rt-�y|j.rt1|�}t3||�yt1|�}t5||�y)z
    Entry point
    z--dump-config-defaultsNF)r�rsz4Installing system node.js on win32 is not supported!r z://zunofficial-builds.nodejs.orgz
nodejs.orgzhttps://%s/download/releaserr)r��argvrrIr�r?r�r8rr*r�r�r�r�rVrWrrrr	rr�rr�rr�r�)rz�
src_domainr�s   r�mainr8sF��
 �3�8�8�+�������E�"�D�
�L�L��!�!�4�<�<�0��<�D��y�y����H�$�����K�L��Q��
�,�,���J��{�{��D�K�K���;�;�L����J�	�	�Z�\�3�
�!�
���4�z�A���9�9��	�	���)�X�5�0�2��	�	
�����	�e�	#�-�/��	��y�y���	
����d�#����$�'��d�#���7�D�)rJz�
# disable nodeenv's prompt
# (prompt already changed by original virtualenv's script)
# https://github.com/ekalinin/nodeenv/issues/26
NODE_VIRTUAL_ENV_DISABLE_PROMPT=1
z�
# disable nodeenv's prompt
# (prompt already changed by original virtualenv's script)
# https://github.com/ekalinin/nodeenv/issues/26
set NODE_VIRTUAL_ENV_DISABLE_PROMPT 1
)r�r�z'
unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
z(
set -e NODE_VIRTUAL_ENV_DISABLE_PROMPT
z�#!/usr/bin/env bash
export NODE_PATH='__NODE_VIRTUAL_ENV__/lib/node_modules'
export NPM_CONFIG_PREFIX='__NODE_VIRTUAL_ENV__'
export npm_config_prefix='__NODE_VIRTUAL_ENV__'
exec '__SHIM_NODE__' "$@"
aQ
@echo off
set "NODE_VIRTUAL_ENV=__NODE_VIRTUAL_ENV__"
if not defined PROMPT (
    set "PROMPT=$P$G"
)
if defined _OLD_VIRTUAL_PROMPT (
    set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
)
if defined _OLD_VIRTUAL_NODE_PATH (
    set "NODE_PATH=%_OLD_VIRTUAL_NODE_PATH%"
)
set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
set "PROMPT=__NODE_VIRTUAL_PROMPT__ %PROMPT%"
if defined NODE_PATH (
    set "_OLD_VIRTUAL_NODE_PATH=%NODE_PATH%"
    set NODE_PATH=
)
if defined _OLD_VIRTUAL_PATH (
    set "PATH=%_OLD_VIRTUAL_PATH%"
) else (
    set "_OLD_VIRTUAL_PATH=%PATH%"
)
set "PATH=%NODE_VIRTUAL_ENV%\Scripts;%PATH%"
:END

aV@echo off
if defined _OLD_VIRTUAL_PROMPT (
    set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
)
set _OLD_VIRTUAL_PROMPT=
if defined _OLD_VIRTUAL_NODE_PATH (
    set "NODE_PATH=%_OLD_VIRTUAL_NODE_PATH%"
    set _OLD_VIRTUAL_NODE_PATH=
)
if defined _OLD_VIRTUAL_PATH (
    set "PATH=%_OLD_VIRTUAL_PATH%"
)
set _OLD_VIRTUAL_PATH=
set NODE_VIRTUAL_ENV=
:END
aj
function global:deactivate ([switch]$NonDestructive) {
    # Revert to original values
    if (Test-Path function:_OLD_VIRTUAL_PROMPT) {
        copy-item function:_OLD_VIRTUAL_PROMPT function:prompt
        remove-item function:_OLD_VIRTUAL_PROMPT
    }
    if (Test-Path env:_OLD_VIRTUAL_NODE_PATH) {
        copy-item env:_OLD_VIRTUAL_NODE_PATH env:NODE_PATH
        remove-item env:_OLD_VIRTUAL_NODE_PATH
    }
    if (Test-Path env:_OLD_VIRTUAL_PATH) {
        copy-item env:_OLD_VIRTUAL_PATH env:PATH
        remove-item env:_OLD_VIRTUAL_PATH
    }
    if (Test-Path env:NODE_VIRTUAL_ENV) {
        remove-item env:NODE_VIRTUAL_ENV
    }
    if (!$NonDestructive) {
        # Self destruct!
        remove-item function:deactivate
    }
}

deactivate -nondestructive
$env:NODE_VIRTUAL_ENV="__NODE_VIRTUAL_ENV__"

# Set the prompt to include the env name
# Make sure _OLD_VIRTUAL_PROMPT is global
function global:_OLD_VIRTUAL_PROMPT {""}
copy-item function:prompt function:_OLD_VIRTUAL_PROMPT
function global:prompt {
    Write-Host -NoNewline -ForegroundColor Green '__NODE_VIRTUAL_PROMPT__ '
    _OLD_VIRTUAL_PROMPT
}

# Clear NODE_PATH
if (Test-Path env:NODE_PATH) {
    copy-item env:NODE_PATH env:_OLD_VIRTUAL_NODE_PATH
    remove-item env:NODE_PATH
}

# Add the venv to the PATH
copy-item env:PATH env:_OLD_VIRTUAL_PATH
$env:PATH = "$env:NODE_VIRTUAL_ENV\Scripts;$env:PATH"
a�

# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

deactivate_node () {
    # reset old environment variables
    if [ -n "${_OLD_NODE_VIRTUAL_PATH:-}" ] ; then
        PATH="${_OLD_NODE_VIRTUAL_PATH:-}"
        export PATH
        unset _OLD_NODE_VIRTUAL_PATH

        NODE_PATH="${_OLD_NODE_PATH:-}"
        export NODE_PATH
        unset _OLD_NODE_PATH

        NPM_CONFIG_PREFIX="${_OLD_NPM_CONFIG_PREFIX:-}"
        npm_config_prefix="${_OLD_npm_config_prefix:-}"
        export NPM_CONFIG_PREFIX
        export npm_config_prefix
        unset _OLD_NPM_CONFIG_PREFIX
        unset _OLD_npm_config_prefix
    fi

    # This should detect bash and zsh, which have a hash command that must
    # be called to get it to forget past commands.  Without forgetting
    # past commands the $PATH changes we made may not be respected
    if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
        hash -r
    fi

    if [ -n "${_OLD_NODE_VIRTUAL_PS1:-}" ] ; then
        PS1="${_OLD_NODE_VIRTUAL_PS1:-}"
        export PS1
        unset _OLD_NODE_VIRTUAL_PS1
    fi

    unset NODE_VIRTUAL_ENV
    if [ ! "${1:-}" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate_node
    fi
}

freeze () {
    local NPM_VER=`npm -v | cut -d '.' -f 1`
    local re="[a-zA-Z0-9\.\-]+@[0-9]+\.[0-9]+\.[0-9]+([\+\-][a-zA-Z0-9\.\-]+)*"
    if [ "$NPM_VER" = '0' ]; then
        NPM_LIST=`npm list installed active 2>/dev/null | \
                  cut -d ' ' -f 1 | grep -v npm`
    else
        local npmls="npm ls -g"
        if [ "${1:-}" = "-l" ]; then
            npmls="npm ls"
            shift
        fi
        NPM_LIST=$(eval ${npmls} | grep -E '^.{4}\w{1}'| \
                                   grep -o -E "$re"| grep -v npm)
    fi

    if [ -z "$@" ]; then
        echo "$NPM_LIST"
    else
        echo "$NPM_LIST" > $@
    fi
}

# unset irrelevant variables
deactivate_node nondestructive

# find the directory of this script
# http://stackoverflow.com/a/246128
if [ "${BASH_SOURCE:-}" ] ; then
    SOURCE="${BASH_SOURCE[0]}"

    while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
    DIR="$( command cd -P "$( dirname "$SOURCE" )" > /dev/null && pwd )"

    NODE_VIRTUAL_ENV="$(dirname "$DIR")"
else
    # dash not movable. fix use case:
    #   dash -c " . node-env/bin/activate && node -v"
    NODE_VIRTUAL_ENV="__NODE_VIRTUAL_ENV__"
fi

# NODE_VIRTUAL_ENV is the parent of the directory where this script is
export NODE_VIRTUAL_ENV

_OLD_NODE_VIRTUAL_PATH="$PATH"
PATH="$NODE_VIRTUAL_ENV/lib/node_modules/.bin:$NODE_VIRTUAL_ENV/__BIN_NAME__:$PATH"
export PATH

_OLD_NODE_PATH="${NODE_PATH:-}"
NODE_PATH="$NODE_VIRTUAL_ENV/__MOD_NAME__"
export NODE_PATH

_OLD_NPM_CONFIG_PREFIX="${NPM_CONFIG_PREFIX:-}"
_OLD_npm_config_prefix="${npm_config_prefix:-}"
NPM_CONFIG_PREFIX="__NPM_CONFIG_PREFIX__"
npm_config_prefix="__NPM_CONFIG_PREFIX__"
export NPM_CONFIG_PREFIX
export npm_config_prefix

if [ -z "${NODE_VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
    _OLD_NODE_VIRTUAL_PS1="${PS1:-}"
    if [ "x__NODE_VIRTUAL_PROMPT__" != x ] ; then
        PS1="__NODE_VIRTUAL_PROMPT__ ${PS1:-}"
    else
    if [ "`basename \"$NODE_VIRTUAL_ENV\"`" = "__" ] ; then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        PS1="[`basename \`dirname \"$NODE_VIRTUAL_ENV\"\``] ${PS1:-}"
    else
        PS1="(`basename \"$NODE_VIRTUAL_ENV\"`) ${PS1:-}"
    fi
    fi
    export PS1
fi

# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands.  Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
    hash -r
fi
a

# This file must be used with "source bin/activate.fish" *from fish*
# you cannot run it directly

function deactivate_node -d 'Exit nodeenv and return to normal environment.'
    # reset old environment variables
    if test -n "$_OLD_NODE_VIRTUAL_PATH"
        set -gx PATH $_OLD_NODE_VIRTUAL_PATH
        set -e _OLD_NODE_VIRTUAL_PATH
    end

    if test -n "$_OLD_NODE_PATH"
        set -gx NODE_PATH $_OLD_NODE_PATH
        set -e _OLD_NODE_PATH
    else
        set -e NODE_PATH
    end

    if test -n "$_OLD_NPM_CONFIG_PREFIX"
        set -gx NPM_CONFIG_PREFIX $_OLD_NPM_CONFIG_PREFIX
        set -e _OLD_NPM_CONFIG_PREFIX
    else
        set -e NPM_CONFIG_PREFIX
    end

    if test -n "$_OLD_npm_config_prefix"
        set -gx npm_config_prefix $_OLD_npm_config_prefix
        set -e _OLD_npm_config_prefix
    else
        set -e npm_config_prefix
    end

    if test -n "$_OLD_NODE_FISH_PROMPT_OVERRIDE"
        # Set an empty local `$fish_function_path` to allow the removal of
        # `fish_prompt` using `functions -e`.
        set -l fish_function_path

        # Prevents error when using nested fish instances
        if functions -q _node_old_fish_prompt
            # Erase virtualenv's `fish_prompt` and restore the original.
            functions -e fish_prompt
            functions -c _node_old_fish_prompt fish_prompt
            functions -e _node_old_fish_prompt
        end
        set -e _OLD_NODE_FISH_PROMPT_OVERRIDE
    end

    set -e NODE_VIRTUAL_ENV

    if test (count $argv) = 0 -o "$argv[1]" != "nondestructive"
        # Self destruct!
        functions -e deactivate_node
    end
end

function freeze -d 'Show a list of installed packages - like `pip freeze`'
    set -l NPM_VER (npm -v | cut -d '.' -f 1)
    set -l RE "[a-zA-Z0-9\.\-]+@[0-9]+\.[0-9]+\.[0-9]+([\+\-][a-zA-Z0-9\.\-]+)*"

    if test "$NPM_VER" = "0"
        set -g NPM_LIST (npm list installed active >/dev/null ^/dev/null |                          cut -d ' ' -f 1 | grep -v npm)
    else
        set -l NPM_LS "npm ls -g"
        if test (count $argv) -gt 0 -a "$argv[1]" = "-l"
            set NPM_LS "npm ls"
            set -e argv[1]
        end
        set -l NPM_LIST (eval $NPM_LS | grep -E '^.{4}\w{1}' |                                         grep -o -E "$re" |                                         grep -v npm)
    end

    if test (count $argv) = 0
        echo $NPM_LIST
    else
        echo $NPM_LIST > $argv[1]
    end
end

# unset irrelevant variables
deactivate_node nondestructive

# find the directory of this script
begin
    set -l SOURCE (status filename)
    while test -L "$SOURCE"
        set SOURCE (readlink "$SOURCE")
    end
    set -l DIR (dirname (realpath "$SOURCE"))

    # NODE_VIRTUAL_ENV is the parent of the directory where this script is
    set -gx NODE_VIRTUAL_ENV (dirname "$DIR")
end

set -gx _OLD_NODE_VIRTUAL_PATH $PATH
# The node_modules/.bin path doesn't exists and it will print a warning, and
# that's why we redirect stderr to /dev/null :)
set -gx PATH "$NODE_VIRTUAL_ENV/lib/node_modules/.bin" "$NODE_VIRTUAL_ENV/__BIN_NAME__" $PATH ^/dev/null

if set -q NODE_PATH
    set -gx _OLD_NODE_PATH $NODE_PATH
    set -gx NODE_PATH "$NODE_VIRTUAL_ENV/__MOD_NAME__" $NODE_PATH
else
    set -gx NODE_PATH "$NODE_VIRTUAL_ENV/__MOD_NAME__"
end

if set -q NPM_CONFIG_PREFIX
    set -gx _OLD_NPM_CONFIG_PREFIX $NPM_CONFIG_PREFIX
end
set -gx NPM_CONFIG_PREFIX "__NPM_CONFIG_PREFIX__"

if set -q npm_config_prefix
    set -gx _OLD_npm_config_prefix $npm_config_prefix
end
set -gx npm_config_prefix "__NPM_CONFIG_PREFIX__"

if test -z "$NODE_VIRTUAL_ENV_DISABLE_PROMPT"
    # Copy the current `fish_prompt` function as `_node_old_fish_prompt`.
    functions -c fish_prompt _node_old_fish_prompt

    function fish_prompt
        # Save the current $status, for fish_prompts that display it.
        set -l old_status $status

        # Prompt override provided?
        # If not, just prepend the environment name.
        if test -n "__NODE_VIRTUAL_PROMPT__"
            printf '%s%s ' "__NODE_VIRTUAL_PROMPT__" (set_color normal)
        else
            printf '%s(%s) ' (set_color normal) (basename "$NODE_VIRTUAL_ENV")
        end

        # Restore the original $status
        echo "exit $old_status" | source
        _node_old_fish_prompt
    end

    set -gx _OLD_NODE_FISH_PROMPT_OVERRIDE "$NODE_VIRTUAL_ENV"
end
zA
if type -p deactivate_node > /dev/null; then deactivate_node;fi
z�#!/bin/sh

if [ -r "$1" ]; then
    SCRIPT_PATH=$(cygpath -w "$1")
    shift
    set - $SCRIPT_PATH $@
    unset SCRIPT_PATH
fi

exec $(dirname "$0")/node.exe "$@"
�__main__)T)TF)TFNN)r)FN)irN�
contextlibr:r�r�r"rNrbr�r�rKr�rvr4r��pipesrr��shlexrrIrnrr�rrr`rLr�httplibr=�ImportError�configparser�urllib.request�request�http�clientr�r#rGr�rrrsr�r)r+rVr�objectrr�r(�_defaultrarfrqr|r�r�r�r�r�r�r�r
rrrr/r2�contextmanagerr8rAr\r<ror�r�r�r�r�r�r�r�r�r�r�r�rr	rrrr�r�r�r�r�r�r�r�r�rrKrYrJr�<module>r)s�����	��
�	�	�
����������f��%�%���
���
0�=��%��%�%�k�2�I���+�+�N���	�w�w�|�|��
�'�'�/�/����	�	�	�!�	��	!��	����	�i�	'���H�O�O��(�(�);�<�	����(?'�V�?'�D��!*�4��<�!8�����1�.��	$��>
���P�f�>	=�"�"�J,1�#�B'�J�O�+�,�B,�
������
� 2�:
 � #�$1�:1K�h
� �F�>'L�T�6P,�f)��B7�
N�	&�:�C�
�"2*�r��
�� ��	�
�����8��$-��^}��@M�
�^��
���z���F���A/�0�)�$�%��%�%�g�.�I���[�[�/�/�N�
0�s�(,G1�1=H2�1H2

if you don't want to be vaporized in a nuclear explosion, i simply have to become nuclear myself… i am atomic