+
    Vß$g‰R  ã                  ó¸  € ^ RI H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
HtHt ^ RIHt ^ RIHt ^ RIHt ]'       d   ^ RIHt ]P*                  ! R4      t]! ]R4      '       d   ]! ]R	4      '       d   ]! ]R
4      '       g   R]P0                   2t]! ]4      h]P4                  ! ]]]
]RR7      ! R	]34      t]P4                  ! ]]]RR7      ! R
]34      t]P4                  ! ]RR7      ! R]34      t ! R R4      t]! R ]P>                  ]P@                  ]PB                  ]PD                  ]PF                  ]PH                  ]PJ                  ]PL                  ]PN                  ]PP                  ]PR                  .4      t* ! R R]PV                  4      t,]PZ                  ! ],4      t.Rt/]/].^,           ,          t0 ! R R4      t1 ! R R4      t2R# )é    )ÚannotationsN)Úc_char_pÚc_intÚc_uint32)Úreduce)ÚTYPE_CHECKING)ÚUnsupportedLibcError)Ú	GeneratorÚinotify_initÚinotify_add_watchÚinotify_rm_watchz Unsupported libc version found: T)Ú	use_errnoc                  ó°   € ] tR t^!t^t^t^t^t^t^ t	^@t
^€tRtRtRtRt]
],          tRtRtRtRtR	tR
tRtRtRt]! R ]]]]]]	]
]]]]].4      tR	tRtRtR# )ÚInotifyConstantsé   i   i   é   i    i @  i €  i   i   i   i    i   @l        c                	ó   € W,          # ©N© ©ÚxÚys   &&Ú>/usr/lib/python3/dist-packages/watchdog/observers/inotify_c.pyÚ<lambda>ÚInotifyConstants.<lambda>B   s   € �Q–Uó    r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú	IN_ACCESSÚ	IN_MODIFYÚ	IN_ATTRIBÚIN_CLOSE_WRITEÚIN_CLOSE_NOWRITEÚIN_OPENÚIN_MOVED_FROMÚIN_MOVED_TOÚ	IN_CREATEÚ	IN_DELETEÚIN_DELETE_SELFÚIN_MOVE_SELFÚIN_MOVEÚ
IN_UNMOUNTÚIN_Q_OVERFLOWÚ
IN_IGNOREDÚ
IN_ONLYDIRÚIN_DONT_FOLLOWÚIN_EXCL_UNLINKÚIN_MASK_ADDÚIN_ISDIRÚ
IN_ONESHOTr   ÚIN_ALL_EVENTSÚ
IN_CLOEXECÚIN_NONBLOCKÚ__static_attributes__r   r   r   r   r   !   sÀ   † à€IØ€IØ€IØ€NØ!ÐØ€GØ€MØ€KØ€IØ€IØ€NØ€Lð ˜kÕ)€Gð €JØ€MØ€Jð €JØ€NØ€NØ€KØ€HØ€Jñ ÙàØØØØØØØØØØØð	
ó€Mð& €JØ„Kr   r   c                ó   € W,          # r   r   r   s   &&r   r   r   Z   s   € �–r   c                  ó<   € ] tR t^ktRtR]3R]3R]3R]3R]33tRt	R# )	ÚInotifyEventStructa¤  Structure representation of the inotify_event structure
(used in buffer size calculations)::

    struct inotify_event {
        __s32 wd;            /* watch descriptor */
        __u32 mask;          /* watch mask */
        __u32 cookie;        /* cookie to synchronize two events */
        __u32 len;           /* length (including nulls) of name */
        char  name[0];       /* stub for possible name */
    };
ÚwdÚmaskÚcookieÚlenÚnamer   N)
r   r   r   r    Ú__doc__r   r   r   Ú_fields_r:   r   r   r   r=   r=   k   s7   † ñ
ð 
ˆuˆØ	�ÐØ	�8ÐØ	�ÐØ	�Ðð„Hr   r=   r   c                  ó6  € ] tR t^†tRtRRRR/R R llt]R R	 l4       t]R
 R l4       t]R R l4       t	]R R l4       t
R R ltR R ltR R ltR R ltR R ltR R ltR]/R R lltR R  ltR! R" ltR# R$ lt]R% R& l4       t]R' R( l4       tR)tR# )*ÚInotifyzèLinux inotify(7) API wrapper class.

:param path:
    The directory path for which we want an inotify object.
:type path:
    :class:`bytes`
:param recursive:
    ``True`` if subdirectories should be monitored; ``False`` otherwise.
