§
    �Štjƒy  ã                   ó
  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
ZmZ 	 d dlZdZn# eeeef$ r dZY nw xY w edg d¢¦  «        Zg d¢Zg d	¢Zg d
¢Zg d¢Zg d¢Zd„ Zd„ Zd„ Zd„ Zd3d„Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d „ Z-d!„ Z.d"„ Z/d#„ Z0d$„ Z1d%„ Z2d&„ Z3d'„ Z4d3d(„Z5d)ee6e6f         fd*„Z7d+„ Z8d,„ Z9d-„ Z:d. ;                    ¦   «         Z<d/„ Z=d0„ Z>d4d1„Z?e@d2k    r e?¦   «          dS dS )5é    N)Ú
namedtuple)ÚcastÚDictTFÚ	SystemEnv)Útorch_versionÚis_debug_buildÚcuda_compiled_versionÚgcc_versionÚclang_versionÚcmake_versionÚosÚlibc_versionÚpython_versionÚpython_platformÚis_cuda_availableÚcuda_runtime_versionÚcuda_module_loadingÚnvidia_driver_versionÚnvidia_gpu_modelsÚcudnn_versionÚis_xpu_availableÚpip_versionÚpip_packagesÚconda_packagesÚhip_compiled_versionÚhip_runtime_versionÚmiopen_runtime_versionÚcaching_allocator_configÚis_xnnpack_availableÚcpu_info)ÚtorchÚnumpyÚtritonÚoptree)zcuda-cudartz
cuda-cuptizcuda-librarieszcuda-openclz
cuda-nvrtczcuda-runtimeÚcublasÚcudnnÚcufftÚcurandÚcusolverÚcusparseÚncclÚ	nvjitlinkÚnvtx)zdpcpp-cpp-rtzintel-cmplr-lib-rtzintel-cmplr-lib-urzintel-cmplr-lic-rtzintel-opencl-rtzintel-sycl-rtÚmklzonemkl-sycl-blaszonemkl-sycl-dftzonemkl-sycl-lapackzonemkl-sycl-rngzonemkl-sycl-sparsezintel-openmpÚtbbzimpi-rtz
impi-develÚonecclzoneccl-develz	intel-ptiÚumfÚtcmlib)ÚcudatoolkitÚsoumithr.   Úmagma)ÚmypyÚflake8Úonnxc                 ó¸  — t          | ¦  «        t          u }t          j        | t          j        t          j        |¬¦  «        }|                     ¦   «         \  }}|j        }t          ¦   «         dk    rd}nt          j	        ¦   «         }| 
                    |¦  «        }| 
                    |¦  «        }||                     ¦   «         |                     ¦   «         fS )z%Return (return-code, stdout, stderr).)ÚstdoutÚstderrÚshellÚwin32Úoem)ÚtypeÚstrÚ
subprocessÚPopenÚPIPEÚcommunicateÚ
returncodeÚget_platformÚlocaleÚgetpreferredencodingÚdecodeÚstrip)	Úcommandr<   ÚpÚ
raw_outputÚraw_errÚrcÚencÚoutputÚerrs	            úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/utils/collect_env.pyÚrunrT   x   s¶   € å�‰MŒM�SÐ €EÝÔØ�
œµ
´Àuð	ñ 	ô 	€Að Ÿ-š-™/œ/Ñ€J�Ø	
Œ€BÝ�~„~˜Ò Ð ØˆˆåÔ)Ñ+Ô+ˆØ×Ò˜sÑ#Ô#€FØ
�.Š.˜Ñ
Ô
€CØˆv�|Š|‰~Œ~˜sŸyšy™{œ{Ð*Ð*ó    c                 ó4   —  | |¦  «        \  }}}|dk    rdS |S )zIRun command using run_lambda; reads and returns entire output if rc is 0.r   N© ©Ú
run_lambdarK   rO   ÚoutÚ_s        rS   Úrun_and_read_allr\   ‰   s*   € à�˜GÑ$Ô$�J€BˆˆQØ	ˆQ‚w€wØˆtØ€JrU   c                 óŒ   —  | |¦  «        \  }}}|dk    rdS t          j        ||¦  «        }|€dS |                     d¦  «        S )zIRun command using run_lambda, returns the first regex match if it exists.r   Né   )ÚreÚsearchÚgroup)rY   rK   ÚregexrO   rZ   r[   Úmatchs          rS   Úrun_and_parse_first_matchrd   ‘   sP   € à�˜GÑ$Ô$�J€BˆˆQØ	ˆQ‚w€wØˆtÝŒI�e˜SÑ!Ô!€EØ€}ØˆtØ�;Š;�q‰>Œ>ÐrU   c                 óf   —  | |¦  «        \  }}}|dk    rdS |                      d¦  «        d         S )zKRun command using run_lambda and returns first line if output is not empty.r   Nú
)ÚsplitrX   s        rS   Úrun_and_return_first_linerh   œ   s:   € à�˜GÑ$Ô$�J€BˆˆQØ	ˆQ‚w€wØˆtØ�9Š9�T‰?Œ?˜1ÔÐrU   c                 ó:  ‡— ‰€t           t          z   t          z   t          z   Št          j                             dd¦  «        }t          | d                     |¦  «        ¦  «        }|€|S d 	                    ˆfd„| 
                    ¦   «         D ¦   «         ¦  «        S )NÚ	CONDA_EXEÚcondaz{} listrf   c              3   ó~   •‡K  — | ]6Š‰                      d ¦  «        °t          ˆfd„‰D ¦   «         ¦  «        ¯2‰V — Œ7dS )ú#c              3   ó    •K  — | ]}|‰v V — Œ	d S ©NrW   ©Ú.0ÚnameÚlines     €rS   ú	<genexpr>z/get_conda_packages.<locals>.<genexpr>.<genexpr>¯   s'   øè è € Ð+NÐ+N¸T¨D°D¨LÐ+NÐ+NÐ+NÐ+NÐ+NÐ+NrU   N)Ú
