+
    Ž°³j¦b  ã                   ó>  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RIH
t
 ^ RIHt ^ RIHt  ^ RIHt  ^ RIHt ]! ]P"                  ! R4      4      t]! 4       t. RNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNt]P,                  RG8H  t]P,                  RH8H  t]P2                  P5                  RI4      t]P2                  P5                  RJ4      t]t]P2                  P5                  Rœ4      t]P2                  P5                  RK4      t]P2                  P5                  RL4      t ];'       g    ];'       g    ] t!]P2                  P5                  R�4      t"]P2                  P5                  RM4      t#RNt$ROt%RPt&RQt'RRt(RSt)RTt*RUt+RVt,RWt-RXt.RYt/RZt0R[t1R\t2R]t3R^t4R_t5R`t6Rat7Rbt8Rct9Rdt:Ret;Rft<Rgt= ! Rh Ri]P|                  4      t?]@! 4       Pƒ                  ]?P„                  4        ! Rj Rk]P|                  4      tC]@! 4       Pƒ                  ]CP„                  4       ]Pˆ                  ! 4       tE]PŒ                  ! 4       tGRl]
]].]].3Rm]
].].3Rn]
.].3Ro]
].].3Rp]
.].3Rq]
].]].3Rr]
.]].3Rs].]].3/tH]e   ]HPƒ                  Rt].].3Ru].].3/4       ]e!   ]"'       g   ]HPƒ                  Rv].]].3/4        ! Rw Rx]I4      tJ ! Ry Rz]J4      tK ! R{ R|]K4      tL ! R} R~]J4      tM ! R R€]J4      tNRžR� ltOR‚ tPRƒ tQR„ tRR… tSR† tTR‡ tURˆ tVR‰ tWRžRŠ ltXR‹ tYRŒ tZ ! R� RŽ4      t[R� t\][! 4       t]]]P¼                  ]\n^        ]]P¾                  ]\n_        RŸt`R� taR‘ tb]]b3R’ ltc]3R“ ltdR R” lteR• tfR– tg]P]PÐ                  3R— l4       tiR¡R™ ltjRR˜]PÐ                  3Rš ltkR› tlR#   ] d    Rt ELËi ; i  ] d    Rt ELÔi ; i)¢z�Common objects shared by __init__.py and _ps*.py modules.

