§
    ±ÛgXa  ã                   ó  — d 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	 ddl
mZ ddl
mZ ddl
mZ dd	l
mZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ g d¢Z ej        ¦   «         Zej         Z ej!        dk    Z"dZ#dZ$ej%        ej&        ej'        ej(        ej)        ej*        ej+        ej,        ej-        ej.        ej/        ej(        ej0        ej1        iZ2ej3        ej4        ej5        ej6        ej7        ej8        ej9        ej:        ej;        ej<        ej=        ej>        ej?        ej@        ejA        ejB        ejC        ejD        ejE        ejF        ejG        ejH        ejI        ejJ        ejK        e#ejL        e$iZM eNddddddddd d!d"d#¬$¦  «        ZO ed%g d&¢¦  «        ZP ed'g d(¢¦  «        ZQ ed)g d*¢¦  «        ZR ed+d,d-g¦  «        ZSeSZT ed.g d/¢¦  «        ZU ed0d1d2 V                    eUjW        ¦  «        z   ¦  «        ZXd3„ ZYd4„ ZZd5„ Z[d6„ Z\d7„ Z]d8„ Z^d9„ Z_ej`        Z`eja        ZadFd;„Zbejc        Zcejd        ZddGd=„Zed>„ Zfd?„ Zgd@„ ZhdA„ ZidB„ ZjdC„ Zk G dD„ dE¦  «        ZldS )Hz'Sun OS Solaris platform implementation.é    N)Ú
namedtuple)ÚAF_INETé   )Ú_common)Ú_psposix)Ú_psutil_posix)Ú_psutil_sunos)ÚAF_INET6)ÚENCODING)ÚAccessDenied)ÚNoSuchProcess)ÚZombieProcess)Údebug)Úget_procfs_path)Úisfile_strict)Úmemoize_when_activated)Úsockfam_to_enum)Úsocktype_to_enum)Úusage_percent)Ú	CONN_IDLEÚ
CONN_BOUNDÚPROCFS_PATHl        ÚIDLEÚBOUNDé   é   é   é   é   é   é   é	   é
   é   )ÚppidÚrssÚvmsÚcreate_timeÚniceÚnum_threadsÚstatusÚttynrÚuidÚeuidÚgidÚegidÚ	scputimes)ÚuserÚsystemÚidleÚiowaitÚ	pcputimes)r2   r3   Úchildren_userÚchildren_systemÚsvmem)ÚtotalÚ	availableÚpercentÚusedÚfreeÚpmemr&   r'   Úpmmap_grouped)Úpathr&   Ú	anonymousÚlockedÚ	pmmap_extzaddr perms ú c                  óÊ   — t          j        d¦  «        t          z  } t          j        d¦  «        t          z  x}}| |z
  }t          || d¬¦  «        }t	          | ||||¦  «        S )zReport virtual memory metrics.ÚSC_PHYS_PAGESÚSC_AVPHYS_PAGESr   ©Úround_)ÚosÚsysconfÚ	PAGE_SIZEr   r9   )r:   r>   Úavailr=   r<   s        úE/granary/edev/quantum/lib/python3.11/site-packages/psutil/_pssunos.pyÚvirtual_memoryrP   {   se   € õ ŒJ�Ñ'Ô'­)Ñ3€Eå”:Ð/Ñ0Ô0µ9Ñ<Ð<€Dˆ5Ø�4‰<€DÝ˜D %°Ð2Ñ2Ô2€GÝ�˜˜w¨¨dÑ3Ô3Ð3ó    c            	      ó<  — t          j        ¦   «         \  } }t          j        ddt          j        d         › �ddgt          j        ¬¦  «        }|                     ¦   «         \  }}|                     t          j
        j        ¦  «        }|j        dk    rd|j        › d	�}t          |¦  «        ‚|                     ¦   «                              d
¦  «        dd…         }|sd}t          |¦  «        ‚dx}}|D ]g}	|	                     ¦   «         }	|	dd…         \  }
}|t!          t!          |
¦  «        dz  ¦  «        z  }|t!          t!          |¦  «        dz  ¦  «        z  }Œh||z
  }t#          ||d¬¦  «        }t%          j        ||||| t(          z  |t(          z  ¦  «        S )zReport swap memory metrics.z/usr/bin/envzPATH=/usr/sbin:/sbin:ÚPATHÚswapz-l)Ústdoutr   z'swap -l' failed (retcode=ú)ú