startswithÚany©rq   rs   Úpatternss    @€rS   rt   z%get_conda_packages.<locals>.<genexpr>¬   sq   øøè è € ð ð àØ�Š˜sÑ#Ô#ðõ ),Ð+NÐ+NÐ+NÐ+NÀXÐ+NÑ+NÔ+NÑ(NÔ(NðØðð ð ð ð ð rU   )ÚCONDA_PATTERNSÚCOMMON_PATTERNSÚNVIDIA_PATTERNSÚONEAPI_PATTERNSr   ÚenvironÚgetr\   ÚformatÚjoinÚ
splitlines)rY   rx   rk   rZ   s    `  rS   Úget_conda_packagesr‚   ¤   sŸ   ø€ ØÐÝ!¥OÑ3µoÑEÍÑWˆÝŒJ�NŠN˜;¨Ñ0Ô0€EÝ
˜: y×'7Ò'7¸Ñ'>Ô'>Ñ
?Ô
?€CØ
€{Øˆ
à�9Š9ð ð ð ð à—N’NÑ$Ô$ðñ ô ñ ô ð rU   c                 ó$   — t          | dd¦  «        S )Nzgcc --versionzgcc (.*)©rd   ©rY   s    rS   Úget_gcc_versionr†   ³   s   € Ý$ Z°À+ÑNÔNÐNrU   c                 ó$   — t          | dd¦  «        S )Nzclang --versionzclang version (.*)r„   r…   s    rS   Úget_clang_versionrˆ   ·   s   € Ý$ØÐ%Ð'<ñô ð rU   c                 ó$   — t          | dd¦  «        S )Nzcmake --versionz
cmake (.*)r„   r…   s    rS   Úget_cmake_versionrŠ   ½   s   € Ý$ ZÐ1BÀMÑRÔRÐRrU   c                 óŠ   — t          ¦   «         dk    rd}t          | |d¦  «        S t          ¦   «         }t          | |d¦  «        S )NÚdarwinzkextstat | grep -i cudazcom[.]nvidia[.]CUDA [(](.*?)[)]zDriver Version: (.*?) )rF   rd   Úget_nvidia_smi)rY   ÚcmdÚsmis      rS   Úget_nvidia_driver_versionr�   Á   sP   € Ý�~„~˜Ò!Ð!Ø'ˆÝ(Ø˜Ð?ñ
ô 
ð 	
õ Ñ
Ô
€CÝ$ Z°Ð6OÑPÔPÐPrU   c                 ó€  — t          ¦   «         dk    s2t          rÔt          t          j        d¦  «        rºt          j        j        �©t          r t          j                             ¦   «         r‚t          j        j        �Mt          j                             d¦  «        }t          |d¦  «        rd 	                    |j
        ¦  «        }nd}nd}t          j                             d ¦  «        |z   S d S t          ¦   «         }t          j        d¦  «        } | |d	z   ¦  «        \  }}}|dk    rd S t          j        |d|¦  «        S )
NrŒ   Úhipr   ÚgcnArchNamez ({})ÚNoGCNArchNameOnOldPyTorchÚ z \(UUID: .+?\)z -L)rF   ÚTORCH_AVAILABLEÚhasattrr!   Úversionr’   ÚcudaÚis_availableÚget_device_propertiesr   r“   Úget_device_namer�   r_   ÚcompileÚsub)rY   ÚpropÚgcnArchr�   Ú
uuid_regexrO   rZ   r[   s           rS   Úget_gpu_infor¢   Ë   s!  € Ý�~„~˜Ò!Ð!Ýð "å•E”M 5Ñ)Ô)ð "õ ŒMÔÐ)åð 		>�uœz×6Ò6Ñ8Ô8ð 		>ÝŒ}Ô Ð,Ý”z×7Ò7¸Ñ:Ô:�Ý˜4 Ñ/Ô/ð :Ø%Ÿnšn¨TÔ-=Ñ>Ô>�G�Gà9�G�Gà�Ý”:×-Ò-¨dÑ3Ô3°gÑ=Ð=ØˆtÝ
Ñ
Ô
€CÝ”Ð-Ñ.Ô.€JØ�˜C %™KÑ(Ô(�J€BˆˆQØ	ˆQ‚w€wØˆtåŒ6�*˜b #Ñ&Ô&Ð&rU   c                 ó$   — t          | dd¦  «        S )Nznvcc --versionzrelease .+ V(.*)r„   r…   s    rS   Úget_running_cuda_versionr¤   å   s   € Ý$ ZÐ1AÐCVÑWÔWÐWrU   c                 ó  — t          ¦   «         dk    rxt          j                             dd¦  «        }t          j                             dd¦  «        }t          j                             |dd¦  «        }d                     ||¦  «        }nt          ¦   «         d	k    rd
}nd} | |¦  «        \  }}}t          |¦  «        dk    s|dk    rg|dk    rat          j                             d¦  «        }|�>t          j                             |¦  «        rt          j         	                    |¦  «        S dS t          ¦   «         }	|                     d¦  «        D ]U}
t          j         	                    |
¦  «        }
t          j                             |
¦  «        r|	                     |
¦  «         ŒV|	sdS t          |	¦  «        }t          |¦  «        dk    r|d         S d                     |¦  «        }d                     |¦  «        S )zHReturn a list of libcudnn.so; it's hard to tell which one is being used.r=   Ú
SYSTEMROOTú
C:\WindowsÚ	CUDA_PATHz%CUDA_PATH%ÚSystem32Úwherez{} /R "{}\bin" cudnn*.dllrŒ   z ls /usr/local/cuda/lib/libcudnn*z7ldconfig -p | grep libcudnn | rev | cut -d" " -f1 | revr   r^   ÚCUDNN_LIBRARYNrf   z!Probably one of the following:
{})rF   r   r}   r~   Úpathr€   r   ÚlenÚisfileÚrealpathÚsetrg   ÚaddÚsorted)rY   Úsystem_rootÚ	cuda_pathÚ	where_cmdÚ	cudnn_cmdrO   rZ   r[   ÚlÚ	files_setÚfnÚfilesÚresults                rS   Úget_cudnn_versionr¼   é   s¶  € å�~„~˜Ò Ð Ý”j—n’n \°=ÑAÔAˆÝ”J—N’N ;°Ñ>Ô>ˆ	Ý”G—L’L ¨j¸'ÑBÔBˆ	Ø0×7Ò7¸	À9ÑMÔMˆ	ˆ	Ý	‰Œ˜8Ò	#Ð	#ð
 7ˆ	ˆ	àMˆ	Ø�˜IÑ&Ô&�J€BˆˆQå
ˆ3�x„x�1‚}€}˜˜qš˜ R¨1¢W WÝŒJ�NŠN˜?Ñ+Ô+ˆØˆ=�RœWŸ^š^¨AÑ.Ô.ˆ=Ý”7×#Ò# AÑ&Ô&Ð&ØˆtÝ‘”€IØ�iŠi˜‰oŒoð ð ˆÝŒW×Ò˜bÑ!Ô!ˆÝŒ7�>Š>˜"ÑÔð 	Ø�MŠM˜"ÑÔÐøØð Øˆtå�9ÑÔ€EÝ
ˆ5�z„z�Q‚€Ø�QŒxˆØ�YŠY�uÑÔ€FØ/×6Ò6°vÑ>Ô>Ð>rU   c                  ó²  — d} t          ¦   «         dk    rÂt          j                             dd¦  «        }t          j                             dd¦  «        }t          j                             |dd| ¦  «        }t          j                             |d	| ¦  «        }||g}|D ]8}t          j                             |¦  «        rd
                     |¦  «        }  nŒ9| S )Nz
nvidia-smir=   r¦   r§   ÚPROGRAMFILESzC:\Program FileszNVIDIA CorporationÚNVSMIr©   z"{}")rF   r   r}   r~   r¬   r€   Úexistsr   )r�   r³   Úprogram_files_rootÚlegacy_pathÚnew_pathÚsmisÚcandidate_smis          rS   r�   r�     sË   € à
€CÝ�~„~˜Ò Ð Ý”j—n’n \°=ÑAÔAˆÝœZŸ^š^¨NÐ<OÑPÔPÐÝ”g—l’lØÐ 4°g¸sñ
ô 
ˆõ ”7—<’< ¨Z¸Ñ=Ô=ˆØ˜+Ð&ˆØ!ð 	ð 	ˆMÝŒw�~Š~˜mÑ,Ô,ð Ø—m’m MÑ2Ô2�Ø�ðð €JrU   c                  óx   — t          ¦   «         dk    rdS dD ]"} t          d| › �¦  «        \  }}}|dk    r| c S Œ#dS )NÚlinuxúN/A©ÚdpkgÚdnfÚyumÚzypperzwhich r   )rF   rT   )Úmgr_namerO   r[   s      rS   Ú_detect_linux_pkg_managerrÏ      s]   € Ý�~„~˜Ò Ð ØˆuØ4ð ð ˆÝÐ* Ð*Ð*Ñ+Ô+‰ˆˆAˆqØ�Š7ˆ7ØˆOˆOˆOð àˆ5rU   c                 óÐ  — t          ¦   «         }|dk    rdS dddœdddœdddœdddœd	œ}t          t          t          ||         d
         ¦  «        ¦  «        }t          ||         d         ¦  «        }|                     |¦  «        }t          | |¦  «        }|�|dk    rdS t          j        dd|¦  «                             d¦  «        }t          |¦  «        |k    rdS ||         S )NrÈ   é   zdpkg -l | grep {})Úfield_indexrK   r^   zdnf list | grep {}zyum list | grep {}zzypper info {} | grep VersionrÉ   rÒ   rK   r•   z +ú )
rÏ   ÚintÚ_castr@   r   r\   r_   rž   rg   r­   )rY   Úpkg_nameÚpkg_mgrÚgrep_versionrÒ   rŽ   ÚretÚlsts           rS   Úget_linux_pkg_versionrÛ   *  s  € Ý'Ñ)Ô)€GØ�%ÒÐØˆuð Ø*ð
ð 
ð
 Ø+ð
ð 
ð
 Ø+ð
ð 
ð
 Ø6ð
ð 
ðð €Lõ& �5¥ l°7Ô&;¸MÔ&JÑKÔKÑLÔL€KÝ�< Ô(¨Ô3Ñ4Ô4€CØ
�*Š*�XÑ
Ô
€CÝ
˜: sÑ
+Ô
+€CØ
€{�c˜R’i�iØˆuÝ
Œ&��s˜CÑ
 Ô
 ×
&Ò
& sÑ
+Ô
+€CÝ
ˆ3�x„x�;ÒÐØˆuØˆ{ÔÐrU   c           
      óü  — g }t          ¦   «         }|dk    reh d£ddhddhddhdœ                     t          ¦   «         i ¦  «        }|D ]3}t          | |¦  «        }|dk    r|                     d|› d|› �¦  «         Œ4|d	v rét          | d
¦  «        }	 t          j        |¦  «        }t          |¦  «        t          u r7|D ]3}|                     d|d         › d|d         › d|d         › d�¦  «         Œ4n(|                     d|d         › d|d         › d�¦  «         nN# t          $ rA}	|                     |¦  «         |                     t          |	¦  «        ¦  «         Y d }	~	nd }	~	ww xY wd                     |¦  «        S )NrÇ   >   úintel-opencl-icdÚlibze1ú
level-zerozintel-openclrß   rÉ   rÈ   ú* z:	©r=   Úcygwinzåpowershell.exe "gwmi -Class Win32_PnpSignedDriver | where{$_.DeviceClass -eq \"DISPLAY\"            -and $_.Manufacturer -match \"Intel\"} | Select-Object -Property DeviceName,DriverVersion,DriverDate            | ConvertTo-Json"Ú
DeviceNameú: ÚDriverVersionú (Ú
DriverDateú)rf   )rF   r~   rÏ   rÛ   Úappendr\   ÚjsonÚloadsr?   ÚlistÚ
ValueErrorr@   r€   )
rY   rÚ   ÚplatformÚpkgsÚpkgÚverÚtxtÚobjÚoÚes
             rS   Úget_intel_gpu_driver_versionrö   N  sÿ  € Ø
€CÝ‰~Œ~€HØ�7ÒÐðð ð ð Øðð
 Øðð
 Øðð
ð 
÷$ Š#Õ'Ñ)Ô)¨2Ñ
.Ô
.ð% 	ð& ð 	/ð 	/ˆCÝ'¨
°CÑ8Ô8ˆCØ�eŠ|ˆ|Ø—
’
Ð- Ð-Ð-¨Ð-Ð-Ñ.Ô.Ð.øØÐ&Ð&Ð&ÝØðñ
ô 
ˆð	Ý”*˜S‘/”/ˆCÝ�C‰yŒy�DÐ Ð Øð ð �AØ—J’JØX˜Q˜|œ_ÐXÐX°°/Ô0BÐXÐXÀaÈÄoÐXÐXÐXñô ð ð ðð
 —
’
ÐL  OÔ 4ÐLÐL¸¸LÔ8IÐLÐLÐLÑMÔMÐMøøÝð 	ð 	ð 	Ø�JŠJ�s‰OŒOˆOØ�JŠJ•s˜1‘v”vÑÔÐÐÐÐÐÐøøøøð	øøøð �9Š9�S‰>Œ>Ðs   ÂB	D Ä
E&Ä%7E!Å!E&c                 ó$  — g }t          ¦   «         }|dk    rôt          | d¦  «        }|rÍ	 t          j        |¦  «        }|                     dg ¦  «        }t          |t          ¦  «        r"|r |                     d„ |D ¦   «         ¦  «         n|                     d¦  «         nj# t          t          f$ rA}|                     |¦  «         |                     t          |¦  «        ¦  «         Y d }~nd }~ww xY w|                     d¦  «         |dv rît          | d¦  «        }|rÇ	 t          j        |¦  «        }t          |t          ¦  «        r"|r |                     d„ |D ¦   «         ¦  «         n,|                     d	|                     d
d¦  «        › �¦  «         nc# t          $ rA}|                     |¦  «         |                     t          |¦  «        ¦  «         Y d }~nd }~ww xY w|                     d¦  «         d                     |¦  «        S )NrÇ   zxpu-smi discovery -jÚdevice_listc              3   ó,   K  — | ]}d |d         › �V — ŒdS )rà   Údevice_nameNrW   ©rq   Údevices     rS   rt   z(get_intel_gpu_onboard.<locals>.<genexpr>‰  s0   è è € ÐVÐVÀÐ; F¨=Ô$9Ð;Ð;ÐVÐVÐVÐVÐVÐVrU   rÈ   rá   zÁpowershell.exe "gwmi -Class Win32_PnpSignedDriver | where{$_.DeviceClass -eq \"DISPLAY\"            -and $_.Manufacturer -match \"Intel\"} | Select-Object -Property DeviceName | ConvertTo-Json"c              3   ó,   K  — | ]}d |d         › �V — ŒdS )rà   rã   NrW   rû   s     rS   rt   z(get_intel_gpu_onboard.<locals>.<genexpr>›  s0   è è € ÐMÐM¸vÐ: F¨<Ô$8Ð:Ð:ÐMÐMÐMÐMÐMÐMrU   rà   rã   rf   )rF   r\   rê   rë   r~   Ú
isinstancerì   Úextendré   rí   Ú	TypeErrorr@   r€   )rY   rÚ   rî   rò   ró   rø   rõ   s          rS   Úget_intel_gpu_onboardr    s8  € Ø€CÝ‰~Œ~€HØ�7ÒÐÝ˜zÐ+AÑBÔBˆØð 	ð	#Ý”j ‘o”o�Ø!Ÿgšg m°RÑ8Ô8�Ý˜k­4Ñ0Ô0ð &°[ð &Ø—J’JÐVÐVÈ+ÐVÑVÔVÑVÔVÐVÐVà—J’J˜uÑ%Ô%Ð%øøÝ¥	Ð*ð #ð #ð #Ø—
’
˜3‘”�Ø—
’
�3˜q™6œ6Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð#øøøð �JŠJ�uÑÔÐØÐ&Ð&Ð&ÝØðmñ
ô 
ˆð
 ð 	ð#Ý”j ‘o”o�Ý˜c¥4Ñ(Ô(ð D¨Sð DØ—J’JÐMÐMÈÐMÑMÔMÑMÔMÐMÐMà—J’JÐB C§G¢G¨L¸%Ñ$@Ô$@ÐBÐBÑCÔCÐCøøÝð #ð #ð #Ø—
’
˜3‘”�Ø—
’
�3˜q™6œ6Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð#øøøð �JŠJ�uÑÔÐØ�9Š9�S‰>Œ>Ðs1   ªA6B! Â!C3Â27C.Ã.C3Ä"A7F Æ
G%Æ$7G Ç G%c                 óæ   — t           rt          t          d¦  «        sdS t          j                             ¦   «         }|dk    rdS d„ t          |¦  «        D ¦   «         }d                     |¦  «        S )NÚxpurÈ   r   c                 óX   — g | ]'}d |› dt           j                             |¦  «        › �‘Œ(S )z* [z] )r!   r  r›   )rq   Úis     rS   ú
<listcomp>z*get_intel_gpu_detected.<locals>.<listcomp>®  sF   € ð ð ð Ø<=Ð7ˆaÐ7Ð7•5”9×2Ò2°1Ñ5Ô5Ð7Ð7ðð ð rU   rf   )r–   r—   r!   r  Údevice_countÚranger€   )rY   r  Údevicess      rS   Úget_intel_gpu_detectedr
  ¦  s}   € Ýð ¥'­%°Ñ"7Ô"7ð Øˆuå”9×)Ò)Ñ+Ô+€LØ�qÒÐØˆuðð ÝAFÀ|ÑATÔATðñ ô €Gð �9Š9�WÑÔÐrU   c                 ó$  — d\  }}}t          ¦   «         dk    r | d¦  «        \  }}}�nYt          ¦   «         dk    �r% | d¦  «        \  }}}|dk    �rg }	 t          j        |¦  «        }t          |¦  «        t          u rL|D ]H}|                     d¦  «         |                     d„ |                     ¦   «         D ¦   «         ¦  «         ŒIn1|                     d	„ |                     ¦   «         D ¦   «         ¦  «         nN# t          $ rA}|                     |¦  «         |                     t          |¦  «        ¦  «         Y d }~nd }~ww xY wd
 
                    |¦  «        }n!t          ¦   «         dk    r | d¦  «        \  }}}d}|dk    r|}n|}|S )N)r   r•   r•   rÇ   Úlscpur=   zípowershell.exe "gwmi -Class Win32_Processor | Select-Object -Property Name,Manufacturer,Family,            Architecture,ProcessorType,DeviceID,CurrentClockSpeed,MaxClockSpeed,L2CacheSize,L2CacheSpeed,Revision            | ConvertTo-Json"r   z----------------------c                 ó"   — g | ]\  }}|› d |› �‘ŒS ©rä   rW   ©rq   ÚkÚvs      rS   r  z get_cpu_info.<locals>.<listcomp>  s&   € Ð#HÐ#HÐ#H±F°Q¸ q K K¨A K KÐ#HÐ#HÐ#HrU   c                 ó"   — g | ]\  }}|› d |› �‘ŒS r  rW   r  s      rS   r  z get_cpu_info.<locals>.<listcomp>  s&   € ÐFÐFÐF±°°A 1  ¨  ÐFÐFÐFrU   rf   rŒ   z"sysctl -n machdep.cpu.brand_stringÚNone)rF   rê   rë   r?   rì   ré   rÿ   Úitemsrí   r@   r€   )	rY   rO   rZ   rR   rÚ   ró   rô   rõ   r    s	            rS   Úget_cpu_infor     s¾  € Ø�L€BˆˆSÝ�~„~˜Ò Ð Ø!�z 'Ñ*Ô*‰ˆˆC�‘Ý	‰Œ˜7Ò	"Ñ	"Ø!�zðñ
ô 
‰ˆˆC�ð
 �Š7‰7ØˆCð
#Ý”j ‘o”o�Ý˜‘9”9¥Ð$Ð$Ø ð Jð J˜ØŸ
š
Ð#;Ñ<Ô<Ð<ØŸ
š
Ð#HÐ#H¸a¿gºg¹i¼iÐ#HÑ#HÔ#HÑIÔIÐIÐIðJð —J’JÐFÐF¸#¿)º)¹+¼+ÐFÑFÔFÑGÔGÐGøøÝð #ð #ð #Ø—
’
˜3‘”�Ø—
’
�3˜q™6œ6Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"øøøøð#øøøð —)’)˜C‘.”.ˆCøÝ	‰Œ˜8Ò	#Ð	#Ø!�zÐ"FÑGÔG‰ˆˆC�Ø€HØ	ˆQ‚w€wØˆˆàˆØ€Os   ÁB'C> Ã>
E	Ä7EÅE	c                  ó"  — t           j                             d¦  «        rdS t           j                             d¦  «        rdS t           j                             d¦  «        rdS t           j                             d¦  «        rdS t           j        S )NrÇ   r=   râ   rŒ   )Úsysrî   ru   rW   rU   rS   rF   rF   "  s~   € Ý
„|×Ò˜wÑ'Ô'ð 	ØˆwÝ	Œ×	 Ò	  Ñ	)Ô	)ð ØˆwÝ	Œ×	 Ò	  Ñ	*Ô	*ð ØˆxÝ	Œ×	 Ò	  Ñ	*Ô	*ð ØˆxåŒ|ÐrU   c                 ó$   — t          | dd¦  «        S )Nzsw_vers -productVersionz(.*)r„   r…   s    rS   Úget_mac_versionr  /  s   € Ý$ ZÐ1JÈGÑTÔTÐTrU   c                 óä   — t          | d¦  «        }	 t          j        |¦  «        }|d         › d|d         › d|d         › d�}n,# t          $ r}|dt	          |¦  «        › �z  }Y d }~nd }~ww xY w|S )	Nz„powershell.exe "gwmi -Class Win32_OperatingSystem | Select-Object -Property Caption,        OSArchitecture,Version | ConvertTo-Json"ÚCaptionræ   ÚVersionrÓ   ÚOSArchitecturerè   rf   )r\   rê   rë   rí   r@   )rY   rÙ   ró   rõ   s       rS   Úget_windows_versionr  3  s�   € Ý
Øð	2ñô €Cð
ÝŒj˜‰oŒoˆØ�Y”ÐLÐL 3 y¤>ÐLÐL°CÐ8HÔ4IÐLÐLÐLˆˆøÝð ð ð Øˆ}•C˜‘F”Fˆ}ˆ}Ñˆˆˆˆˆˆøøøøðøøøà€Js   ’1A Á
A-ÁA(Á(A-c                 ó$   — t          | dd¦  «        S )Nzlsb_release -azDescription:\t(.*)r„   r…   s    rS   Úget_lsb_versionr   A  s   € Ý$ØÐ$Ð&;ñô ð rU   c                 ó$   — t          | dd¦  «        S )Nzcat /etc/*-releasezPRETTY_NAME="(.*)"r„   r…   s    rS   Úcheck_release_filer"  G  s   € Ý$ØÐ(Ð*?ñô ð rU   c                 óÆ  — ddl m} t          ¦   «         }|dv rt          | ¦  «        S |dk    r1t	          | ¦  «        }|€d S d                     | |¦   «         ¦  «        S |dk    r|t          | ¦  «        }|�d                     | |¦   «         ¦  «        S t          | ¦  «        }|�d                     | |¦   «         ¦  «        S d                     | |¦   «         ¦  «        S |S )Nr   )Úmachinerá   rŒ   zmacOS {} ({})rÇ   z{} ({}))rî   r$  rF   r  r  r   r   r"  )rY   r$  rî   r˜   Údescs        rS   Úget_osr&  M  s  € Ø Ð Ð Ð Ð Ð å‰~Œ~€HàÐ&Ð&Ð&Ý" :Ñ.Ô.Ð.à�8ÒÐÝ! *Ñ-Ô-ˆØˆ?Ø�4Ø×%Ò% g¨w¨w©y¬yÑ9Ô9Ð9à�7ÒÐå˜zÑ*Ô*ˆØÐØ×#Ò# D¨'¨'©)¬)Ñ4Ô4Ð4õ " *Ñ-Ô-ˆØÐØ×#Ò# D¨'¨'©)¬)Ñ4Ô4Ð4à×Ò ¨'¨'©)¬)Ñ4Ô4Ð4ð €OrU   c                  ó2   — dd l } |                       ¦   «         S ©Nr   ©rî   r)  s    rS   Úget_python_platformr*  l  s   € Ø€O€O€Oà×ÒÑÔÐrU   c                  ó€   — dd l } t          ¦   «         dk    rdS d                     |                      ¦   «         ¦  «        S )Nr   rÇ   rÈ   ú-)rî   rF   r€   Úlibc_verr)  s    rS   Úget_libc_versionr.  r  s=   € Ø€O€O€Oå�~„~˜Ò Ð ØˆuØ�8Š8�H×%Ò%Ñ'Ô'Ñ(Ô(Ð(rU   c                 óL  ‡— ‰€t           t          z   t          z   t          z   Št          j        j        dk    rdnd}dt          j        d<   t          | t          j
        ddd	g¦  «        }|€||fS d
                     ˆfd„|                     ¦   «         D ¦   «         ¦  «        }||fS )zZReturn `pip list` output. Note: will also find conda-installed pytorch and numpy packages.Né   Úpip3ÚpipÚ1ÚPIP_DISABLE_PIP_VERSION_CHECKz-mpiprì   z--format=freezerf   c              3   óT   •‡K  — | ]!Št          ˆfd „‰D ¦   «         ¦  «        ¯‰V — Œ"dS )c              3   ó    •K  — | ]}|‰v V — Œ	d S ro   rW   rp   s     €rS   rt   z-get_pip_packages.<locals>.<genexpr>.<genexpr>‹  s'   øè è € Ð0SÐ0SÀ$°¸°Ð0SÐ0SÐ0SÐ0SÐ0SÐ0SrU   N)rv   rw   s    @€rS   rt   z#get_pip_packages.<locals>.<genexpr>Š  sZ   øøè è € ð ð Ø­SÐ0SÐ0SÐ0SÐ0SÈ(Ð0SÑ0SÔ0SÑ-SÔ-SðØðð ð ð ð ð rU   )ÚPIP_PATTERNSrz   r{   r|   r  Úversion_infoÚmajorr   r}   r\   Ú
executabler€   r�   )rY   rx   r   rZ   Úfiltered_outs    `   rS   Úget_pip_packagesr<  z  sÇ   ø€ àÐÝ¥/Ñ1µOÑCÅoÑUˆåÔ,Ô2°aÒ7Ð7�&�&¸U€Kà25…B„JÐ.Ñ/õ Ø•S”^ W¨fÐ6GÐHñô €Cð €{Ø˜CÐÐà—9’9ð ð ð ð ØŸšÑ)Ô)ðñ ô ñ ô €Lð ˜Ð$Ð$rU   Úreturnc                  ó   — d„ dD ¦   «         S )zKReturn the caching allocator configuration from environment variables.
    c                 óŒ   — i | ]A}t           j                             |¦  «        ¯!|t           j                             |¦  «        “ŒBS rW   )r   r}   r~   )rq   Úvars     rS   ú
