+
        î  ã                   óº   € ^ RI Ht ^ RIHt ^RIHtHtHt ^RIH	t	H
t
  ! R R4      t ! R R4      t ! R	 R
4      t ! R R4      t ! R R4      t ! R R4      tR# )é    ©ÚLogger©ÚAny)ÚCriteriaDescriptorÚCriteriaSetDescriptorÚCriteriaPermissionSetDescriptor)Ú	policyrepÚutilc                   ój   a € ] tR t^t o Rt]],          ! R4      tRtV 3R lR lt	R t
V 3R ltRtV tR	# )
Ú
MatchAliasz'Mixin for matching an object's aliases.Úalias_regexFc                ó$   <€ V ^8„  d   QhRS[ RR/# ©é   ÚlogÚreturnNr   )ÚformatÚ__classdict__s   "€Ú5/usr/lib64/python3.14/site-packages/setools/mixins.pyÚ__annotate__ÚMatchAlias.__annotate__   s   ø€ ÷ 9ñ 9¡fð 9°ñ 9ó    c                ó`   € VP                  RV P                  : RV P                  : 24       R# )z+Emit log debugging info for alias matching.zself.alias=z, self.alias_regex=N)ÚdebugÚaliasr   ©Úselfr   s   &&r   Ú_match_alias_debugÚMatchAlias._match_alias_debug   s'   € à	‰	[T—Z‘Z‘MÐ!5 D×$4Ñ$4Ñ#6Ð7Ö8r   c                óž   € V P                   '       g   R# \        P                  ! VP                  4       V P                   V P                  4      # )zg
Match the alias criteria

Parameter:
obj     An object with an alias generator method named "aliases"
T)r   r   Úmatch_in_setÚaliasesr   ©r   Úobjs   &&r   Ú_match_aliasÚMatchAlias._match_alias   s5   € ð zzˆzáä× Ò  §¡£°·
±
¸D×<LÑ<LÓMÐMr   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   r   ©Úbool)r   r   s   "€r   r   r      s   ø‡ ‚ ñ
 Ñò r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ústrr   r   r   r&   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r      s3   ø‡ € á1à˜sÖ# MÓ2€EØ€K÷9ð 9òN÷ ƒ r   r   c                   ó@  a € ] tR t^(t o Rt]]P                  ,          ! RR4      tRt	]]P                  ,          ! RR4      tRt]]P                  ,          ! RR4      tRt]]P                   ,          ! R	R
7      tRtRtRtR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# )ÚMatchContextaô  
Mixin for matching contexts.

Class attributes:
user            The user to match in the context.
user_regex      If true, regular expression matching
                will be used on the user.
role            The role to match in the context.
role_regex      If true, regular expression matching
                will be used on the role.
type_           The type to match in the context.
type_regex      If true, regular expression matching
                will be used on the type.
range_          The range to match in the context.
range_subset    If true, the criteria will match if it
                is a subset of the context's range.
range_overlap   If true, the criteria will match if it
                overlaps any of the context's range.
range_superset  If true, the criteria will match if it
                is a superset of the context's range.
range_proper    If true, use proper superset/subset
                on range matching operations.
                No effect if not using set operations.