Note: this module is imported by setup.py, so it should not import
psutil or third-party modules.
N)ÚAF_INET)Ú
SOCK_DGRAM)ÚSOCK_STREAM)ÚAF_INET6)ÚAF_UNIXÚPSUTIL_DEBUGÚFREEBSDÚBSDÚLINUXÚNETBSDÚOPENBSDÚMACOSÚOSXÚPOSIXÚSUNOSÚWINDOWSÚ
CONN_CLOSEÚCONN_CLOSE_WAITÚCONN_CLOSINGÚCONN_ESTABLISHEDÚCONN_FIN_WAIT1ÚCONN_FIN_WAIT2ÚCONN_LAST_ACKÚCONN_LISTENÚ	CONN_NONEÚCONN_SYN_RECVÚCONN_SYN_SENTÚCONN_TIME_WAITÚNIC_DUPLEX_FULLÚNIC_DUPLEX_HALFÚNIC_DUPLEX_UNKNOWNÚSTATUS_DEADÚSTATUS_DISK_SLEEPÚSTATUS_IDLEÚSTATUS_LOCKEDÚSTATUS_RUNNINGÚSTATUS_SLEEPINGÚSTATUS_STOPPEDÚSTATUS_SUSPENDEDÚSTATUS_TRACING_STOPÚSTATUS_WAITINGÚSTATUS_WAKE_KILLÚSTATUS_WAKINGÚSTATUS_ZOMBIEÚSTATUS_PARKEDÚENCODINGÚENCODING_ERRSr   Ú	conn_tmapÚdeprecated_methodÚisfile_strictÚmemoizeÚparse_environ_blockÚpath_exists_strictÚusage_percentÚsupports_ipv6Úsockfam_to_enumÚsocktype_to_enumÚwrap_numbersÚ	open_textÚopen_binaryÚcatÚbcatÚbytes2humanÚconn_to_ntupleÚdebugÚhiliteÚterm_supports_colorsÚprint_colorÚposixÚntÚlinuxÚdarwinÚopenbsdÚnetbsdÚaixÚrunningÚsleepingz
disk-sleepÚstoppedztracing-stopÚzombieÚdeadz	wake-killÚwakingÚidleÚlockedÚwaitingÚ	suspendedÚparkedÚESTABLISHEDÚSYN_SENTÚSYN_RECVÚ	FIN_WAIT1Ú	FIN_WAIT2Ú	TIME_WAITÚCLOSEÚ
CLOSE_WAITÚLAST_ACKÚLISTENÚCLOSINGÚNONEc                   ó"   € ] tR t^zt^t^t^ tRtR# )Ú	NicDuplex© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r    Ú__static_attributes__rf   ó    ÚO/home/luca/screen-checking/.venv/lib/python3.14/site-packages/psutil/_common.pyre   re   z   s   † Ø€OØ€OØÔrl   re   c                   ó   € ] tR t^„tRtRtRtR# )ÚBatteryTimerf   Néÿÿÿÿéþÿÿÿ)rg   rh   ri   rj   ÚPOWER_TIME_UNKNOWNÚPOWER_TIME_UNLIMITEDrk   rf   rl   rm   ro   ro   „   s   † ØÐØÔrl   ro   ÚallÚtcpÚtcp4ÚudpÚudp4ÚinetÚinet4Úinet6Útcp6Úudp6Úunixc                   ó:   a € ] tR t^°t o RtRtR tR tR tRtV t	R# )ÚErrorzIBase exception class. All other psutil exceptions inherit
from this one.
Úpsutilc                ó–   € \         P                  ! 4       pV F-  p\        WR 4      pV'       g   VR8X  g   K   V^ 8X  g   K)  WBV&   K/  	  V# )NÚpid)ÚcollectionsÚOrderedDictÚgetattr)ÚselfÚattrsÚinfoÚnameÚvalues   &&   rm   Ú	_infodictÚError._infodict·   sC   € Ü×&Ò&Ó(ˆÛˆDÜ˜D¨Ó-ˆEß˜ ž¨5°A®:Ø"�T“
ñ ð ˆrl   c                óN  € V P                  R4      pV'       dJ   RP                  RP                  VP                  4        UUu. uF  w  r#V RV: 2NK  	  upp4      4      pMRpRP                  \	        V RR4      V3 Uu. uF  qU'       g   K  VNK  	  up4      # u uppi u upi )	rƒ   z({})ú, Ú=NÚ ÚmsgÚ )rƒ   ÚppidrŠ   )rŒ   ÚformatÚjoinÚitemsr†   )r‡   r‰   ÚkÚvÚdetailsÚxs   &     rm   Ú__str__ÚError.__str__¿   s”   € à�~‰~Ð5Ó6ˆßØ—m‘mØ—	‘	°D·J±J´LÔA±L©D¨A˜a˜S  !¡›<±LÒAÓBó‰Gð ˆGØ�x‰x¤W¨T°5¸"Ó%=¸wÑ$GÓMÑ$G˜qË1Ÿ˜Ñ$GÑMÓNÐNùó	 Bùò Ns   ÁBÂ	B"ÂB"c           	     óÜ   € V P                  R4      pRP                  VP                  4        UUu. uF  w  r#V RV: 2NK  	  upp4      pRV P                  P                   RV R2# u uppi )rƒ   r�   r�   zpsutil.Ú(Ú))rƒ   r”   rŠ   Úsecondsr’   )rŒ   r–   r—   Ú	__class__rg   )r‡   r‰   r˜   r™   rš   s   &    rm   Ú__repr__ÚError.__repr__Ê   sf   € à�~‰~ÐGÓHˆØ—)‘)°d·j±j´lÔC±l©d¨a ˜s ! A¡5›\±lÒCÓDˆØ˜Ÿ™×0Ñ0Ð1°°7°)¸1Ð=Ð=ùó Ds   °A(
rf   N)
rg   rh   ri   rj   Ú__doc__rŒ   rœ   r£   rk   Ú__classdictcell__©Ú__classdict__s   @rm   r€   r€   °   s&   ø‡ € ñð €Jòò	O÷>ð >rl   r€   c                   ó8   a € ] tR t^Ñt o RtRtRR ltR tRtV tR# )ÚNoSuchProcesszPException raised when a process with a certain PID doesn't
or no longer exists.
r�   Nc                ój   € \         P                  V 4       Wn        W n        T;'       g    R V n        R# )zprocess no longer existsN©r€   Ú__init__rƒ   rŠ   r’   ©r‡   rƒ   rŠ   r’   s   &&&&rm   r­   ÚNoSuchProcess.__init__Ø   s(   € Ü�‰�tÔØŒØŒ	Ø×4Ð4Ð4ˆŽrl   c                ó`   € V P                   V P                  V P                  V P                  33# ©N©r¢   rƒ   rŠ   r’   ©r‡   s   &rm   Ú
__reduce__ÚNoSuchProcess.__reduce__Þ   ó$   € Ø—‘ §¡¨4¯9©9°d·h±hÐ ?Ð@Ð@rl   ©r’   rŠ   rƒ   ©NN©	rg   rh   ri   rj   r¥   r­   r´   rk   r¦   r§   s   @rm   rª   rª   Ñ   s"   ø‡ € ñð €Jô5÷Að Arl   rª   c                   ó8   a € ] tR t^ât o RtRtRR ltR tRtV tR# )ÚZombieProcessa  Exception raised when querying a zombie process. This is
raised on macOS, BSD and Solaris only, and not always: depending
on the query the OS may be able to succeed anyway.
On Linux all zombie processes are querable (hence this is never
raised). Windows doesn't have zombie processes.
r�   Nc                ó`   € \         P                  WW$4       W0n        T;'       g    R V n        R# )z"PID still exists but it's a zombieN)rª   r­   r”   r’   )r‡   rƒ   rŠ   r”   r’   s   &&&&&rm   r­   ÚZombieProcess.__init__ì   s'   € Ü×Ñ˜t¨$Ô4ØŒ	Ø×>Ð>Ð>ˆŽrl   c                óv   € V P                   V P                  V P                  V P                  V P                  33# r±   )r¢   rƒ   rŠ   r”   r’   r³   s   &rm   r´   ÚZombieProcess.__reduce__ñ   s*   € Ø—‘ §¡¨4¯9©9°d·i±iÀÇÁÐ JÐKÐKrl   )r’   r”   ©NNNr¹   r§   s   @rm   r»   r»   â   s"   ø‡ € ñð €Jô?÷
Lð Lrl   r»   c                   ó8   a € ] tR t^õt o RtRtRR ltR tRtV tR# )ÚAccessDeniedz@Exception raised when permission to perform an action is denied.r�   Nc                ój   € \         P                  V 4       Wn        W n        T;'       g    R V n        R# )r“   Nr¬   r®   s   &&&&rm   r­   ÚAccessDenied.__init__ú   s%   € Ü�‰�tÔØŒØŒ	Ø—9�9˜"ˆŽrl   c                ó`   € V P                   V P                  V P                  V P                  33# r±   r²   r³   s   &rm   r´   ÚAccessDenied.__reduce__   r¶   rl   r·   rÀ   r¹   r§   s   @rm   rÂ   rÂ   õ   s   ø‡ € ÙJà€Jô÷Að Arl   rÂ   c                   ó8   a € ] tR tRt o RtRtRR ltR tRtV tR# )	ÚTimeoutExpiredi  zORaised on Process.wait(timeout) if timeout expires and process
is still alive.
r�   Nc                ój   € \         P                  V 4       Wn        W n        W0n        R V R2V n        R# )ztimeout after z secondsN)r€   r­   r¡   rƒ   rŠ   r’   )r‡   r¡   rƒ   rŠ   s   &&&&rm   r­   ÚTimeoutExpired.__init__  s-   € Ü�‰�tÔØŒØŒØŒ	Ø# G 9¨HÐ5ˆŽrl   c                ó`   € V P                   V P                  V P                  V P                  33# r±   )r¢   r¡   rƒ   rŠ   r³   s   &rm   r´   ÚTimeoutExpired.__reduce__  s$   € Ø—‘ §¡¨t¯x©x¸¿¹Ð CÐDÐDrl   )r’   rŠ   rƒ   r¡   r¸   r¹   r§   s   @rm   rÈ   rÈ     s"   ø‡ € ñð €Jô6÷Eð Erl   rÈ   c                ó|   €  \        V 4      V,          ^d,          pVe   \        W24      pV#   \         d     R# i ; i)z5Calculate percentage usage of 'used' against 'total'.g        )ÚfloatÚroundÚZeroDivisionError)ÚusedÚtotalÚround_Úrets   &&& rm   r7   r7     sE   € ðÜ�T‹{˜UÕ" cÕ)ˆð ÒÜ˜Ó$ˆCØˆ
øô ô Úðús   ‚, ¬;º;c                óf   a a€ \         P                  ! S 4      VV 3R l4       pV3R lp/ oW!n        V# )aq  A simple memoize decorator for functions supporting (hashable)
positional arguments.
It also provides a cache_clear() function for clearing the cache:

>>> @memoize
... def foo()
...     return 1
    ...
>>> foo()
1
>>> foo.cache_clear()
>>>

It supports:
 - functions
 - classes (acts as a @singleton)
 - staticmethods
 - classmethods

It does NOT support:
 - methods
c                  óÐ   <€ V \        \        VP                  4       4      4      3p SV,          #   \         d+     S! T / TB ;pST&   M  \         d	   pTR hR p?ii ; iTu # i ; ir±   )Ú	frozensetÚsortedr—   ÚKeyErrorÚ	Exception)ÚargsÚkwargsÚkeyrÔ   ÚerrÚcacheÚfuns   *,   €€rm   ÚwrapperÚmemoize.<locals>.wrapper?  su   ø€ à”Yœv f§l¡l£nÓ5Ó6Ð7ˆð	Ø˜•:ÐøÜô 	ð$Ù#&¨Ð#7°Ñ#7Ð7��e˜C’jøÜô $Ø˜tÐ#ûð$úàŠJð	ús2   §0 °A%¼A
Á	A%Á
AÁAÁAÁA%Á$A%c                 ó(   <€ S P                  4        R# )zClear cache.N)Úclear)rß   s   €rm   Úcache_clearÚmemoize.<locals>.cache_clearK  s   ø€ à�‰Žrl   )Ú	functoolsÚwrapsrå   )rà   rá   rå   rß   s   f  @rm   r4   r4   '  s7   ù€ ô0 ‡_‚_�SÓõ	ó ð	õð €EØ%ÔØ€Nrl   c                ój   a € \         P                  ! S 4      V 3R l4       pR pR pW!n        W1n        V# )až  A memoize decorator which is disabled by default. It can be
activated and deactivated on request.
For efficiency reasons it can be used only against class methods
accepting no arguments.

>>> class Foo:
...     @memoize
...     def foo()
...         print(1)
...
>>> f = Foo()
>>> # deactivated (default)
>>> foo()
1
>>> foo()
1
>>>
>>> # activated
>>> foo.cache_activate(self)
>>> foo()
1
>>> foo()
>>> foo()
>>>
c                 ó.  <€  V P                   S,          pV#   \         d#     S! T 4      u #   \         d	   pTR hR p?ii ; i\         dG     S! T 4      pM  \         d	   pTR hR p?ii ; i YP                   S&    T#   \         d      T# i ; ii ; ir±   )Ú_cacheÚAttributeErrorrÚ   rÙ   )r‡   rÔ   rÞ   rà   s   &  €rm   rá   Ú'memoize_when_activated.<locals>.wrappero  s¶   ø€ ð	à—+‘+˜cÕ"ˆCð( ˆ
øô' ô 	$ð$Ù˜4“yÒ øÜô $Ø˜tÐ#ûð$úäô 	ð$Ù˜$“i‘øÜô $Ø˜tÐ#ûð$úðØ#&—‘˜CÒ ð
 ˆ
øô	 "ô ñ Øˆ
ð	úð	úsn   ƒ ˜B¤.«B®A¹<¼AÁBÁBÁAÁBÁA+Á#A&Á&A+Á+BÁ/B Â BÂBÂBÂBc                ó   € / V n         R# )zcActivate cache. Expects a Process instance. Cache will be
stored as a "_cache" instance attribute.
N)rë   ©Úprocs   &rm   Úcache_activateÚ.memoize_when_activated.<locals>.cache_activate‰  s   € ð ˆŽrl   c                ó0   €  V = R#   \         d     R# i ; i)zDeactivate and clear cache.N)rë   rì   rï   s   &rm   Úcache_deactivateÚ0memoize_when_activated.<locals>.cache_deactivate�  s   € ð	Ø’øÜô 	Úð	ús   ‚ †”)rç   rè   rñ   rô   )rà   rá   rñ   rô   s   f   rm   Úmemoize_when_activatedrö   T  s=   ø€ ô6 ‡_‚_�SÓôó ðò2òð ,ÔØ/ÔØ€Nrl   c                óª   €  \         P                  ! V 4      p\        P                  ! VP                  4      #   \         d    h \
         d     R# i ; i)z‘Same as os.path.isfile() but does not swallow EACCES / EPERM