r   Nzno swap device(s) configuredr   r   i   rI   )ÚcextÚswap_memÚ
subprocessÚPopenrK   ÚenvironÚPIPEÚcommunicateÚdecodeÚsysrU   ÚencodingÚ
returncodeÚRuntimeErrorÚstripÚsplitÚintr   r   ÚsswaprM   )ÚsinÚsoutÚprU   Ú_ÚmsgÚlinesr:   r>   ÚlineÚtÚfr=   r<   s                 rO   Úswap_memoryrq   †   sž  € å”‘”�I€Cˆõ 	ÔàØ8¥B¤J¨vÔ$6Ð8Ð8ØØð		
õ Œð	ñ 	ô 	€Að —’‘”�I€FˆAØ�]Š]�3œ:Ô.Ñ/Ô/€FØ„|�qÒÐØ:¨1¬<Ð:Ð:Ð:ˆÝ˜3ÑÔÐà�LŠL‰NŒN× Ò  Ñ&Ô& q r rÔ*€EØð  Ø,ˆÝ˜3ÑÔÐØÐ€EˆDØð "ð "ˆØ�zŠz‰|Œ|ˆØ�A�a�CŒy‰ˆˆ1Ø••S˜‘V”V˜c‘\Ñ"Ô"Ñ"ˆØ••C˜‘F”F˜S‘LÑ!Ô!Ñ!ˆˆØ�4‰<€DÝ˜D %°Ð2Ñ2Ô2€GÝŒ=Øˆt�T˜7 C­)¡O°T½IÑ5Eñô ð rQ   c                  ó\   — t          j        ¦   «         } t          d„ t          | Ž D ¦   «         Ž S )z.Return system-wide CPU times as a named tuple.c                 ó,   — g | ]}t          |¦  «        ‘ŒS © )Úsum©Ú.0Úxs     rO   ú
<listcomp>zcpu_times.<locals>.<listcomp>·   s   € Ð1Ð1Ð1 !•s˜1‘v”vÐ1Ð1Ð1rQ   )rX   Úper_cpu_timesr1   Úzip©Úrets    rO   Ú	cpu_timesr~   ´   s.   € å
Ô
Ñ
Ô
€CÝÐ1Ð1¥s¨C yÐ1Ñ1Ô1Ð2Ð2rQ   c                  ó@   — t          j        ¦   «         } d„ | D ¦   «         S )z6Return system per-CPU times as a list of named tuples.c                 ó    — g | ]}t          |Ž ‘ŒS rt   )r1   rv   s     rO   ry   z!per_cpu_times.<locals>.<listcomp>½   s   € Ð'Ð'Ð'˜a�I�qˆMÐ'Ð'Ð'rQ   )rX   rz   r|   s    rO   rz   rz   º   s$   € å
Ô
Ñ
Ô
€CØ'Ð' 3Ð'Ñ'Ô'Ð'rQ   c                  óN   — 	 t          j        d¦  «        S # t          $ r Y dS w xY w)z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNN)rK   rL   Ú
ValueErrorrt   rQ   rO   Úcpu_count_logicalr„   À   s:   € ðÝŒzÐ/Ñ0Ô0Ð0øÝð ð ð àˆtˆtðøøøs   ‚ –
$£$c                  ó(   — t          j        ¦   «         S )z-Return the number of CPU cores in the system.)rX   Úcpu_count_coresrt   rQ   rO   r†   r†   É   s   € åÔÑ!Ô!Ð!rQ   c                  ód   — t          j        ¦   «         \  } }}}d}t          j        | |||¦  «        S )z*Return various CPU stats as a named tuple.r   )rX   Ú	cpu_statsr   Ú	scpustats)Úctx_switchesÚ
interruptsÚsyscallsÚ_trapsÚsoft_interruptss        rO   rˆ   rˆ   Î   s;   € å15´Ñ1AÔ1AÑ.€L�*˜h¨Ø€OÝÔØ�j /°8ñô ð rQ   Fc                 ó:  — g }t          j        ¦   «         }|D ]‚}|\  }}}}|dk    rd}| sC	 t          |¦  «        j        sŒ)n,# t          $ r}t          d|›d|› �¦  «         Y d}~ŒNd}~ww xY wt          j        ||||¦  «        }	|                     |	¦  «         Œƒ|S )zReturn system disk partitions.ÚnoneÚ z	skipping z: N)	rX   Údisk_partitionsÚ
disk_usager:   ÚOSErrorr   r   Ú	sdiskpartÚappend)
ÚallÚretlistÚ
partitionsÚ	partitionÚdeviceÚ
mountpointÚfstypeÚoptsÚerrÚntuples
             rO   r’   r’   à   sç   € ð €GÝÔ%Ñ'Ô'€JØð ð ˆ	Ø+4Ñ(ˆ�
˜F DØ�VÒÐØˆFØð 
	ðÝ! *Ñ-Ô-Ô3ð Øðøåð ð ð åÐ7 *Ð7Ð7°#Ð7Ð7Ñ8Ô8Ð8Ø����øøøøðøøøõ Ô" 6¨:°v¸tÑDÔDˆØ�Š�vÑÔÐÐØ€Ns   ¬AÁ
A+ÁA&Á&A+éÿÿÿÿc           
      ó  — t           j        |          \  }}t          j        |¦  «        }t	          ¦   «         }|D ]À}|\  }}}	}
}}}||vrŒ|	|vrŒ|t
          t          hv r |
rt          j        |
Ž }
|rt          j        |Ž }t          |         }t          |¦  «        }t          |	¦  «        }	|dk    rt          j        |||	|
|||¦  «        }nt          j        |||	|
||¦  «        }|                     |¦  «         ŒÁt          |¦  «        S )z»Return socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    Only INET sockets are returned (UNIX are not).
    r¡   )r   Ú	conn_tmaprX   Únet_connectionsÚsetr   r
   ÚaddrÚTCP_STATUSESr   r   ÚsconnÚpconnÚaddÚlist)ÚkindÚ_pidÚfamiliesÚtypesÚrawlistr}   ÚitemÚfdÚfamÚtype_ÚladdrÚraddrr+   ÚpidÚnts                  rO   r¤   r¤     s%  € õ
 Ô'¨Ô-�O€HˆeÝÔ" 4Ñ(Ô(€GÝ
