<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]e                 @   s"  db Z  dc Z e e  Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z d d   Z	 d d   Z
 d d   Z d d d  Z e e j  Z d j d d  d Z e j e d  Z e d k r d Z e e   d j d d  d Z d Z d  Z d! g Z d" g Z e Z Z d# d$ d# d% d& Z d' d(   Z d) d*   Z  d+ d,   Z! d- d.   Z" d/ d0 d1 d2  Z# d3 d4   Z$ d5 d6   Z% d# d# d# d7 d8  Z& d# d# d# d9 d:  Z' d; d; d< d=  Z( d> d?   Z) e*   Z+ d# d@ d# dA e+ dB dC Z, GdD dE   dE  Z- GdF dG   dG  Z. GdH dI   dI e.  Z/ GdJ dK   dK  Z0 GdL dM   dM e0 e/  Z1 GdN dO   dO e0 e.  Z2 g  Z3 GdP dQ   dQ e0 e.  Z4 GdR dS   dS  Z5 GdT dU   dU  Z6 GdV dW   dW  Z7 GdX dY   dY  Z8 d# dZ d[  Z9 d\ d]   Z: d^ d_   Z; d` da   Z< d# S)dwincygwindarwinc                 sX   t  j j t  rH t  j j t  r- d   n d     f d d   }  n d d   }  |  S)NPYTHONCASEOKs   PYTHONCASEOKc                  s     t  j k S)N)_osenviron )keyr   8/opt/alt/python35/lib64/python3.5/_bootstrap_external.py_relax_case%   s    z%_make_relax_case.<locals>._relax_casec               S   s   d S)NFr   r   r   r   r	   r
   )   s    )sysplatform
startswith_CASE_INSENSITIVE_PLATFORMS#_CASE_INSENSITIVE_PLATFORMS_STR_KEY)r
   r   )r   r	   _make_relax_case   s    	r   c             C   s   t  |   d @j d d  S)Nl       little)intto_bytes)xr   r   r	   _w_long/   s    r   c             C   s   t  j |  d  S)Nr   )r   
from_bytes)	int_bytesr   r   r	   _r_long4   s    r   c              G   s   t  j d d   |  D  S)Nc             S   s%   g  |  ] } | r | j  t   q Sr   )rstrippath_separators).0partr   r   r	   
<listcomp>;   s   	z_path_join.<locals>.<listcomp>)path_sepjoin)
path_partsr   r   r	   
_path_join9   s    r"   c             C   s   t  t  d k r4 |  j t  \ } } } | | f SxE t |   D]7 } | t k rA |  j | d d \ } } | | f SqA Wd |  f S)N   maxsplit )lenr   
rpartitionr   reversedrsplit)pathfront_tailr   r   r   r	   _path_split?   s    
r.   c             C   s   t  j |   S)N)r   stat)r*   r   r   r	   
_path_statK   s    r0   c             C   s:   y t  |   } Wn t k
 r( d SYn X| j d @| k S)NFi   )r0   OSErrorst_mode)r*   mode	stat_infor   r   r	   _path_is_mode_typeU   s
    	r5   c             C   s   t  |  d  S)Ni   )r5   )r*   r   r   r	   _path_isfile^   s    r6   c             C   s   |  s t  j   }  t |  d  S)Ni @  )r   getcwdr5   )r*   r   r   r	   _path_isdirc   s    r8   i  c             C   s   d j  |  t |    } t j | t j t j Bt j B| d @ } y= t j | d   } | j	 |  Wd  QRXt j
 | |   Wn; t k
 r y t j |  Wn t k
 r Yn X  Yn Xd  S)Nz{}.{}i  wb)formatidr   openO_EXCLO_CREATO_WRONLY_ioFileIOwritereplacer1   unlink)r*   datar3   path_tmpfdfiler   r   r	   _write_atomicj   s    	!rI   i     r   s   
i
zAMagic number mismatch (the issue27286 workaround is for 3.5 only)i  __pycache__zopt-z.pyz.pycNoptimizationc            C   sW  | d  k	 rL t  j d t  | d  k	 r: d } t |   | rF d n d } t |   \ } } | j d  \ } } } t j j }	 |	 d  k r t	 d   d j
 | r | n | | |	 g  }
 | d  k r t j j d k r d } n t j j } t |  } | d k r?| j   s*t d j |    d	 j |
 t |  }
 t | t |
 t d  S)