exceptions, see:
http://mail.python.org/pipermail/python-dev/2012-June/120787.html.
F)ÚosÚstatÚS_ISREGÚst_modeÚPermissionErrorÚOSError)ÚpathÚsts   & rm   r3   r3   ›  sH   € ð
(Ü�WŠW�T‹]ˆô �|Š|˜BŸJ™JÓ'Ð'øô ô ØÜô Úðús   ‚8 ¸AÁAÁAc                ón   €  \         P                  ! V 4       R#   \         d    h \         d     R# i ; i)z‘Same as os.path.exists() but does not swallow EACCES / EPERM
exceptions. See:
http://mail.python.org/pipermail/python-dev/2012-June/120787.html.
TF)rø   rù   rü   rý   )rþ   s   &rm   r6   r6   ª  s6   € ð
Ü
�Š�Œñ øô ô ØÜô Úðús   ‚ š4¯4³4c                 ó*  € \         P                  '       d	   \        f   R#  \         P                   ! \        \         P                  4      ;_uu_ 4       p V P	                  R4       RRR4       R#   + '       g   i     R# ; i  \
         d     R# i ; i)z2Return True if IPv6 is supported on this platform.NFT)z::1é    )ÚsocketÚhas_ipv6r   r   Úbindrý   )Úsocks    rm   r8   r8   ¹  sb   € ä�?�?ˆ?œhÒ.ÙðÜ�]Š]œ8¤V×%7Ñ%7×8Ô8¸DØ�I‰I�jÔ!÷ 9á÷ 9Ö8áûÜô Úðús/   ¢1B ÁA/Á%B Á/B 	Á:B Â B ÂBÂBc                óê   € / p^ p\         p V P                  RV4      pWB8:  d    V# V P                  RW$4      pWR8”  d,   WV pW^,           V pV'       d   VP                  4       pWqV&   V^,           pKj  )zCParse a C environ block of environment variables into a dictionary.Ú r�   )r   ÚfindÚupper)ÚdatarÔ   ÚposÚWINDOWS_Únext_posÚ	equal_posrÝ   r‹   s   &       rm   r5   r5   Å  s„   € ð €CØ
€Cô €HØ
Ø—9‘9˜T 3Ó'ˆàŒ?Øð €Jð —I‘I˜c 3Ó1ˆ	ØŒ?Ø˜9Ð%ˆCØ Q�¨Ð2ˆEçØ—i‘i“k�Ø�‰HØ˜�lŠrl   c                óV   €  \         P                  ! V 4      #   \         d    T u # i ; i)zyConvert a numeric socket family value to an IntEnum member.
If it's not a known member, return the numeric value itself.
)r  ÚAddressFamilyÚ
ValueError©Únums   &rm   r9   r9   á  s,   € ðÜ×#Ò# CÓ(Ð(øÜô ØŠ
ðúó   ‚ ˜(§(c                óV   €  \         P                  ! V 4      #   \         d    T u # i ; i)zwConvert a numeric socket type value to an IntEnum member.
If it's not a known member, return the numeric value itself.
)r  Ú
SocketKindr  r  s   &rm   r:   r:   ë  s,   € ðÜ× Ò  Ó%Ð%øÜô ØŠ
ðúr  c           	     ó¬  € ^RI Hp V\        P                  \        09   d1   V'       d   VP
                  ! V!  pV'       d   VP
                  ! V!  pV\        P                  8X  d)   V\        \        09   d   VP                  V\        4      pM\        p\        V4      p\        V4      pVf   VP                  WW#WE4      # VP                  WW#WEV4      # )z2Convert a raw connection tuple to a proper ntuple.)Ú_ntuples)r“   r  r  r   r   Úaddrr   Úgetr   r9   r:   ÚpconnÚsconn)	ÚfdÚfamÚtype_ÚladdrÚraddrÚstatusÚ
