+
    üÐj$  ã            
       ó¤   € . ROt ^ RIt^ RIt^ RIt^ RIHt ^ RIHt R R ltRRR	RR
R
RRRR/t	 ! R R4      t
]
! 4       t]P                  4       tR# )ÚsecondsÚPlatformN)Útime)ÚOptionalc                ó$   € V ^8„  d   QhR\         /# ©é   Úreturn)Ústr)Úformats   "Ú8/usr/lib/python3/dist-packages/twisted/python/runtime.pyÚ__annotate__r      s   € ÷ -ñ -œCñ -ó    c                 ó>   € R\         P                  R,          ,          # )z7
Returns the Python version as a dot-separated string.
z%s.%s.%s:Né   N)ÚsysÚversion_info© r   r   ÚshortPythonVersionr      s   € ð œ×(Ñ(¨Õ,Õ,Ð,r   ÚntÚwin32ÚceÚposixÚjavazorg.python.modules.osc                   ón  a € ] tR t^#t o Rt]P                  ]P                  4      t	]
! ]4      t]P                  tRV 3R lR lltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRV 3R lR lltV 3R lR ltV 3R lR ltV 3R lR ltV 3R ltRtV tR# )r   z;
Gives us information about the platform we're running on.
Nc                óJ   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          RR/# )r   ÚnameÚplatformr	   N©r   r
   )r   Ú__classdict__s   "€r   r   ÚPlatform.__annotate__,   s-   ø€ ÷ &ñ &Ù™S•Mð&Ù4<¹SµMð&à	ñ&r   c                óZ   € Ve   \         P                  V4      V n        Ve	   W n        R # R # )N)ÚknownPlatformsÚgetÚtypeÚ	_platform)Úselfr   r   s   &&&r   Ú__init__ÚPlatform.__init__,   s,   € ð ÒÜ&×*Ñ*¨4Ó0ˆDŒIØÒØ%ŽNñ  r   c                ó    <€ V ^8„  d   QhRS[ /# r   ©Úbool)r   r   s   "€r   r   r    4   s   ø€ ÷ !ñ !™ñ !r   c                ó    € V P                   R8g  # )zg
Do we know about this platform?

@return: Boolean indicating whether this is a known platform or not.
N©r$   ©r&   s   &r   ÚisKnownÚPlatform.isKnown4   s   € ð �y‰y˜DÑ Ð r   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r   r   )r   r   s   "€r   r   r    <   s   ø€ ÷ ñ ™¡#�ñ r   c                ó   € V P                   # )z@
Get platform type.

