+
    lhoL                     "   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(Ot
RRRRRRRR/R ltRRRRRRRR/R ltR)R	 ltR)R
 ltR)R ltRtR tR tR)R ltR tR tR)R ltR tR tR t]P4                  ! R4      t]P4                  ! R4      tR tR tR tR t R*t!]PD                  ]#! ]R^ 4      ,          t$]%! 4       t&RRRRRR/R lt']PP                  ! RR 7      R+R! l4       t) ! R" R#4      t* ! R$ R%]*4      t+ ! R& R']*4      t,R# ),zFilename globbing utility.Nroot_dirdir_fd	recursiveFinclude_hiddenc          
     0    \        \        WW#VR7      4      # )a  Return a list of paths matching a pathname pattern.

The pattern may contain simple shell-style wildcards a la
fnmatch. Unlike fnmatch, filenames starting with a
dot are special cases that are not matched by '*' and '?'
patterns by default.

If `include_hidden` is true, the patterns '*', '?', '**'  will match hidden
directories.

If `recursive` is true, the pattern '**' will match any files and
zero or more directories and subdirectories.
)r   r   r   r   )listiglob)pathnamer   r   r   r   s   &$$$$lib/python3.14/glob.pyglobr      s     h&%35 6 6    c          	        \         P                  ! RW4       \         P                  ! RWW4       Ve   \        P                  ! V4      pM	V R,          p\	        WW#RVR7      pV '       d!   V'       dG   \        V R,          4      '       d/    \        V4      pV'       d   \        P                  ! V3V4      pV# V#   \         d     T# i ; i)ap  Return an iterator which yields the paths matching a pathname pattern.

The pattern may contain simple shell-style wildcards a la
fnmatch. However, unlike fnmatch, filenames starting with a
dot are special cases that are not matched by '*' and '?'
patterns.

If recursive is true, the pattern '**' will match any files and
zero or more directories and subdirectories.
z	glob.globzglob.glob/2N    NFr   :N   N)
sysauditosfspath_iglob_isrecursivenext	itertoolschainStopIteration)r	   r   r   r   r   itss   &$$$$  r
   r   r   "   s     IIk8/IImX(C99X&B<	Fu-
/By\(2,%?%?	RA__aT2. I2I  	I	s   +B; ;C
	C
c           	   #      "   \         P                  P                  V 4      w  rg\        V 4      '       gU   V'       d   Q hV'       d"   \	        \        W4      V4      '       d   V x  R # \        \        W4      V4      '       d   V x  R # V'       gJ   V'       d*   \        V4      '       d   \        WW$VR7       R j  xL
  R # \        WW$VR7       R j  xL
  R # W`8w  d"   \        V4      '       d   \        WaW#RVR7      pMV.p\        V4      '       d(   V'       d   \        V4      '       d   \        p	M\        p	M\        p	V F@  pV	! \        W4      WrVVR7       F$  p
\         P                  P                  Wj4      x  K&  	  KB  	  R #  L L5i)Nr   T)r   pathsplit	has_magic_lexists_join_isdirr   _glob2_glob1r   _glob0join)r	   r   r   r   dironlyr   dirnamebasenamedirsglob_in_dirnames   &&&&&&     r
   r   r   ?   sM    h/GX{h16::
 	 eH.77h//h&,:< < <
 	 h&-;= = = y11gD%35 yh// K Kh 8(G.<>D'',,w--> +<=sC   :F	FA	FF"F;F
<FFAFA.FFc                     \        WV4      pV'       g   \        V4      '       g
   R  V 4       p\        P                  ! WQ4      # )c              3   L   "   T F  p\        V4      '       d   K  Vx  K  	  R # 5iN)	_ishidden).0xs   & r
   	<genexpr>_glob1.<locals>.<genexpr>o   s     6Eq1Es   $
$)_listdirr2   fnmatchfilter)r*   patternr   r)   r   namess   &&&&& r
   r&   r&   l   s4    Wg.Ei006E6>>%))r   c                     V'       d"   \        \        W4      V4      '       d   V.#  . # \        W4      '       d   V.# . # r1   )r"   r#   r$   )r*   r+   r   r)   r   s   &&&&&r
   r'   r'   r   sE    E',f55: 6 I '"":Ir   z{name} is deprecated and will be removed in Python {remove}. Use glob.glob and pass a directory to its root_dir argument instead.c                 T    ^ RI pVP                  R\        RR7       \        WRR4      # )r   Nz