Ú	recursiveFÚ
event_maskNc               ó(   € V ^8„  d   QhRRRRRRRR/# )	é   ÚpathÚbytesrG   ÚboolrH   z
int | NoneÚreturnÚNoner   )Úformats   "r   Ú__annotate__ÚInotify.__annotate__‘   s)   € ÷ +>ñ +>˜Uð +>°$ð +>ÈJð +>Ðbfñ +>r   c               	ób  a € \        4       pVR
8X  d   \        P                  4        VS n        \        P
                  ! 4       S n        RS n        RS n        \        P                  ! 4       w  S n        S n        \        \        R4      '       d”   \        P                  ! 4       S n        S P                   P#                  S P                  \        P$                  4       S P                   P#                  S P                  \        P$                  4       R V 3R llpVS n        MR V 3R llpVS n        / S n        / S n        VS n        Vf   \.        pVS n        VS n        \        P4                  P7                  V4      '       d   S P9                  WVR	7       MS P;                  W4       / S n        R# )é   FTÚpollc               ó   € V ^8„  d   QhRR/# ©rJ   rN   rM   r   )rP   s   "r   rQ   Ú&Inotify.__init__.<locals>.__annotate__¢   s   € ÷ Tñ T˜Tñ Tr   c                 óØ   <€ \         ;QJ d7    V 3R  lS P                  P                  4        4       F  '       g   K   R# 	  R# ! V 3R  lS P                  P                  4        4       4      # )c              3  óF   <"  € T F  w  rVSP                   8H  x € K  	  R # 5ir   ©Ú_inotify_fd)Ú.0ÚfdÚ_Úselfs   &  €r   Ú	<genexpr>Ú4Inotify.__init__.<locals>.do_poll.<locals>.<genexpr>£   s    øé € ÐSÑ?R±e°b˜2 ×!1Ñ!1Ö1Ó?Rùs   ƒ!TF)ÚanyÚ_pollerrU   ©r`   s   €r   Údo_pollÚ!Inotify.__init__.<locals>.do_poll¢   sF   ø€ ß“sÔS¸t¿|¹|×?PÑ?PÔ?RÓS—s”sÐS’sÐS�sÔS¸t¿|¹|×?PÑ?PÔ?RÓSÓSÐSr   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   rX   ¨   s   € ÷ 5ñ 5˜tñ 5r   c                 óŒ   <€ \         P                   ! SP                  SP                  .. . 4      p SP                  V ^ ,          9   # ©r   )Úselectr\   Ú_kill_r)Úresultr`   s    €r   Ú	do_selectÚ#Inotify.__init__.<locals>.do_select¨   s9   ø€ ÜŸš¨×(8Ñ(8¸$¿,¹,Ð'GÈÈRÓP�Ø×'Ñ'¨6°!­9Ñ4Ð4r   N)rG   éÿÿÿÿ)r   rF   Ú_raise_errorr\   Ú	threadingÚLockÚ_lockÚ_closedÚ_is_readingÚosÚpiperl   Ú_kill_wÚhasattrrk   rU   rd   ÚregisterÚPOLLINÚ_check_inotify_fdÚ_wd_for_pathÚ_path_for_wdÚ_pathÚWATCHDOG_ALL_EVENTSÚ_event_maskÚ_is_recursiverK   ÚisdirÚ_add_dir_watchÚ