NzFthe debug_override parameter is deprecated; use 'optimization' insteadz2debug_override or optimization must be set to Noner%   r#   .z$sys.implementation.cache_tag is None    z{!r} is not alphanumericz{}.{}{})	_warningswarnDeprecationWarning	TypeErrorr.   r'   r   implementation	cache_tagNotImplementedErrorr    flagsoptimizestrisalnum
ValueErrorr:   _OPTr"   _PYCACHEBYTECODE_SUFFIXES)r*   debug_overriderL   messageheadr-   basesepresttagalmost_filenamer   r   r	   cache_from_source  s.    	$	rf   c             C   s>  t  j j d  k r t d   t |   \ } } t |  \ } } | t k rf t d j t |     | j d  } | d
 k r t d j |    n} | d k r| j	 d d  d } | j
 t  s t d j t    | t t  d   } | j   st d j |    | j d  d	 } t | | t d	  S)Nz$sys.implementation.cache_tag is Nonez%{} not bottom-level directory in {!r}rM   rJ      z!expected only 2 or 3 dots in {!r}z9optimization portion of filename does not start with {!r}z4optimization level {!r} is not an alphanumeric valuerN   >   rJ   rg   )r   rS   rT   rU   r.   r\   rZ   r:   countr)   r   r[   r&   rY   	partitionr"   SOURCE_SUFFIXES)r*   r`   pycache_filenamepycache	dot_countrL   	opt_levelbase_filenamer   r   r	   source_from_cache@  s,    					rq   c             C   s   t  |   d k r d  S|  j d  \ } } } | sQ | j   d d  d k rU |  Sy t |   } Wn( t t f k
 r |  d  d  } Yn Xt |  r | S|  S)	NrN   rM   rg   r#   pyrt   )r&   r'   lowerrq   rU   rZ   r6   )bytecode_pathrc   r,   	extensionsource_pathr   r   r	   _get_sourcefilea  s    #ry   c             C   s\   |  j  t t   r; y t |   SWqX t k
 r7 YqX Xn |  j  t t   rT |  Sd  Sd  S)N)endswithtuplerk   rf   rU   r]   )filenamer   r   r	   _get_cachedt  s    r}   c             C   s<   y t  |   j } Wn t k
 r- d } Yn X| d O} | S)Ni     )r0   r2   r1   )r*   r3   r   r   r	   
_calc_mode  s    
r   	verbosityr#   c            G   sK   t  j j | k rG |  j d  s+ d |  }  t |  j |   d t  j d  S)N#import z# rH   )r   r   )r   rV   verboser   printr:   stderr)r_   r   argsr   r   r	   _verbose_message  s    
r   c                sT   d    f d d  } y t  j } Wn t k
 rB d d   } Yn X| |    | S)Nc                sY   | d  k r |  j  } n. |  j  | k rF t d |  j  | f d |    |  | | |  S)Nzloader for %s cannot handle %sname)r   ImportError)selfr   r   kwargs)methodr   r	   _check_name_wrapper  s    z(_check_name.<locals>._check_name_wrapperc             S   s\   xB d d d d g D]. } t  | |  r t |  | t | |   q W|  j j | j  d  S)N
__module____name____qualname____doc__)hasattrsetattrgetattr__dict__update)newoldrC   r   r   r	   _wrap  s    z_check_name.<locals>._wrap)
_bootstrapr   	NameError)r   r   r   r   )r   r	   _check_name  s    r   c             C   sT   |  j  |  \ } } | d  k rP t |  rP d } t j | j | d  t  | S)Nz,Not importing directory {}: missing __init__rN   )find_loaderr&   rO   rP   r:   ImportWarning)r   fullnameloaderportionsmsgr   r   r	   _find_module_shim  s
    
