JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў f"c @sadddgZddlZddlZddlZddlZddlmZyejjej Z Wne k rdZ YnXddZ ddZdd ZGd ddeZGd d d eZGd ddeZea[iZxSeejjD]<\ZZedddkrdekreee Wsu#Process.__init__..(unextu_current_processu_counteru _identityu_authkeyuNoneu _daemonicu_tempdiruosugetpidu _parent_pidu_popenu_targetutupleu_argsudictu_kwargsutypeu__name__ujoinu_nameu _danglinguadd(uselfugrouputargetunameuargsukwargsudaemonucount((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu__init__Fs       #uProcess.__init__cCs&|jr"|j|j|jndS(uQ Method to be run in sub-process; can be overridden in sub-class N(u_targetu_argsu_kwargs(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyurunZs u Process.runcCsdt|jdk r"|j}nddlm}|||_|jj|_tj j |dS(u% Start child process i(uPopenN( u_cleanupu_PopenuNoneuforkinguPopenu_popenusentinelu _sentinelu_current_processu _childrenuadd(uselfuPopen((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyustartas  u Process.startcCs|jjdS(uT Terminate process; sends SIGTERM signal or uses TerminateProcess() N(u_popenu terminate(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu terminatessuProcess.terminatecCs5|jj|}|dk r1tjj|ndS(u5 Wait until child process terminates N(u_popenuwaituNoneu_current_processu _childrenudiscard(uselfutimeoutures((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyujoinys u Process.joincCs@|tkrdS|jdkr#dS|jj|jjdkS(u1 Return whether process is alive TNF(u_current_processuTrueu_popenuNoneuFalseupollu returncode(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuis_alives   uProcess.is_alivecCs|jS(N(u_name(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyunamesu Process.namecCs ||_dS(N(u_name(uselfuname((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyunamescCs|jS(u4 Return whether process is a daemon (u _daemonic(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyudaemonsuProcess.daemoncCs ||_dS(u1 Set whether process is a daemon N(u _daemonic(uselfudaemonic((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyudaemonscCs|jS(N(u_authkey(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuauthkeysuProcess.authkeycCst||_dS(u2 Set authorization key of process N(uAuthenticationStringu_authkey(uselfuauthkey((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuauthkeyscCs#|jdkr|jS|jjS(uM Return exit code of process or `None` if it has yet to stop N(u_popenuNoneupoll(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuexitcodesuProcess.exitcodecCs-|tkrtjS|jo(|jjSdS(uU Return identifier (PID) of process or `None` if it has yet to start N(u_current_processuosugetpidu_popenupid(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuidents  u Process.identc Cs0y |jSWntk r+tdYnXdS(u{ Return a file descriptor (Unix) or handle (Windows) suitable for waiting for process termination. uprocess not startedN(u _sentineluAttributeErroru ValueError(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyusentinels  uProcess.sentinelcCs|tkrd}n]|jtjkr3d}n?|jdkrKd}n'|jjdk rl|j}nd}t|t kr|dkrd}qdt j ||}ndt|j |j ||jrdpd fS( Nustarteduunknownuinitialiustoppedu stopped[%s]u<%s(%s, %s%s)>u daemonu(u_current_processu _parent_piduosugetpidu_popenuNoneupolluexitcodeutypeuintu_exitcode_to_nameugetu__name__u_nameu _daemonic(uselfustatus((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu__repr__s       uProcess.__repr__c(Csddlm}zyt|_tjd|_tjdk ry#tjj t t j t_Wqttfk rYqXnt}|az|jj|jWd~X|jdz|jd}Wd|jXWntk rh}zd|js d}nMt|jdtr/|jd}n'tjjt|jddd}WYdd}~Xn;d}ddl}tjjd|j|j YnXWd|jd|tj!j"tjj"X|S(Ni(uutilu child process calling self.run()iu u Process %s: u process exiting with exitcode %d(#uuutilusetu _childrenu itertoolsucountu_counterusysustdinuNoneucloseuopenuosudevnulluOSErroru ValueErroru_current_processu_finalizer_registryuclearu_run_after_forkersuinfourunu_exit_functionu SystemExituargsu isinstanceuintustderruwriteustru tracebackunameu print_excustdoutuflush(uselfuutilu old_processuexitcodeueu traceback((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu _bootstrapsJ        !  uProcess._bootstrapN(u__name__u __module__u __qualname__u__doc__uNoneu_Popenu__init__urunustartu terminateujoinuis_aliveupropertyunameusetterudaemonuauthkeyuexitcodeuidentupidusentinelu__repr__u _bootstrap(u __locals__((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuProcess>s*       cBs |EeZdZddZdS(uAuthenticationStringcCs>ddlm}|js+tdntt|ffS(Ni(uPopenuJPickling an AuthenticationString object is disallowed for security reasons(uforkinguPopenuthread_is_spawningu TypeErroruAuthenticationStringubytes(uselfuPopen((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu __reduce__s   uAuthenticationString.__reduce__N(u__name__u __module__u __qualname__u __reduce__(u __locals__((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyuAuthenticationStringsuAuthenticationStringcBs |EeZdZddZdS(u _MainProcesscCspf|_d|_d|_d|_d|_tjd|_ t |_ t t jd|_d|_dS(Nu MainProcessii F(u _identityuFalseu _daemonicu_nameuNoneu _parent_pidu_popenu itertoolsucountu_counterusetu _childrenuAuthenticationStringuosuurandomu_authkeyu_tempdir(uself((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu__init__.s      u_MainProcess.__init__N(u__name__u __module__u __qualname__u__init__(u __locals__((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu _MainProcess,su _MainProcessiuSIGu_(u__all__uosusysusignalu itertoolsu _weakrefsetuWeakSetupathuabspathugetcwdu ORIGINAL_DIRuOSErroruNoneucurrent_processuactive_childrenu_cleanupuobjectuProcessubytesuAuthenticationStringu _MainProcessu_current_processu_exitcode_to_nameulistu__dict__uitemsunameusignumu _dangling(((u</opt/alt/python33/lib64/python3.3/multiprocessing/process.pyu s,         ""