<dictcomp>z/get_cachingallocator_config.<locals>.<dictcomp>•  sN   € ð ð ð àõ
 Œ:�>Š>˜#ÑÔðØ�RŒZ�^Š^˜CÑ Ô ðð ð rU   )ÚPYTORCH_CUDA_ALLOC_CONFÚPYTORCH_HIP_ALLOC_CONFÚPYTORCH_ALLOC_CONFrW   rW   rU   rS   Úget_cachingallocator_configrE  ‘  s%   € ðð ð
ðñ ô ð rU   c                  óÐ   — t           r^t          j                             ¦   «         r@t          j                             ¦   «          t
          j                             dd¦  «        } | S dS )NÚCUDA_MODULE_LOADINGr•   rÈ   )r–   r!   r™   rš   Úinitr   r}   r~   )Úconfigs    rS   Úget_cuda_module_loading_configrJ     sQ   € Ýð �5œ:×2Ò2Ñ4Ô4ð ÝŒ
�ŠÑÔÐÝ”—’Ð 5°rÑ:Ô:ˆØˆàˆurU   c                  óX   — t           r"dd l} t          | j        j        j        ¦  «        S dS )Nr   rÈ   )r–   Útorch.backends.xnnpackr@   ÚbackendsÚxnnpackÚenabled)r!   s    rS   r   r   ©  s1   € Ýð Ø%Ð%Ð%Ð%å�5”>Ô)Ô1Ñ2Ô2Ð2àˆurU   c            
      óh  — t           } t          | ¦  «        \  }}t          �r—t          j        }t          t          j        j        ¦  «        }t          t          j         	                    ¦   «         ¦  «        }t          j        j        }t          t          j
         	                    ¦   «         ¦  «        }t          j
         	                    ¦   «         rV|› d�dt          j        j
        › d�z   dt          | ¦  «        › d�z   dt          | ¦  «        › d�z   dt          | ¦  «        › �z   }t          t          j        d¦  «        rt          j        j        €dx}x}	}