status_maprƒ   Úntps	   &&&&&&&& rm   rA   rA   õ  s¨   € å!à
Œv�~‰~œxÐ(Ô(ßØ—H’H˜eÑ$ˆEßØ—H’H˜eÑ$ˆEØ”×"Ñ"Ô" s¬w¼Ð.AÔ'AØ—‘ ¬	Ó2‰äˆÜ
˜#Ó
€CÜ˜UÓ#€EØ
‚{Ø�y‰y˜ %°Ó>Ð>à�y‰y˜ %°¸sÓCÐCrl   c                óÒ  € ^ RI pV P                  '       d   V P                  '       g   R# V P                  \        P
                  8X  d@   \        VP                  V P                   RV P                   2RR7      P                  4      # V P                  \        P                  8X  d@   \        VP                  V P                   RV P                   2RR7      P                  4      # R# )zZGiven the address ntuple returned by ``net_if_addrs()``
calculates the broadcast address.
NÚ/F)Ústrict)Ú	ipaddressÚaddressÚnetmaskÚfamilyr  r   ÚstrÚIPv4NetworkÚbroadcast_addressr   ÚIPv6Network)r  r)  s   & rm   Úbroadcast_addrr1  
  s¾   € ó à�<�<ˆ<˜tŸ|Ÿ|˜|ÙØ‡{�{”f—n‘nÔ$ÜØ×!Ñ!Ø—<‘<�.  $§,¡, Ð0¸ð "ó çÑó
ð 	
ð
 ‡{�{”f—o‘oÔ%ÜØ×!Ñ!Ø—<‘<�.  $§,¡, Ð0¸ð "ó çÑó
ð 	
ñ &rl   c                ó   a € V 3R lpV# )z{A decorator which can be used to mark a method as deprecated
'replcement' is the method name which will be called instead.
c                 ó˜   <a€ V P                    R S R2oV P                  f   SV n        \        P                  ! V 4      VV3R l4       pV# )z*() is deprecated and will be removed; use z
() insteadc                 ób   <€ \         P                  ! S\        ^R7       \        V S4      ! V/ VB # )é   )ÚcategoryÚ
stacklevel)ÚwarningsÚwarnÚDeprecationWarningr†   )r‡   rÛ   rÜ   r’   Úreplacements   &*,€€rm   ÚinnerÚ/deprecated_method.<locals>.outer.<locals>.inner-  s+   ø€ ä�MŠM˜#Ô(:ÀqÕIÜ˜4 Ô-¨tÐ>°vÑ>Ð>rl   )rg   r¥   rç   rè   )rà   r<  r’   r;  s   & @€rm   ÚouterÚ deprecated_method.<locals>.outer%  sW   ù€ à�|‰|ˆnð Øˆ}˜Jð(ð 	ð �;‰;ÒØˆCŒKä	�Š˜Ó	õ	?ó 
ð	?ð ˆrl   rf   )r;  r>  s   f rm   r2   r2      s   ø€ õ
ð €Lrl   c                   óL   a € ] tR tRt o RtR tR tR tR tRR lt	R	 t
R
tV tR# )Ú_WrapNumbersi7  zFWatches numbers so that they don't overflow and wrap
(reset to zero).
c                ód   € \         P                  ! 4       V n        / V n        / V n        / V n        R # r±   )Ú	threadingÚLockÚlockrß   Ú	remindersÚreminder_keysr³   s   &rm   r­   Ú_WrapNumbers.__init__<  s&   € Ü—N’NÓ$ˆŒ	ØˆŒ
ØˆŒØˆÖrl   c                ó*  € W P                   9  g   Q hW P                  9  g   Q hW P                  9  g   Q hWP                   V&   \        P                  ! \
        4      V P                  V&   \        P                  ! \        4      V P                  V&   R # r±   )rß   rF  rG  r„   ÚdefaultdictÚintÚset)r‡   Ú
input_dictrŠ   s   &&&rm   Ú	_add_dictÚ_WrapNumbers._add_dictB  st   € ØŸ:™:Ô%Ð%Ð%ØŸ>™>Ô)Ð)Ð)Ø×-Ñ-Ô-Ð-Ð-Ø%�
‰
�4ÑÜ*×6Ò6´sÓ;ˆ�‰�tÑÜ#.×#:Ò#:¼3Ó#?ˆ×Ñ˜4Ó rl   c                ó>  € V P                   V,          p\        VP                  4       4      \        VP                  4       4      ,
          pV FL  pV P                  V,          V,           F  pV P                  V,          V K  	  V P                  V,          V KN  	  R# )zvIn case the number of keys changed between calls (e.g. a