_add_watchÚ_moved_from_events)r`   rK   rG   rH   Ú
inotify_fdrf   rn   s   f&$$   r   Ú__init__ÚInotify.__init__‘   sE  ø€ ä!“^ˆ
Ø˜ÔÜ× Ñ Ô"Ø%ˆÔÜ—^’^Ó%ˆŒ
ØˆŒØˆÔÜ%'§W¢W£YÑ"ˆŒ�d”lô ”6˜6×"Ò"Ü!Ÿ;š;›=ˆDŒLØ�L‰L×!Ñ! $×"2Ñ"2´F·M±MÔBØ�L‰L×!Ñ! $§,¡,´·±Ô>÷Tð Tð &-ˆDÕ"÷5ð 5ð &/ˆDÔ"ð /1ˆÔØ.0ˆÔàˆŒ
àÒÜ,ˆJØ%ˆÔØ&ˆÔÜ�7‰7�=‰=˜×ÒØ×Ñ ¸IÐÕFà�O‰O˜DÔ-Ø;=ˆÖr   c               ó   € V ^8„  d   QhRR/# ©rJ   rN   Úintr   )rP   s   "r   rQ   rR   ¿   s   € ÷  ñ  ˜Cñ  r   c                ó   € V P                   # )z)The event mask for this inotify instance.)r‚   re   s   &r   rH   ÚInotify.event_mask¾   ó   € ð ×ÑÐr   c               ó   € V ^8„  d   QhRR/# ©rJ   rN   rL   r   )rP   s   "r   rQ   rR   Ä   s   € ÷ ñ �eñ r   c                ó   € V P                   # )z.The path associated with the inotify instance.)r€   re   s   &r   rK   ÚInotify.pathÃ   s   € ð �z‰zÐr   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   rR   É   s   € ÷ "ñ "˜dñ "r   c                ó   € V P                   # )z0Whether we are watching directories recursively.)rƒ   re   s   &r   Úis_recursiveÚInotify.is_recursiveÈ   s   € ð ×!Ñ!Ð!r   c               ó   € V ^8„  d   QhRR/# rŒ   r   )rP   s   "r   rQ   rR   Î   s   € ÷  ñ  �Cñ  r   c                ó   € V P                   # )z9The file descriptor associated with the inotify instance.r[   re   s   &r   r^   Ú
Inotify.fdÍ   r�   r   c               ó   € V ^8„  d   QhRR/# ©rJ   rN   rO   r   )rP   s   "r   rQ   rR   Ò   s   € ÷ %ñ % Dñ %r   c                ó   € / V n         R# )z)Clear cached records of MOVED_FROM eventsN)r‡   re   s   &r   Úclear_move_recordsÚInotify.clear_move_recordsÒ   s
   € à"$ˆÖr   c               ó    € V ^8„  d   QhRRRR/# )rJ   Údestination_eventÚInotifyEventrN   zbytes | Noner   )rP   s   "r   rQ   rR   Ö   s   € ÷ 	ñ 	°ð 	À,ñ 	r   c                óŠ   € VP                   V P                  9   d(   V P                  VP                   ,          P                  # R# )z�The source path corresponding to the given MOVED_TO event.

If the source path is outside the monitored directories, None
is returned instead.
N)r@   r‡   Úsrc_path)r`   r¢   s   &&r   Úsource_for_moveÚInotify.source_for_moveÖ   s9   € ð ×#Ñ# t×'>Ñ'>Ô>Ø×*Ñ*Ð+<×+CÑ+CÕD×MÑMÐMár   c               ó    € V ^8„  d   QhRRRR/# )rJ   Úeventr£   rN   rO   r   )rP   s   "r   rQ   rR   á   s   € ÷ 6ñ 6¨lð 6¸tñ 6r   c                ó6   € WP                   VP                  &   R# )zMSave this event as the source event for future MOVED_TO events to
reference.
N)r‡   r@   )r`   r©   s   &&r   Úremember_move_from_eventÚ Inotify.remember_move_from_eventá   s   € ð 16×Ñ §¡Ó-r   c               ó    € V ^8„  d   QhRRRR/# ©rJ   rK   rL   rN   rO   r   )rP   s   "r   rQ   rR   ç   s   € ÷ 4ñ 4˜eð 4¨ñ 4r   c                óž   € V P                   ;_uu_ 4        V P                  WP                  4       RRR4       R#   + '       g   i     R# ; i)zMAdds a watch for the given path.

:param path:
    Path to begin monitoring.
N)rt   r†   r‚   )r`   rK   s   &&r   Ú	add_watchÚInotify.add_watchç   s+   € ð �Z�Z‹ZØ�O‰O˜D×"2Ñ"2Ô3÷ �Z�ZŠZús	   •;»A	c               ó    € V ^8„  d   QhRRRR/# r®   r   )rP   s   "r   rQ   rR   ð   s   € ÷ 
'ñ 
' ð 
'¨4ñ 
'r   c                ó  € V P                   ;_uu_ 4        V P                  P                  V4      pV P                  V \	        V P
                  V4      R8X  d   \        P                  4        RRR4       R#   + '       g   i     R# ; i)zgRemoves a watch for the given path.

:param path:
    Path string for which the watch will be removed.
Nrp   )rt   r~   Úpopr   r   r\   rF   rq   )r`   rK   r>   s   && r   Úremove_watchÚInotify.remove_watchð   s^   € ð �Z�Z‹ZØ×"Ñ"×&Ñ& tÓ,ˆBØ×!Ñ! "Ð%Ü × 0Ñ 0°"Ó5¸Ô;Ü×$Ñ$Ô&÷	 �Z�ZŠZús   •AA7Á7B	c               ó   € V ^8„  d   QhRR/# r�   r   )rP   s   "r   rQ   rR   ü   s   € ÷ ,ñ ,�tñ ,r   c                ó¾  € V P                   ;_uu_ 4        V P                  '       gš   RV n        V P                  V P                  9   d4   V P                  V P                  ,          p\	        V P
                  V4       V P                  '       d#   \        P                  ! V P                  R4       MV P                  4        RRR4       R#   + '       g   i     R# ; i)z?Closes the inotify instance and removes all associated watches.Tó   !N)rt   ru   r€   r~   r   r\   rv   rw   Úwritery   Ú_close_resources)r`   r>   s   & r   ÚcloseÚInotify.closeü   s‰   € à�Z�Z‹ZØ—<—<�<Ø#�”à—:‘: ×!2Ñ!2Ô2Ø×*Ñ*¨4¯:©:Õ6�BÜ$ T×%5Ñ%5°rÔ:à×#×#Ð#ô —H’H˜TŸ\™\¨4Õ0à×)Ñ)Ô+÷ �Z�ZŠZús   •A9CÂ2CÃC	Úevent_buffer_sizec               ó    € V ^8„  d   QhRRRR/# )rJ   r¾   r�   rN   úlist[InotifyEvent]r   )rP   s   "r   rQ   rR     s   € ÷ rñ r°ð rÐTfñ rr   c          
     ó6	  a € R V 3R llpRp  S P                   ;_uu_ 4        S P                  '       d   . uuRRR4       # RS n        RRR4       S P                  4       '       d"   \        P
                  ! S P                  V4      pS P                   ;_uu_ 4        RS n        S P                  '       d   S P                  4        . uuRRR4       #  RRR4        S P                   ;_uu_ 4        . p\        P                  T4       EFÕ  w  rgr‰TR8X  d   K  S P                  T,          p