glob.glob0removeF      )warnings_deprecated_deprecated_function_messager'   r*   r:   rC   s   && r
   glob0rG      *    'CGT'D%00r   c                 T    ^ RI pVP                  R\        RR7       \        WRR4      # )r   Nz
glob.glob1r>   Fr@   )rC   rD   rE   r&   rF   s   && r
   glob1rJ      rH   r   c              #      "   \        V4      '       g   Q hV '       d   \        W4      '       d   VR ,          x  \        WVVR7       Rj  xL
  R#  L5i)r   r   N)r   r$   	_rlistdir)r*   r:   r   r)   r   s   &&&&&r
   r%   r%      sF         fW--bk'(68 8 8s   A-AAAc              #   2  "    R pR pVeQ   V '       d    \         P                  ! V \        VR7      ;r5MTp\        V \        4      '       d   \         P
                  pMLV '       d   T pMA\        V \        4      '       d   \	        \         P                  R4      pM\         P                  p \         P                  ! V4      ;_uu_ 4       pV FL  p V'       d   VP                  4       '       d+   Ve   V! VP                  4      x  K<  VP                  x  KL  KN  	  R R R 4       Ve   \         P                  ! V4       R # R #   \         d     K  i ; i  + '       g   i     L@; i  Te   \         P                  ! T4       i i ; i  \         d     R # i ; i5i)Nr   ASCII)r   open_dir_open_flags
isinstancebytesfsencodecurdirscandiris_dirr.   OSErrorclose)r*   r   r)   fdrT   argr   entrys   &&&     r
   _iterdirr]      s2    777OFKKS'5));;C''		7+C))C	CBE&%,,..'3&.uzz&: :&+jj 0	 +9   ! ~  #  ! ~  s   FF AF $AF )E% EE ,E EE EE% "F <F E	EE	EE"	E% %FF FFFFc                     \         P                  ! \        WV4      4      ;_uu_ 4       p\        V4      uuR R R 4       #   + '       g   i     R # ; ir1   )
contextlibclosingr]   r   )r*   r   r)   r   s   &&& r
   r7   r7      s3    			HWg>	?	?2Bx 