‰%Œ%€CØð ð ˆØ48Ñ1ˆˆC�˜˜u f¨cØ�hÐÐØØ˜ÐÐØà•7�HÐ%Ð%Ð%Øð -Ýœ eÐ,�Øð -Ýœ eÐ,�Ý˜fÔ%ˆÝ˜cÑ"Ô"ˆÝ  Ñ'Ô'ˆØ�2Š:ˆ:Ý”˜r 3¨¨u°e¸VÀSÑIÔIˆBˆBå”˜r 3¨¨u°e¸VÑDÔDˆBØ�Š�‰ŒˆˆÝ�‰9Œ9ÐrQ   c                  óö   — t          j        ¦   «         } |                      ¦   «         D ]P\  }}|\  }}}}t          t          d¦  «        rt	          j        |¦  «        }t	          j        ||||d¦  «        | |<   ŒQ| S )z)Get NIC stats (isup, duplex, speed, mtu).Ú	NicDuplexr‘   )rX   Únet_if_statsÚitemsÚhasattrr   rº   Ú	snicstats)r}   Únamer¼   ÚisupÚduplexÚspeedÚmtus          rO   r»   r»   "  s€   € å
Ô
Ñ
Ô
€CØ—y’y‘{”{ð Dð D‰ˆˆeØ#(Ñ ˆˆf�e˜SÝ•7˜KÑ(Ô(ð 	/ÝÔ& vÑ.Ô.ˆFÝÔ% d¨F°E¸3ÀÑCÔCˆˆD‰	ˆ	Ø€JrQ   c                  ó(   — t          j        ¦   «         S )z:The system boot time expressed in seconds since the epoch.)rX   Ú	boot_timert   rQ   rO   rÅ   rÅ   2  s   € åŒ>ÑÔÐrQ   c                  ó¼   — g } t          j        ¦   «         }d}|D ]A}|\  }}}}}}	|sŒ||v rd}t          j        |||||	¦  «        }
|                      |
¦  «         ŒB| S )z:Return currently connected users as a list of namedtuples.)z:0.0z:0Ú	localhost)rX   Úusersr   Úsuserr–   )r˜   r°   rÇ   r±   r2   ÚttyÚhostnameÚtstampÚuser_processr·   r¸   s              rO   rÈ   rÈ   7  s†   € à€GÝŒj‰lŒl€GØ€IØð 
ð 
ˆØ9=Ñ6ˆˆc�8˜V \°3ð ð 	ØØ�yÐ Ð Ø"ˆHÝŒ]˜4  h°¸Ñ<Ô<ˆØ�Š�rÑÔÐÐØ€NrQ   c                  óŠ   — t          ¦   «                              t          ¦  «        } d„ t          j        | ¦  «        D ¦   «         S )z7Returns a list of PIDs currently running on the system.c                 óT   — g | ]%}|                      ¦   «         ¯t          |¦  «        ‘Œ&S rt   )Úisdigitrf   rv   s     rO   ry   zpids.<locals>.<listcomp>R  s+   € Ð<Ð<Ð<�q°·	²	±´Ð<�C�‰FŒFÐ<Ð<Ð<rQ   )r   Úencoder   rK   Úlistdir)rA   s    rO   ÚpidsrÓ   O  s9   € åÑÔ×#Ò#¥HÑ-Ô-€DØ<Ð<�BœJ tÑ,Ô,Ð<Ñ<Ô<Ð<rQ   c                 ó*   — t          j        | ¦  «        S )z&Check for the existence of a unix pid.)r   Ú
pid_exists)r·   s    rO   rÕ   rÕ   U  s   € åÔ˜sÑ#Ô#Ð#rQ   c                 óF   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }|S )zƒCall callable into a try/except clause and translate ENOENT,
    EACCES and EPERM in NoSuchProcess or AccessDenied exceptions.
    c                 ó†  •— | j         | j        | j        }}}	  ‰| g|¢R i |¤ŽS # t          t          f$ r7}t          |¦  «        st          ||¦  «        |‚t          |||¦  «        |‚d }~wt          $ r}t          ||¦  «        |‚d }~wt          $ r.}|dk    r"dt          ¦   «         v rt          ||¦  «        |‚‚ ‚ d }~ww xY w©Nr   )r·   Ú_ppidÚ_nameÚFileNotFoundErrorÚProcessLookupErrorrÕ   r   r   ÚPermissionErrorr   r”   rÓ   )ÚselfÚargsÚkwargsr·   r%   r¿   rŸ   Úfuns          €rO   Úwrapperz wrap_exceptions.<locals>.wrapper_  s  ø€ àœ( D¤J°´