T	'       d    \        P                  P!                  Y©4      MT
p\#        YgY‰T4      pTP$                  '       d   S P'                  T4       EM�TP(                  '       Edo   S P+                  T4      pTS P,                  9   Ed    S P,                  T,          pS P,                  T TS P,                  TP.                  &   TP.                  S P                  T&   S P0                  '       d¼   S P,                  P3                  4        F�  pTP5                  T\        P                  P6                  P9                  4       ,           4      '       g   KI  S P,                  P;                  T4      pTP=                  YÜP.                  4      pTS P,                  T&   TS P                  T&   KŸ  	  \        P                  P!                  Y©4      p\#        YgY‰T4      pTP>                  '       dA   S P                  P;                  T4      pS P,                  T,          T8X  d   S P,                  T TPA                  T4       S P0                  '       g   EKw  TPB                  '       g   EKŒ  TPD                  '       g   EK¡   S PG                  TS PH                  4       TPK                  T! T4      4       EKØ  	  RRR4       T#   + '       g   i     EL¬; i  + '       g   i     EL6; i  \         dS   pTP                  \        P                  8X  d    Rp?EK8  TP                  \        P                  8X  d   . u Rp?# h Rp?ii ; i  \         d     EK{  i ; i  + '       g   i     X# ; i)z*Reads events from inotify and yields them.c               ó    € V ^8„  d   QhRRRR/# )rJ   r¥   rL   rN   rÀ   r   )rP   s   "r   rQ   Ú)Inotify.read_events.<locals>.__annotate__  s   € ÷ 	ñ 	¨%ð 	Ð4Fñ 	r   c                óê  <€ . p\         P                  ! V 4       EF?  w  r#pV F¬  p\        P                  ! \        4      ;_uu_ 4        \         P
                  P                  W%4      pSP                  VSP                  4      p\        V\        P                  \        P                  ,          ^ VV4      pVP                  V4       RRR4       K®  	  V F€  p	\         P
                  P                  W)4      pSP                  \         P
                  P                  V4      ,          p
\        V
\        P                  ^ V	V4      pVP                  V4       K‚  	  EKB  	  V#   + '       g   i     EKO  ; i)r   N)rw   ÚwalkÚ
contextlibÚsuppressÚOSErrorrK   Újoinr†   r‚   r£   r   r)   r5   Úappendr~   Údirname)r¥   ÚeventsÚrootÚdirnamesÚ	filenamesrË   Ú	full_pathÚwd_dirÚeÚfilenameÚwd_parent_dirr`   s   &          €r   Ú_recursive_simulateÚ0Inotify.read_events.<locals>._recursive_simulate  s  ø€ ØˆFÜ-/¯WªW°X×->Ñ)� 	Û'�GÜ#×,Ò,¬W×5Õ5Ü$&§G¡G§L¡L°Ó$?˜	Ø!%§¡°¸D×<LÑ<LÓ!M˜Ü(Ø"Ü,×6Ñ6Ô9I×9RÑ9RÕRØØ#Ø%ó˜ð Ÿ™ aÔ(÷ 6Ñ5ñ  (ó !*�HÜ "§¡§¡¨TÓ <�IØ$(×$5Ñ$5´b·g±g·o±oÀiÓ6PÕ$Q�MÜ$Ø%Ü(×2Ñ2ØØ Ø!ó�Að —M‘M !Ö$ô !*ñ .?ð0 ˆM÷- 6×5Ñ5ús   ÁA?E 	Å E2r   TNFrp   )&rt   ru   rv   r}   rw   Úreadr\   r»   rÈ   ÚerrnoÚEINTRÚEBADFrF   Ú_parse_event_bufferr   rK   rÉ   r£   Úis_moved_fromr«   Úis_moved_tor¦   r~   r¥   r—   ÚcopyÚ
startswithÚsepÚencoder´   ÚreplaceÚ
is_ignoredrÊ   Úis_directoryÚ	is_creater†   r‚   Úextend)r`   r¾   rÕ   Úevent_bufferrÒ   Ú
event_listr>   r?   r@   rB   Úwd_pathr¥   Úinotify_eventÚmove_src_pathÚmoved_wdr€   Ú_move_to_pathrK   s   f$                r   Úread_eventsÚInotify.read_events  s„  ø€ ÷	ð 	ð8 ˆØðØ—Z—Z“ZØ—|—|�|Ø!÷  ’Zð (,�DÔ$÷	  ð ×)Ñ)×+Ò+Ü#%§7¢7¨4×+;Ñ+;Ð=NÓ#O�Là—Z—Z“ZØ',�DÔ$à—|—|�|Ø×-Ñ-Ô/Ø!÷  ’Zð $÷  ð à�Z�Z‹ZØˆJÜ*1×*EÑ*EÀl×*SÑ&�˜&Ø˜”8ÙØ×+Ñ+¨BÕ/�ß:>œ2Ÿ7™7Ÿ<™<¨Ô6ÀG�Ü ,¨R°vÀXÓ N�à ×.×.Ð.Ø×1Ñ1°-Ö@Ø"×.×.Ñ.Ø$(×$8Ñ$8¸Ó$G�MØ$¨×(9Ñ(9Õ9Ø#'×#4Ñ#4°]Õ#C˜Ø ×-Ñ-¨mÐ<ØDL˜×)Ñ)¨-×*@Ñ*@ÑAØ6C×6LÑ6L˜×)Ñ)¨(Ñ3Ø×,×,Ð,Ø)-×):Ñ):×)?Ñ)?Ö)A Ø#(×#3Ñ#3°MÄBÇGÁGÇKÁK×DVÑDVÓDXÕ4X×#YÔ#YØ/3×/@Ñ/@×/DÑ/DÀUÓ/K HØ49·M±MÀ-×QgÑQgÓ4h MØGO D×$5Ñ$5°mÑ$DØBO D×$5Ñ$5°hÓ$?ñ *Bô  "Ÿw™wŸ|™|¨GÓ:�HÜ$0°¸6ÈÓ$R�Mà ×+×+Ð+à×,Ñ,×0Ñ0°Ó4�DØ×(Ñ(¨Õ.°"Ô4Ø ×-Ñ-¨dÐ3à×!Ñ! -Ô0à×$×$Ó$¨×)C×)CÓ)CÈ×H_×H_ÓH_ð!ØŸ™¨°$×2BÑ2BÔCð ×%Ñ%Ñ&9¸(Ó&C×Dñ_ +T÷ ðf Ð÷Y  —Z�Zú÷  —Z�Zûô ô Ø—7‘7œeŸk™kÔ)Þà—7‘7œeŸk™kÔ)Ø•Iàûðûôp #ô !Û ð!ú÷] ŽZðf ÐúsÕ   �P £O,·
P ÁO,Á	P Á'5P Â+P Ã
P ÃP Ã0ARÄ3A%RÆBRÈ ARÊBRÌA RÍ?RÎRÎ*Q4ÏRÏ,O=	Ï7	P Ð P	ÐP ÐP ÐQ1ÐQ,Ñ Q,Ñ%Q1Ñ+Q,Ñ,Q1Ñ4R	Ñ?RÒR	ÒRÒR	c               ó   € V ^8„  d   QhRR/# r�   r   )rP   s   "r   rQ   rR   �  s   € ÷ ñ  $ñ r   c                	óÆ   € \         P                  ! V P                  4       \         P                  ! V P                  4       \         P                  ! V P                  4       R # r   )rw   r¼   r\   rl   ry   re   s   &r   r»   ÚInotify._close_resources�  s4   € Ü
�Š�×!Ñ!Ô"Ü
�Š�—‘ÔÜ
�Š�—‘Ör   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rJ   rK   rL   r?   r�   rG   rM   rN   rO   r   )rP   s   "r   rQ   rR   ‡  s(   € ÷ 5ñ 5 5ð 5°ð 5À4ð 5ÈDñ 5r   c               ó   € \         P                  P                  V4      '       g>   \        \        P
                  \         P                  ! \        P
                  4      V4      hV P                  W4       V'       dƒ   \         P                  ! V4       Ff  w  rEpV FZ  p\         P                  P                  WG4      p\         P                  P                  V4      '       d   KI  V P                  W‚4       K\  	  Kh  	  R# R# )zæAdds a watch (optionally recursively) for the given directory path