@	?	?	?s	   ?A	c              #      "   \        WV4      pV FY  pV'       g   \        V4      '       d   K  Vx  V '       d   \        W4      MTp\        WaVVR 7       F  p\        WW4      x  K  	  K[  	  R# 5i)r   N)r7   r2   r#   rL   )r*   r   r)   r   r;   r4   r   ys   &&&&    r
   rL   rL      sY     Wg.E1G(/5$QDtW.<>Ak!>	 s   (A0A05A0c                     Vf    \         P                  P                  V 4      #  \         P                  ! WR7       R#   \        \
        3 d     R# i ; i)NrN   TF)r   r   lexistslstatrX   
ValueError)r	   r   s   &&r
   r"   r"      sI    ~wwx((
)  Z  s   > AAc                     Vf    \         P                  P                  V 4      #  \         P                  ! WR7      p\        P                  ! VP
                  4      #   \        \        3 d     R# i ; i)NrN   F)r   r   isdirstatS_ISDIRst_moderX   rf   )r	   r   sts   && r
   r$   r$      s[    ~ww}}X&&(WWX- ||BJJ'' Z  s   A A10A1c                 x    V '       d	   V'       g   T ;'       g    T# \         P                  P                  W4      # r1   )r   r   r(   )r*   r+   s   &&r
   r#   r#      s(    (""("77<<**r   z([*?[])s   ([*?[])c                     \        V \        4      '       d   \        P                  V 4      pVR J# \        P                  V 4      pVR J# r1   )rR   rS   magic_check_bytessearchmagic_check)r   matchs   & r
   r!   r!      sI    !U!((+  ""1%r   c                     V ^ ,          R9   # )r   )..    r   s   &r
   r2   r2      s    7n$$r   c                 B    \        V \        4      '       d   V R 8H  # V R8H  # )s   ****)rR   rS   )r:   s   &r
   r   r      s$    '5!!%$r   c                    \         P                  P                  V 4      w  r\        V \        4      '       d   \
        P                  RV 4      p W,           # \        P                  RV 4      p W,           # )z#Escape all special characters.
    s   [\1]z[\1])r   r   
splitdriverR   rS   ro   subrq   )r	   drives   & r
   escaper~      s_    
 gg((2OE(E""$((8<  ??7H5r   O_DIRECTORYsepsc               p   V'       gp   \         P                  P                  '       d6   \         P                  P                  \         P                  P                  3pM\         P                  P                  pRP	                  \        \        P                  V4      4      p\        V4      ^8  d   RV R2MTpRV R2pV'       d   V R2pV V 2pRV R2p	Rp
MRV R	V R
2pV V 2pRV R2p	V	 RV R2p
. p\        P                  ! WP4      p\        V4      ^,
          p\        V4       F  w  rVR
8X  d   TP                  W8  d   TMT4       K'  V'       dJ   VR8X  dC   W8  d*   W^,           ,          R8w  d   VP                  V	4       Kc  Ke  VP                  V
4       Kx  V'       dX   V'       g    V^ ,          R9   d   VP                  R4       VP                  \        P                  ! W R
2V4      ^ ,          4       W8  g   K  VP                  V4       K  	  RP	                  V4      pRV R2# )a  Translate a pathname with shell wildcards to a regular expression.

If `recursive` is true, the pattern segment '**' will match any number of
path segments.

If `include_hidden` is true, wildcards can match path segments beginning
with a dot ('.').

If a sequence of separator characters is given to `seps`, they will be
used to split the pattern into segments and match path separators. If not
given, os.path.sep and os.path.altsep (where available) are used.
 []z[^+z(?:.+z)?z.*z.]*z(?:z)*ry   z*?z(?!\.)z(?s:z)\z)r   r   altsepsepr(   maprer~   lenr    	enumerateappendextendr8   
_translate)patr   r   r   escaped_sepsany_sepnot_sepone_last_segmentone_segmentany_segmentsany_last_segmentsresultspartslast_part_idxidxpartress   &$$$             r
   	translater     s    77>>>GGKK0D77;;D773ryy$/0L%(Y],q!G<."G%Ya=)*7)4wir* ~Ry:)*7)4[M,+nC0@/ADGHHW"EJNMu%	3;NN#*=;CST44<"q>T)NN<0 * 01%$q'T/NN9-w11$)1wOPQRS"w' &  '''
C3%sr   i   )maxsizec                    V'       d   \         P                  M\         P                  p\        WRVR7      p\         P                  ! WTR7      P
                  # )zOCompile given glob pattern to a re.Pattern object (observing case
sensitivity).T)r   r   r   )flags)r   NOFLAG
IGNORECASEr   compilerr   )r   r   case_sensitiver   r   regexs   &&&&  r
   _compile_patternr   B  s8     (BIIR]]Ect$OE::e)///r   c                      a  ] tR tRt o RtRR lt]R 4       t]R 4       t]R 4       t	RR lt
R	 tR
 tR tR tR tRR ltRtV tR# )_GlobberBaseiK  zHAbstract class providing shell-style pattern matching and globbing.
    c                6    Wn         W n        W0n        W@n        R # r1   )r   r   case_pedanticr   )selfr   r   r   r   s   &&&&&r
   __init___GlobberBase.__init__O  s    ,*"r   c                    \         h)z&Implements os.path.lexists().
        NotImplementedErrorrw   s   &r
   rd   _GlobberBase.lexistsW  
     "!r   c                    \         h)zELike os.scandir(), but generates (entry, name, path) tuples.
        r   rw   s   &r
   rV   _GlobberBase.scandir]  r   r   c                    \         h)z'Implements path concatenation.
        r   r   texts   &&r
   concat_path_GlobberBase.concat_pathc  r   r   Nc                    V'       d   V P                   V3MV P                   p\        WV P                  V P                  4      # r1   )r   r   r   r   )r   r   r   r   s   &&& r
   r   _GlobberBase.compilek  s1    %+&!4+>+>OOr   c                Z   V'       g   V P                   # VP                  4       pV P                  '       d   VR8X  d   V P                  pMZV\        9   d   V P
                  pMBV P                  '       g%   \        P                  V4      f   V P                  pMV P                  pV! W!4      # )zReturns a function that selects from a given path, walking and
