HEX
Server: LiteSpeed
System: Linux s787.bom1.mysecurecloudhost.com 4.18.0-477.13.1.lve.el8.x86_64 #1 SMP Thu Jun 1 16:40:47 EDT 2023 x86_64
User: mobilech (5348)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cloudlinux/venv/lib/python3.11/site-packages/setuptools/__pycache__/msvc.cpython-311.pyc
�

1j�����UdZddlmZddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZddl
mZddlmZddlmZddlZe
rdd	lmZmZe
sej��d
krddlZddlmZnGd�d
��Ze��Zded<Gd�d��ZGd�d��ZGd�d��ZGd�de��Z Gd�d��Z!dS)zo
Environment info about Microsoft Compilers.

>>> getfixture('windows_only')
>>> ei = EnvironmentInfo('amd64')
�)�annotationsN)�
TYPE_CHECKING�	TypedDict�overload)�unique_everseen�)�StrPath)�py310)�
LiteralString�NotRequired�Windows)�environc��eZdZdZdZdZdZdS)�winregN)�__name__�
__module__�__qualname__�
HKEY_USERS�HKEY_CURRENT_USER�HKEY_LOCAL_MACHINE�HKEY_CLASSES_ROOT���a/builddir/build/BUILD/cloudlinux-venv-1.0.11/venv/lib/python3.11/site-packages/setuptools/msvc.pyrr#s'�������
� ��!�� ���rrzdict[str, str]rc��eZdZdZejdd�����Zdd�Ze	dd	���Z
dd�Zdd�Zddd�Z
ddd�Zddd�ZdS)�PlatformInfoz�
    Current and Target Architectures information.

    Parameters
    ----------
    arch: str
        Target architecture.
    �processor_architecture��arch�str�return�Nonec�`�|����dd��|_dS)N�x64�amd64)�lower�replacer)�selfrs  r�__init__zPlatformInfo.__init__8s%���J�J�L�L�(�(���8�8��	�	�	rc�V�|j|j�d��dzd�S)zs
        Return Target CPU architecture.

        Return
        ------
        str
            Target CPU
        �_rN)r�find�r(s r�
target_cpuzPlatformInfo.target_cpu;s*���y������,�,�q�0�2�2�3�3r�boolc��|jdkS)z�
        Return True if target CPU is x86 32 bits..

        Return
        ------
        bool
            CPU is x86 32 bits
        �x86�r.r-s r�
target_is_x86zPlatformInfo.target_is_x86Gs����%�'�'rc��|jdkS)z�
        Return True if current CPU is x86 32 bits..

        Return
        ------
        bool
            CPU is x86 32 bits
        r1��current_cpur-s r�current_is_x86zPlatformInfo.current_is_x86Rs����5�(�(rFc�R�|jdkr|rdn|jdkr|rdn	d|j��S)uk
        Current platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not '†' if architecture is x86.
        x64: bool
            return 'd' and not 'md64' if architecture is amd64.

        Return
        ------
        str
            subfolder: '	arget', or '' (see hidex86 parameter)
        r1rr%�\x64�\r5�r(�hidex86r$s   r�current_dirzPlatformInfo.current_dir]sM��$� �E�)�)�g�)�
�B�� �G�+�+��+���(�d�&�(�(�	
rc�R�|jdkr|rdn|jdkr|rdn	d|j��S)ar
        Target platform specific subfolder.

        Parameters
        ----------
        hidex86: bool
            return '' and not '\x86' if architecture is x86.
        x64: bool
            return '\x64' and not '\amd64' if architecture is amd64.

        Return
        ------
        str
            subfolder: '\current', or '' (see hidex86 parameter)
        r1rr%r9r:r2r;s   r�
target_dirzPlatformInfo.target_dirusJ��$��5�(�(�W�(�
�B���7�*�*�s�*���'�d�o�'�'�	
rc��|rdn|j}|j|krdn+|����dd|�d���S)ap
        Cross platform specific subfolder.

        Parameters
        ----------
        forcex86: bool
            Use 'x86' as current architecture even if current architecture is
            not x86.

        Return
        ------
        str
            subfolder: '' if target architecture is current architecture,
            '\current_target' if not.
        r1rr:r+)r6r.r?r')r(�forcex86�currents   r�	cross_dirzPlatformInfo.cross_dir�sU�� $�9�%�%��)9����'�)�)�
�B����"�"�*�*�4��g����A�A�	
rN)rr r!r"�r!r )r!r/)FF�F)rrr�__doc__r�getr&r6r)�propertyr.r3r7r=r?rCrrrrr,s����������'�+�6��;�;�A�A�C�C�K�9�9�9�9��	4�	4�	4��X�	4�	(�	(�	(�	(�	)�	)�	)�	)�
�
�
�
�
�0
�
�
�
�
�0
�
�
�
�
�
�
rrc�l�eZdZdZejejejejfZ	dd�Z
edd���Zedd	���Z
edd
���Zedd���Zedd���Zedd
���Zedd���Zedd���Zedd���Zedd d���Zedd!d���Zdd!d�Zd"d�ZdS)#�RegistryInfoz�
    Microsoft Visual Studio related registry information.

    Parameters
    ----------
    platform_info: PlatformInfo
        "PlatformInfo" instance.
    �
platform_inforr!r"c��||_dS�N)�pi)r(rKs  rr)zRegistryInfo.__init__�s
������rrc��dS)z�
        Microsoft Visual Studio root registry key.

        Return
        ------
        str
            Registry key
        �VisualStudiorr-s r�visualstudiozRegistryInfo.visualstudio�s	���~rc�L�tj�|jd��S)z
        Microsoft Visual Studio SxS registry key.

        Return
        ------
        str
            Registry key
        �SxS)�os�path�joinrQr-s r�sxszRegistryInfo.sxs�s���w�|�|�D�-�u�5�5�5rc�L�tj�|jd��S)z|
        Microsoft Visual C++ VC7 registry key.

        Return
        ------
        str
            Registry key
        �VC7�rTrUrVrWr-s r�vczRegistryInfo.vc�����w�|�|�D�H�e�,�,�,rc�L�tj�|jd��S)z
        Microsoft Visual Studio VS7 registry key.

        Return
        ------
        str
            Registry key
        �VS7rZr-s r�vszRegistryInfo.vs�r\rc��dS)z�
        Microsoft Visual C++ for Python registry key.

        Return
        ------
        str
            Registry key
        zDevDiv\VCForPythonrr-s r�
vc_for_pythonzRegistryInfo.vc_for_python�s
��%�$rc��dS)zq
        Microsoft SDK registry key.

        Return
        ------
        str
            Registry key
        zMicrosoft SDKsrr-s r�
microsoft_sdkzRegistryInfo.microsoft_sdk�s
�� �rc�L�tj�|jd��S)z�
        Microsoft Windows/Platform SDK registry key.

        Return
        ------
        str
            Registry key
        r
�rTrUrVrcr-s r�windows_sdkzRegistryInfo.windows_sdks���w�|�|�D�.�	�:�:�:rc�L�tj�|jd��S)z�
        Microsoft .NET Framework SDK registry key.

        Return
        ------
        str
            Registry key
        �NETFXSDKrer-s r�	netfx_sdkzRegistryInfo.netfx_sdk
s���w�|�|�D�.�
�;�;�;rc��dS)z�
        Microsoft Windows Kits Roots registry key.

        Return
        ------
        str
            Registry key
        zWindows Kits\Installed Rootsrr-s r�windows_kits_rootszRegistryInfo.windows_kits_rootss
��/�.rF�keyr1r/c��dSrMr�r(rlr1s   r�	microsoftzRegistryInfo.microsoft%s��QT�QTrr c��dSrMrrns   rrozRegistryInfo.microsoft's��=@�Src��|j���s|rdnd}tj�d|d|��S)a
        Return key in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        x86: bool
            Force x86 software registry.

        Return
        ------
        str
            Registry key
        r�Wow6432Node�Software�	Microsoft)rNr7rTrUrV)r(rlr1�node64s    rrozRegistryInfo.microsoft)s?�� �w�-�-�/�/�I�3�I���M���w�|�|�J���S�A�A�Ar�name�
str | Nonec	��tj}tj}tj}|j}|jD]�}d}	||||��d|��}nV#t$rI|j���s+	||||d��d|��}n#t$rYY�gwxYwY�mYnwxYw	tj	||��d|r||��cScS#t$rYnwxYw	|r||����#|r||��wwxYwdS)a%
        Look for values in registry in Microsoft software registry.

        Parameters
        ----------
        key: str
            Registry key path where look.
        name: str
            Value name to find.

        Return
        ------
        str | None
            value
        NrT)
r�KEY_READ�OpenKey�CloseKeyro�HKEYS�OSErrorrNr7�QueryValueEx)	r(rlrv�key_read�openkey�closekey�ms�hkey�bkeys	         r�lookupzRegistryInfo.lookup<s��� �?���.���?��
�^���J�	#�	#�D��D�	
��w�t�R�R��W�W�a��:�:�����
�
�
��w�-�-�/�/��!�&�w�t�R�R��T�]�]�A�x�H�H����"�!�!�!� ���!�����H�	��
����
#��*�4��6�6�q�9��#��H�T�N�N�N�N�N�N�#�#�#���
�
�
���
������#��H�T�N�N�N����#��H�T�N�N�N�N�#�����tsY�A�#B#�4B
�B#�
B�B#�B�B#�"B#�'C�
C!�C3� C!�!C3�3DN)rKrr!r")r!rrE)rlrr1r/r!r)rlr r1r/r!r )rlr rvr r!rw)rrrrFrrrrrr|r)rHrQrWr[r_rarcrfrirkrror�rrrrJrJ�s���������	��� ��!�� �	
�E� � � � ��	�	�	��X�	��	6�	6�	6��X�	6��	-�	-�	-��X�	-��	-�	-�	-��X�	-��	%�	%�	%��X�	%��	 �	 �	 ��X�	 ��	;�	;�	;��X�	;��	<�	<�	<��X�	<��	/�	/�	/��X�	/��T�T�T�T��X�T�
�@�@�@�@��X�@�B�B�B�B�B�&'�'�'�'�'�'rrJc�F�eZdZdZejdd��Zejdd��Zejde��Z	d.d/d
�Z	d�Z
d0d�Zd1d�Ze
d���Zed2d���Zed2d���Zd�Zd�Zed3d���Zed2d���Zed2d���Zed4d���Zed2d���Zed4d ���Zed2d!���Zed3d"���Zed4d#���Zed2d$���Zed2d%���Zed5d'���Zed5d(���Z d5d)�Z!e
d6d7d-���Z"dS)8�
SystemInfoz�
    Microsoft Windows and Visual Studio related system information.

    Parameters
    ----------
    registry_info: RegistryInfo
        "RegistryInfo" instance.
    vc_ver: float
        Required Microsoft Visual C++ version.
    �WinDirr�ProgramFileszProgramFiles(x86)N�
registry_inforJ�vc_ver�float | Noner!r"c��||_|jj|_|���|_|p|���x|_|_dSrM)�rirN�find_programdata_vs_vers�known_vs_paths�_find_latest_available_vs_ver�vs_verr�)r(r�r�s   rr)zSystemInfo.__init__xsO�� ����'�*���"�;�;�=�=���%+�$R�d�.P�.P�.R�.R�R���d�k�k�krc���|���}|s&|jstj�d���t|��}|�|j��t|��S)zm
        Find the latest VC version

        Return
        ------
        float
            version
        z%No Microsoft Visual C++ version found)�find_reg_vs_versr��	distutils�errors�DistutilsPlatformError�set�update�max)r(�reg_vc_vers�vc_verss   rr�z(SystemInfo._find_latest_available_vs_ver�su���+�+�-�-���	�t�2�	��"�9�9�7���
��k�"�"�����t�*�+�+�+��7�|�|�r�list[float]c
��|jj}|jj|jj|jjf}g}tj|jj|��D�]w\}}	tj	|||��dtj
��}n#t$rY�>wxYw|5tj|��\}}}	t|��D]t}
tjt ��5t#tj||
��d��}||vr|�|��ddd��n#1swxYwY�ut|��D]n}
tjt ��5t#tj||
����}||vr|�|��ddd��n#1swxYwY�o	ddd��n#1swxYwY��yt+|��S)z�
        Find Microsoft Visual Studio versions available in registry.

        Return
        ------
        list of float
            Versions
        rN)r�ror[rar_�	itertools�productr|rrzryr}�QueryInfoKey�range�
contextlib�suppress�
ValueError�float�	EnumValue�append�EnumKey�sorted)r(r��vckeys�vs_versr�rlr��subkeys�valuesr+�i�vers            rr�zSystemInfo.find_reg_vs_vers�s����W�
���'�*�d�g�3�T�W�Z�@����"�*�4�7�=�&�A�A�	0�	0�I�D�#�
��~�d�B�B�s�G�G�Q���H�H�����
�
�
���
�����
0�
0�%+�%8��%>�%>�"�����v���0�0�A�#�,�Z�8�8�0�0�#�F�$4�T�1�$=�$=�a�$@�A�A���g�-�-�#�N�N�3�/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0���w���0�0�A�#�,�Z�8�8�0�0�#�F�N�4��$;�$;�<�<���g�-�-�#�N�N�3�/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0��0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0���g���sn�*B�
B�B�AF=�AD&	�F=�&D*
�*F=�-D*
�..F=�<F$	�F=�$F(
�(F=�+F(
�,F=�=G	�G	�dict[float, str]c��i}d}	tj|��}n#t$r|cYSwxYw|D]�}	tj�||d��}t|dd���5}t
j|��}ddd��n#1swxYwY|d}tjtj�|d����|||�|d	��<��#ttf$rY��wxYw|S)
z�
        Find Visual studio 2017+ versions from information in
        "C:\ProgramData\Microsoft\VisualStudio\Packages\_Instances".

        Return
        ------
        dict
            float version as key, path as value.
        z9C:\ProgramData\Microsoft\VisualStudio\Packages\_Instancesz
state.json�rtzutf-8)�encodingN�installationPath�
VC\Tools\MSVC�installationVersion)
rT�listdirr}rUrV�open�json�load�_as_float_version�KeyError)	r(�vs_versions�
instances_dir�hashed_namesrv�
state_path�
state_file�state�vs_paths	         rr�z#SystemInfo.find_programdata_vs_vers�sq��)+��T�
�	��:�m�4�4�L�L���	�	�	�����	����!�	�	�D�
��W�\�\�-��|�L�L�
��*�d�W�=�=�=�2�� �I�j�1�1�E�2�2�2�2�2�2�2�2�2�2�2����2�2�2�2�� 2�3���
�2�7�<�<��1A�B�B�C�C�C���D�2�2�5�9N�3O�P�P�Q�Q���X�&�
�
�
���
�����sB��*�*�3C*�%B�:C*�B
	�
C*�
B
	�AC*�*C>�=C>c�|�td�|�d��dd�����S)z�
        Return a string version as a simplified float version (major.minor)

        Parameters
        ----------
        version: str
            Version.

        Return
        ------
        float
            version
        �.N�)r�rV�split)�versions rr�zSystemInfo._as_float_version�s3���S�X�X�g�m�m�C�0�0��!��4�5�5�6�6�6rr c��tj�|jd|jd����}|j�|jj|jd���p|S)zp
        Microsoft Visual Studio directory.

        Return
        ------
        str
            path
        �Microsoft Visual Studio �0.1f)rTrUrV�ProgramFilesx86r�r�r�r_)r(�defaults  r�VSInstallDirzSystemInfo.VSInstallDir�sX���'�,�,�� �"O�T�[�"O�"O�"O�
�
��
�w�~�~�d�g�j�T�[�*?�*?�@�@�K�G�Krc���|���p|���}tj�|��s!d}t
j�|���|S)zm
        Microsoft Visual C++ directory.

        Return
        ------
        str
            path
        z(Microsoft Visual C++ directory not found)�	_guess_vc�_guess_vc_legacyrTrU�isdirr�r�r�)r(rU�msgs   r�VCInstallDirzSystemInfo.VCInstallDirs[���~�~���:�4�#8�#8�#:�#:���w�}�}�T�"�"�	?�<�C��"�9�9�#�>�>�>��rc��|jdkrdS	|j|j}n#t$r
|j}YnwxYwtj�|d��}	t	j|��d}|�|��|_	tj�||��S#ttf$rYdSwxYw)zl
        Locate Visual C++ for VS2017+.

        Return
        ------
        str
            path
        �,@rr����)r�r�r�r�rTrUrVr�r�r�r}�
IndexError)r(�vs_dir�guess_vcr�s    rr�zSystemInfo._guess_vcs����;�$����2�	'��(���5�F�F���	'�	'�	'��&�F�F�F�	'�����7�<�<��(8�9�9��	��Z��)�)�"�-�F��0�0��8�8�D�K��7�<�<��&�1�1�1����$�	�	�	��2�2�	���s�"�6�6�AB.�.C�Cc��tj�|jd|jd�d���}tj�|jj|jd���}|j�|d��}|r tj�|d��n|}|j�|jj|jd���p|S)z{
        Locate Visual C++ for versions prior to 2017.

        Return
        ------
        str
            path
        r�r�z\VC�
installdir�VC)	rTrUrVr�r�r�rar�r[)r(r��reg_path�	python_vc�
default_vcs     rr�zSystemInfo._guess_vc_legacy3s����'�,�,�� �=���=�=�=�=�
�
���7�<�<��� 5�$�+�7L�7L�M�M���G�N�N�8�\�:�:�	�6?�L�R�W�\�\�)�T�2�2�2�W�
��w�~�~�d�g�j�T�[�*?�*?�@�@�N�J�Nr�tuple[LiteralString, ...]c��|jdkrdS|jdkrdS|jdkrdS|jdkrdS|jd	krd
SdS)z�
        Microsoft Windows SDK versions for specified MSVC++ version.

        Return
        ------
        tuple of str
            versions
        �"@)z7.0z6.1z6.0a�$@)z7.1z7.0a�&@)z8.0z8.0a�(@)�8.1z8.1ar�)z10.0r�r�r�r-s r�WindowsSdkVersionzSystemInfo.WindowsSdkVersionIsd���;�#���'�'�
�[�D�
 �
 � �=�
�[�D�
 �
 � �=�
�[�D�
 �
 � �=�
�[�D�
 �
 � �=��rrc�r�|�tj�|jd����S)zt
        Microsoft Windows SDK last version.

        Return
        ------
        str
            version
        �lib)�_use_last_dir_namerTrUrV�
WindowsSdkDirr-s r�WindowsSdkLastVersionz SystemInfo.WindowsSdkLastVersion_s+���&�&�r�w�|�|�D�4F��'N�'N�O�O�Orc�4�d}|jD]N}tj�|jjd|����}|j�|d��}|rn�O|rtj�|��sntj�|jj|j	d���}|j�|d��}|r tj�|d��}|rtj�|��sr|jD]j}|d|�
d���}d	|��}tj�|j|��}tj�|��r|}�k|rtj�|��sU|jD]M}d
|��}tj�|j|��}tj�|��r|}�N|s%tj�|jd��}|S)zn
        Microsoft Windows SDK directory.

        Return
        ------
        str
            path
        r�v�installationfolderr�r��WinSDKNr�zMicrosoft SDKs\Windows Kits\zMicrosoft SDKs\Windows\v�PlatformSDK)
r�rTrUrVr�rfr�r�rar��rfindr�r�)r(�sdkdirr��locrU�install_base�intver�ds        rr�zSystemInfo.WindowsSdkDirks��� ���)�	�	�C��'�,�,�t�w�2�I��I�I�>�>�C��W�^�^�C�)=�>�>�F��
���
��	>�R�W�]�]�6�2�2�	>��7�<�<��� 5�$�+�7L�7L�M�M�D��7�>�>�$��=�=�L��
>�����l�H�=�=���	�R�W�]�]�6�2�2�	��-�
�
���-�s�y�y��~�~�-�.��?�v�?�?���G�L�L��!2�D�9�9���7�=�=��#�#���F���	�R�W�]�]�6�2�2�	��-�
�
��8�3�8�8���G�L�L��!2�D�9�9���7�=�=��#�#���F���	D��W�\�\�$�"3�]�C�C�F��
rrwc�
�|jdkrd}d}nAd}|jdkrdnd}|j�d|����d	d
��}d|�d|��}g}|jd
kr9|jD]1}|t
j�|jj	||��gz
}�2|j
D]5}|t
j�|jjd|�d�|��gz
}�6|D]#}|j�|d��}|r|cS�$dS)z�
        Microsoft Windows SDK executable directory.

        Return
        ------
        str | None
            path
        r��#r�(r�TF)r$r<r:�-zWinSDK-NetFx�Toolsr�r��Ar�N)
r�rNr=r'�NetFxSdkVersionrTrUrVr�rir�rfr�)	r(�netfxverrr<�fx�regpathsr�rU�execpaths	         r�WindowsSDKExecutablePathz#SystemInfo.WindowsSDKExecutablePath�sK���;�$����H��D�D��H�"�k�T�1�1�d�d�u�G��7�&�&�4��&�A�A�I�I�$�PS�T�T�D�
1�H�
1�
1�4�
1�
1�����;�$����+�
G�
G���R�W�\�\�$�'�*;�S�"�E�E�F�F����)�	L�	L�C������d�g�&9�:�s�:�:�:�r�J�J�K�K�H�H��	 �	 �D��w�~�~�d�,@�A�A�H��
 �����
 ��trc��tj�|jj|jd�d���}|j�|d��pdS)zl
        Microsoft Visual F# directory.

        Return
        ------
        str
            path
        r�z	\Setup\F#�
productdirr)rTrUrVr�rQr�r�)r(rUs  r�FSharpInstallDirzSystemInfo.FSharpInstallDir�sG���w�|�|�D�G�0�d�k�2Q�2Q�2Q�2Q�R�R���w�~�~�d�L�1�1�7�R�7rc��|jdkrdnd}|D]0}|j�|jjd|����}|r|cS�1dS)z{
        Microsoft Universal CRT SDK directory.

        Return
        ------
        str | None
            path
        r�)�10�81r�kitsrootN)r�r�r�rk)r(�versr�r�s    r�UniversalCRTSdkDirzSystemInfo.UniversalCRTSdkDir�sj�� $�{�d�2�2�|�|����	�	�C��W�^�^�D�G�$>�@P�3�@P�@P�Q�Q�F��
��
�
�
�
��trc���	|�tj�|jd����S#t
$r}t
j|d���d}~wwxYw)z�
        Microsoft Universal C Runtime SDK last version.

        Return
        ------
        str
            version
        r��Cannot find UniversalCRTSdkDirN)r�rTrUrVr�	TypeErrorr
�add_note)r(�exs  r�UniversalCRTSdkLastVersionz%SystemInfo.UniversalCRTSdkLastVersion�sd��	��*�*�2�7�<�<��8O�QV�+W�+W�X�X�X���	�	�	��N�2�?�@�@�@������	���s�7:�
A�A�Ac� �|jdkrdndS)z�
        Microsoft .NET Framework SDK versions.

        Return
        ------
        tuple of str
            versions
        r�)	z4.7.2z4.7.1z4.7z4.6.2z4.6.1z4.6z4.5.2z4.5.1z4.5rr�r-s rrzSystemInfo.NetFxSdkVersion�s"���{�d�"�"�
X�W��	
rc��d}|jD]K}tj�|jj|��}|j�|d��}|rn�L|S)z|
        Microsoft .NET Framework SDK directory.

        Return
        ------
        str | None
            path
        r�kitsinstallationfolder)rrTrUrVr�rir�)r(r�r�r�s    r�NetFxSdkDirzSystemInfo.NetFxSdkDir�sb�� ���'�	�	�C��'�,�,�t�w�0�#�6�6�C��W�^�^�C�)A�B�B�F��
���
��
rc��tj�|jd��}|j�|jjd��p|S)zw
        Microsoft .NET Framework 32bit directory.

        Return
        ------
        str
            path
        zMicrosoft.NET\Framework�frameworkdir32�rTrUrVr�r�r�r[�r(�guess_fws  r�FrameworkDir32zSystemInfo.FrameworkDir32s>���7�<�<���-G�H�H���w�~�~�d�g�j�*:�;�;�G�x�Grc��tj�|jd��}|j�|jjd��p|S)zw
        Microsoft .NET Framework 64bit directory.

        Return
        ------
        str
            path
        zMicrosoft.NET\Framework64�frameworkdir64rrs  r�FrameworkDir64zSystemInfo.FrameworkDir64 s>���7�<�<���-I�J�J���w�~�~�d�g�j�*:�;�;�G�x�Gr�tuple[str, ...]c�,�|�d��S)z�
        Microsoft .NET Framework 32bit versions.

        Return
        ------
        tuple of str
            versions
        � ��_find_dot_net_versionsr-s r�FrameworkVersion32zSystemInfo.FrameworkVersion320����*�*�2�.�.�.rc�,�|�d��S)z�
        Microsoft .NET Framework 64bit versions.

        Return
        ------
        tuple of str
            versions
        �@r&r-s r�FrameworkVersion64zSystemInfo.FrameworkVersion64<r)rc�d�|j�|jjd|����}t|d|����}|p|�|d��pd}|jdkr|dfS|jdkr&|���dd	�d
krdn|dfS|jd
krdS|jdkrdSdS)z�
        Find Microsoft .NET Framework versions.

        Parameters
        ----------
        bits: int
            Platform number of bits: 32 or 64.

        Return
        ------
        tuple of str
            versions
        �frameworkver�FrameworkDirr�rr�zv4.0r�Nr��v4z
v4.0.30319�v3.5r�)r1�
v2.0.50727g @)zv3.0r2r)r�r�r[�getattrr�r�r&)r(�bits�reg_ver�dot_net_dirr�s     rr'z!SystemInfo._find_dot_net_versionsHs����'�.�.����-B�D�-B�-B�C�C���d�$9�4�$9�$9�:�:���H��0�0��c�B�B�H�b���;�$�����;��
�[�D�
 �
 �#&�9�9�;�;�r��r�?�d�#:�#:�<�<��V�K�K�
�[�C�
�
�'�'�
�[�C�
�
�'�'��rrrUr	�prefixc������fd�ttj�����D��}t|d��S)a-
        Return name of the last dir in path or '' if no dir found.

        Parameters
        ----------
        path: StrPath
            Use dirs in this path
        prefix: str
            Use only dirs starting by this prefix

        Return
        ------
        str
            name
        c3��K�|]X}tj�tj��|�����?|�����T|V��YdSrM)rTrUr�rV�
startswith)�.0�dir_namerUr7s  ��r�	<genexpr>z0SystemInfo._use_last_dir_name.<locals>.<genexpr>wss�����
�
���w�}�}�R�W�\�\�$��9�9�:�:�
��#�#�F�+�+�	
��
�
�
�
�
�
rr)�reversedrTr��next)rUr7�
matching_dirss`` rr�zSystemInfo._use_last_dir_namefsU����"
�
�
�
�
�$�R�Z��%5�%5�6�6�
�
�
�
��M�2�&�&�&rrM)r�rJr�r�r!r")r!r�)r!r�rD)r!r��r!rw)r!r#)r)rUr	r7r r!r )#rrrrFrrGr�r�r�r)r�r�r��staticmethodr�rHr�r�r�r�r�r�r�rr	rrrrrr"r(r,r'r�rrrr�r�fs������	�	��W�[��2�
&�
&�F��7�;�~�r�2�2�L�!�g�k�"5�|�D�D�O�CG�	S�	S�	S�	S�	S����(����>(�(�(�(�T�7�7��\�7� �L�L�L��X�L�"�����X��"���<O�O�O�,�����X��*�	P�	P�	P��X�	P��(�(�(��X�(�T�"�"�"��X�"�H�
8�
8�
8��X�
8������X��(�
�
�
��X�
��
�
�
��X�
� �����X��"�
H�
H�
H��X�
H��
H�
H�
H��X�
H��	/�	/�	/��X�	/��	/�	/�	/��X�	/�����<�'�'�'�'��\�'�'�'rr�c�B�eZdZUded<ded<ded<ded<ded<dS)	�_EnvironmentDictr �includer��libpathrUzNotRequired[str | None]�py_vcruntime_redistN)rrr�__annotations__rrrrDrD�sB��������L�L�L��H�H�H��L�L�L�
�I�I�I�0�0�0�0�0�0rrDc�L�eZdZdZd)d*d�Zed���Zed���Zed	���Zed
���Z	ed���Z
ed���Zed
���Zed���Z
ed���Zed���Zed���Zd�Zed+d���Zed���Zed���Zed���Zed���Zed���Zed���Zed���Zed,d���Zed,d���Zed+d���Zed ���Zed-d"���Zd.d/d'�Zd(�Z dS)0�EnvironmentInfoaY
    Return environment variables for specified Microsoft Visual C++ version
    and platform : Lib, Include, Path and libpath.

    This function is compatible with Microsoft Visual C++ 9.0 to 14.X.

    Script created by analysing Microsoft environment configuration files like
    "vcvars[...].bat", "SetEnv.Cmd", "vcbuildtools.bat", ...

    Parameters
    ----------
    arch: str
        Target architecture.
    vc_ver: float
        Required Microsoft Visual C++ version. If not set, autodetect the last
        version.
    vc_min_ver: float
        Minimum Microsoft Visual C++ version.
    Nrr!r"c���t|��|_t|j��|_t	|j|��|_|j|kr!d}tj�	|���dS)Nz.No suitable Microsoft Visual C++ version found)
rrNrJr�r��sir�r�r�r�)r(rr��
vc_min_ver�errs     rr)zEnvironmentInfo.__init__�sf���t�$�$����t�w�'�'����T�W�f�-�-����;��#�#�B�C��"�9�9�#�>�>�>�$�#rc��|jjS)zk
        Microsoft Visual Studio.

        Return
        ------
        float
            version
        )rLr�r-s rr�zEnvironmentInfo.vs_ver�����w�~�rc��|jjS)zp
        Microsoft Visual C++ version.

        Return
        ------
        float
            version
        )rLr�r-s rr�zEnvironmentInfo.vc_ver�rPrc���ddg}�jdkr1�j�dd���}|dgz
}|dgz
}|d|��gz
}�fd�|D��S)	zu
        Microsoft Visual Studio Tools.

        Return
        ------
        list of str
            paths
        zCommon7\IDEz
Common7\Toolsr�T�r<r$z1Common7\IDE\CommonExtensions\Microsoft\TestWindowzTeam Tools\Performance Toolsc�d��g|],}tj��jj|����-Sr�rTrUrVrLr��r;rUr(s  �r�
<listcomp>z+EnvironmentInfo.VSTools.<locals>.<listcomp>��.���K�K�K�T�����T�W�1�4�8�8�K�K�Kr)r�rNr=)r(�paths�arch_subdirs`  r�VSToolszEnvironmentInfo.VSTools�s���� �!1�2���;�$����'�-�-�d��-�E�E�K��J�K�K�E��5�6�6�E��C�k�C�C�D�D�E�K�K�K�K�U�K�K�K�Krc��tj�|jjd��tj�|jjd��gS)z�
        Microsoft Visual C++ & Microsoft Foundation Class Includes.

        Return
        ------
        list of str
            paths
        �IncludezATLMFC\Include�rTrUrVrLr�r-s r�
VCIncludeszEnvironmentInfo.VCIncludes�s?��
�G�L�L���-�y�9�9��G�L�L���-�/@�A�A�
�	
rc�����jdkr�j�d���}n�j�d���}d|��d|��g}�jdkr	|d|��gz
}�fd	�|D��S)
z�
        Microsoft Visual C++ & Microsoft Foundation Class Libraries.

        Return
        ------
        list of str
            paths
        �.@T�r$�r<�Libz
ATLMFC\Libr�z	Lib\storec�d��g|],}tj��jj|����-Srr^rVs  �rrWz/EnvironmentInfo.VCLibraries.<locals>.<listcomp>�rXr)r�rNr?)r(rZrYs`  r�VCLibrarieszEnvironmentInfo.VCLibraries�s�����;�$����'�,�,��,�6�6�K�K��'�,�,�T�,�:�:�K�$�{�$�$�&A�K�&A�&A�B���;�$����0�;�0�0�1�1�E�K�K�K�K�U�K�K�K�Krc�r�|jdkrgStj�|jjd��gS)z�
        Microsoft Visual C++ store references Libraries.

        Return
        ------
        list of str
            paths
        r�zLib\store\references)r�rTrUrVrLr�r-s r�VCStoreRefszEnvironmentInfo.VCStoreRefs�s5���;�����I�����T�W�1�3J�K�K�L�Lrc��|j}tj�|jd��g}|jdkrdnd}|j�|��}|r,|tj�|jd|����gz
}|jdkrId|j�d�����}|tj�|j|��gz
}�n/|jdkr�|jj	�
d	d
�����}tj�dd|�d
���}|tj�|j||j�d���z��gz
}|jj	|jj
krE|tj�|j||j�d���z��gz
}n)|tj�|jd��gz
}|S)a�
        Microsoft Visual C++ Tools.

        Return
        ------
        list of str
            paths

        When host CPU is ARM, the tools should be found for ARM.

        >>> getfixture('windows_only')
        >>> mp = getfixture('monkeypatch')
        >>> mp.setattr(PlatformInfo, 'current_cpu', 'arm64')
        >>> ei = EnvironmentInfo(arch='irrelevant')
        >>> paths = ei.VCTools
        >>> any('HostARM64' in path for path in paths)
        True
        �
VCPackagesr�TF�Binr�rcrar%r$�bin�Hostz%srb)rLrTrUrVr�r�rNrCr=r6r'�upperr?r.)r(rL�toolsrArZrU�host_id�host_dirs        r�VCToolszEnvironmentInfo.VCToolss���(�W������b�o�|�<�<�=���;�$�.�.�4�4�E���g�'�'��1�1���	J��b�g�l�l�2�?�4G�+�4G�4G�H�H�I�I�E��;�$���<���,�,�T�,�:�:�<�<�D��b�g�l�l�2�?�D�9�9�:�:�E�E�
�[�D�
 �
 ��g�)�1�1�'�5�A�A�G�G�I�I�G��w�|�|�E�+=�'�+=�+=�+=�>�>�H������R�_�h���9K�9K�PT�9K�9U�9U�.U�V�V��
�E��w�"�d�g�&8�8�8���G�L�L����D�G�4G�4G�D�4G�4Q�4Q�)Q�������
�b�g�l�l�2�?�E�:�:�;�;�E��rc��|jdkrJ|j�dd���}tj�|jjd|����gS|j�d���}tj�|jjd��}|j}tj�||�d|����gS)zw
        Microsoft Windows SDK Libraries.

        Return
        ------
        list of str
            paths
        r�TrSrdrbr��um)	r�rNr?rTrUrVrLr��_sdk_subdir)r(rZr��libvers    r�OSLibrarieszEnvironmentInfo.OSLibraries:s����;�$����'�,�,�T�t�,�D�D�K��G�L�L���!6�8K�k�8K�8K�L�L�M�M��'�,�,��,�6�6�K��'�,�,�t�w�4�e�<�<�C��%�F��G�L�L���&@�&@�;�&@�&@�A�A�B�Brc��tj�|jjd��}|jdkr"|tj�|d��gS|jdkr|j}nd}tj�||�d���tj�||�d���tj�||�d���gS)	zu
        Microsoft Windows SDK Include.

        Return
        ------
        list of str
            paths
        rEr��glr�r�sharedrt�winrt)rTrUrVrLr�r�ru)r(rE�sdkvers   r�
OSIncludeszEnvironmentInfo.OSIncludesNs����'�,�,�t�w�4�i�@�@���;�$����R�W�\�\�'�4�8�8�9�9��{�d�"�"��)���������W��&7�&7�&7�8�8�����W��m�m�m�4�4�����W��&6�&6�&6�7�7��
rc��tj�|jjd��}g}|jdkr
||jz
}|jdkr$|tj�|d��gz
}|jdkr�||tj�|jjd��tj�|dd��tj�|d	d��tj�|d
d��tj�|jjdd|jd
�ddd��gz
}|S)z}
        Microsoft Windows SDK Libraries Paths.

        Return
        ------
        list of str
            paths
        �
Referencesr�r�zCommonConfiguration\Neutralr��
UnionMetadataz'Windows.Foundation.UniversalApiContractz1.0.0.0z%Windows.Foundation.FoundationContractz,Windows.Networking.Connectivity.WwanContract�
ExtensionSDKszMicrosoft.VCLibsr��CommonConfiguration�neutral)rTrUrVrLr�r�rw)r(�refrFs   r�	OSLibpathzEnvironmentInfo.OSLibpathhs$���g�l�l�4�7�0�,�?�?�����;�#����t�'�'�G��;�$��������S�*H�I�I�J�J�G��;�$���������T�W�2�O�D�D�����S�"K�Y�W�W�����S�"I�9�U�U������G���������G�)�#�&��{�)�)� �)�����
�G�$�rc�D�t|�����S)zs
        Microsoft Windows SDK Tools.

        Return
        ------
        list of str
            paths
        )�list�
_sdk_toolsr-s r�SdkToolszEnvironmentInfo.SdkTools�s���D�O�O�%�%�&�&�&rc#�K�|jdkr;|jdkrdnd}tj�|jj|��V�|j���sL|j�d���}d|��}tj�|jj|��V�|jdvrj|j�	��rd}n|j�dd�	��}d
|��}tj�|jj|��V�n�|jdkrwtj�|jjd��}|j�d���}|jj
}tj�||�|����V�|jjr|jjV�dSdS)z�
        Microsoft Windows SDK Tools paths generator.

        Return
        ------
        generator of str
            paths
        rar�rkzBin\x86Trb)r�r�rrSzBin\NETFX 4.0 ToolsN)r�rTrUrVrLr�rNr7r=r3r�r)r(�bin_dirrZrUr|s     rr�zEnvironmentInfo._sdk_tools�s������;����#�{�d�2�2�e�e�
�G��'�,�,�t�w�4�g�>�>�>�>�>��w�%�%�'�'�	<��'�-�-�$�-�7�7�K�&��&�&�D��'�,�,�t�w�4�d�;�;�;�;�;��;�,�&�&��w�$�$�&�&�
J� ���"�g�1�1�$�D�1�I�I��7�+�7�7�D��'�,�,�t�w�4�d�;�;�;�;�;�;�
�[�D�
 �
 ��7�<�<��� 5�u�=�=�D��'�-�-�$�-�7�7�K��W�2�F��'�,�,�t��%=��%=�%=�>�>�>�>�>��7�+�	3��'�2�2�2�2�2�2�	3�	3rr c�,�|jj}|r|�d�ndS)zu
        Microsoft Windows SDK version subdir.

        Return
        ------
        str
            subdir
        r:r)rLr��r(�ucrtvers  rruzEnvironmentInfo._sdk_subdir�s#���'�/��#*�2�7������2rc�r�|jdkrgStj�|jjd��gS)zs
        Microsoft Windows SDK Setup.

        Return
        ------
        list of str
            paths
        r��Setup)r�rTrUrVrLr�r-s r�SdkSetupzEnvironmentInfo.SdkSetup�s4���;�����I�����T�W�2�G�<�<�=�=rc�t��|j}|j�|jdkr-d}|���o|���}n>|���p|���}|jdkp
|jdk}g}|r|�fd��jD��z
}|r|�fd��jD��z
}|S)zv
        Microsoft .NET Framework Tools.

        Return
        ------
        list of str
            paths
        r�Tr%c�Z��g|]'}tj��j|����(Sr)rTrUrVr�r;r�rLs  �rrWz+EnvironmentInfo.FxTools.<locals>.<listcomp>��9������9<�����R�.��4�4���rc�Z��g|]'}tj��j|����(Sr)rTrUrVr"r�s  �rrWz+EnvironmentInfo.FxTools.<locals>.<listcomp>�r�r)	rNrLr�r3r7r6r.r(r,)r(rN�	include32�	include64rorLs     @r�FxToolszEnvironmentInfo.FxTools�s
����W��
�W���;�$����I��,�,�.�.�.�J�r�7H�7H�7J�7J�3J�I�I��(�(�*�*�A�b�.?�.?�.A�.A�I���'�1�M�R�]�g�5M�I����	������@B�@U����
�E��	������@B�@U����
�E��rc���|jdks|jjsgS|j�d���}t
j�|jjd|����gS)z~
        Microsoft .Net Framework SDK Libraries.

        Return
        ------
        list of str
            paths
        r�Trbzlib\um)r�rLrrNr?rTrUrV)r(rZs  r�NetFxSDKLibrariesz!EnvironmentInfo.NetFxSDKLibraries�s_���;����T�W�%8���I��g�(�(�T�(�2�2������T�W�0�2I�K�2I�2I�J�J�K�Krc��|jdks|jjsgStj�|jjd��gS)z}
        Microsoft .Net Framework SDK Includes.

        Return
        ------
        list of str
            paths
        r�z
include\um)r�rLrrTrUrVr-s r�NetFxSDKIncludesz EnvironmentInfo.NetFxSDKIncludes
s>���;����T�W�%8���I�����T�W�0�-�@�@�A�Arc�X�tj�|jjd��gS)z�
        Microsoft Visual Studio Team System Database.

        Return
        ------
        list of str
            paths
        z
VSTSDB\DeployrUr-s r�VsTDbzEnvironmentInfo.VsTDbs#������T�W�1�3C�D�D�E�Erc�`�|jdkrgS|jdkr(|jj}|j�d���}n|jj}d}d|jd�d|��}tj�||��g}|jdkr%|tj�||d	��gz
}|S)
zn
        Microsoft Build Engine.

        Return
        ------
        list of str
            paths
        r�raTrcrzMSBuild\r�z\bin�Roslyn)	r�rLr�rNr=r�rTrUrV)r(�	base_pathrZrU�builds     r�MSBuildzEnvironmentInfo.MSBuild%s����;�����I�
�[�4�
�
���/�I��'�-�-�d�-�;�;�K�K���,�I��K�>�4�;�>�>�>��>�>������i��.�.�/���;�$����b�g�l�l�9�d�H�=�=�>�>�E��rc�r�|jdkrgStj�|jjd��gS)zt
        Microsoft HTML Help Workshop.

        Return
        ------
        list of str
            paths
        r�zHTML Help Workshop)r�rTrUrVrLr�r-s r�HTMLHelpWorkshopz EnvironmentInfo.HTMLHelpWorkshopAs5���;�����I�����T�W�4�6J�K�K�L�Lr�	list[str]c�T�|jdkrgS|j�d���}	tj�|jjd��}n(#t$r}tj
|d���d}~wwxYw|j}tj�||�d|����gS)z�
        Microsoft Universal C Runtime SDK Libraries.

        Return
        ------
        list of str
            paths
        r�Trbr�rN�ucrt)r�rNr?rTrUrVrLrrr