r   c             C   s  i  } | d  k	 r | | d <n d } | d  k	 r; | | d <|  d  d  } |  d d  } |  d d  } | t  k r | t k r d j | |  } t d |  t | |   nw t |  d k r d	 j |  } t d |  t |   n: t |  d k r+d
 j |  } t d |  t |   | d  k	 ry t | d  }	 Wn t k
 r_Yn> Xt	 |  |	 k rd j |  } t d |  t | |   y | d d @}
 Wn t k
 rYn+ Xt	 |  |
 k rt d j |  |   |  d d   S)Nr   z
<bytecode>r*   r         zbad magic number in {!r}: {!r}z{}z+reached EOF while reading timestamp in {!r}z0reached EOF while reading size of source in {!r}mtimezbytecode is stale for {!r}sizel    )
MAGIC_NUMBER_BACKCOMPAT_MAGIC_NUMBERr:   r   r   r&   EOFErrorr   KeyErrorr   )rE   source_statsr   r*   exc_detailsmagicraw_timestampraw_sizer_   source_mtimesource_sizer   r   r	   _validate_bytecode_header  sN    
	r   c             C   sp   t  j |   } t | t  rK t d |  | d  k	 rG t j | |  | St d j |  d | d |  d  S)Nzcode object from {!r}zNon-code object in {!r}r   r*   )	marshalloads
isinstance
_code_typer   _imp_fix_co_filenamer   r:   )rE   r   rv   rx   coder   r   r	   _compile_bytecode  s    r   rN   c             C   sL   t  t  } | j t |   | j t |   | j t j |    | S)N)	bytearrayr   extendr   r   dumps)r   r   r   rE   r   r   r	   _code_to_bytecode  s
    r   c             C   sY   d d  l  } t j |   j } | j |  } t j d  d  } | j |  j | d   S)NrN   T)tokenizer@   BytesIOreadlinedetect_encodingIncrementalNewlineDecoderdecode)source_bytesr   source_bytes_readlineencodingnewline_decoderr   r   r	   decode_source  s
    r   r   submodule_search_locationsc      	      C   sY  | d  k rI d } t  | d  rI y | j |   } Wn t k
 rH Yn Xt j |  | d | } d | _ | d  k r xI t   D]: \ } } | j t |   r | |  |  } | | _	 Pq Wd  S| t
 k rt  | d  r y | j |   } Wn t k
 rYq X| r g  | _ n	 | | _ | j g  k rU| rUt |  d } | j j |  | S)Nz	<unknown>get_filenameoriginT
is_packagerN   )r   r   r   r   
ModuleSpec_set_fileattr_get_supported_file_loadersrz   r{   r   	_POPULATEr   r   r.   append)	r   locationr   r   specloader_classsuffixesr   dirnamer   r   r	   spec_from_file_location!  s<    			r   c               @   ss   e  Z d  Z d Z d Z d Z e d d    Z e d d    Z e d d d	 d
   Z	 e d d d   Z
 d S)WindowsRegistryFinderz;Software\Python\PythonCore\{sys_version}\Modules\{fullname}zASoftware\Python\PythonCore\{sys_version}\Modules\{fullname}\DebugFc             C   sC   y t  j t  j |  SWn% t k
 r> t  j t  j |  SYn Xd  S)N)_winregOpenKeyHKEY_CURRENT_USERr1   HKEY_LOCAL_MACHINE)clsr   r   r   r	   _open_registryo  s    z$WindowsRegistryFinder._open_registryc             C   s   |  j  r |  j } n	 |  j } | j d | d t j d  d   } y/ |  j |   } t j | d  } Wd  QRXWn t	 k
 r d  SYn X| S)Nr   sys_versionrg   r%   )
DEBUG_BUILDREGISTRY_KEY_DEBUGREGISTRY_KEYr:   r   versionr   r   
QueryValuer1   )r   r   registry_keyr   hkeyfilepathr   r   r	   _search_registryv  s    			z&WindowsRegistryFinder._search_registryNc             C   s   |  j  |  } | d  k r d  Sy t |  Wn t k
 rE d  SYn XxQ t   D]F \ } } | j t |   rP t j | | | |  d | } | SqP Wd  S)Nr   )r   r0   r1   r   rz   r{   r   spec_from_loader)r   r   r*   targetr   r   r   r   r   r   r	   	find_spec  s    			zWindowsRegistryFinder.find_specc             C   s-   |  j  | |  } | d  k	 r% | j Sd  Sd  S)N)r   r   )r   r   r*   r   r   r   r	   find_module  s    z!WindowsRegistryFinder.find_module)r   r   r   r   r   r   classmethodr   r   r   r   r   r   r   r	   r   c  s   r   c               @   s@   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 S)