filtering according to the glob-style pattern parts in *parts*.
ry   )select_existspopr   recursive_selector_special_partsspecial_selectorr   rq   rp   literal_selectorwildcard_selector)r   r   r   selectors   &&  r
   r   _GlobberBase.selectoro  s     %%%yy{>>>ddl..H^#,,H###(:(:4(@(H,,H--H$$r   c                x   a aa V'       d   SS P                   ,          oS P                  V4      oRVVV 3R llpV# )zLReturns a function that selects special children of the given path.
        c                 8   < SP                  V S4      p S! W4      # r1   r   r   existsr   select_nextr   s   &&r
   select_special5_GlobberBase.special_selector.<locals>.select_special  s     ##D$/Dt,,r   F)r   r   )r   r   r   r   r   s   ff& @r
   r   _GlobberBase.special_selector  s6     DHHDmmE*	- 	- r   c                  a aa V'       dI   \         P                  VR,          4      f+   SS P                  VP                  4       ,           ,          oKP  V'       d   SS P                  ,          oS P	                  V4      oRVVV 3R llpV# )zHReturns a function that selects a literal descendant of a path.
        c                 <   < SP                  V S4      p S! V R R7      # )Fr   r   r   s   &&r
   select_literal5_GlobberBase.literal_selector.<locals>.select_literal  s"    ##D$/DtE22r   r   )rq   rp   r   r   r   )r   r   r   r   r   s   ff& @r
   r   _GlobberBase.literal_selector  sf     **595=DHHuyy{**DDHHDmmE*	3 	3 r   c                   a aaa VR8X  d   RMS P                  V4      o\        V4      oS'       d   S P                  V4      oRVVVV 3R llpV# )zWReturns a function that selects direct children of a given path,
filtering by pattern.
r   Nc              3   l  <"    S	P                  V 4      pV Fp  w  r4pSe   S! V4      '       g   K  S'       dK    VP                  4       '       g   K;   S	P                  TS	P                  4      pS! TRR7       R j  xL
  Kl  Vx  Kr  	  R #   \         d     K  i ; i L"  \         d     R # i ; i5i)NTr   )rV   rW   rX   r   r   )
r   r   entriesr\   
entry_name
entry_pathdir_onlyrr   r   r   s
   &&    r
   select_wildcard7_GlobberBase.wildcard_selector.<locals>.select_wildcard  s     -,,t, 6=1Ez}j(9(9#)',||~~$, (6 *.)9)9*dhh)OJ'2:d'KKK",, 6= $+ ) () L  s[   B4B" B4B4B,B4=B >B4BB4BB4"B1-B40B11B4r   )r   boolr   )r   r   r   r   r   rr   r   s   f&& @@@r
   r   _GlobberBase.wildcard_selector  sG    
 d);;--.K	- 	-$ r   c                  a aaaaa V'       d!   VR,          R8X  d   VP                  4        K(  S P                  \        JoS'       dE   V'       d=   VR,          \        9  d+   VS P                  VP                  4       ,           ,          pKD  VR8X  d   RMS P                  V4      o\        V4      oS P                  V4      oRVVV3R llpVVVVV 3R loV# )zfReturns a function that selects a given path and all its children,
recursively, filtering by pattern.
ry   Nc              3      <"   \        \        V 4      4      pSe   S! \        V 4      V4      '       d   S! W4       R j  xL
  V .pV'       d   S! W24       R j  xL
  K  R #  L# L
5ir1   )r   str)r   r   	match_posstackrr   r   select_recursive_steps   &&  r
   select_recursive9_GlobberBase.recursive_selector.<locals>.select_recursive  s^     CII}c$i ; ;&t444FE0BBB  5 Cs(   <A'A# A'A'A%	A'%A'c              3   
  <"   V P                  4       p SP                  V4      pV F  w  rEpR p VP                  S
R7      '       d   RpT'       g   S	'       d   K5  \	        T4      pS	'       d   SP                  TSP                  4      pSe   S! Y4      '       d    S	'       d   S! TRR7       Rj  xL
  MTx  T'       g   K  T P                  T4       K  	  R#   \         d     Li ; i L;  \         d     R# i ; i5i)Ffollow_symlinksTNr   )r   rV   rW   rX   r   r   r   r   )r   r   r   r   r\   _entry_namer   rW   entry_path_strr   r   rr   r   r   s   &&       r
   r   >_GlobberBase.recursive_selector.<locals>.select_recursive_step  s     99;D5,,t, 7>2E
"F <<<HH%)F XX),Z#)-)9)9*dhh)OJ =E.,L,L'+6z$+O O O '1 0!6!LL4) 7>
 #  !P#  so   DC1 
DCDDAD&D3C/4DDC,)D+C,,D1D <D?D  Dr   r   )r   r   _no_recurse_symlinksr   r   r   r   r   )	r   r   r   r   r   r   rr   r   r   s	   f&& @@@@@r
   r   _GlobberBase.recursive_selector  s    
 b	T)IIK ..0DDE"I^;599;..$,,t*<;mmE*	C 	C	5 	5:  r   c              #  d   "   V'       d   Vx  R# V P                  V4      '       d   Vx  R# R# 5i)z-Yields the given path, if it exists.
        N)rd   )r   r   r   s   &&&r
   r   _GlobberBase.select_exists  s*       J\\$J  s   %00)r   r   r   r   )FFr1   r   )__name__