r�_ucrt_subdir)r(rZr�rr�s     r�
UCRTLibrarieszEnvironmentInfo.UCRTLibrariesPs����;�����I��g�(�(�T�(�2�2��	��'�,�,�t�w�9�5�A�A�C�C���	�	�	��N�2�?�@�@�@������	�����#������S�W�"?�"?�+�"?�"?�@�@�A�As�*A�
A:�A5�5A:c��|jdkrgS	tj�|jjd��}n(#t$r}tj|d���d}~wwxYwtj�||j	�d���gS)z�
        Microsoft Universal C Runtime SDK Include.

        Return
        ------
        list of str
            paths
        r�rErNr�)
r�rTrUrVrLrrr
rr�)r(rErs   r�UCRTIncludeszEnvironmentInfo.UCRTIncludesfs����;�����I�	��g�l�l�4�7�#=�y�I�I�G�G���	�	�	��N�2�?�@�@�@������	��������W��):�&@�&@�&@�A�A�B�Bs�*:�
A�A�Ac�,�|jj}|r|�d�ndS)z�
        Microsoft Universal C Runtime SDK version subdir.

        Return
        ------
        str
            subdir
        r:r)rLrr�s  rr�zEnvironmentInfo._ucrt_subdirzs#���'�4��#*�2�7������2rc�J�d|jcxkrdkrnngS|jjgS)zk
        Microsoft Visual F#.

        Return
        ------
        list of str
            paths
        r�r�)r�rLr	r-s r�FSharpzEnvironmentInfo.FSharp�s;���$�+�$�$�$�$��$�$�$�$�$��I���(�)�)rrwc�*���d|j�d��|j�d����d���g}|jj}tj�|�	dd����}tj�
|��r]tj�|t
j|��d��}||tj�|d	��gz
}|tj�|d
��gz
}d|jdz�d
�dt|j��dz�d
�f}��fd�tj||��D��}t#t%tjj|��d��S)z{
        Microsoft Visual C++ runtime redistributable dll.

        Returns the first suitable path found or None.
        �	vcruntimez0.dllTrbr:z\Toolsz\Redistr��onecore�redistzMicrosoft.VC�
z.CRTc3�b�K�|])\}}tj�|�|���V��*dSrM)rTrUrV)r;r7�crt_dirrZr�s   ��rr=z2EnvironmentInfo.VCRuntimeRedist.<locals>.<genexpr>�sO�����
�
�!���
�G�L�L���g�y�A�A�
�
�
�
�
�
rN)r�rNr?�striprLr�rTrU�dirnamer'r�rVr��intr�r�r�r?�filter�isfile)r(�prefixes�
tools_path�redist_path�crt_dirs�candidate_pathsrZr�s      @@r�VCRuntimeRedistzEnvironmentInfo.VCRuntimeRedist�s~����3���2�2�2�	��g�(�(�T�(�2�2�8�8��>�>�����W�)�
��g�o�o�j�&8�&8��J�&O�&O�P�P��
�7�=�=��%�%�	L��'�,�,�{�B�J�{�4K�4K�B�4O�P�P�K���b�g�l�l�;�	�&J�&J�K�K�H��R�W�\�\�*�h�7�7�8�8��
2�4�;��+�1�1�1�6�3�t�{�+�+�b�0�6�6�6�
��
�
�
�
�
�%.�%6�x��%J�%J�
�
�
���F�2�7�>�?�;�;�T�B�B�BrT�existsr/rDc��t|�d|j|j|j|jg|��|�d|j|j|j|j	|j
g|��|�d|j|j|j|jg|��|�d|j
|j|j|j|j|j|j|j|jg	|�����}|jdkr|jr
|j|d<|S)z�
        Return environment dict.

        Parameters
        ----------
        exists: bool
            It True, only return existing paths.

        Return
        ------
        dict
            environment
        rEr�rFrU)rEr�rFrU�rG)rD�_build_pathsr_r}r�r�rfrwr�r�r�rhr�rrr[r�r�r�r�r�r�r�r�)r(r��envs   r�
return_envzEnvironmentInfo.return_env�s9����%�%���O��O��%��)�	��	�	��!�!���$��$��L��&��*���
�
��%�%���!�4�<��1A�4�>�R����
�"�"���L��L��J��M��M��L��L��)��K�
����7*
�*
�*
��V�;�"����!5��)-�)=�C�%�&��
rc��tj�|��}tj|d���tj��}tj||��}|r,tttj
j|����n|}|s6|����d�}tj�|���t!|��}	tj�|	��S)aC
        Given an environment variable name and specified paths,
        return a pathsep-separated string of paths containing
        unique, extant, directories from those paths and from
        the environment variable. Raise an error if no paths
        are resolved.

        Parameters
        ----------
        name: str
            Environment variable name
        spec_path_lists: list of str
            Paths
        exists: bool
            It True, only return existing paths.

        Return
        ------
        str
            Pathsep-separated paths
        rz environment variable is empty)r��chain�
from_iterablerrGr�rT�pathsepr�r�rUr�rnr�r�r�rrV)
r(rv�spec_path_listsr��
spec_paths�	env_pathsrY�extant_pathsr��unique_pathss
          rr�zEnvironmentInfo._build_paths�s���.�_�2�2�?�C�C�
��K��b�)�)�/�/��
�;�;�	���
�I�6�6��=C�N�t�F�2�7�=�%�8�8�9�9�9����	?��Z�Z�\�\�A�A�A�C��"�9�9�#�>�>�>�&�|�4�4���z���|�,�,�,r)Nr)r!r"rD)r!r�rA)T)r�r/r!rD)!rrrrFr)rHr�r�r[r_rfrhrrrwr}r�r�r�rur�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrJrJ�s8��������.?�?�?�?�?��	�	��X�	��	�	��X�	��L�L��X�L�&�
�
��X�
��L�L��X�L�(�M�M��X�M��0�0��X�0�d�C�C��X�C�&����X��2�%�%��X�%�N�	'�	'��X�	'�!3�!3�!3�F�
3�
3�
3��X�
3��>�>��X�>�����X��<�
L�
L��X�
L��B�B��X�B��	F�	F��X�	F�����X��6�M�M��X�M��B�B�B��X�B�*�C�C�C��X�C�&�
3�
3�
3��X�
3��*�*��X�*�� C� C� C��X� C�D;�;�;�;�;�z-�-�-�-�-rrJ)"rF�
__future__rr�r�r�rT�os.path�platform�typingrrr�more_itertoolsr�_pathr	�compatr
�distutils.errorsr��typing_extensionsrr�systemrr�dictrHrrJr�rDrJrrr�<module>r�sZ�����#�"�"�"�"�"�������������	�	�	�	���������5�5�5�5�5�5�5�5�5�5�*�*�*�*�*�*������������������=�<�<�<�<�<�<�<�<��%����*�*�i�7�7��M�M�M��������!�!�!�!�!�!�!�!�#�d�f�f�G�$�$�$�$�v
�v
�v
�v
�v
�v
�v
�v
�r~�~�~�~�~�~�~�~�BW'�W'�W'�W'�W'�W'�W'�W'�t1�1�1�1�1�y�1�1�1�M
-�M
-�M
-�M
-�M
-�M
-�M
-�M
-�M
-�M
-r