_LoaderBasicsc             C   sX   t  |  j |   d } | j d d  d } | j d  d } | d k oW | d k S)Nr#   rM   rN   rJ   __init__)r.   r   r)   r'   )r   r   r|   filename_base	tail_namer   r   r	   r     s    z_LoaderBasics.is_packagec             C   s   d  S)Nr   )r   r   r   r   r	   create_module  s    z_LoaderBasics.create_modulec             C   sP   |  j  | j  } | d  k r6 t d j | j    t j t | | j  d  S)Nz4cannot load module {!r} when get_code() returns None)get_coder   r   r:   r   _call_with_frames_removedexecr   )r   moduler   r   r   r	   exec_module  s
    	z_LoaderBasics.exec_modulec             C   s   t  j |  |  S)N)r   _load_module_shim)r   r   r   r   r	   load_module  s    z_LoaderBasics.load_moduleN)r   r   r   r   r   r   r   r   r   r   r	   r     s   r   c               @   sj   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d d d  Z d d   Z	 d S)SourceLoaderc             C   s
   t   d  S)N)IOError)r   r*   r   r   r	   
path_mtime  s    zSourceLoader.path_mtimec             C   s   d |  j  |  i S)Nr   )r   )r   r*   r   r   r	   
path_stats  s    zSourceLoader.path_statsc             C   s   |  j  | |  S)N)set_data)r   rx   
cache_pathrE   r   r   r	   _cache_bytecode  s    zSourceLoader._cache_bytecodec             C   s   d  S)Nr   )r   r*   rE   r   r   r	   r     s    zSourceLoader.set_datac             C   si   |  j  |  } y |  j |  } Wn: t k
 r^ } z t d d | |  WYd  d  } ~ Xn Xt |  S)Nz'source not available through get_data()r   )r   get_datar1   r   r   )r   r   r*   r   excr   r   r	   
get_source  s    	zSourceLoader.get_source	_optimizer#   c         	   C   s"   t  j t | | d d d d | S)Nr   dont_inheritTrW   )r   r   compile)r   rE   r*   r  r   r   r	   source_to_code  s    zSourceLoader.source_to_codec       
   +   C   s  |  j  |  } d  } y t |  } Wn t k
 r? d  } Yn Xy |  j |  } Wn t k
 rg Yn Xt | d  } y |  j |  } Wn t k
 r Ynj Xy" t | d | d | d | } Wn t	 t
 f k
 r Yn- Xt d | |  t | d | d | d | S|  j |  } |  j | |  }	 t d |  t j r| d  k	 r| d  k	 rt |	 | t |   } y$ |  j | | |  t d	 |  Wn t k
 rYn X|	 S)
Nr   r   r   r*   z{} matches {}rv   rx   zcode object from {}z
wrote {!r})r   rf   rU   r   r   r   r  r1   r   r   r   r   r   r	  r   dont_write_bytecoder   r&   r  )
r   r   rx   r   rv   strE   
bytes_datar   code_objectr   r   r	   r     sN    			zSourceLoader.get_codeNrt   )
r   r   r   r   r   r  r   r  r	  r   r   r   r   r	   r     s   

r   c                   sj   e  Z d  Z d d   Z d d   Z d d   Z e   f d d    Z e d	 d
    Z d d   Z	   S)