�4ˆTˆð	Ø�3�tÐ-˜dÐ-Ð-Ð- fÐ-Ð-Ð-øÝ!Õ#5Ð6ð 	:ð 	:ð 	:õ ˜c‘?”?ð 8Ý# C¨Ñ.Ô.°CÐ7Ý  T¨4Ñ0Ô0°cÐ9øøøøÝð 	3ð 	3ð 	3Ý˜s DÑ)Ô)¨sÐ2øøøøÝð 	ð 	ð 	Ø�aŠxˆxØ�™œ�;�;Ý& s¨DÑ1Ô1°sÐ:ØØøøøøð	øøøs,   ˜$ ¤C µ2A'Á'C Á4BÂC Â)B;Â;C )Ú	functoolsÚwraps)rá   râ   s   ` rO   Úwrap_exceptionsrå   Z  s:   ø€ õ
 „_�SÑÔðð ð ð ñ Ôðð( €NrQ   c                   óò  — e Zd ZdZg d¢Zd„ Zd„ Zd„ Zd„ Ze	e
d„ ¦   «         ¦   «         Ze	e
d„ ¦   «         ¦   «         Ze	e
d	„ ¦   «         ¦   «         Ze	d
„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         Ze	d„ ¦   «         ZeZe	d„ ¦   «         Ze	d„ ¦   «         Z e	d„ ¦   «         Z!d„ Z"e	d(d„¦   «         Z# e$d d!¦  «        Z% e$d d"¦  «        Z&e	d#„ ¦   «         Z'e	d$„ ¦   «         Z(e	d%„ ¦   «         Z)e	d)d'„¦   «         Z*d&S )*ÚProcessz1Wrapper class around underlying C implementation.)Ú_cacherÚ   rÙ   Ú_procfs_pathr·   c                 óV   — || _         d | _        d | _        t          ¦   «         | _        d S ©N)r·   rÚ   rÙ   r   ré   )rÞ   r·   s     rO   Ú__init__zProcess.__init__|  s+   € ØˆŒØˆŒ
ØˆŒ
Ý+Ñ-Ô-ˆÔÐÐrQ   c                 óL   — t          j        | j        › d| j        › �¦  «         dS )z+Raise NSP if the process disappeared on us.ú/N)rK   Ústatré   r·   ©rÞ   s    rO   Ú_assert_alivezProcess._assert_alive‚  s-   € õ 	Œ�4Ô$Ð1Ð1 t¤xÐ1Ð1Ñ2Ô2Ð2Ð2Ð2rQ   c                 ó¢   — | j                              | ¦  «         | j                             | ¦  «         | j                             | ¦  «         d S rë   )Ú_proc_name_and_argsÚcache_activateÚ_proc_basic_infoÚ
_proc_credrð   s    rO   Úoneshot_enterzProcess.oneshot_enterˆ  sL   € ØÔ ×/Ò/°Ñ5Ô5Ð5ØÔ×,Ò,¨TÑ2Ô2Ð2ØŒ×&Ò& tÑ,Ô,Ð,Ð,Ð,rQ   c                 ó¢   — | j                              | ¦  «         | j                             | ¦  «         | j                             | ¦  «         d S rë   )ró   Úcache_deactivaterõ   rö   rð   s    rO   Úoneshot_exitzProcess.oneshot_exit�  sL   € ØÔ ×1Ò1°$Ñ7Ô7Ð7ØÔ×.Ò.¨tÑ4Ô4Ð4ØŒ×(Ò(¨Ñ.Ô.Ð.Ð.Ð.rQ   c                 ó@   — t          j        | j        | j        ¦  «        S rë   )rX   Úproc_name_and_argsr·   ré   rð   s    rO   ró   zProcess._proc_name_and_args’  s   € õ Ô& t¤x°Ô1BÑCÔCÐCrQ   c                 ó.  — | j         dk    rCt          j                             | j        › d| j         › d�¦  «        st          | j         ¦  «        ‚t          j        | j         | j        ¦  «        }t          |¦  «        t          t          ¦  «        k    sJ ‚|S )Nr   rî   z/psinfo)
r·   rK   rA   Úexistsré   r   rX   Úproc_basic_infoÚlenÚproc_info_map)rÞ   r}   s     rO   rõ   zProcess._proc_basic_info—  s‰   € ð Œ8�qŠ=ˆ=¥¤§¢ØÔ Ð4Ð4 4¤8Ð4Ð4Ð4ñ"
ô "
ˆ=õ ˜tœxÑ(Ô(Ð(ÝÔ" 4¤8¨TÔ->Ñ?Ô?ˆÝ�3‰xŒx�3�}Ñ-Ô-Ò-Ð-Ð-Ð-Øˆ
rQ   c                 ó@   — t          j        | j        | j        ¦  «        S rë   )rX   Ú	proc_credr·   ré   rð   s    rO   rö   zProcess._proc_cred¢  s   € õ Œ~˜dœh¨Ô(9Ñ:Ô:Ð:rQ   c                 ó6   — |                       ¦   «         d         S rØ   )ró   rð   s    rO   r¿   zProcess.name§  s   € ð ×'Ò'Ñ)Ô)¨!Ô,Ð,rQ   c                 ó˜   — 	 t          j        | j        › d| j        › d�¦  «        S # t          $ r Y nw xY w|                      ¦   «          dS )Nrî   z/path/a.outr‘   )rK   Úreadlinkré   r·   r”   Úcmdlinerð   s    rO   ÚexezProcess.exe¬  sa   € ð	Ý”; $Ô"3ÐKÐK°d´hÐKÐKÐKÑLÔLÐLøÝð 	ð 	ð 	ØˆDð	øøøð
 	�Š‰ŒˆØˆrs   ‚#& ¦
3²3c                 ó\   — |                       ¦   «         d                              d¦  «        S )Nr   rE   )ró   re   rð   s    rO   r  zProcess.cmdline¸  s'   € à×'Ò'Ñ)Ô)¨!Ô,×2Ò2°3Ñ7Ô7Ð7rQ   c                 ó@   — t          j        | j        | j        ¦  «        S rë   )rX   Úproc_environr·   ré   rð   s    rO   r\   zProcess.environ¼  ó   € åÔ  ¤¨4Ô+<Ñ=Ô=Ð=rQ   c                 óL   — |                       ¦   «         t          d                  S )Nr(   ©rõ   r  rð   s    rO   r(   zProcess.create_timeÀ  ó   € à×$Ò$Ñ&Ô&¥}°]Ô'CÔDÐDrQ   c                 óL   — |                       ¦   «         t          d                  S )Nr*   r  rð   s    rO   r*   zProcess.num_threadsÄ  r  rQ   c                 óL   — |                       ¦   «         t          d                  S )Nr)   r  rð   s    rO   Únice_getzProcess.nice_getÈ  s    € ð
 ×$Ò$Ñ&Ô&¥}°VÔ'<Ô=Ð=rQ   c                 ó|   — | j         dv rt          | j         | j        ¦  «        ‚t          j        | j         |¦  «        S )N>   r   r   )r·   r   rÚ   Ú