disk disappears) this removes the entry from self.reminders.
N)rß   rL  ÚkeysrG  rF  )r‡   rM  rŠ   Úold_dictÚ	gone_keysÚgone_keyÚremkeys   &&&    rm   Ú_remove_dead_remindersÚ#_WrapNumbers._remove_dead_remindersJ  s~   € ð —:‘:˜dÕ#ˆÜ˜Ÿ™›Ó(¬3¨z¯©Ó/@Ó+AÕAˆ	Û!ˆHØ×,Ñ,¨TÕ2°8×<Ð<�Ø—N‘N 4Õ(¨Ò0ñ =à×"Ñ" 4Õ(¨Ò2ó "rl   c                ó–  € W P                   9  d   V P                  W4       V# V P                  W4       V P                   V,          p/ pV FÕ  pW,          p W5,          p. p\	        \        T4      4       Fš  p	Yi,          p
Yy,          pYY3pY«8  dP   T P                  T,          T;;,          T,          uu&   T P                  T,          T,          P                  T4       TP                  Y P                  T,          T,          ,           4       Kœ  	  \        T4      YE&   K×  	  WP                   V&   V#   \         d	    YdT&    Kû  i ; i)z\Cache dict and sum numbers which overflow and wrap.
Return an updated copy of `input_dict`.
)rß   rN  rV  rÙ   ÚrangeÚlenrF  rG  ÚaddÚappendÚtuple)r‡   rM  rŠ   rR  Únew_dictrÝ   Úinput_tupleÚ	old_tupleÚbitsÚiÚinput_valueÚ	old_valuerU  s   &&&          rm   ÚrunÚ_WrapNumbers.runU  s%  € ð —z‘zÔ!à�N‰N˜:Ô,ØÐà×#Ñ# JÔ5à—:‘:˜dÕ#ˆØˆÛˆCØ$�/ˆKðØ$�M�	ð ˆDÜœ3˜{Ó+Ö,�Ø)�n�Ø%�L�	Ø˜�ØÔ*à—N‘N 4Õ(¨×0°IÕ=Ó0Ø×&Ñ& tÕ,¨SÕ1×5Ñ5°fÔ=Ø—‘˜K¯.©.¸Õ*>¸vÕ*FÕFÖGñ -ô " $›KˆH‹Mñ+ ð. &�
‰
�4ÑØˆøô) ô ð !,˜‘Úð	ús   ÁD5Ä5EÅENc                ó¶  € V P                   ;_uu_ 4        VfP   V P                  P                  4        V P                  P                  4        V P                  P                  4        MTV P                  P                  VR4       V P                  P                  VR4       V P                  P                  VR4       RRR4       R#   + '       g   i     R# ; i)z>Clear the internal cache, optionally only for function 'name'.N)rE  rß   rä   rF  rG  Úpop)r‡   rŠ   s   &&rm   rå   Ú_WrapNumbers.cache_clear|  sŠ   € à�Y�Y‹YØŠ|Ø—
‘
× Ñ Ô"Ø—‘×$Ñ$Ô&Ø×"Ñ"×(Ñ(Õ*à—
‘
—‘˜t TÔ*Ø—‘×"Ñ" 4¨Ô.Ø×"Ñ"×&Ñ& t¨TÔ2÷ �Y�YŠYús   •B(CÃC	c                ó®   € V P                   ;_uu_ 4        V P                  V P                  V P                  3uuRRR4       #   + '       g   i     R# ; i)z5Return internal cache dicts as a tuple of 3 elements.N)rE  rß   rF  rG  r³   s   &rm   Ú
cache_infoÚ_WrapNumbers.cache_infoˆ  s/   € à�Y�Y‹YØ—J‘J §¡°×0BÑ0BÐC÷ �Y�Y‹Yús   •#AÁA	)rß   rE  rG  rF  r±   )rg   rh   ri   rj   r¥   r­   rN  rV  re  rå   rk  rk   r¦   r§   s   @rm   rA  rA  7  s1   ø‡ € ñò ò@ò	3ò%ôN
3÷Dð Drl   rA  c                óš   € \         P                  ;_uu_ 4        \         P                  W4      uuRRR4       #   + '       g   i     R# ; i)z¹Given an `input_dict` and a function `name`, adjust the numbers
which "wrap" (restart from zero) across different calls by adding
"old value" to "new value" and return an updated dict.
N)Ú_wnrE  re  )rM  rŠ   s   &&rm   r;   r;   Ž  s%   € ô
 
��‹Ü�w‰w�zÓ(÷ 
��‹ús	   ™9¹A
	c                 ó&   € \        V R \        R7      # )Úrb)Ú	buffering)ÚopenÚFILE_READ_BUFFER_SIZE)Úfnames   &rm   r=   r=   ©  s   € Ü��tÔ'<Ô=Ð=rl   c                ó®   € \        V \        \        \        R7      p \        Vn        V#   \
         d     T# \         d    TP                  4        h i ; i)zYOpen a file in text mode by using the proper FS encoding and
en/decoding error handlers.
)rq  ÚencodingÚerrors)rr  rs  r/   r0   Ú_CHUNK_SIZErì   rÚ   Úclose)rt  Úfobjs   & rm   r<   r<   ­  sa   € ô ØÜ'ÜÜô	€Dðô 1ˆÔð €Køô ô Øð
 €Kô	 ô Ø�
‰
ŒØðús   �* ªA¸AÁAc                ó:  € V\         J d,   V! V 4      ;_uu_ 4       pVP                  4       uuRRR4       #  V! V 4      ;_uu_ 4       pVP                  4       uuRRR4       #   + '       g   i     R# ; i  + '       g   i     R# ; i  \         d    Tu # i ; i)zËRead entire file content and return it as a string. File is
opened in text mode. If specified, `fallback` is the value
returned in case of error, either if the file does not exist or
it can't be read().
N)Ú_DEFAULTÚreadrý   )rt  ÚfallbackÚ_openÚfs   &&& rm   r>   r>   Ç  sn   € ð ”8ÓÙ�5�\Œ\˜QØ—6‘6“8÷ Š\ð	Ù�u—” Ø—v‘v“x÷ ’÷	 �\ˆ\ú÷ —�ûäô 	ØŠOð	ús:   ›A"·B
 ÁA6Á
B
 Á"A3	Á6B	ÂB
 ÂB
 Â
BÂBc                ó$   € \        W\        R7      # )z,Same as above but opens file in binary mode.)r~  r  )r>   r=   )rt  r~  s   &&rm   r?   r?   Ø  s   € äˆu¬{Ô;Ð;rl   c                ó\  € Rp/ p\        VR,          4       F  w  rE^V^,           ^
,          ,          W5&   K   	  \        VR,          4       FD  p\        V 4      W6,          8¼  g   K  \        V 4      W6,          ,          pV\	        4       ,          u # 	  V\        V^ ,          V R7      ,          # )zÆUsed by various scripts. See: https://code.activestate.com/recipes/578019-bytes-to-human-human-to-bytes-converter/?in=user-4178764.