to monitor events specified by the mask.

:param path:
    Path to monitor
:param recursive:
    ``True`` to monitor recursively.
:param mask:
    Event bit mask.
N)rw   rK   r„   rÈ   rØ   ÚENOTDIRÚstrerrorr†   rÅ   rÉ   Úislink)	r`   rK   r?   rG   rÍ   rÎ   r_   rË   rÐ   s	   &&&$     r   r…   ÚInotify._add_dir_watch‡  s    € ô �w‰w�}‰}˜T×"Ò"Üœ%Ÿ-™-¬¯ª´U·]±]Ó)CÀTÓJÐJØ�‰˜Ô#ßÜ%'§W¢W¨T¦]Ñ!� Û'�GÜ "§¡§¡¨TÓ ;�IÜ—w‘w—~‘~ i×0Ò0Ù Ø—O‘O IÖ4ó	  (ó &3ñ r   c               ó$   € V ^8„  d   QhRRRRRR/# )rJ   rK   rL   r?   r�   rN   r   )rP   s   "r   rQ   rR   �  s!   € ÷ ñ ˜uð ¨Cð °Cñ r   c                ó    € \        V P                  W4      pVR8X  d   \        P                  4        W0P                  V&   WP
                  V&   V# )zŒAdds a watch for the given path to monitor events specified by the
mask.

:param path:
    Path to monitor
:param mask:
    Event bit mask.
rp   )r   r\   rF   rq   r~   r   )r`   rK   r?   r>   s   &&& r   r†   ÚInotify._add_watch�  sJ   € ô ˜t×/Ñ/°Ó<ˆØ�Œ8Ü× Ñ Ô"Ø"$×Ñ˜$ÑØ $×Ñ˜"ÑØˆ	r   c               ó   € V ^8„  d   QhRR/# r�   r   )rP   s   "r   rQ   rR   ®  s   € ÷ 1ñ 1˜$ñ 1r   c                 óV  € \         P                  ! 4       p V \        P                  8X  d   \	        \        P                  R4      hV \        P
                  8X  d   \	        \        P
                  R4      hV \        P                  8w  d!   \	        V \        P                  ! V 4      4      hR# )z#Raises errors for inotify failures.zinotify watch limit reachedzinotify instance limit reachedN)	ÚctypesÚ	get_errnorØ   ÚENOSPCrÈ   ÚEMFILEÚEACCESrw   rö   )Úerrs    r   rq   ÚInotify._raise_error­  su   € ô ×ÒÓ ˆà”%—,‘,ÔÜœ%Ÿ,™,Ð(EÓFÐFà”%—,‘,ÔÜœ%Ÿ,™,Ð(HÓIÐIà”%—,‘,ÔÜ˜#œrŸ{š{¨3Ó/Ó0Ð0ñ r   c               ó    € V ^8„  d   QhRRRR/# )rJ   rç   rL   rN   z&Generator[tuple[int, int, int, bytes]]r   )rP   s   "r   rQ   rR   ¼  s   € ÷ )ñ )¨%ð )Ð4Zñ )r   c              #  óô   "  € ^ pV^,           \        V 4      8:  d[   \        P                  ! RW4      w  r#rEW^,           V^,           V,            P                  R4      pV^V,           ,          pW#WF3x € Kq  R# 5i)a#  Parses an event buffer of ``inotify_event`` structs returned by