cext_posixÚsetpriority)rÞ   Úvalues     rO   Únice_setzProcess.nice_setÏ  s:   € àŒ8�vÐÐõ
 ˜tœx¨¬Ñ4Ô4Ð4ÝÔ% d¤h°Ñ6Ô6Ð6rQ   c                 ód   — |                       ¦   «         t          d                  | _        | j        S )Nr%   )rõ   r  rÙ   rð   s    rO   r%   zProcess.ppidÙ  s'   € à×*Ò*Ñ,Ô,­]¸6Ô-BÔCˆŒ
ØŒzÐrQ   c                 ó   — 	 |                       ¦   «         \  }}}}}}n\# t          $ rO |                      ¦   «         t          d                  }|                      ¦   «         t          d                  }d }Y nw xY wt	          j        |||¦  «        S )Nr-   r.   ©rö   r   rõ   r  r   Úpuids)rÞ   ÚrealÚ	effectiveÚsavedrk   s        rO   ÚuidszProcess.uidsÞ  s•   € ð	Ø.2¯oªoÑ.?Ô.?Ñ+ˆD�)˜U A q¨!¨!øÝð 	ð 	ð 	Ø×(Ò(Ñ*Ô*­=¸Ô+?Ô@ˆDØ×-Ò-Ñ/Ô/µ¸fÔ0EÔFˆIØˆEˆEˆEð	øøøõ Œ}˜T 9¨eÑ4Ô4Ð4ó   ‚ žAA7Á6A7c                 ó   — 	 |                       ¦   «         \  }}}}}}n\# t          $ rO |                      ¦   «         t          d                  }|                      ¦   «         t          d                  }d }Y nw xY wt	          j        |||¦  «        S )Nr/   r0   r  )rÞ   rk   r  r  r  s        rO   ÚgidszProcess.gidsè  s•   € ð	Ø.2¯oªoÑ.?Ô.?Ñ+ˆAˆq�!�T˜9 e eøÝð 	ð 	ð 	Ø×(Ò(Ñ*Ô*­=¸Ô+?Ô@ˆDØ×-Ò-Ñ/Ô/µ¸fÔ0EÔFˆIØˆEˆEˆEð	øøøõ Œ}˜T 9¨eÑ4Ô4Ð4r   c                 óÎ   — 	 t          j        | j        | j        ¦  «        }n7# t          $ r*}|j        t
          j        k    r
t          sd}n‚ Y d }~nd }~ww xY wt          j	        |Ž S )N)ç        r$  r$  r$  )
rX   Úproc_cpu_timesr·   ré   r”   ÚerrnoÚ	EOVERFLOWÚ	IS_64_BITr   r6   )rÞ   ÚtimesrŸ   s      rO   r~   zProcess.cpu_timesò  s|   € ð	ÝÔ'¨¬°$Ô2CÑDÔDˆEˆEøÝð 	ð 	ð 	ØŒy�EœOÒ+Ð+µIÐ+ð -��àð ����øøøøð	øøøõ Ô  %Ð(Ð(s   ‚" ¢
A¬ AÁAc                 ó@   — t          j        | j        | j        ¦  «        S rë   )rX   Úproc_cpu_numr·   ré   rð   s    rO   Úcpu_numzProcess.cpu_num  r  rQ   c                 ó@  — | j         }d}t          |                      ¦   «         t          d                  ¦  «        }|t          j        k    r:dD ]7}	 t          j        |› d| j        › d|› �¦  «        c S # t          $ r d}Y Œ4w xY w|r|  
                    ¦   «          d S d S )NFr,   )r   r   r   éÿ   rî   ú/path/T)ré   rå   rõ   r  rX   ÚPRNODEVrK   r  r·   rÛ   rñ   )rÞ   Úprocfs_pathÚ
hit_enoentrÊ   rx   s        rO   ÚterminalzProcess.terminal  sÒ   € àÔ'ˆØˆ
Ý˜d×3Ò3Ñ5Ô5µmÀGÔ6LÔMÑNÔNˆØ•$”,ÒÐØ#ð ð �ðÝœ;¨+Ð'KÐ'K¸¼Ð'KÐ'KÈÐ'KÐ'KÑLÔLÐLÐLÐLøÝ(ð ð ð Ø!%�JØ�Hðøøøð ð 	!Ø×ÒÑ Ô Ð Ð Ð ð	!ð 	!s   Á A4Á4BÂBc                 ó®   — | j         }	 t          j        |› d| j        › d�¦  «        S # t          $ r" t          j        |› d| j        › �¦  «         Y dS w xY w)Nrî   z	/path/cwdr‘   )ré   rK   r  r·   rÛ   rï   )rÞ   r1  s     rO   ÚcwdzProcess.cwd  sv   € ð Ô'ˆð	Ý”; +ÐCÐC°´ÐCÐCÐCÑDÔDÐDøÝ ð 	ð 	ð 	ÝŒG�{Ð/Ð/ T¤XÐ/Ð/Ñ0Ô0Ð0Ø�2�2ð	øøøs   ‰( ¨(AÁAc                 ó¢   — |                       ¦   «         }|t          d                  dz  }|t          d                  dz  }t          ||¦  «        S )Nr&   i   r'   )rõ   r  r?   )rÞ   r}   r&   r'   s       rO   Úmemory_infozProcess.memory_info$  sI   € à×#Ò#Ñ%Ô%ˆØ•- Ô&Ô'¨$Ñ.ˆØ•- Ô&Ô'¨$Ñ.ˆÝ�C˜‰~Œ~ÐrQ   c                 ó‚   — |                       ¦   «         t          d                  }t                               |d¦  «        S )Nr+   ú?)rõ   r  ÚPROC_STATUSESÚget)rÞ   Úcodes     rO   r+   zProcess.status-  s3   € à×$Ò$Ñ&Ô&¥}°XÔ'>Ô?ˆå× Ò   sÑ+Ô+Ð+rQ   c                 óâ  — | j         }g }t          j        |› d| j        › d�¦  «        }d}|D ]«}t	          |¦  «        }	 t          j        | j        ||¦  «        \  }}t          j        |||¦  «        }| 	                    |¦  «         Œ\# t          $ rC}	|	j        t          j        k    rt          sY d }	~	Œ‡|	j        t          j        k    rd}Y d }	~	Œ£‚ d }	~	ww xY w|r|                      ¦   «          |S )Nrî   z/lwpFT)ré   rK   rÒ   r·   rf   rX   Úquery_process_threadr   Úpthreadr–   r”   r&  r'  r(  ÚENOENTrñ   )
rÞ   r1  r}   Útidsr2  ÚtidÚutimeÚstimer¸   rŸ   s
             rO   ÚthreadszProcess.threads3  s  € àÔ'ˆØˆÝŒz˜[Ð9Ð9¨4¬8Ð9Ð9Ð9Ñ:Ô:ˆØˆ