FileLoaderc             C   s   | |  _  | |  _ d  S)N)r   r*   )r   r   r*   r   r   r	   r   2  s    	zFileLoader.__init__c             C   s"   |  j  | j  k o! |  j | j k S)N)	__class__r   )r   otherr   r   r	   __eq__8  s    zFileLoader.__eq__c             C   s   t  |  j  t  |  j  AS)N)hashr   r*   )r   r   r   r	   __hash__<  s    zFileLoader.__hash__c                s   t  t |   j |  S)N)superr  r   )r   r   )r  r   r	   r   ?  s    
zFileLoader.load_modulec             C   s   |  j  S)N)r*   )r   r   r   r   r	   r   K  s    zFileLoader.get_filenamec          	   C   s*   t  j | d   } | j   SWd  QRXd  S)Nr)r@   rA   read)r   r*   rH   r   r   r	   r  P  s    zFileLoader.get_data)
r   r   r   r   r  r  r   r   r   r  r   r   )r  r	   r  -  s   r  c               @   s:   e  Z d  Z d d   Z d d   Z d d d d  Z d	 S)
SourceFileLoaderc             C   s"   t  |  } d | j d | j i S)Nr   r   )r0   st_mtimest_size)r   r*   r  r   r   r	   r   Z  s    zSourceFileLoader.path_statsc             C   s"   t  |  } |  j | | d | S)N_mode)r   r   )r   rx   rv   rE   r3   r   r   r	   r  _  s    z SourceFileLoader._cache_bytecoder  i  c      	      C   s5  t  |  \ } } g  } x6 | rP t |  rP t  |  \ } } | j |  q Wx t |  D]v } t | |  } y t j |  Wq^ t k
 r w^ Yq^ t k
 r } z t	 d | |  d  SWYd  d  } ~ Xq^ Xq^ Wy! t
 | | |  t	 d |  Wn5 t k
 r0} z t	 d | |  WYd  d  } ~ Xn Xd  S)Nzcould not create {!r}: {!r}zcreated {!r})r.   r8   r   r(   r"   r   mkdirFileExistsErrorr1   r   rI   )	r   r*   rE   r  parentr|   r!   r   r  r   r   r	   r   d  s&    zSourceFileLoader.set_dataN)r   r   r   r   r  r   r   r   r   r	   r  V  s   r  c               @   s(   e  Z d  Z d d   Z d d   Z d S)SourcelessFileLoaderc             C   sL   |  j  |  } |  j |  } t | d | d | } t | d | d | S)Nr   r*   rv   )r   r  r   r   )r   r   r*   rE   r  r   r   r	   r     s    zSourcelessFileLoader.get_codec             C   s   d  S)Nr   )r   r   r   r   r	   r    s    zSourcelessFileLoader.get_sourceN)r   r   r   r   r  r   r   r   r	   r    s   r  c               @   s   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 e d d    Z d S)ExtensionFileLoaderc             C   s   | |  _  | |  _ d  S)N)r   r*   )r   r   r*   r   r   r	   r     s    	zExtensionFileLoader.__init__c             C   s"   |  j  | j  k o! |  j | j k S)N)r  r   )r   r  r   r   r	   r    s    zExtensionFileLoader.__eq__c             C   s   t  |  j  t  |  j  AS)N)r  r   r*   )r   r   r   r	   r    s    zExtensionFileLoader.__hash__c             C   s/   t  j t j |  } t d | j |  j  | S)Nz&extension module {!r} loaded from {!r})r   r   r   create_dynamicr   r   r*   )r   r   r   r   r   r	   r     s
    z!ExtensionFileLoader.create_modulec             C   s-   t  j t j |  t d |  j |  j  d  S)Nz(extension module {!r} executed from {!r})r   r   r   exec_dynamicr   r   r*   )r   r   r   r   r	   r     s    zExtensionFileLoader.exec_modulec                s0   t  |  j  d   t   f d d   t D  S)Nr#   c             3   s   |  ] }   d  | k Vq d S)r   Nr   )r   suffix)	file_namer   r	   	<genexpr>  s   z1ExtensionFileLoader.is_package.<locals>.<genexpr>)r.   r*   anyEXTENSION_SUFFIXES)r   r   r   )r#  r	   r     s    zExtensionFileLoader.is_packagec             C   s   d  S)Nr   )r   r   r   r   r	   r     s    zExtensionFileLoader.get_codec             C   s   d  S)Nr   )r   r   r   r   r	   r    s    zExtensionFileLoader.get_sourcec             C   s   |  j  S)N)r*   )r   r   r   r   r	   r     s    z ExtensionFileLoader.get_filenameN)r   r   r   r   r  r  r   r   r   r   r  r   r   r   r   r   r	   r    s   r  c               @   s|   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d S)_NamespacePathc             C   s4   | |  _  | |  _ t |  j    |  _ | |  _ d  S)N)_name_pathr{   _get_parent_path_last_parent_path_path_finder)r   r   r*   path_finderr   r   r	   r     s    		z_NamespacePath.__init__c             C   s5   |  j  j d  \ } } } | d k r+ d S| d f S)NrM   r%   r   r*   __path__)r   r*   )r(  r'   )r   r  dotmer   r   r	   _find_parent_path_names  s    z&_NamespacePath._find_parent_path_namesc             C   s&   |  j    \ } } t t j | |  S)N)r1  r   r   modules)r   parent_module_namepath_attr_namer   r   r	   r*    s    z_NamespacePath._get_parent_pathc             C   sv   t  |  j    } | |  j k ro |  j |  j |  } | d  k	 rf | j d  k rf | j rf | j |  _ | |  _ |  j S)N)r{   r*  r+  r,  r(  r   r   r)  )r   parent_pathr   r   r   r	   _recalculate  s    		z_NamespacePath._recalculatec             C   s   t  |  j    S)N)iterr6  )r   r   r   r	   __iter__  s    z_NamespacePath.__iter__c             C   s   t  |  j    S)N)r&   r6  )r   r   r   r	   __len__  s    z_NamespacePath.__len__c             C   s   d j  |  j  S)Nz_NamespacePath({!r}))r:   r)  )r   r   r   r	   __repr__  s    z_NamespacePath.__repr__c             C   s   | |  j    k S)N)r6  )r   itemr   r   r	   __contains__  s    z_NamespacePath.__contains__c             C   s   |  j  j |  d  S)N)r)  r   )r   r;  r   r   r	   r     s    z_NamespacePath.appendN)r   r   r   r   r1  r*  r6  r8  r9  r:  r<  r   r   r   r   r	   r'    s   