inotify::

    struct inotify_event {
        __s32 wd;            /* watch descriptor */
        __u32 mask;          /* watch mask */
        __u32 cookie;        /* cookie to synchronize two events */
        __u32 len;           /* length (including nulls) of name */
        char  name[0];       /* stub for possible name */
    };

The ``cookie`` member of this struct is used to pair two related
events, for example, it pairs an IN_MOVED_FROM event with an
IN_MOVED_TO event.
ÚiIIIó    N)rA   ÚstructÚunpack_fromÚrstrip)rç   Úir>   r?   r@   ÚlengthrB   s   &      r   rÛ   ÚInotify._parse_event_buffer»  ss   é € ð" ˆØ�"�fœ˜LÓ)Ô)Ü'-×'9Ò'9¸&À,Ó'RÑ$ˆB�fØ B¥¨¨R­°&­Ð9×@Ñ@ÀÓGˆDØ��f•ÕˆAØ˜FÐ(Ô(ñ	 *ùs   ‚A6A8)r}   ru   r‚   r\   rv   rƒ   rl   ry   rt   r‡   r€   r   rd   r~   )r   r   r   r    rC   r‰   ÚpropertyrH   rK   r—   r^   rŸ   r¦   r«   r°   rµ   r¼   ÚDEFAULT_EVENT_BUFFER_SIZErî   r»   r…   r†   Ústaticmethodrq   rÛ   r:   r   r   r   rF   rF   †   sÑ   † ñð+>¸ð +>ÐY]÷ +>ðZ ô ó ð ð ôó ðð ô"ó ð"ð ô ó ð õ%õ	õ6õ4õ
'õ,ð"rÐ6O÷ rõhõ5õ,ð  ô1ó ð1ð ô)ó ô)r   rF   c                  ó:  € ] tR tRtRtR R lt]R R l4       t]R R l4       t]R	 R
 l4       t	]R R l4       t
]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R  l4       t]R! R" l4       t]R# R$ l4       t]R% R& l4       t]R' R( l4       t]R) R* l4       t]R+ R, l4       t]R- R. l4       tR/ R0 ltR1 R2 ltR3 R4 lt]R5 R6 l4       t R7 R8 lt!R9t"R:# );r£   iÔ  zÝInotify event struct wrapper.

:param wd:
    Watch descriptor
:param mask:
    Event mask
:param cookie:
    Event cookie
:param name:
    Base name of the event source path.
:param src_path:
    Full event source path.