Øð 	ð 	ˆCÝ�c‘(”(ˆCðÝ#Ô8Ø”H˜c ;ñ ô  ‘��uõ& ”_ S¨%°Ñ7Ô7�Ø—
’
˜2‘”��øõ# ð ð ð Ø”9¥¤Ò/Ð/½	Ð/ð �H�H�H�Hà”9¥¤Ò,Ð,Ø!%�JØ�H�H�H�HØøøøøðøøøð$ ð 	!Ø×ÒÑ Ô Ð Øˆ
s#   ¿B	Â	
CÂCÂ4CÃCÃCc           	      óü  — g }d}| j         }|› d| j        › d�}t          j        |› d| j        › d�¦  «        D ]­}t          j                             ||¦  «        }t          j                             |¦  «        rl	 t          j        |¦  «        }t          |¦  «        r5| 	                    t          j        |t          |¦  «        ¦  «        ¦  «         Œ›# t          $ r d}Y Œ©w xY wŒ®|r|                      ¦   «          |S )NFrî   z/pathú/fdT)ré   r·   rK   rÒ   rA   ÚjoinÚislinkr  r   r–   r   Ú	popenfilerf   rÛ   rñ   )rÞ   r˜   r2  r1  Úpathdirr²   rA   Úfiles           rO   Ú
open_fileszProcess.open_filesU  s"  € àˆØˆ
ØÔ'ˆØ Ð2Ð2 4¤8Ð2Ð2Ð2ˆÝ”* Ð;Ð;¨d¬hÐ;Ð;Ð;Ñ<Ô<ð 
	Ið 
	IˆBÝ”7—<’< ¨Ñ,Ô,ˆDÝŒw�~Š~˜dÑ#Ô#ð IðIÝœ; tÑ,Ô,�Dõ
 % TÑ*Ô*ð IØŸš¥wÔ'8¸½sÀ2¹w¼wÑ'GÔ'GÑHÔHÐHøøõ )ð ð ð Ø!%�JØ�HðøøøðIð ð 	!Ø×ÒÑ Ô Ð Øˆs   Á:CÃC"Ã!C"c              #   óˆ  K  — dt          |¦  «        g}t          j        |t          j        t          j        ¬¦  «        }|                     ¦   «         \  }}d„ ||fD ¦   «         \  }}|j        dk    rvd|                     ¦   «         v rt          | j        | j	        ¦  «        ‚d|                     ¦   «         v rt          | j        | j	        ¦  «        ‚|›d|› �}t          |¦  «        ‚|                     d¦  «        d	d
…         }t          |¦  «        D ]­\  }}	|	                     ¦   «         }	|	                     d¦  «        r|	                     dd	¦  «        d	         }
||d	z
                                ¦   «         }|dk    rt"          j        }n|dk    rt"          j        }nd}dt"          j        ||