>>> bytes2human(10000)
'9.8K'
>>> bytes2human(100001221)
'95.4M'
:é   NN)Úsymbolr‹   )	ÚBÚKÚMÚGÚTÚPÚEÚZÚY)Ú	enumerateÚreversedÚabsrÎ   ÚlocalsÚdict)Únr•   ÚsymbolsÚprefixrb  Úsr„  r‹   s   &&      rm   r@   r@   Ý  s�   € ð <€GØ€FÜ˜' "�+Ö&‰ˆØ˜!˜a�% 2�Õ%ˆ‹	ñ 'ä˜7 2�;Ö'ˆÜˆq‹6�V•^Ö#Ü˜!“H˜v�~Õ-ˆEØœF›HÕ$Ò$ñ (ð ”D ¨¥
°!Ô4Õ4Ð4rl   c                 óD   € \         P                  R,          P                  # )z+Return updated psutil.PROCFS_PATH constant.r�   )ÚsysÚmodulesÚPROCFS_PATHrf   rl   rm   Úget_procfs_pathr›  ð  s   € ä�;‰;�xÕ ×,Ñ,Ð,rl   c                 ó8   € V P                  \        \        R 7      # ))rv  rw  )Údecoder/   r0   )r–  s   &rm   r�  r�  õ  s   € Ø�8‰8œX¬mˆ8Ó<Ð<rl   c                 ó    € \        V R 4      '       d   V P                  4       '       g   R#  V P                  4        R#   \         d     R# i ; i)ÚisattyFT)ÚhasattrrŸ  ÚfilenorÚ   ©Úfiles   &rm   rD   rD   þ  sC   € ä�4˜×"Ò"¨$¯+©+¯-ª-ÙðØ�‰Œñ øô ô Úðús   ¬> ¾AÁAFc                óh  € \        4       '       g   V # . p\        RRRRRRRRR	R
7	      pRVR&    WA,          pTP                  T4       T'       d   TP                  R4       RRP                  T4       RT  R2#   \         d.    RT: R\        TP	                  4       4       2p\        T4      Rhi ; i)z*Return an highlighted version of 'string'.Ú34Ú33Ú30Ú32Ú37Ú36Ú91Ú35Ú93)	ÚblueÚbrownÚdarkgreyÚgreenÚgreyÚ	lightblueÚredÚvioletÚyellowÚ29Núinvalid color z; choose amongst Ú1z[Ú;Úmz[0m)rD   r’  rÙ   ÚlistrQ  r  r\  r–   )r–  ÚcolorÚboldÚattrÚcolorsr’   s   &&&   rm   rC   rC   	  sÈ   € ä×!Ò!ØˆØ€DÜØØØØØØØØØô
€Fð €Fˆ4�Lð(Ø•ˆð 	‡K�K�ÔßØ�‰�CÔØ�3—8‘8˜D“>Ð" ! A 3 gÐ.Ð.øô ô (Ø˜u™iÐ'8¼¸f¿k¹k»mÓ9LÐ8MÐNˆÜ˜‹o 4Ð'ð(ús   ¯A9 Á98B1c                ó®  € \        4       '       g   \        WR7       R# \        '       d   \        \        WV4      VR7       R# ^ RIp^pVP
                  P                  P                  pVP
                  P                  P                  p\        ^^^^R7      pWXR&    W�,          pT'       d   T^8:  d
   T^,          pT\        P                  J d   RMRp
TP                   Tn        T! T
4      pT! Y±4        \        YR7       T! Yµ4       R#   \         d/    RT: R\        TP                  4       4      : 2p	\        T	4      Rhi ; i  T! Yµ4       i ; i)z$Print a colorized version of string.r¢  N)r±  r´  r¯  r¶  r¸  z; choose between iôÿÿÿiõÿÿÿ)rD   Úprintr   rC   ÚctypesÚwindllÚKernel32ÚGetStdHandleÚSetConsoleTextAttributer’  rÙ   r¼  rQ  r  r˜  ÚstderrÚc_ulongÚrestype)r–  r½  r¾  r£  rÃ  ÚDEFAULT_COLORrÆ  rÇ  rÀ  r’   Ú	handle_idÚhandles   &&&&        rm   rE   rE   %  s/  € ô  ×!Ò!Üˆa×ß	‹ÜŒf�Q˜tÓ$¨4×0ãàˆØ—}‘}×-Ñ-×:Ñ:ˆà�M‰M×"Ñ"×:Ñ:ð 	 ô ˜A 1¨A°aÔ8ˆØ$ˆt‰ð	,Ø•MˆE÷ �E˜Q”JØ�Q�JˆEà¤3§:¡:Ó-‘C°3ˆ	Ø%Ÿ~™~ˆÔÙ˜iÓ(ˆÙ Ô.ð	;Ü�!Õá# FÖ:øô! ô 	,à  ¡	ð *Ü˜Ÿ™›Ó'Ñ*ð,ð ô ˜S“/ tÐ+ð	,ûñ  $ FÕ:ús   ÂD Ã8E
 Ä9EÅ

Ec                ó<  € \         '       d�   ^ RIpVP                  VP                  4       P                  4      w  r#rEp\        V \        4      '       d#   \        V \        4      '       d   RV  2p MRV : 2p \        RV RV RV  2\        P                  R7       R# R# )z@If PSUTIL_DEBUG env var is set, print a debug message to stderr.Nz	ignoring zpsutil-debug [Ú:z]> r¢  )r   ÚinspectÚgetframeinfoÚcurrentframeÚf_backÚ
isinstancerÚ   rý   rÂ  r˜  rÈ  )r’   rÐ  rt  ÚlinenoÚ_Ú_linesÚ_indexs   &      rm   rB   rB   M  s�   € çƒ|Ûà+2×+?Ñ+?Ø× Ñ Ó"×)Ñ)ó,
Ñ(ˆ�q &ô �cœ9×%Ò%Ü˜#œw×'Ò'à! # Ð'‘à! #¡Ð)�ÜØ˜U˜G 1 V H¨C°¨uÐ5¼C¿J¹J÷	
ñ rl   )ÚfreebsdÚmidnightbsd)ÚsunosÚsolarisr±   i €  )z%(value).1f%(symbol)s)NF)mr¥   r„   Úenumrç   rø   r  rù   r˜  rC  r8  r   r   r   r   ÚImportErrorr   ÚboolÚgetenvr   Úobjectr|  Ú__all__rŠ   r   r   ÚplatformÚ
startswithr
   r   r   r   r   r   r	   r   ÚAIXr%   r&   r"   r'   r)   r-   r!   r+   r,   r#   r$   r*   r(   r.   r   r   r   r   r   r   r   r   r   r   r   r   ÚIntEnumre   ÚglobalsÚupdateÚ__members__ro   Úgetfilesystemencodingr/   Úgetfilesystemencodeerrorsr0   r1   rÚ   r€   rª   r»   rÂ   rÈ   r7   r4   rö   r3   r6   r8   r5   r9   r:   rA   r1  r2   rA  r;   rn  rå   rk  rs  r=   r<   r>   r?   r@   r›  r�  ÚstdoutrD   rC   rE   rB   rf   rl   rm   Ú<module>rí     sÙ  ðñ