__module____qualname____firstlineno____doc__r   staticmethodrd   rV   r   r   r   r   r   r   r   r   __static_attributes____classdictcell____classdict__s   @r
   r   r   K  su     # " "
 " "
 " "P%"
&<< | r   r   c                      a  ] tR tRt o Rt]! ]P                  P                  4      t]	P                  t]R 4       tRtV tR# )_StringGlobberi  zIProvides shell-style pattern matching and globbing for string paths.
    c                    \         P                  ! V 4      ;_uu_ 4       p\        V4      pR R R 4       R X 4       #   + '       g   i     L; i)Nc              3   R   "   T F  qVP                   VP                  3x  K  	  R # 5ir1   )r.   r   )r3   r\   s   & r
   r5   )_StringGlobber.scandir.<locals>.<genexpr>  s     EWE

EJJ/W   %')r   rV   r   )r   
scandir_itr   s   &  r
   rV   _StringGlobber.scandir  s8     ZZ:&G EWEE s	   <A	rv   N)r   r   r   r   r   r   r   r   rd   operatoraddr   rV   r   r   r   s   @r
   r   r     s9     277??+G,,KF Fr   r   c                   T   a  ] tR tRt o Rt]R 4       t]R 4       t]R 4       tRt	V t
R# )_PathGlobberi  zJProvides shell-style pattern matching and globbing for pathlib paths.
    c                :    V P                   P                  R R7      # )Fr   )infor   rw   s   &r
   rd   _PathGlobber.lexists  s    yy66r   c                0    R  V P                  4        4       # )c              3   R   "   T F  qP                   VP                  V3x  K  	  R # 5ir1   )r  r.   )r3   childs   & r
   r5   '_PathGlobber.scandir.<locals>.<genexpr>  s     L^EUZZ/^r  )iterdirrw   s   &r
   rV   _PathGlobber.scandir  s    LT\\^LLr   c                D    V P                  \        V 4      V,           4      # r1   )with_segmentsr   r   s   &&r
   r   _PathGlobber.concat_path!  s    !!#d)d"233r   rv   N)r   r   r   r   r   r   rd   rV   r   r   r   r   s   @r
   r	  r	    sH      7 7 M M 4 4r   r	  )r   r   r~   r   r   )r   rt   z..)T)-r   r_   r   r   r8   	functoolsr   r  ri   r   __all__r   r   r   r&   r'   rE   rG   rJ   r%   r]   r7   rL   r"   r$   r#   r   rq   ro   r!   r2   r   r~   r   O_RDONLYgetattrrQ   objectr   r   	lru_cacher   r   r   r	  rv   r   r
   <module>r     sq      	 	      
 36t 6D 6E 66$ T U :'.Z*	G 
1
18 D
"		(+ jj#JJz* %
 !++M1 ==x 4 4e 4$ 4n S!0 "0x xvF\ F4< 4r   