dt*          j        fV — Œ®d
S )z<Get UNIX sockets used by process by parsing 'pfiles' output.Úpfiles)rU   Ústderrc              3   ó^   K  — | ](}|                      t          j        j        ¦  «        V — Œ)d S rë   )r_   r`   rU   ra   rv   s     rO   ú	<genexpr>z,Process._get_unix_sockets.<locals>.<genexpr>s  sD   è è € ð 
ð 
Ø./ˆA�HŠH•S”ZÔ(Ñ)Ô)ð
ð 
ð 
ð 
ð 
ð 
rQ   r   zpermission deniedzno such processz command error
rW   r   Nzsockname: AF_UNIXrE   ÚSOCK_STREAMÚ
SOCK_DGRAMr¡   r‘   )ÚstrrZ   r[   r]   r^   rb   Úlowerr   r·   rÚ   r   rc   re   Ú	enumerateÚlstripÚ
startswithrd   ÚsocketrS  rT  ÚAF_UNIXr   Ú	CONN_NONE)rÞ   r·   Úcmdrj   rU   rP  rl   rm   Úirn   rA   Útypes               rO   Ú_get_unix_socketszProcess._get_unix_socketsj  s×  è è € ð �˜S™œÐ"ˆÝÔØ�
œµ
´ð
ñ 
ô 
ˆð Ÿš™œ‰ˆ�ð
ð 
Ø4:¸FÐ3Cð
ñ 
ô 
‰ˆ�ð Œ<˜1ÒÐØ" f§l¢l¡n¤nÐ4Ð4Ý" 4¤8¨T¬ZÑ8Ô8Ð8Ø  F§L¢L¡N¤NÐ2Ð2Ý# D¤H¨d¬jÑ9Ô9Ð9ØÐ4Ð4¨FÐ4Ð4ˆCÝ˜sÑ#Ô#Ð#à—’˜TÑ"Ô" 1 2 2Ô&ˆÝ  Ñ'Ô'ð 	Nð 	N‰GˆAˆtØ—;’;‘=”=ˆDØ�ŠÐ2Ñ3Ô3ð 	NØ—z’z # qÑ)Ô)¨!Ô,�Ø˜Q ™U”|×)Ò)Ñ+Ô+�Ø˜=Ò(Ð(Ý!Ô-�D�DØ˜\Ò)Ð)Ý!Ô,�D�Dà�DØ�6œ>¨4°°r½7Ô;LÐMÐMÐMÐMøð	Nð 	NrQ   Úinetc                 óò   — t          || j        ¬¦  «        }|s#t          j        | j        › d| j        › �¦  «         |dv r7|                     d„ |                      | j        ¦  «        D ¦   «         ¦  «         |S )N)r­   rî   >   r—   Úunixc                 ó*   — g | ]}t          j        |Ž ‘ŒS rt   )r   r©   )rw   Úconns     rO   ry   z+Process.net_connections.<locals>.<listcomp>š  s/   € ð ð ð àõ ”˜tÐ$ðð ð rQ   )r¤   r·   rK   rï   ré   Úextendr`  )rÞ   r¬   r}   s      rO   r¤   zProcess.net_connectionsŒ  s™   € å˜d¨¬Ð2Ñ2Ô2ˆð ð 	7åŒG�tÔ(Ð5Ð5¨4¬8Ð5Ð5Ñ6Ô6Ð6ð �?Ð"Ð"Ø�JŠJð ð à ×2Ò2°4´8Ñ<Ô<ðñ ô ñ ô ð ð ˆ
rQ   Úmmapzpath rss anon lockedzaddr perms path rss anon lockedc           	      óL  — d„ }| j         }g }	 t          j        | j        |¦  «        }n6# t          $ r)}|j        t
          j        k    rt          sg cY d }~S ‚ d }~ww xY wd}|D ]ª}|\  }}	}
}}}} |||	¦  «        }|                     d¦  «        sb	 t          j
        |› d| j        › d|› �¦  «        }n?# t          $ r2}|j        t
          j        k    r|› d| j        › d|› �}d}n‚ Y d }~nd }~ww xY w|                     ||
||||f¦  «         Œ«|r|                      ¦   «          |S )Nc                 óÎ   — d                      t          | ¦  «        dd …                              d¦  «        t          |¦  «        dd …                              d¦  «        ¦  «        S )Nz{}-{}r   ÚL)ÚformatÚhexrd   )ÚstartÚends     rO   Útoaddrz#Process.memory_maps.<locals>.toaddr¥  sU   € Ø—>’>Ý�E‘
”
˜1˜2˜2”×$Ò$ SÑ)Ô)­3¨s©8¬8°A°B°B¬<×+=Ò+=¸cÑ+BÔ+Bñô ð rQ   Fú[rî   r/  T)ré   rX   Úproc_memory_mapsr·   r”   r&  r'  r(  rY  rK   r  r@  r–   rñ   )rÞ   ro  r1  r˜   r°   rŸ   r2  r±   r¦   ÚaddrsizeÚpermr¿   r&   ÚanonrC   s                  rO   Úmemory_mapszProcess.memory_maps£  s¨  € ð	ð 	ð 	ð
 Ô'ˆØˆð	ÝÔ+¨D¬H°kÑBÔBˆGˆGøÝð 	ð 	ð 	ØŒy�EœOÒ+Ð+µIÐ+ð �	�	�	�	�	�	àøøøøð	øøøð ˆ
Øð 	Bð 	BˆDØ<@Ñ9ˆD�(˜D $¨¨T°6Ø�6˜$ Ñ)Ô)ˆDØ—?’? 3Ñ'Ô'ð ðÝœ;¨+Ð'NÐ'N¸¼Ð'NÐ'NÈÐ'NÐ'NÑOÔO�D�DøÝð ð ð Ø”y¥E¤LÒ0Ð0ð #.ÐFÐF°´ÐFÐFÀÐFÐF˜Ø%)˜
˜
àð #˜
˜
˜
˜
øøøøðøøøð �NŠN˜D $¨¨c°4¸Ð@ÑAÔAÐAÐAØð 	!Ø×ÒÑ Ô Ð Øˆs8   Ž) ©
A³AÁAÁAÁAÂ!B3Â3
C/Â=(C*Ã*C/c                 ód   — t          t          j        | j        › d| j        › d�¦  «        ¦  «        S )Nrî   rG  )r   rK   rÒ   ré   r·   rð   s    rO   Únum_fdszProcess.num_fdsÒ  s0   € å•2”: Ô!2ÐBÐB°T´XÐBÐBÐBÑCÔCÑDÔDÐDrQ   c                 óX   — t          j        t          j        | j        | j        ¦  «        Ž S rë   )r   ÚpctxswrX   Úproc_num_ctx_switchesr·   ré   rð   s    rO   Únum_ctx_switcheszProcess.num_ctx_switchesÖ  s&   € åŒ~ÝÔ'¨¬°$Ô2CÑDÔDð
ð 	
rQ   Nc                 óB   — t          j        | j        || j        ¦  «        S rë   )r   Úwait_pidr·   rÚ   )rÞ   Útimeouts     rO   ÚwaitzProcess.waitÜ  s   € åÔ  ¤¨7°D´JÑ?Ô?Ð?rQ   )ra  rë   )+Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__rì   rñ   r÷   rú   rå   r   ró   rõ   rö   r¿   r  r  r\   r(   r*   r  r  r%   r  r"  r~   r,  r3  r5  r7  Úmemory_full_infor+   rE  rM  r`  r¤   r   Únt_mmap_groupedÚnt_mmap_extru  rw  r{  r  rt   rQ   rO   rç   rç   w  s¶  € € € € € Ø;Ð;àCÐCÐC€Ið.ð .ð .ð3ð 3ð 3ð-ð -ð -ð
/ð /ð /ð
 ØðDð Dñ Ôñ „_ðDð Øðð ñ Ôñ „_ðð Øð;ð ;ñ Ôñ „_ð;ð ð-ð -ñ „_ð-ð ð	ð 	ñ „_ð	ð ð8ð 8ñ „_ð8ð ð>ð >ñ „_ð>ð ðEð Eñ „_ðEð ðEð Eñ „_ðEð ð>ð >ñ „_ð>ð ð7ð 7ñ „_ð7ð ðð ñ „_ðð ð5ð 5ñ „_ð5ð ð5ð 5ñ „_ð5ð ð)ð )ñ „_ð)ð" ð>ð >ñ „_ð>ð ð!ð !ñ „_ð!ð ð