@return: Either 'posix', 'win32' or 'java'
r-   r.   s   &r   ÚgetTypeÚPlatform.getType<   s   € ð �y‰yÐr   c                ó    <€ V ^8„  d   QhRS[ /# r   r*   )r   r   s   "€r   r   r    D   s   ø€ ÷ *ñ *™$ñ *r   c                ó    € V P                   R8H  # )zk
Check if current platform is macOS.

@return: C{True} if the current platform has been detected as macOS.
Údarwin)r%   r.   s   &r   ÚisMacOSXÚPlatform.isMacOSXD   s   € ð �~‰~ Ñ)Ð)r   c                ó    <€ V ^8„  d   QhRS[ /# r   r*   )r   r   s   "€r   r   r    L   s   ø€ ÷  ñ  ™ñ  r   c                ó\   € \         P                  ! R\        ^R7       V P                  4       # )zð
Are we running in Windows NT?

This is deprecated and always returns C{True} on win32 because
Twisted only supports Windows NT-derived platforms at this point.

@return: C{True} if the current platform has been detected as
    Windows NT.
zgtwisted.python.runtime.Platform.isWinNT was deprecated in Twisted 13.0. Use Platform.isWindows instead.)Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningÚ	isWindowsr.   s   &r   ÚisWinNTÚPlatform.isWinNTL   s*   € ô 	�Šð<äØõ		
ð �~‰~ÓÐr   c                ó    <€ V ^8„  d   QhRS[ /# r   r*   )r   r   s   "€r   r   r    ^   s   ø€ ÷ )ñ )™4ñ )r   c                ó(   € V P                  4       R8H  # )zh
Are we running in Windows?

@return: C{True} if the current platform has been detected as
    Windows.
r   )r3   r.   s   &r   r@   ÚPlatform.isWindows^   s   € ð �|‰|‹~ Ñ(Ð(r   c                ó    <€ V ^8„  d   QhRS[ /# r   r*   )r   r   s   "€r   r   r    g   s   ø€ ÷ Nñ N™ñ Nr   c                ó|   € \         P                  R8H  ;'       d#    \         P                  ! 4       P                  ^8H  # )z‰
Check if current platform is Windows Vista or Windows Server 2008.

@return: C{True} if the current platform has been detected as Vista
r   )r   r   ÚgetwindowsversionÚmajorr.   s   &r   ÚisVistaÚPlatform.isVistag   s/   € ô �|‰|˜wÑ&×MÐM¬3×+@Ò+@Ó+B×+HÑ+HÈAÑ+MÐMr   c                ó    <€ V ^8„  d   QhRS[ /# r   r*   )r   r   s   "€r   r   r    o   s   ø€ ÷ 2ñ 2™ñ 2r   c                ó8   € V P                   P                  R4      # )zk
Check if current platform is Linux.

@return: C{True} if the current platform has been detected as Linux.
Úlinux)r%   Ú
startswithr.   s   &r   ÚisLinuxÚPlatform.isLinuxo   s   € ð �~‰~×(Ñ(¨Ó1Ð1r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Ú_initCGroupLocationr	   )r
   r+   )r   r   s   "€r   r   r    w   s   ø€ ÷ ñ ©Cð Átñ r   c                óx  € V P                  4       '       g   R# ^ RIHp V! V4      pVP                  4       '       dy   VP	                  4       P                  R4       Uu. uF  qDP                  R4      NK  	  ppV F6  p\        V4      ^8X  g   K  V^,          P                  R4      '       g   K5   R# 	  R# u upi )z£
Check if the current platform is Linux in a Docker container.

@return: C{True} if the current platform has been detected as Linux
    inside a Docker container.
F)ÚFilePathó   
ó   :s   /docker/T)rP   Útwisted.python.filepathrU   ÚexistsÚ
getContentÚsplitÚlenrO   )r&   rS   rU   ÚinitCGroupsÚxÚcontrolGroupsÚgroups   &&     r   ÚisDockerÚPlatform.isDockerw   s¢   € ð �|‰|�~Š~Ùå4ñ Ð2Ó3ˆØ×Ñ×Òð (3×'=Ñ'=Ó'?×'EÑ'EÀeÔ'LóÙ'L !—‘˜–Ñ'Lð ð ó '�Ü�u“: –? u¨Q¥x×':Ñ':¸;×'GÔ'Gâñ 'ñ
 ùòs   ÁB7c                ó    <€ V ^8„  d   QhRS[ /# r   r*   )r   r   s   "€r   r   r    “   s   ø€ ÷ ñ ¡4ñ r   c                ó|   € V P                  4       '       d   R#  \        P                   R#   \         d     R# i ; i)zœ
Check for symlink support usable for Twisted's purposes.

@return: C{True} if symlinks are supported on the current platform,
         otherwise C{False}.
FT)r@   ÚosÚsymlinkÚAttributeErrorr.   s   &r   Ú_supportsSymlinksÚPlatform._supportsSymlinks“   s;   € ð �>‰>×Òñ ðÜ—
’
ñ øô "ô Úðús   š, ¬;º;c                ó    <€ V ^8„  d   QhRS[ /# r   r*   )r   r   s   "€r   r   r    ¬   s   ø€ ÷ ñ ¡ñ r   c                ó8   €  ^ RI pVRJ#   \         d     R# i ; i)za
Can threads be created?

@return: C{True} if the threads are supported on the current platform.
NF)Ú	threadingÚImportError)r&   rl   s   & r   ÚsupportsThreadsÚPlatform.supportsThreads¬   s'   € ð	Ûà DÐ(Ð(øÜô 	Úð	ús   ‚
 Š˜c                ó    <€ V ^8„  d   QhRS[ /# r   r*   )r   r   s   "€r   r   r    ¹   s   ø€ ÷ ñ ¡ñ r   c                ó�   €  ^ RI HpHp  \        P
                  ! T! 4       4       R#   \         d     R# i ; i  T d     R# i ; i)zN
Return C{True} if we can use the inotify API on this platform.

@since: 10.1
)ÚINotifyErrorÚinitFT)Útwisted.python._inotifyrr   rs   rm   re   Úclose)r&   rr   rs   s   &  r   ÚsupportsINotifyÚPlatform.supportsINotify¹   sI   € ð	ßBð	Ü�HŠH‘T“VÔñ øô ô 	Úð	ûð
 ô 	Úð	ús   ‚( ‹: ¨7¶7ºAÁAc                ó6   <€ V ^8„  d   Qh/ S[ S[,          ;R&   # )r   r$   r   )r   r   s   "€r   r   r    #   s   ø‡ ‚ ñ
 ‘3�-Ñ5ò r   )r%   r$   )NN)z/proc/1/cgroup)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r"   r#   re   r   r$   Ústaticmethodr   r   r   r%   r'   r/   r3   r8   rA   r@   rJ   rP   ra   rh   rn   rv   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r   #   sµ   ø‡ € ñð )×,Ñ,¨R¯W©WÓ5€DÙ˜7Ó#€GØ—‘€I÷&ò &÷!ð !÷ð ÷*ð *÷ ð  ÷$)ð )÷Nð N÷2ð 2÷ò ÷8ð ÷2ð ÷ð ÷m ƒ r   )r   r   r   r   ÚplatformType)Ú__all__re   r   r=   r   r   Útypingr   r   r"   r   r   r3   r‚   r   r   r   Ú<module>r…      sh   ðò
€ó 
Û 
Û Ý  Ý õ-ð 	ˆ'Øˆ'ØˆWØ
ˆFØ˜Vð€÷eñ eñP ‹:€Ø×ÑÓ!‚r   