Ú
user_regexÚlookup_userFÚ
role_regexÚlookup_roleÚ
type_regexÚlookup_typeÚlookup_range)Úlookup_functionc                ó    <€ V ^8„  d   QhRS[ /# ©r   r   r   )r   r   s   "€r   r   ÚMatchContext.__annotate__O   s   ø€ ÷ Cñ C©ñ Cr   c                óÂ  € VP                  RV P                  : RV P                  : 24       VP                  RV P                  : RV P                  : 24       VP                  RV P
                  : RV P                  : 24       VP                  RV P                  : RV P                  : R	V P                  : R
V P                  : RV P                  : 2
4       R# )z-Emit log debugging info for context matching.z
self.user=z, self.user_regex=z
self.role=z, self.role_regex=zself.type_=z, self.type_regex=zself.range_=z, self.range_subset=z, self.range_overlap=z, self.range_superset=z, self.range_proper=N)r   Úuserr8   Úroler:   Útype_r<   Úrange_Úrange_subsetÚrange_overlapÚrange_supersetÚrange_properr   s   &&r   Ú_match_context_debugÚ!MatchContext._match_context_debugO   sÄ   € à	‰	ZT—Y‘Y‘LÐ 3 4§?¡?Ñ"4Ð5Ô6Ø	‰	ZT—Y‘Y‘LÐ 3 4§?¡?Ñ"4Ð5Ô6Ø	‰	[T—Z‘Z‘MÐ!4 D§O¡OÑ#5Ð6Ô7Ø	‰	\T—[‘[‘NÐ"7 T×%6Ñ%6Ñ$8Ð8N¸4×;MÑ;MÑ:Oð P*Ø×(Ñ(Ñ*Ð*?¨T×->Ñ->Ñ,@ðBö 	Cr   c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# )r   Úcontextr   )r
   ÚContextr*   )r   r   s   "€r   r   rB   W   s!   ø€ ÷ $ñ $¡i×&7Ñ&7ð $¹Dñ $r   c                óÈ  € V P                   '       d?   \        P                  ! VP                   V P                   V P                  4      '       g   R# V P                  '       d?   \        P                  ! VP                  V P                  V P
                  4      '       g   R# V P                  '       d?   \        P                  ! VP                  V P                  V P                  4      '       g   R# V P                  '       d`   \        P                  ! VP                  V P                  V P                  V P                  V P                  V P                  4      '       g   R# R# )z
Match the context criteria.

Parameter:
obj     An object with context attributes "user", "role",
        "type_" and "range_".
FT)rD   r   Úmatch_regexr8   rE   r:   rF   r<   rG   Úmatch_rangerH   rI   rJ   rK   )r   rO   s   &&r   Ú_match_contextÚMatchContext._match_contextW   sø   € ð 99ˆ9œT×-Ò-Ø—‘Ø—	‘	Ø—‘÷!ò !ñ à99ˆ9œT×-Ò-Ø—‘Ø—	‘	Ø—‘÷!ò !ñ à::ˆ:œd×.Ò.Ø—‘Ø—
‘
Ø—‘÷!ò !ñ à;;ˆ;œt×/Ò/Ø—‘Ø—‘Ø×!Ñ!Ø×"Ñ"Ø×#Ñ#Ø×!Ñ!÷ #ò  #ñ ár   c                ón   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   # )r   r8   r:   r<   rI   rH   rJ   rK   r)   )r   r   s   "€r   r   rB   (   sj   ø‡ ‚ ñ8 Ññ9 ñ< Ññ= ñ@ ÑñA ñD ÑñE ñF ÑñG ñH Ñ ñI ñJ ÑòK r   r+   N)r,   r-   r.   r/   r0   r   r
   ÚUserrD   r8   ÚRolerE   r:   ÚTyperF   r<   ÚRangerG   rI   rH   rJ   rK   rL   rT   r2   r3   r4   r5   s   @r   r7   r7   (   sŸ   ø‡ € ñð2 ˜iŸn™nÖ-¨l¸MÓJ€DØ€JØ˜iŸn™nÖ-¨l¸MÓJ€DØ€JØ˜yŸ~™~Ö.¨|¸]ÓK€EØ€JØ 	§¡Ö0ÀÔP€FØ€MØ€LØ €NØ€L÷Cð C÷$ð $÷_ ƒ r   r7   c                   ón   a € ] tR t^~t o Rt]],          ! R4      tRtRt	V 3R lR lt
R tV 3R ltRtV tR	# )
Ú	MatchNamez=Mixin for matching an object's name with alias dereferencing.Ú
name_regexFc                ó$   <€ V ^8„  d   QhRS[ RR/# r   r   )r   r   s   "€r   r   ÚMatchName.__annotate__†   s   ø€ ÷ Lñ L¡Vð L°ñ Lr   c                ó|   € VP                  RV P                  : RV P                  : RV P                  : 24       R# )z)Log debugging messages for name matching.z
self.name=z, self.name_regex=z, self.alias_deref=N)r   Únamer]   Úalias_derefr   s   &&r   Ú_match_name_debugÚMatchName._match_name_debug†   s3   € à	‰	ZT—Y‘Y‘LÐ 3 4§?¡?Ñ"4Ð4H°t×7GÑ7GÑ6IÐJÖKr   c                ó~  € V P                   '       g   R# V P                  '       dn   \        P                  ! WP                   V P                  4      ;'       g;    \        P
                  ! VP                  4       V P                   V P                  4      # \        P                  ! WP                   V P                  4      # )z&Match the object to the name criteria.T)ra   rb   r   rR   r]   r"   r#   r$   s   &&r   Ú_match_nameÚMatchName._match_nameŠ   s   € àyyˆyáà××ÐÜ×#Ò# C¯©°D·O±OÓD÷ Mð MÜ×!Ò! #§+¡+£-°·±¸D¿O¹OÓLðMô ×#Ò# C¯©°D·O±OÓDÐDr   c                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   # )r   r]   rb   r)   )r   r   s   "€r   r   r_   ~   s   ø‡ ‚ ñ
 Ññ ñ Ñò r   r+   N)r,   r-   r.   r/   r0   r   r1   ra   r]   rb   rc   rf   r2   r3   r4   r5   s   @r   r\   r\   ~   s:   ø‡ € áGà˜cÖ" <Ó0€DØ€JØ€K÷Lð Lò
E÷ ƒ r   r\   c                   ó€   a € ] tR t^—t o Rt]]P                  ,          ! RR4      tRt	V 3R lR lt
R tV 3R ltR	tV tR
# )ÚMatchObjClassz%Mixin for matching an object's class.Útclass_regexÚlookup_classFc                ó$   <€ V ^8„  d   QhRS[ RR/# r   r   )r   r   s   "€r   r   ÚMatchObjClass.__annotate__ž   s   ø€ ÷ ;ñ ;©Vð ;¸ñ ;r   c                ó`   € VP                  RV P                  : RV P                  : 24       R# )ú0Emit log debugging info for permission matching.zself.tclass=z, self.tclass_regex=N)r   Útclassrk   r   s   &&r   Ú_match_object_class_debugÚ'MatchObjClass._match_object_class_debugž   s'   € à	‰	\T—[‘[‘NÐ"7 T×%6Ñ%6Ñ$8Ð9Ö:r   c                óî   € V P                   '       g   R# V P                  '       d8   \        V P                   P                  \	        VP                   4      4      4      # VP                   V P                   9   # )zm
Match the object class criteria