c               ó0   € V ^8„  d   QhRRRRRRRRRRRR	/# )
rJ   r>   r�   r?   r@   rB   rL   r¥   rN   rO   r   )rP   s   "r   rQ   ÚInotifyEvent.__annotate__ã  s7   € ÷ "ñ "˜3ð " cð "°3ð "¸eð "Èuð "ÐY]ñ "r   c                	óB   € Wn         W n        W0n        W@n        WPn        R # r   )Ú_wdÚ_maskÚ_cookieÚ_nameÚ	_src_path)r`   r>   r?   r@   rB   r¥   s   &&&&&&r   r‰   ÚInotifyEvent.__init__ã  s   € ØŒØŒ
ØŒØŒ
Ø!Žr   c               ó   € V ^8„  d   QhRR/# r’   r   )rP   s   "r   rQ   r  ë  s   € ÷ ñ ˜%ñ r   c                	ó   € V P                   # r   )r  re   s   &r   r¥   ÚInotifyEvent.src_pathê  s   € à�~‰~Ðr   c               ó   € V ^8„  d   QhRR/# rŒ   r   )rP   s   "r   rQ   r  ï  s   € ÷ ñ �Cñ r   c                	ó   € V P                   # r   )r  re   s   &r   r>   ÚInotifyEvent.wdî  s   € à�x‰xˆr   c               ó   € V ^8„  d   QhRR/# rŒ   r   )rP   s   "r   rQ   r  ó  s   € ÷ ñ �cñ r   c                	ó   € V P                   # r   )r  re   s   &r   r?   ÚInotifyEvent.maskò  ó   € à�z‰zÐr   c               ó   € V ^8„  d   QhRR/# rŒ   r   )rP   s   "r   rQ   r  ÷  s   € ÷ ñ ˜ñ r   c                	ó   € V P                   # r   )r  re   s   &r   r@   ÚInotifyEvent.cookieö  s   € à�|‰|Ðr   c               ó   € V ^8„  d   QhRR/# r’   r   )rP   s   "r   rQ   r  û  s   € ÷ ñ �eñ r   c                	ó   € V P                   # r   )r  re   s   &r   rB   ÚInotifyEvent.nameú  r%  r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r  ÿ  ó   € ÷ ;ñ ;˜4ñ ;r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r"   re   s   &r   Ú	is_modifyÚInotifyEvent.is_modifyþ  ó   € à�z‰zÔ,×6Ñ6Õ6¸Ñ:Ð:r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r    ó   € ÷ @ñ @ ñ @r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r$   re   s   &r   Úis_close_writeÚInotifyEvent.is_close_write  ó   € à�z‰zÔ,×;Ñ;Õ;¸aÑ?Ð?r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r    s   € ÷ Bñ B $ñ Br   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r%   re   s   &r   Úis_close_nowriteÚInotifyEvent.is_close_nowrite  s   € à�z‰zÔ,×=Ñ=Õ=ÀÑAÐAr   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r    ó   € ÷ 9ñ 9˜ñ 9r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r&   re   s   &r   Úis_openÚInotifyEvent.is_open
  ó   € à�z‰zÔ,×4Ñ4Õ4°qÑ8Ð8r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r    r-  r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r!   re   s   &r   Ú	is_accessÚInotifyEvent.is_access  r1  r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r    r-  r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r*   re   s   &r   Ú	is_deleteÚInotifyEvent.is_delete  r1  r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r    r3  r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r+   re   s   &r   Úis_delete_selfÚInotifyEvent.is_delete_self  r7  r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r    r-  r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r)   re   s   &r   rå   ÚInotifyEvent.is_create  r1  r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r    s   € ÷ ?ñ ?˜tñ ?r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r'   re   s   &r   rÜ   ÚInotifyEvent.is_moved_from  s   € à�z‰zÔ,×:Ñ:Õ:¸QÑ>Ð>r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r  #  s   € ÷ =ñ =˜Tñ =r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r(   re   s   &r   rÝ   ÚInotifyEvent.is_moved_to"  s   € à�z‰zÔ,×8Ñ8Õ8¸1Ñ<Ð<r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r  '  r=  r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r-   re   s   &r   Úis_moveÚInotifyEvent.is_move&  rA  r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r  +  s   € ÷ >ñ >˜dñ >r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r,   re   s   &r   Úis_move_selfÚInotifyEvent.is_move_self*  s   € à�z‰zÔ,×9Ñ9Õ9¸AÑ=Ð=r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r  /  r-  r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r#   re   s   &r   Ú	is_attribÚInotifyEvent.is_attrib.  r1  r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r  3  s   € ÷ <ñ <˜Dñ <r   c                	óJ   € V P                   \        P                  ,          ^ 8„  # rj   )r  r   r0   re   s   &r   rã   ÚInotifyEvent.is_ignored2  s   € à�z‰zÔ,×7Ñ7Õ7¸!Ñ;Ð;r   c               ó   € V ^8„  d   QhRR/# rW   r   )rP   s   "r   rQ   r  7  s   € ÷ fñ f˜dñ fr   c                	óš   € V P                   ;'       g9    V P                  ;'       g%    V P                  \        P                  ,          ^ 8„  # rj   )rL  r]  r  r   r5   re   s   &r   rä   ÚInotifyEvent.is_directory6  s<   € ð
 ×"Ñ"×eÐe d×&7Ñ&7×eÐe¸4¿:¹:ÔHX×HaÑHaÕ;aÐdeÑ;eÐer   c               ó   € V ^8„  d   QhRR/# )rJ   rN   z"tuple[bytes, int, int, int, bytes]r   )rP   s   "r   rQ   r  >  s   € ÷ Nñ NÐ7ñ Nr   c                	ót   € V P                   V P                  V P                  V P                  V P                  3# r   )r  r  r  r  r  re   s   &r   ÚkeyÚInotifyEvent.key=  s'   € à�~‰~˜tŸx™x¨¯©°T·\±\À4Ç:Á:ÐMÐMr   c               ó    € V ^8„  d   QhRRRR/# ©rJ   rê   ÚobjectrN   rM   r   )rP   s   "r   rQ   r  A  ó   € ÷ -ñ - Fð -¨tñ -r   c                	ól   € \        V\        4      '       g   \        # V P                  VP                  8H  # r   ©Ú