npd	„ }t          j                             ¦   «                              d¦  «        } ||d
¦  «        }	 ||d¦  «        }
d}t          j        j        }ndx}x}x}x}}dx}x}	}
t&          j                             dd¦  «        }t+          | ¦  «        }t-          d)i d|“d|“dd                     |t&          j                             ¦   «         dz   ¦  «        “dt5          ¦   «         “d|“d|“dt7          | ¦  «        “dt9          ¦   «         “dt;          | ¦  «        “dt=          | ¦  «        “dt?          | ¦  «        “d|“d|“d|	“d|
“d|“d|“d |“d!tA          | ¦  «        “d"tC          ¦   «         “d#tE          | ¦  «        “d$tG          | ¦  «        “d%tI          | ¦  «        “d&tK          ¦   «         “d'tM          ¦   «         “d(tO          | ¦  «        “ŽS )*aõ  
    Collects environment information to aid in debugging.

    The returned environment information contains details on torch version, is debug build
    or not, cuda compiled version, gcc version, clang version, cmake version, operating
    system, libc version, python version, python platform, CUDA availability, CUDA
    runtime version, CUDA module loading config, GPU model and configuration, Nvidia
    driver version, cuDNN version, pip version and versions of relevant pip and
    conda packages, HIP runtime version, MIOpen runtime version,
    Caching allocator config, XNNPACK availability and CPU information.

    Returns:
        SystemEnv (namedtuple): A tuple containing various environment details
            and system information.
    rf   zXPU used to build PyTorch: zIntel GPU driver version:
zIntel GPU models onboard:
zIntel GPU models detected:
r’   NrÈ   c                 ó8   ‡— ˆfd„| D ¦   «         }|r|d         ndS )Nc                 óP   •— g | ]"}‰|v ¯|                      d d¦  «        d         ‘Œ#S )Nr^   éÿÿÿÿ)Úrsplit)rq   ÚsÚprefixs     €rS   r  z;get_env_info.<locals>.get_version_or_na.<locals>.<listcomp>Ú  s1   ø€ ÐJÐJÐJ°!¸fÈ¸k¸k˜Ÿš  qÑ)Ô)¨"Ô-¸k¸k¸krU   r   rÈ   rW   )ÚcfgrV  Ú_lsts    ` rS   Úget_version_or_naz'get_env_info.<locals>.get_version_or_naÙ  s/   ø€ ØJÐJÐJÐJ°sÐJÑJÔJ�Ø"&Ð1�t˜A”w�w¨EÐ1rU   zHIP RuntimeÚMIOpenrÓ   r   r   r   z{} ({}-bit runtime)r^   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r    rW   )(rT   r<  r–   r!   Ú__version__r@   r˜   Údebugr™   rš   r  rö   r  r
  r—   r’   Ú_CÚ_show_configrg   r  Úreplacer‚   r   r   ÚmaxsizeÚ
bit_lengthr*  r¤   rJ  r¢   r�   r¼   r&  r.  r†   rˆ   rŠ   rE  r   r  )rY   r   Úpip_list_outputÚversion_strÚdebug_mode_strÚcuda_available_strÚcuda_version_strÚxpu_available_strr   r   r   rY  rW  Úsys_versionr   s                  rS   Úget_env_infori  ²  sÿ  € õ  €JÝ#3°JÑ#?Ô#?Ñ €K�åñ TÝÔ'ˆÝ�Uœ]Ô0Ñ1Ô1ˆÝ ¥¤×!8Ò!8Ñ!:Ô!:Ñ;Ô;ÐÝ œ=Ô-ÐÝ¥¤	× 6Ò 6Ñ 8Ô 8Ñ9Ô9ÐÝŒ9×!Ò!Ñ#Ô#ð 	à$Ð(Ð(Ð(ØEµ´Ô0AÐEÐEÐEñFà\Õ0LÈZÑ0XÔ0XÐ\Ð\Ð\ñ]ð VÕ0EÀjÑ0QÔ0QÐUÐUÐUñVð VÕ1GÈ
Ñ1SÔ1SÐUÐUñ	Vð õ �œ uÑ-Ô-ð	5Ý16´Ô1BÐ1JàRWÐWÐ ÐWÐ#6Ð9OÐ9Oð2ð 2ð 2õ ”(×'Ò'Ñ)Ô)×/Ò/°Ñ5Ô5ˆCØ"3Ð"3°C¸Ñ"GÔ"GÐØ%6Ð%6°s¸HÑ%EÔ%EÐ"Ø$ÐÝ#(¤=Ô#4Ð Ð àchÐhˆÐh�nÐhÐ'9ÐhÐ<LÐO`ØNSÐSÐÐSÐ2Ð5Kå”+×%Ò% d¨CÑ0Ô0€Kå'¨
Ñ3Ô3€Nåð ð ð Ø!�kðà%�~ðð -×3Ò3Ø�œ×/Ò/Ñ1Ô1°AÑ5ñ
ô 
ð 
ðõ ,Ñ-Ô-Ð-ðð -Ð,ðð /Ð.ðõ 6°jÑAÔAÐAðõ ;Ñ<Ô<Ð<ðõ ' zÑ2Ô2Ð2ðõ 8¸
ÑCÔCÐCðõ (¨
Ñ3Ô3Ð3ðð +Ð*ðð 2Ð1ðð  0Ð/ð!ð"  6Ð5ð#ð$  �Kð%ð& %�_ð'ð( &�~ð)õ* �*ÑÔÐð+õ, &Ñ'Ô'Ð'ð-õ. $ JÑ/Ô/Ð/ð/õ0 (¨
Ñ3Ô3Ð3ð1õ2 (¨
Ñ3Ô3Ð3ð3õ4 "=Ñ!>Ô!>Ð!>ð5õ6 2Ñ3Ô3Ð3ð7õ8 ˜jÑ)Ô)Ð)ð9ð rU   aª  
PyTorch version: {torch_version}
Is debug build: {is_debug_build}
CUDA used to build PyTorch: {cuda_compiled_version}
ROCM used to build PyTorch: {hip_compiled_version}

OS: {os}
GCC version: {gcc_version}
Clang version: {clang_version}
CMake version: {cmake_version}
Libc version: {libc_version}

Python version: {python_version}
Python platform: {python_platform}
Is CUDA available: {is_cuda_available}
CUDA runtime version: {cuda_runtime_version}
CUDA_MODULE_LOADING set to: {cuda_module_loading}
GPU models and configuration: {nvidia_gpu_models}
Nvidia driver version: {nvidia_driver_version}
cuDNN version: {cudnn_version}
Is XPU available: {is_xpu_available}
HIP runtime version: {hip_runtime_version}
MIOpen runtime version: {miopen_runtime_version}
Is XNNPACK available: {is_xnnpack_available}
Caching allocator config: {caching_allocator_config}

CPU:
{cpu_info}

Versions of relevant libraries:
{pip_packages}
{conda_packages}
c                 ó¾  ‡
— dd„}dd„}dd„}dd	„}d
„ }|                       ¦   «         Š
 || j        ¦  «        ‰