Parameter:
obj     An object with an object class attribute named "tclass"
T)rq   rk   r*   Úsearchr1   r$   s   &&r   Ú_match_object_classÚ!MatchObjClass._match_object_class¢   sQ   € ð {{ˆ{áØ××ÐÜ˜Ÿ™×*Ñ*¬3¨s¯z©z«?Ó;Ó<Ð<à—:‘: §¡Ñ,Ð,r   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   rk   r)   )r   r   s   "€r   r   rn   —   s   ø‡ ‚ ñ
 Ñò r   r+   N)r,   r-   r.   r/   r0   r   r
   ÚObjClassrq   rk   rr   rv   r2   r3   r4   r5   s   @r   rj   rj   —   s:   ø‡ € á/à" 9×#5Ñ#5Ö6°~À~ÓV€FØ€L÷;ð ;ò-÷ ƒ r   rj   c                   óf   a € ] tR t^³t o Rt]! RR7      tRtRtRt	V 3R lR lt
R tV 3R ltR	tV tR
# )ÚMatchPermissionz+Mixin for matching an object's permissions.Úperms_regex)r]   Fc                ó    <€ V ^8„  d   QhRS[ /# rA   r   )r   r   s   "€r   r   ÚMatchPermission.__annotate__¼   s   ø€ ÷ +ñ +¡fñ +r   c           
     ó˜   € VP                  RV P                  : RV P                  : RV P                  : RV P                  : 24       R# )rp   zself.perms=z, self.perms_regex=z, self.perms_equal=z, self.perms_subset=N)r   Úpermsr|   Úperms_equalÚperms_subsetr   s   &&r   Ú_match_perms_debugÚ"MatchPermission._match_perms_debug¼   sK   € à	‰	[T—Z‘Z‘MÐ!5 D×$4Ñ$4Ñ#6Ð6J¸×9IÑ9IÑ8Kð L(Ø×&Ñ&Ñ(ð*ö 	+r   c                ó  € V P                   '       g   R# V P                  '       d   VP                   V P                   8¬  # \        P                  ! VP                   V P                   V P                  V P
                  4      # )zq
