ÿØÿà JFIF      ÿÛ C      

!"$"$ÿÛ C  ÿÂ p " ÿÄ              ÿÄ             ÿÚ    ÕÔË®
(%	aA*‚XYD¡(J„¡E¢RE,P€XYae )(E¤²€B¤R¥	BQ¤¢ X«)X…€¤   @  

  ..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ C      

!"$"$ÿÛ C  ÿÂ p " ÿÄ              ÿÄ             ÿÚ    ÕÔË®
(%	aA*‚XYD¡(J„¡E¢RE,P€XYae )(E¤²€B¤R¥	BQ¤¢ X«)X…€¤   @  

  ..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     
;;Wgc           @   s2  d  d d g Z  d d l Z d d l Z d d l Z d d l Z y e j j e j    Z Wn e	 k
 rt d Z n Xd   Z d   Z d   Z d  e f d     YZ d	 e f d
     YZ d e f d     YZ e   a [ i  Z xG e j j   D]6 \ Z Z e d  d k r d e k r e e e <q q Wd S(   t   Processt   current_processt   active_childreniNc           C   s   t  S(   s@   
    Return process object representing the current process
    (   t   _current_process(    (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR   ;   s    c           C   s   t    t t j  S(   sN   
    Return list of process objects corresponding to live child processes
    (   t   _cleanupt   listR   t	   _children(    (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR   A   s    c          C   sF   x? t  t j  D]. }  |  j j   d  k	 r t j j |   q q Wd  S(   N(   R   R   R   t   _popent   pollt   Nonet   discard(   t   p(    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR   L   s    c           B   s   e  Z d  Z d Z d d d d i  d  Z d   Z d   Z d   Z d d  Z	 d   Z
 e d    Z e j d    Z e d	    Z e j d
    Z e d    Z e j d    Z e d    Z e d    Z e Z d   Z d   Z RS(   s   
    Process objects represent activity that is run in a separate process

    The class is analagous to `threading.Thread`
    c         C   s   | d  k s t d   t j j   } t j | f |  _ t j |  _ t j |  _ t j |  _ t	 j
   |  _ d  |  _ | |  _ t |  |  _ t |  |  _ | p t |   j d d j d   |  j D  |  _ d  S(   Ns#   group argument must be None for nowt   -t   :c         s   s   |  ] } t  |  Vq d  S(   N(   t   str(   t   .0t   i(    (    s-   /usr/lib/python2.7/multiprocessing/process.pys	   <genexpr>k   s    (   R	   t   AssertionErrorR   t   _countert   nextt	   _identityt   _authkeyt	   _daemonict   _tempdirt   ost   getpidt   _parent_pidR   t   _targett   tuplet   _argst   dictt   _kwargst   typet   __name__t   joint   _name(   t   selft   groupt   targett   namet   argst   kwargst   count(    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt   __init__^   s    		c         C   s&   |  j  r" |  j  |  j |  j   n  d S(   sQ   
        Method to be run in sub-process; can be overridden in sub-class
        N(   R   R   R   (   R$   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt   runm   s    	c         C   s   |  j  d k s t d   |  j t j   k s< t d   t j sR t d   t   |  j	 d k	 rt |  j	 } n d d l
 m } | |   |  _  |  ` |  ` |  ` t j j |   d S(   s%   
        Start child process
        s   cannot start a process twices:   can only start a process object created by current processs3   daemonic processes are not allowed to have childreni   (   t   PopenN(   R   R	   R   R   R   R   R   R   R   t   _Popent   forkingR-   R   R   R   R   t   add(   R$   R-   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt   startt   s    		c         C   s   |  j  j   d S(   sT   
        Terminate process; sends SIGTERM signal or uses TerminateProcess()
        N(   R   t	   terminate(   R$   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR2      s    c         C   sq   |  j  t j   k s! t d   |  j d k	 s< t d   |  j j |  } | d k	 rm t j j	 |   n  d S(   s5   
        Wait until child process terminates
        s   can only join a child processs   can only join a started processN(
   R   R   R   R   R   R	   t   waitR   R   R
   (   R$   t   timeoutt   res(    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR"      s
    !c         C   s{   |  t  k r t S|  j t j   k s1 t d   |  j d k rD t S|  j j	   } | d k rc t St  j
 j |   t Sd S(   s1   
        Return whether process is alive
        s   can only test a child processN(   R   t   TrueR   R   R   R   R   R	   t   FalseR   R   R
   (   R$   t
   returncode(    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt   is_alive   s    !c         C   s   |  j  S(   N(   R#   (   R$   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR'      s    c         C   s(   t  | t  s t d   | |  _ d  S(   Ns   name must be a string(   t
   isinstancet
   basestringR   R#   (   R$   R'   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR'      s    c         C   s   |  j  S(   s4   
        Return whether process is a daemon
        (   R   (   R$   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt   daemon   s    c         C   s(   |  j  d k s t d   | |  _ d S(   s1   
        Set whether process is a daemon
        s   process has already startedN(   R   R	   R   R   (   R$   t   daemonic(    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR<      s    c         C   s   |  j  S(   N(   R   (   R$   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt   authkey   s    c         C   s   t  |  |  _ d S(   s2   
        Set authorization key of process
        N(   t   AuthenticationStringR   (   R$   R>   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR>      s    c         C   s#   |  j  d k r |  j  S|  j  j   S(   sM   
        Return exit code of process or `None` if it has yet to stop
        N(   R   R	   R   (   R$   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt   exitcode   s    c         C   s-   |  t  k r t j   S|  j o( |  j j Sd S(   sU   
        Return identifier (PID) of process or `None` if it has yet to start
        N(   R   R   R   R   t   pid(   R$   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt   ident   s    
c         C   s   |  t  k r d } n] |  j t j   k r3 d } n? |  j d  k rK d } n' |  j j   d  k	 rl |  j } n d } t |  t	 t
 f k r | d k r d } q d t j | |  } n  d t |   j |  j | |  j r d p d	 f S(
   Nt   startedt   unknownt   initiali    t   stoppeds   stopped[%s]s   <%s(%s, %s%s)>s    daemont    (   R   R   R   R   R   R	   R   R@   R    t   intt   longt   _exitcode_to_namet   getR!   R#   R   (   R$   t   status(    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt   __repr__   s    				c         C   s  d d l  m } y t   |  _ t j d  |  _ y# t j j	   t
 t j  t _ Wn t t f k
 rm n X|  a | j j   | j   | j d  z |  j   d } Wd  | j   XWn t k
 rH} | j s d } qt | j d t t f  rt | j d  } qt j j t | j d  d  t j j   d } nG d } d d  l } t j j d |  j   t j j   | j!   n X| j d |  | S(	   Ni   (   t   utils    child process calling self.run()i    s   
is   Process %s:
s    process exiting with exitcode %d("   RG   RN   t   setR   t	   itertoolsR*   R   t   syst   stdint   closet   openR   t   devnullt   OSErrort
   ValueErrorR   t   _finalizer_registryt   cleart   _run_after_forkerst   infoR,   t   _exit_functiont
   SystemExitR(   R:   RH   RI   t   stderrt   writeR   t   flusht	   tracebackR'   t	   print_exc(   R$   RN   R@   t   eRa   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt
   _bootstrap   sB    


		!	N(    (   R!   t
   __module__t   __doc__R	   R.   R+   R,   R1   R2   R"   R9   t   propertyR'   t   setterR<   R>   R@   RB   RA   RM   Rd   (    (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR    V   s&   			
		
	R?   c           B   s   e  Z d    Z RS(   c         C   s>   d d l  m } | j   s+ t d   n  t t |   f f S(   Ni   (   R-   sJ   Pickling an AuthenticationString object is disallowed for security reasons(   R/   R-   t   thread_is_spawningt	   TypeErrorR?   t   bytes(   R$   R-   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt
   __reduce__'  s
    (   R!   Re   Rl   (    (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR?   &  s   t   _MainProcessc           B   s   e  Z d    Z RS(   c         C   sp   d |  _  t |  _ d |  _ d  |  _ d  |  _ t j d  |  _	 t
   |  _ t t j d   |  _ d  |  _ d  S(   Nt   MainProcessi   i    (    (   R   R7   R   R#   R	   R   R   RP   R*   R   RO   R   R?   R   t   urandomR   R   (   R$   (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyR+   6  s    					(   R!   Re   R+   (    (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyRm   4  s   i   t   SIGt   _(   t   __all__R   RQ   t   signalRP   t   patht   abspatht   getcwdt   ORIGINAL_DIRRV   R	   R   R   R   t   objectR    Rk   R?   Rm   R   RJ   t   __dict__t   itemsR'   t   signum(    (    (    s-   /usr/lib/python2.7/multiprocessing/process.pyt   <module>#   s(   
			
	