ð 
ñ „_ð
ð ðð ñ „_ðð #Ðàð,ð ,ñ „_ð,ð
 ðð ñ „_ððB ðð ñ „_ðð( Nð  Nð  NðD ðð ð ñ „_ðð& !�j Ð)?Ñ@Ô@€OØ�*˜VÐ%FÑGÔG€Kàð,ð ,ñ „_ð,ð\ ðEð Eñ „_ðEð ð
ð 
ñ „_ð
ð
 ð@ð @ð @ñ „_ð@ð @ð @rQ   rç   )F)r¡   )mrƒ  r&  rã   rK   rZ  rZ   r`   Úcollectionsr   r   r‘   r   r   r   r  r	   rX   r
   r   r   r   r   r   r   r   r   r   r   r   Ú__extra__all__ÚgetpagesizerM   ÚAF_LINKÚmaxsizer(  r   r   ÚSSLEEPÚSTATUS_SLEEPINGÚSRUNÚSTATUS_RUNNINGÚSZOMBÚSTATUS_ZOMBIEÚSSTOPÚSTATUS_STOPPEDÚSIDLÚSTATUS_IDLEÚSONPROCÚSWAITÚSTATUS_WAITINGr:  ÚTCPS_ESTABLISHEDÚCONN_ESTABLISHEDÚTCPS_SYN_SENTÚCONN_SYN_SENTÚTCPS_SYN_RCVDÚCONN_SYN_RECVÚTCPS_FIN_WAIT_1ÚCONN_FIN_WAIT1ÚTCPS_FIN_WAIT_2ÚCONN_FIN_WAIT2ÚTCPS_TIME_WAITÚCONN_TIME_WAITÚTCPS_CLOSEDÚ
CONN_CLOSEÚTCPS_CLOSE_WAITÚCONN_CLOSE_WAITÚTCPS_LAST_ACKÚCONN_LAST_ACKÚTCPS_LISTENÚCONN_LISTENÚTCPS_CLOSINGÚCONN_CLOSINGÚPSUTIL_CONN_NONEr\  Ú	TCPS_IDLEÚ
TCPS_BOUNDr§   Údictr  r1   r6   r9   r?   Úpfullmemr@   rH  Ú_fieldsrD   rP   rq   r~   rz   r„   r†   rˆ   Údisk_io_countersr“   r’   Únet_io_countersÚnet_if_addrsr¤   r»   rÅ   rÈ   rÓ   rÕ   rå   rç   rt   rQ   rO   ú<module>r¹     sû  ðð
 .Ð -à €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø +Ð +Ð +Ð +Ð +Ð +Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø "Ð "Ð "Ð "Ð "Ð "ð <Ð;Ð;€ð #ˆJÔ"Ñ$Ô$€	Ø
Ô
€ØŒK˜%Ò€	à€	Ø€
ð 	„K�Ô(Ø„IˆwÔ%Ø„J�Ô%Ø„J�Ô&Ø„IˆwÔ"Ø„L�'Ô(Ø„J�Ô&ð€ð 	Ô˜7Ô3ØÔ˜Ô-ØÔ˜Ô-ØÔ˜'Ô0ØÔ˜'Ô0ØÔ˜Ô/ØÔ�gÔ(ØÔ˜'Ô1ØÔ˜Ô-ØÔ�gÔ)ØÔ�wÔ+ØÔ˜7Ô,Ø„N�IØ„O�Zð€ð" �Ø	
Ø	Ø	ØØ	
ØØØ
Ø	Ø	
Ø
Ø	ðñ ô €ð, ˆJ�{Ð$HÐ$HÐ$HÑIÔI€	àˆJØÐGÐGÐGñô €	ð 	ˆ
�7ÐMÐMÐMÑNÔN€à€z�&˜5 %˜.Ñ)Ô)€Ø€à�
ØÐ;Ð;Ð;ñô €ð ˆJØ� §¢¨-Ô*?Ñ!@Ô!@Ñ@ñô €	ð4ð 4ð 4ð&ð &ð &ð\3ð 3ð 3ð(ð (ð (ðð ð ð"ð "ð "ð
ð ð ð Ô(Ð ØÔ €
ðð ð ð ð> Ô&€ØÔ&€ðð ð ð ð>ð ð ð ð ð ð
ð ð ð0=ð =ð =ð$ð $ð $ð
ð ð ð:g@ð g@ð g@ð g@ð g@ñ g@ô g@ð g@ð g@ð g@rQ   