ó Û Û Û 	Û Û Û 
Û Û Ý Ý Ý ðÝðÝñ
 �B—I’I˜nÓ-Ó.€Ù‹8€ðàðàðàðà'ðà)2ðà4;ðà=BðàDKðð ðð ðð
 ðð
 $ðð
 &4ðð
 6Hðð ðð 'ðð )8ðð :Gðð ðð !ðð #2ðð 4Dðð ðð )ðð +?ðð ðð 'ðð )6ðð 8Gðð ðð (ðð *:ðð <Nðð ðð ,ðð .@ðð ðð %ðð '6ðð  ð!ð   ð!ð  ",ð!ð$ ð%ð$ %ð%ð$ '6ð%ð$ 8Að%ð& ð'ð& 0ð'ð& 2Að'ð( ð)ð( 'ð)ð( );ð)ð( =Kð)ð* ð+ð* ð+ð* !&ð+ð* (.ð+ð, ð-ð, $ð-ð, &-ð-ð0 ð1ð0 %ð1ð0 '4ð1€ðD 	�‰�7Ñ€Ø
�'‰'�T‰/€Ø�‰×Ñ Ó(€Ø�‰×Ñ Ó)€Ø€Ø
�,‰,×
!Ñ
!Ð"<Ó
=€Ø
�,‰,×
!Ñ
! )Ó
,€Ø	�‰×	 Ñ	  Ó	*€Ø×"Ð"�×"Ð"˜F€Ø�‰×ÑÐ 4Ó5€Ø	‡l�l×Ñ˜eÓ$€ð €Ø€Ø Ð Ø€Ø$Ð Ø€Ø€ØÐ Ø€Ø€Ø€Ø€ØÐ Ø€ð !Ð Ø€Ø€Ø€Ø€Ø€Ø€
Ø€Ø€Ø€Ø€Ø€	ô�—‘ô ñ ƒ	× Ñ �×&Ñ&Ô 'ô�$—,‘,ô ñ
 ƒ	× Ñ �×(Ñ(Ô )ð ×$Ò$Ó&€Ø×-Ò-Ó/€ð 
ˆW�h Ð(¨;¸
Ð*CÐDØ	ˆW�hÐ + Ð/Ø
ˆgˆY˜˜Ð&Ø	ˆW�hÐ * Ð.Ø
ˆgˆY˜˜Ð%Ø
ˆg�xÐ  ;°
Ð";Ð<Øˆwˆi˜+ zÐ2Ð3Øˆxˆj˜;¨
Ð3Ð4ð	€	ð ÒØ×ÑØ�(�˜k˜]Ð+Ø�(�˜j˜\Ð*ðô ð
 ÒŸuØ×Ñ�f ˜y¨;¸
Ð*CÐDÐEÔFô>ˆIô >ôBA�Eô Aô"L�Mô Lô&A�5ô AôE�Uô Eô.	ò*òZDòN(òò	òò8òôDò*
ò,÷.TDñ TDòn)ñ ƒn€ØŸ?™?€Ô ØŸ.™.€Ô ð "Ð ò>òð4 !¨	ô ð" "ô <ô
5ò&-ò
=ð 	Ø!Ÿj™jó ó 	ðô/ð: ˜ C§J¡Jô%;ôP
øðg ô ØƒHðûð ô ØƒGðús#   ºO? ÁP Ï?	PÐPÐ	PÐP