isinstancer£   ÚNotImplementedrk  ©r`   rê   s   &&r   Ú__eq__ÚInotifyEvent.__eq__A  ó*   € Ü˜-¬×6Ò6Ü!Ð!Ø�x‰x˜=×,Ñ,Ñ,Ð,r   c               ó    € V ^8„  d   QhRRRR/# rn  r   )rP   s   "r   rQ   r  F  rp  r   c                	ól   € \        V\        4      '       g   \        # V P                  VP                  8g  # r   rr  ru  s   &&r   Ú__ne__ÚInotifyEvent.__ne__F  rx  r   c               ó   € V ^8„  d   QhRR/# rŒ   r   )rP   s   "r   rQ   r  K  s   € ÷ ñ ˜#ñ r   c                	ó,   € \        V P                  4      # r   )Úhashrk  re   s   &r   Ú__hash__ÚInotifyEvent.__hash__K  s   € Ü�D—H‘H‹~Ðr   c               ó    € V ^8„  d   QhRRRR/# )rJ   r?   r�   rN   Ústrr   )rP   s   "r   rQ   r  O  s   € ÷ ñ ˜sð  sñ r   c                	óú   € . p\        \        4       FV  pVP                  R 4      '       g   K  VR9  g   K%  \        \        V4      pW,          '       g   KE  VP	                  V4       KX  	  RP                  V4      # )ÚIN_Ú|>   r-   r7   )Údirr   rß   ÚgetattrrÊ   rÉ   )r?   ÚmasksÚcÚc_vals   &   r   Ú_get_mask_stringÚInotifyEvent._get_mask_stringN  s]   € àˆÜÔ%Ö&ˆAØ�|‰|˜E×"Ô" qÐ0LÖ'LÜÔ 0°!Ó4�Ø—<–<Ø—L‘L –Oñ	 'ð
 �x‰x˜‹Ðr   c               ó   € V ^8„  d   QhRR/# )rJ   rN   rƒ  r   )rP   s   "r   rQ   r  X  s   € ÷ 
ñ 
˜#ñ 
r   c                	ó   € R \        V 4      P                   RV P                  : RV P                   RV P	                  V P
                  4       RV P                   R\        P                  ! V P                  4      : R2# )Ú<z: src_path=z, wd=z, mask=z	, cookie=z, name=Ú>)
Útyper   r¥   r>   rŒ  r?   r@   rw   ÚfsdecoderB   re   s   &r   Ú__repr__ÚInotifyEvent.__repr__X  ss   € à”�T“
×#Ñ#Ð$ K°·±Ñ/@ÀÀdÇgÁgÀYð OØ×*Ñ*¨4¯9©9Ó5Ð6°iÀÇÁ¸}ð MÜ—[’[ §¡Ó+Ñ.¨að1ð	
r   )r  r  r  r  r  N)#r   r   r   r    rC   r‰   r  r¥   r>   r?   r@   rB   r/  r5  r:  r?  rD  rH  rL  rå   rÜ   rÝ   rY  r]  ra  rã   rä   rk  rv  r{  r€  r  rŒ  r”  r:   r   r   r   r£   r£   Ô  sç  † ñõ"ð ôó ðð ôó ðð ôó ðð ôó ðð ôó ðð ô;ó ð;ð ô@ó ð@ð ôBó ðBð ô9ó ð9ð ô;ó ð;ð ô;ó ð;ð ô@ó ð@ð ô;ó ð;ð ô?ó ð?ð ô=ó ð=ð ô9ó ð9ð ô>ó ð>ð ô;ó ð;ð ô<ó ð<ð ôfó ðfð ôNó ðNõ-õ
-õ
ð ôó ð÷
ñ 
r   r£   )3Ú
__future__r   rÆ   rþ   Úctypes.utilrØ   rw   rk   r	  rr   r   r   r   Ú	functoolsr   Útypingr   Úwatchdog.utilsr	   Úcollections.abcr
   ÚCDLLÚlibcrz   r  ÚerrorÚ	CFUNCTYPEr   r   r   r   r"   r#   r'   r(   r)   r*   r+   r2   r$   r%   r&   r�   Ú	Structurer=   ÚsizeofÚ
EVENT_SIZEÚDEFAULT_NUM_EVENTSr  rF   r£   r   r   r   Ú<module>r¤     sÀ  ðÝ "ã Û Û Û Û 	Û Û Û ß ,Ñ ,Ý Ý  å /çÝ)à‡{‚{�4Ó€áˆt�^×$Ò$©G°DÐ:M×,NÒ,NÑV]Ð^bÐdv×VwÒVwØ.¨t¯z©z¨lÐ;€EÙ
˜uÓ
%Ð%à×$Ò$ U¨E°8¸XÐQUÕVÐXkÐmqÐWrÓsÐ à×#Ò# E¨5°(ÀdÕKÐM_ÐaeÐLfÓgÐ à×Ò °Õ6¸ÈÐ7MÓN€÷4ñ 4ñp Ùà×"Ñ"Ø×"Ñ"Ø×&Ñ&Ø×$Ñ$Ø×"Ñ"Ø×"Ñ"Ø×'Ñ'Ø×'Ñ'Ø×'Ñ'Ø×)Ñ)Ø× Ñ ðóÐ ô$˜×)Ñ)ô ð, �]Š]Ð-Ó.€
ØÐ Ø.°*¸rµ/ÕBÐ ÷K)ñ K)÷\
I
ó I
r   