Match the permission criteria

Parameter:
obj     An object with a permission set class attribute named "perms"
T)r€   r‚   r   Úmatch_regex_or_setr   r|   r$   s   &&r   Ú_match_permsÚMatchPermission._match_permsÁ   s_   € ð zzˆzáà××ÐØ—9‘9 §
¡
Ñ*Ð*ä×*Ò*¨3¯9©9°d·j±jÀ$×BRÑBRØ+/×+;Ñ+;ó=ð =r   c                ó>   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   # )r   r   r|   r‚   r)   )r   r   s   "€r   r   r~   ³   s,   ø‡ ‚ ñ
 Ññ ñ Ññ ñ Ñò r   r+   N)r,   r-   r.   r/   r0   r	   r€   r   r|   r‚   rƒ   r‡   r2   r3   r4   r5   s   @r   r{   r{   ³   s7   ø‡ € á5á+°}ÔE€EØ€KØ€KØ€L÷+ð +ò
=÷ ƒ r   r{   c                   óH   a € ] tR t^Ôt o RtR tV 3R lR ltV 3R ltRtV t	R# )ÚNetworkXGraphEdgez)Mixin enabling use in NetworkX functions.c                óÆ   € \        V\        4      '       d7   \        VP                  ^4      !   Uu. uF  q P	                  V4      NK  	  up# V P	                  V4      # u upi )r   )Ú
isinstanceÚsliceÚrangeÚindicesÚ_index_to_item)r   ÚkeyÚis   && r   Ú__getitem__ÚNetworkXGraphEdge.__getitem__Û   sU   € ô cœ5×!Ò!Ü49¸C¿K¹KÈ»NÒ4KÓLÑ4K¨q×'Ñ'¨Ö*Ñ4KÑLÐLà×&Ñ& sÓ+Ð+ùò Ms   ±Ac                ó    <€ V ^8„  d   QhRS[ /# )r   Úindex)Úint)r   r   s   "€r   r   ÚNetworkXGraphEdge.__annotate__ã   s   ø€ ÷ ]ñ ]¡Cñ ]r   c                ój   € V^ 8X  d   V P                   # V^8X  d   V P                  # \        RV 24      h)z'Return source or target based on index.z4Invalid index (NetworkXGraphEdge only has 2 items): )ÚsourceÚtargetÚ
IndexError)r   r—   s   &&r   r‘   Ú NetworkXGraphEdge._index_to_itemã   s9   € àAŒ:Ø—;‘;ÐØaŒZØ—;‘;ÐäÐSÐTYÐSZÐ[Ó\Ð\r   c                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[ ;R&   # )r   r›   rœ   r   )r   r   s   "€r   r   r™   Ô   s   ø‡ ‚ ñ Kñ	 ñ
 Kò r   r+   N)
r,   r-   r.   r/   r0   r”   r‘   r2   r3   r4   r5   s   @r   r‹   r‹   Ô   s    ø‡ € á3ò
,÷]ð ]÷ ƒ r   r‹   N)Úloggingr   Útypingr   Údescriptorsr   r   r	   Ú r
   r   r   r7   r\   rj   r{   r‹   r+   r   r   Ú<module>r¤      s\   ðõ Ý ç cÑ cß ÷Nñ N÷4Sñ S÷lEñ E÷2-ñ -÷8=ñ =÷B]ó ]r   