r'  c               @   sv   e  Z d  Z d d   Z e d d    Z d d   Z d d   Z d	 d
   Z d d   Z	 d d   Z
 d d   Z d S)_NamespaceLoaderc             C   s   t  | | |  |  _ d  S)N)r'  r)  )r   r   r*   r-  r   r   r	   r     s    z_NamespaceLoader.__init__c             C   s   d j  | j  S)Nz<module {!r} (namespace)>)r:   r   )r   r   r   r   r	   module_repr  s    z_NamespaceLoader.module_reprc             C   s   d S)NTr   )r   r   r   r   r	   r     s    z_NamespaceLoader.is_packagec             C   s   d S)Nr%   r   )r   r   r   r   r	   r    s    z_NamespaceLoader.get_sourcec             C   s   t  d d d d d S)Nr%   z<string>r   r  T)r  )r   r   r   r   r	   r     s    z_NamespaceLoader.get_codec             C   s   d  S)Nr   )r   r   r   r   r	   r     s    z_NamespaceLoader.create_modulec             C   s   d  S)Nr   )r   r   r   r   r	   r     s    z_NamespaceLoader.exec_modulec             C   s    t  d |  j  t j |  |  S)Nz&namespace module loaded with path {!r})r   r)  r   r   )r   r   r   r   r	   r     s    z_NamespaceLoader.load_moduleN)r   r   r   r   r   r>  r   r  r   r   r   r   r   r   r   r	   r=    s   	r=  c               @   s   e  Z d  Z e d d    Z e d d    Z e d d    Z e d d    Z e d	 d
 d   Z e d	 d	 d d   Z	 e d	 d d   Z
 d	 S)
PathFinderc             C   s7   x0 t  j j   D] } t | d  r | j   q Wd  S)Ninvalidate_caches)r   path_importer_cachevaluesr   r@  )r   finderr   r   r	   r@  /  s    zPathFinder.invalidate_cachesc             C   sk   t  j d  k	 r) t  j r) t j d t  x; t  j D], } y | |  SWq3 t k
 r^ w3 Yq3 Xq3 Wd  Sd  S)Nzsys.path_hooks is empty)r   