d<   g d¢}|dgz   }t          ˆ
fd„|D ¦   «         ¦  «        }t          r6t          j                             ¦   «         s|r|D ]}	d‰
|	<   Œ| j        €d‰
d<    |‰
¦  «        Š
 |‰
¦  «        Š
 |‰
d         ¦  «        ‰
d<    |‰
d         ¦  «        ‰
d<   ‰
d         r- |‰
d         d                     | j	        ¦  «        ¦  «        ‰
d<   ‰
d         r |‰
d         d¦  «        ‰
d<   | j
        ‰
d<   | j        ‰
d<   | j        sd‰
d<   t          j        di ‰
¤ŽS )NúCould not collectc                 ó,   — | D ]}| |         �Œ|| |<   Œ| S ro   rW   )ÚdctÚreplacementÚkeys      rS   Úreplace_nonesz!pretty_str.<locals>.replace_nones.  s.   € Øð 	#ð 	#ˆCØ�3ŒxÐ#ØØ"ˆC�‰HˆHØˆ
rU   ÚYesÚNoc                 óN   — | D ]!}| |         du r|| |<   Œ| |         du r|| |<   Œ"| S )NTFrW   )rm  ÚtrueÚfalsero  s       rS   Úreplace_boolsz!pretty_str.<locals>.replace_bools5  sI   € Øð 	!ð 	!ˆCØ�3Œx˜4ÐÐØ��C‘�Ø�S”˜UÐ"Ð"Ø ��C‘øØˆ
rU   ú	[prepend]c                 ót   ‡— |                       d¦  «        }ˆfd„|D ¦   «         }d                     |¦  «        S )Nrf   c                 ó   •— g | ]}‰|z   ‘ŒS rW   rW   )rq   rs   Útags     €rS   r  z/pretty_str.<locals>.prepend.<locals>.<listcomp>?  s   ø€ Ð6Ð6Ð6¨˜˜t™Ð6Ð6Ð6rU   )rg   r€   )Útextrz  ÚlinesÚupdated_liness    `  rS   Úprependzpretty_str.<locals>.prepend=  s?   ø€ Ø—
’
˜4Ñ Ô ˆØ6Ð6Ð6Ð6°Ð6Ñ6Ô6ˆØ�yŠy˜Ñ'Ô'Ð'rU   úNo relevant packagesc                 ó4   — | �t          | ¦  «        dk    r|S | S r(  )r­   )r{  rn  s     rS   Úreplace_if_emptyz$pretty_str.<locals>.replace_if_emptyB  s!   € ØÐ¥ D¡	¤	¨Q¢ ØÐØˆrU   c                 ó€   — | �;t          |                      d¦  «        ¦  «        dk    rd                     | ¦  «        S | S )Nrf   r^   z
{}
)r­   rg   r   )Ústrings    rS   Úmaybe_start_on_next_linez,pretty_str.<locals>.maybe_start_on_next_lineG  s=   € àÐ¥# f§l¢l°4Ñ&8Ô&8Ñ"9Ô"9¸AÒ"=Ð"=Ø—?’? 6Ñ*Ô*Ð*ØˆrU   r   )r   r   r   r   c              3   ó,   •K  — | ]}‰|         d u V — Œd S ro   rW   )rq   ÚfieldÚmutable_dicts     €rS   rt   zpretty_str.<locals>.<genexpr>[  s>   øè è € ð *ð *Ø(-ˆ�UÔ˜tÐ#ð*ð *ð *ð *ð *ð *rU   zNo CUDAr  r	   r   r   z[{}] z[conda] r    r   rÈ   )rk  )rq  rr  )rw  )r  rW   )Ú_asdictr   Úallr–   r!   r™   rš   r	   r   r   r    r   Úenv_info_fmt)Úenvinforp  rv  r~  r�  r„  Údynamic_cuda_fieldsÚall_cuda_fieldsÚall_dynamic_cuda_fields_missingr†  r‡  s             @rS   Ú
pretty_strr�  -  s[  ø€ ðð ð ð ðð ð ð ð(ð (ð (ð (ð
ð ð ð ð
ð ð ð —?’?Ñ$Ô$€Lð )AÐ(@ØÔ!ñ)ô )€LÐ$Ñ%ð
ð ð Ðð
 *¨_Ð,=Ñ=€OÝ&)ð *ð *ð *ð *Ø1Dð*ñ *ô *ñ 'ô 'Ð#õ 	ð;å”
×'Ò'Ñ)Ô)ð;ð ,ð;ð
 %ð 	,ð 	,ˆEØ"+ˆL˜ÑÐØÔ(Ð0Ø4:ˆLÐ0Ñ1ð !�= Ñ.Ô.€Lð !�= Ñ.Ô.€Lð $4Ð#3°LÀÔ4PÑ#QÔ#Q€L�Ñ Ø%5Ð%5°lÐCSÔ6TÑ%UÔ%U€LÐ!Ñ"ð �NÔ#ð 
Ø'. wØ˜Ô(¨'¯.ª.¸Ô9LÑ*MÔ*Mñ(
ô (
ˆ�^Ñ$ð Ð$Ô%ð 
Ø)0¨ØÐ)Ô*¨Jñ*
ô *
ˆÐ%Ñ&ð  'Ô/€L�ÑØ/6Ô/O€LÐ+Ñ,ØÔ+ð 9Ø38ˆÐ/Ñ0ÝÔÐ.Ð. Ð.Ð.Ð.rU   c                  ó8   — t          t          ¦   «         ¦  «        S )aá  
    Returns a pretty string of environment information.

    This function retrieves environment information by calling the `get_env_info` function
    and then formats the information into a human-readable string. The retrieved environment
    information is listed in the document of `get_env_info`.
    This function is used in `python collect_env.py` that should be executed when reporting a bug.

    Returns:
        str: A pretty string of the environment information.
    )r�  ri  rW   rU   rS   Úget_pretty_env_infor‘  ƒ  s   € õ •l‘n”nÑ%Ô%Ð%rU   c                  óú  ‡— t          d¦  «         t          ¦   «         } t          | ¦  «         t          �r=t          t          d¦  «        �r)t          t          j        d¦  «        �rt          j        j        j        Št          j	        dk    rìt          j                             ‰¦  «        rÏˆfd„t          j        ‰¦  «        D ¦   «         }t          |t          j        j        ¬¦  «        }t          j                             |¦  «        }t           j                             |¦  «                             d¦  «        }d                     ||¦  «        d	z   }t          |t          j        ¬
¦  «         d S d S d S d S d S d S )Nz%Collecting environment information...ÚutilsÚ_crash_handlerrÇ   c                 óP   •— g | ]"}t           j                             ‰|¦  «        ‘Œ#S rW   )r   r¬   r€   )rq   ÚdumpÚminidump_dirs     €rS   r  zmain.<locals>.<listcomp>ž  s6   ø€ ð ð ð Ø59•”—’˜\¨4Ñ0Ô0ðð ð rU   )ro  z%Y-%m-%d %H:%M:%Sz.
*** Detected a minidump at {} created on {}, zKif this is related to your bug please include it when you file a report ***)Úfile)Úprintr‘  r–   r—   r!   r“  r”  ÚDEFAULT_MINIDUMP_DIRr  rî   r   r¬   rÀ   ÚlistdirÚmaxÚgetctimeÚdatetimeÚfromtimestampÚstrftimer   r;   )rQ   ÚdumpsÚlatestÚctimeÚcreation_timeÚmsgr—  s         @rS   Úmainr¦  ’  sˆ  ø€ Ý	Ð
1Ñ2Ô2Ð2Ý Ñ"Ô"€FÝ	ˆ&�M„M€Mõ 	ñ(å•E˜7Ñ#Ô#ñ(õ •E”KÐ!1Ñ2Ô2ñ(õ
 ”{Ô1ÔFˆÝŒ<˜7Ò"Ð"¥r¤w§~¢~°lÑ'CÔ'CÐ"ðð ð ð Ý=?¼ZÈÑ=UÔ=Uðñ ô ˆEõ ˜¥B¤GÔ$4Ð5Ñ5Ô5ˆFÝ”G×$Ò$ VÑ,Ô,ˆEÝ$Ô-×;Ò;¸EÑBÔB×KÒKØ#ñô ˆMð B×HÒHØ˜Mñô ð `ñ`ð õ �#�CœJÐ'Ñ'Ô'Ð'Ð'Ð'ð+(ð (ð (ð (ð (ð (ð #Ð"Ð"Ð"rU   Ú__main__ro   )r=  N)Arž  rê   rG   r   r_   rA   r  Úcollectionsr   Útypingr   rÕ   r   Ú_Dictr!   r–   ÚImportErrorÚ	NameErrorÚAttributeErrorÚOSErrorr   rz   r{   r|   ry   r7  rT   r\   rd   rh   r‚   r†   rˆ   rŠ   r�   r¢   r¤   r¼   r�   rÏ   rÛ   rö   r  r
  r  rF   r  r  r   r"  r&  r*  r.  r<  r@   rE  rJ  r   ri  rJ   rŠ  r�  r‘  r¦  Ú__name__rW   rU   rS   ú<module>r°     s¹  ðð €€€Ø €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø "Ð "Ð "Ð "Ð "Ð "Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðØ€L€L€Là€O€OøØ�Y °Ð8ð ð ð Ø€O€O€Oðøøøð ˆJØðð ð ñô €	ð@ð ð €ðð ð €ð$ð ð €ð0ð ð €ðð ð €ð+ð +ð +ð"ð ð ðð ð ðð ð ðð ð ð ðOð Oð Oðð ð ðSð Sð SðQð Qð Qð'ð 'ð 'ð4Xð Xð Xð"?ð "?ð "?ðJð ð ð$ð ð ð!ð !ð !ðH.ð .ð .ðb$ð $ð $ðNð ð ðtð ð ðD
ð 
ð 
ðUð Uð Uðð ð ðð ð ðð ð ðð ð ð>ð ð ð)ð )ð )ð%ð %ð %ð %ð. U¨3°¨8¤_ð ð ð ð ðð ð ðð ð ðUð Uð Uðp ÷@ 
‚E�G„GðA ðFS/ð S/ð S/ðl&ð &ð &ð(ð (ð (ð (ð: ˆzÒÐØ€D�F„F€F€F€Fð Ðs   ¬3 ³AÁ A