path_hooksrO   rP   r   r   )r   r*   hookr   r   r	   _path_hooks7  s    zPathFinder._path_hooksc             C   s{   | d k r5 y t  j   } Wn t k
 r4 d  SYn Xy t j | } Wn. t k
 rv |  j |  } | t j | <Yn X| S)Nr%   )r   r7   FileNotFoundErrorr   rA  r   rF  )r   r*   rC  r   r   r	   _path_importer_cacheH  s    	zPathFinder._path_importer_cachec             C   sw   t  | d  r' | j |  \ } } n | j |  } g  } | d  k	 rX t j | |  St j | d   } | | _ | S)Nr   )r   r   r   r   r   r   r   )r   r   rC  r   r   r   r   r   r	   _legacy_get_spec^  s    	zPathFinder._legacy_get_specNc       	      C   s   g  } x | D] } t  | t t f  s+ q |  j |  } | d  k	 r t | d  rj | j | |  } n |  j | |  } | d  k r q | j d  k	 r | S| j } | d  k r t	 d   | j
 |  q Wt j | d   } | | _ | Sd  S)Nr   zspec missing loader)r   rX   bytesrH  r   r   rI  r   r   r   r   r   r   )	r   r   r*   r   namespace_pathentryrC  r   r   r   r   r	   	_get_specm  s(    		zPathFinder._get_specc             C   s   | d  k r t  j } |  j | | |  } | d  k r: d  S| j d  k r | j } | r} d | _ t | | |  j  | _ | Sd  Sn | Sd  S)N	namespace)r   r*   rM  r   r   r   r'  )r   r   r*   r   r   rK  r   r   r	   r     s    			zPathFinder.find_specc             C   s)   |  j  | |  } | d  k r" d  S| j S)N)r   r   )r   r   r*   r   r   r   r	   r     s    zPathFinder.find_module)r   r   r   r   r@  rF  rH  rI  rM  r   r   r   r   r   r	   r?  +  s   r?  c               @   s   e  Z d  Z d d   Z d d   Z e Z d d   Z d d   Z d	 d
 d  Z	 d d   Z
 e d d    Z d d   Z d	 S)
FileFinderc                sz   g  } x4 | D], \   } | j    f d d   | D  q W| |  _ | pO d |  _ d |  _ t   |  _ t   |  _ d  S)Nc             3   s   |  ] } |   f Vq d  S)Nr   )r   r"  )r   r   r	   r$    s    z&FileFinder.__init__.<locals>.<genexpr>rM   r#   rt   )r   _loadersr*   _path_mtimeset_path_cache_relaxed_path_cache)r   r*   loader_detailsloadersr   r   )r   r	   r     s    $		zFileFinder.__init__c             C   s   d |  _  d  S)Nr#   rt   )rQ  )r   r   r   r	   r@    s    zFileFinder.invalidate_cachesc             C   s;   |  j  |  } | d  k r% d  g  f S| j | j p7 g  f S)N)r   r   r   )r   r   r   r   r   r	   r     s    
zFileFinder.find_loaderc             C   s(   | | |  } t  | | d | d | S)Nr   r   )r   )r   r   r   r*   smslr   r   r   r   r	   rM    s    zFileFinder._get_specNc             C   s  d } | j  d  d } y" t |  j p1 t j    j } Wn t k
 rU d	 } Yn X| |  j k rx |  j   | |  _ t	   r |  j
 } | j   } n |  j } | } | | k r-t |  j |  } xd |  j D]M \ }	 }
 d |	 } t | |  } t |  r |  j |
 | | | g |  Sq Wt |  } x{ |  j D]p \ }	 }
 t |  j | |	  } t d j |  d d | |	 | k r7t |  r7|  j |
 | | d  |  Sq7W| rt d j |   t j | d   } | g | _ | Sd  S)
NFrM   rJ   r#   r   z	trying {}r   zpossible namespace for {}rt   )r'   r0   r*   r   r7   r  r1   rQ  _fill_cacher
   rT  ru   rS  r"   rP  r6   rM  r8   r   r:   r   r   r   )r   r   r   is_namespacetail_moduler   cachecache_module	base_pathr"  r   init_filename	full_pathr   r   r   r	   r     sD    "
				
 zFileFinder.find_specc       	      C   s  |  j  } y t j | p! t j    } Wn! t t t f k
 rK g  } Yn Xt j j	 d  sp t
 |  |  _ no t
   } xZ | D]R } | j d  \ } } } | r d j | | j    } n | } | j |  q W| |  _ t j j	 t  rd d   | D |  _ d  S)Nr   rM   z{}.{}c             S   s   h  |  ] } | j     q Sr   )ru   )r   fnr   r   r	   	<setcomp>)  s   	 z)FileFinder._fill_cache.<locals>.<setcomp>)r*   r   listdirr7   rG  PermissionErrorNotADirectoryErrorr   r   r   rR  rS  rj   r:   ru   addr   rT  )	r   r*   contentslower_suffix_contentsr;  r   r/  r"  new_namer   r   r	   rX    s"    			zFileFinder._fill_cachec                s      f d d   } | S)Nc                s+   t  |   s t d d |     |    S)Nzonly directories are supportedr*   )r8   r   )r*   )r   rU  r   r	   path_hook_for_FileFinder5  s    z6FileFinder.path_hook.<locals>.path_hook_for_FileFinderr   )r   rU  ri  r   )r   rU  r	   	path_hook+  s    
zFileFinder.path_hookc             C   s   d j  |  j  S)NzFileFinder({!r}))r:   r*   )r   r   r   r	   r:  =  s    zFileFinder.__repr__)r   r   r   r   r@  r   r   r   rM  r   rX  r   rj  r:  r   r   r   r	   rO    s   	-rO  c             C   s   |  j  d  } |  j  d  } | sc | r6 | j } n- | | k rT t | |  } n t | |  } | s~ t | | d | } y, | |  d <| |  d <| |  d <| |  d <Wn t k
 r Yn Xd  S)N
__loader____spec__r   __file__
__cached__)getr   r  r  r   	Exception)nsr   pathname	cpathnamer   r   r   r   r	   _fix_up_moduleC  s"    


rt  c              C   s7   t  t j   f }  t t f } t t f } |  | | g S)N)r  r   extension_suffixesr  rk   r  r]   )
extensionssourcebytecoder   r   r	   r   Z  s    r   c             C   s'  |  a  t  j a t  j a t j t } xL d D]D } | t j k rS t  j |  } n t j | } t | | |  q, Wd d g f d d d g f f } xv | D]b \ } } | d	 } | t j k r t j | } Pq y t  j |  } PWq t k
 r w Yq Xq Wt d
   t | d |  t | d |  t | d d j |   y t  j d  }	 Wn t k
 rtd  }	 Yn Xt | d |	  t  j d  }
 t | d |
  | d k rt  j d  } t | d |  t | d t	    t
 j t j    | d k r#t j d  d t
 k r#d t _ d  S)Nr@   rO   builtinsr   posix/nt\rN   zimportlib requires posix or ntr   r   r   r%   _thread_weakrefwinregr   r
   z.pywz_d.pydT)r@   rO   ry  r   )r   r   r   r2  r   _builtin_from_namer   r   r    r   r&  r   ru  rk   r   r   r   )_bootstrap_moduleself_modulebuiltin_namebuiltin_module
os_details
builtin_osr   r   	os_modulethread_moduleweakref_modulewinreg_moduler   r   r	   _setupe  sP    		!
r  c             C   st   t  |   t   } t j j t j |   g  t j d k rN t j	 j
 t  t j	 j
 t  t |  _ t |  _ d  S)Nr|  )r  r   r   rD  r   rO  rj  r   r   	meta_pathr   r   r?  r  )r  supported_loadersr   r   r	   _install  s    
		r  )r   )r   r   )=r   %_CASE_INSENSITIVE_PLATFORMS_BYTES_KEYr   r   r   r   r"   r.   r0   r5   r6   r8   rI   type__code__r   r   r   r   r   _RAW_MAGIC_NUMBERZ_msgSystemErrorr   r\   r[   rk   r]   DEBUG_BYTECODE_SUFFIXESOPTIMIZED_BYTECODE_SUFFIXESrf   rq   ry   r}   r   r   r   r   r   r   r   r   objectr   r   r   r   r   r  r  r  r&  r  r'  r=  r?  rO  rt  r   r  r  r   r   r   r	   <module>   sp   
	r		
,!9
	A@n)+59)D