+
    iv                    	   R t ^ RIHt ^ RIt^ RIHt ^RIHt ^RIHt	 ^RIH
t ^RIHt ^ RIt^ RIHtHtHtHt R	t0 Rymt0 Rzmt0 R{mt0 R|mt0 R}mt]],          ],          ],          ],          tR
tR] R2tRtR] R] R2tR] R2tR] R] R2tR] R] R2t R] R] R2t!R] R] R]  R2t"R] R] R]" R] R ] R!2t#R"]  2t$R#]  2t%R$]  R%]  R&2t&R'] R(]  R)]  R]# R*2	t'R+]  R,] R-2t(R+]  R,] R.2t)R/]  R2t*R0t+] R12t,R2]( 2t-R3]  2t.R4]) R5]! R6] R7] R!] ] R8] R!] ] R92t/R:]) R;]! R<] R=2t0]) R>]" R] R?] R!]" R@] R12t1]) RA] R12t2] RB] RC] R!2t3]) R>]" R] R?] R!]" R@] R12t4]Pj                  ! RD] RE2]Pl                  4      t7]Pj                  ! RD] RF] R2]Pl                  4      t8]Pj                  ! RG] RH] RI2]Pl                  4      t9]Pj                  ! RJ]" RK] R?] RL2]Pt                  4      t;]Pj                  ! ]4      t<]Pj                  ! RM] R!24      t=]Pj                  ! ] RN24      t>]Pj                  ! RM]* RO2]Pt                  4      t?RPt@RQtA^tB^tC^tD^tE^tF^ tG^@tH^tIRRtJRStKRTtLRUtM]! ]MRV7      RW RX l4       tNRY RZ ltOR[ R\ ltPR~R] R^ lltQR_ R` ltR ! Ra Rb4      tS ! Rc Rd]S4      tT ! Re Rf4      tU ! Rg Rh4      tV]V! Ri4      P                  ]B]F,          Rj7      tX]V! Rk4      P                  ]B]F,          Rj7      tY]V! Rl4      P                  ]B]F,          ]E,          Rj7      tZ]V! Rm4      P                  ]B]F,          ]G,          Rj7      t[]V! Rn4      P                  ]B]F,          Rj7      t\]V! Ro4      P                  ]B]F,          Rj7      t]]V! Rp4      P                  ]B]F,          Rj7      t^]V! Rq4      P                  ]B]F,          Rj7      t_]V! Rr4      P                  ]B]F,          ]K,          Rj7      t`]V! Rs4      P                  ]BRj7      ta]V! Rt4      P                  ]B]F,          Rj7      tb]V! Ru4      P                  ]B]F,          Rj7      tc]V! Rv4      P                  ]B]I,          ]F,          Rj7      td]V! Rv4      P                  ]B]J,          ]F,          Rj7      te]V! Rw4      P                  ]B]F,          Rj7      tf]V! Rx4      P                  ]B]F,          Rj7      tgR# )zCSS selector parser.)annotationsN)	lru_cache)util)	css_match)	css_types)SelectorSyntaxError)MatchAnyIteratorcasti  z(?:\r\n|(?!\r\n)[\n\f\r])z	(?:[ \t]|)z"(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)z(?:|z(?:\\(?:[a-f0-9]{1,6}z?|[^\r\n\f]|$))z?|[^\r\n\f]|$|z))z8
(?:(?:-?(?:[^\x00-\x2f\x30-\x40\x5B-\x5E\x60\x7B-\x9f]|z>)+|--)
(?:[^\x00-\x2c\x2e\x2f\x3A-\x40\x5B-\x5E\x60\x7B-\x9f]|z)*)
z (?:[-+])?(?:[0-9]+n?|n)(?:(?<=n)z	*(?:[-+])z*(?:[0-9]+))?z(?:"(?:\\(?:.|z)|[^\\"\r\n\f]+)*?"|'(?:\\(?:.|z)|[^\\'\r\n\f]+)*?'|z*(?P<cmp>[!~^|*$]?=)z*(?P<value>z)(?:z*(?P<case>[is]))?)?*z\#z\.z(?P<tag_ns>(?:z|\*)?\|)?(?P<tag_name>z|\*)z\[z*(?P<attr_ns>(?:z|\*)?\|)?(?P<attr_name>z\]z
(?P<name>:z)(?P<open>\(z*)?z*)z(?P<name>:(?=--)&z*\):z@Pz
(?P<pseudo_nth_child>z
(?P<nth_child>z|even|odd))(?:z*\)|(?P<of>z*ofz*))
z
(?P<pseudo_nth_type>z
(?P<nth_type>z|even|odd))z*\)
z(?P<values>z*,z)*)z(?P<dir>ltr|rtl)z*?(?P<relation>[,+>~]|z(?![,+>~]))z(?:(\\[a-f0-9]{1,6}z?)|(\\[^\r\n\f])|(\\$))z?)|(\\[^\r\n\f])|(\\$)|(\\z'(?P<s1>[-+])?(?P<a>[0-9]+n?|n)(?:(?<=n)z*(?P<s2>[-+])z*(?P<b>[0-9]+))?z(?:(?P<value>z)|(?P<split>z*))^z*$$,    i   i   i  )maxsizec          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )   patternstr
namespaceszct.Namespaces | Nonecustomct.CustomSelectors | Noneflagsintreturnzcm.SoupSieve )formats   "]/Users/mibo/.openclaw/workspace/.venv-ak/lib/python3.14/site-packages/soupsieve/css_parser.py__annotate__r$      s:      $ & 	
     c           	         \        V4      p\        P                  ! V \        V VVR7      P	                  4       VVV4      # )zCached CSS compile.r   r   )process_customcm	SoupSieve	CSSParserprocess_selectors)r   r   r   r   custom_selectorss   &&&& r#   _cached_css_compiler.      sH     &f-<<#	
 


 
r%   c                   V ^8  d   QhRR/# )r   r    Noner!   )r"   s   "r#   r$   r$      s     & &d &r%   c                 .    \         P                  4        R# )zPurge the cache.N)r.   cache_clearr!   r%   r#   _purge_cacher3      s     ##%r%   c                    V ^8  d   QhRRRR/# )r   r   r   r    z dict[str, str | ct.SelectorList]r!   )r"   s   "r#   r$   r$      s      4 9Y r%   c                    / pV ex   V P                  4        Fc  w  r#\        P                  ! V4      p\        P	                  V4      f   \        RV R24      hWA9   d   \        RV R24      hW1\        V4      &   Ke  	  V# )zProcess custom.z
The name 'z)' is not a valid custom pseudo-class namezThe custom selector 'z' has already been registered)itemsr   lower	RE_CUSTOMmatchr   KeyErrorcss_unescape)r   r-   keyvaluenames   &    r#   r(   r(      s      ,,.JC::c?Dt$,)Jtf<e*fgg'!6tf<YZ[[38\$/0 ) r%   c               $    V ^8  d   QhRRRRRR/# )r   contentr   stringboolr    r!   )r"   s   "r#   r$   r$      s&     P P# Pt P Pr%   c                T    R R lpV'       g   \         M\        P                  W 4      # )zg
Unescape CSS value.

Strings allow for spanning the value on multiple strings by escaping a new line.
c                    V ^8  d   QhRRRR/# )r   m
Match[str]r    r   r!   )r"   s   "r#   r$   "css_unescape.<locals>.__annotate__   s      : # r%   c                H   V P                  ^4      '       d=   \        V P                  ^4      R,          ^4      pV^ 8X  d   \        p\        V4      pV# V P                  ^4      '       d   V P                  ^4      R,          pV# V P                  ^4      '       d   RpV# RpV# )z(Replace with the appropriate substitute.   NN   � )groupr   UNICODE_REPLACEMENT_CHARchr)rE   	codepointr=   s   &  r#   replacecss_unescape.<locals>.replace   s     771::AGGAJrNB/IA~4		NE  WWQZZGGAJrNE  WWQZZE  Er%   )
RE_CSS_ESCRE_CSS_STR_ESCsub)r@   rA   rQ   s   && r#   r;   r;      s    " %J.==gOOr%   c                    V ^8  d   QhRRRR/# )r   identr   r    r!   )r"   s   "r#   r$   r$     s      # # r%   c                   . p\        V 4      pV^ 8  ;'       d    V ^ ,          R8H  pV^8X  d   V'       d   VP                  RV  24       EM&\        V 4       EF  w  rE\        V4      pV^ 8X  d   VP                  R4       K+  ^Tu;8:  d   ^8:  g
   M V^8X  d   VP                  RVR R24       K[  V^ 8X  g   V'       d2   V^8X  d+   ^0Tu;8:  d   ^98:  d   M MVP                  RVR R24       K  VR9   gM   V^8  gF   ^0Tu;8:  d   ^98:  g7   M ^0Tu;8:  d   ^98:  g&   M ^ATu;8:  d   ^Z8:  g   M ^aTu;8:  d   ^z8:  d   M MVP                  V4       EK  VP                  RV 24       EK  	  RP	                  V4      # )zEscape identifier.-\rK   xr   rL   )-   _   )lenappend	enumerateordjoin)rW   rA   length
start_dashindexcrP   s   &      r#   escaperg     sC    FZF!//aCJ{z5'l#!%(HEAID h')+t+	T0A9Q-q121*
$)B[W[B[9Q-q12\)Y$->49C\X\C\*d*	0IT0ItW`OhdhOha 1#h' ) 776?r%   c                  >    ] tR tRtRtR R ltR R ltR R ltR	tR
# )SelectorPatterni/  Selector pattern.c               $    V ^8  d   QhRRRRRR/# )r   r>   r   r   r    r0   r!   )r"   s   "r#   r$   SelectorPattern.__annotate__2  s&     B BS B3 B4 Br%   c                    Wn         \        P                  ! V\        P                  \        P                  ,          \        P
                  ,          4      V n        R# Initialize.N)r>   recompileIXU
re_pattern)selfr>   r   s   &&&r#   __init__SelectorPattern.__init__2  s0     	**WbddRTTkBDD.@Ar%   c                   V ^8  d   QhRR/# r   r    r   r!   )r"   s   "r#   r$   rl   8  s      # r%   c                    V P                   # )	Get name.)r>   rv   s   &r#   get_nameSelectorPattern.get_name8  s     yyr%   c               (    V ^8  d   QhRRRRRRRR/# r   selectorr   re   r   r   r    zMatch[str] | Noner!   )r"   s   "r#   r$   rl   =  s)     6 6c 6# 6c 6>O 6r%   c                8    V P                   P                  W4      # )Match the selector.)ru   r9   )rv   r   re   r   s   &&&&r#   r9   SelectorPattern.match=  s     $$X55r%   )r>   ru   N	__name__
__module____qualname____firstlineno____doc__rw   r~   r9   __static_attributes__r!   r%   r#   ri   ri   /  s    B
6 6r%   ri   c                  >    ] tR tRtRtR R ltR R ltR R ltR	tR
# )SpecialPseudoPatterniC  rj   c                    V ^8  d   QhRRRR/# )r   patternszCtuple[tuple[str, tuple[str, ...], str, type[SelectorPattern]], ...]r    r0   r!   )r"   s   "r#   r$   !SpecialPseudoPattern.__annotate__F  s      W W!d Wim Wr%   c                ^   / V n         V F@  pV^ ,          pV^,          ! W2^,          4      pV^,           F  pW@P                   V&   K  	  KB  	  RV n        \        P                  ! \        \        P
                  \        P                  ,          \        P                  ,          4      V n        R# rn   )	r   matched_namerp   rq   PAT_PSEUDO_CLASS_SPECIALrr   rs   rt   re_pseudo_name)rv   r   pr>   r   pseudos   &&    r#   rw   SpecialPseudoPattern.__init__F  s     AQ4Dd41&GA$$(/f%   ! jj)A244"$$;QSQUQUCUVr%   c                   V ^8  d   QhRR/# rz   r!   )r"   s   "r#   r$   r   S  s     Q Q# Qr%   c                V    V P                   f   R# V P                   P                  4       # )r|   rL   )r   r~   r}   s   &r#   r~   SpecialPseudoPattern.get_nameS  s)     &&.rPD4E4E4N4N4PPr%   c               (    V ^8  d   QhRRRRRRRR/# r   r!   )r"   s   "r#   r$   r   X  s)      c # c >O r%   c                2   RpV P                   P                  W4      pV'       dr   \        P                  ! \	        VP                  R4      4      4      pV P                  P                  V4      pV'       d!   VP                  WV4      pV'       d   Wpn        V# )r   Nr>   )	r   r9   r   r7   r;   rM   r   getr   )rv   r   re   r   r   rE   r>   r   s   &&&&    r#   r9   SpecialPseudoPattern.matchX  sr     %%h6::l1776?;<Dmm''-G x>(/%r%   )r   r   r   Nr   r!   r%   r#   r   r   C  s    WQ
 r%   r   c                  N    ] tR tRtRtR R ltR R ltR R ltR	 R
 lt]t	Rt
R# )	_Selectorih  z
Intermediate selector class.

This stores selector data for a compound selector as we are acquiring them.
Once we are done collecting the data for a compound selector, we freeze
the data in an object that can be pickled and hashed.
c                    V ^8  d   QhRRRR/# )r   kwargsr	   r    r0   r!   )r"   s   "r#   r$   _Selector.__annotate__q  s     6 6 6 6r%   c                .   VP                  RR4      V n        VP                  R. 4      V n        VP                  R. 4      V n        VP                  R. 4      V n        VP                  R. 4      V n        VP                  R. 4      V n        VP                  R. 4      V n        VP                  R	R4      V n        VP                  R
. 4      V n	        VP                  R. 4      V n
        VP                  R^ 4      V n        VP                  RR4      V n        R# )ro   tagNidsclasses
attributesnth	selectors	relationsrel_typecontainslangr   no_matchF)r   r   r   r   r   r   r   r   r   r   r   r   r   )rv   r   s   &,r#   rw   _Selector.__init__q  s     ::eT*::eR(zz)R0 **\26::eR(K4K4

:t4

:r2JJvr*	ZZ+


:u5r%   c                    V ^8  d   QhRRRR/# )r   r   list[_Selector]r    ct.SelectorListr!   )r"   s   "r#   r$   r     s     % %? % %r%   c                    V'       dQ   V^ ,          pVP                   P                  VR,          4       \        P                  ! VP	                  4       .4      # \        P                  ! 4       # )zFreeze relation.rI   )r   extendctSelectorListfreeze)rv   r   sels   && r#   _freeze_relations_Selector._freeze_relations  sJ     A,CMM  2/??CJJL>22??$$r%   c                   V ^8  d   QhRR/# )r   r    zct.Selector | ct.SelectorNullr!   )r"   s   "r#   r$   r     s      5 r%   c                   V P                   '       d   \        P                  ! 4       # \        P                  ! V P                  \        V P                  4      \        V P                  4      \        V P                  4      \        V P                  4      \        V P                  4      V P                  V P                  4      V P                  \        V P                  4      \        V P                  4      V P                   4      # )zFreeze self.)r   r   SelectorNullSelectorr   tupler   r   r   r   r   r   r   r   r   r   r   r}   s   &r#   r   _Selector.freeze  s     ===??$$;;dhhdll#doo&dhhdnn%&&t~~6dmm$dii 

 r%   c                   V ^8  d   QhRR/# rz   r!   )r"   s   "r#   r$   r     s     
 
 
r%   c                X   RV P                   : RV P                  : RV P                  : RV P                  : RV P                  : RV P
                  : RV P                  : RV P                  : R	V P                  : R
V P                  : RV P                  : RV P                  : R2# )zString representation.z_Selector(tag=z, ids=z
, classes=z, attributes=z, nth=z, selectors=z, relations=z, rel_type=z, contains=z, lang=z, flags=z, no_match=r   )r   r   r   r   r   r   r   r   r   r   r   r   r}   s   &r#   __str___Selector.__str__  s     TXXLtxxl*T\\DTTabfbqbqat u88,l4>>*<LHZ [(DMM3DGDII=X`aeakak`n o(+	
r%   )r   r   r   r   r   r   r   r   r   r   r   r   N)r   r   r   r   r   rw   r   r   r   __repr__r   r!   r%   r#   r   r   h  s"    6 %(
 Hr%   r   c                     ] tR tRtRt]! R]4      ]! RR5]]3RR6]	]3RR7]
]3RR8]]3RR9]]334      ]! R	]4      ]! R
]4      ]! R]4      ]! R]4      ]! R]4      ]! R]4      ]! R]4      ]! R]4      ]! R]4      ]! R]4      3tR:R R ll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# 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%R0 R1 lt&R;R2 R3 llt'R4t(R# )<r+   i  zParse CSS selectors.pseudo_closepseudo_containspseudo_nth_childpseudo_nth_typepseudo_lang
pseudo_dirpseudo_class_custompseudo_classpseudo_elementampat_ruleidclassr   	attributecombineNc               (    V ^8  d   QhRRRRRRRR/# )	r   r   r   r   z'dict[str, str | ct.SelectorList] | Noner   r   r    r0   r!   )r"   s   "r#   r$   CSSParser.__annotate__  s2     7 77 87 	7
 
7r%   c                    VP                  RR4      V n        W0n        V P                  \        P                  ,          V n        Vf
   / V n        R# TV n        R# )ro    rK   N)rQ   r   r   r   DEBUGdebugr   )rv   r   r   r   s   &&&&r#   rw   CSSParser.__init__  sB      ''9
ZZ$**,
"Nbr%   c               (    V ^8  d   QhRRRRRRRR/# r   r   r   rE   rF   has_selectorrB   r    r!   )r"   s   "r#   r$   r     s0     D DI D* DTX D]a Dr%   c                   RpVP                  R4      pVP                  R4      '       d&   \        P                  ! VP                  R4      4      MRpVP                  R4      '       d   \        VP                  R4      RR 4      MRp\        VP                  R4      4      pRp	Rp
RpV'       d0   VR8X  d   \        P
                  M^ \        P                  ,          pMS\        P                  ! V4      R	8X  d)   \        P
                  \        P                  ,          pR
p	M\        P                  pV'       d`   VP                  R4      P                  R4      '       d    \        VP                  R4      ^R R
4      pM\        VP                  R4      4      pV'       g   RpEMVP                  R4      '       d5   \        P                  ! R\        P                  ! V4      ,          V4      pEMVP                  R4      '       d5   \        P                  ! R\        P                  ! V4      ,          V4      pEMQVP                  R4      '       d5   \        P                  ! R\        P                  ! V4      ,          V4      pEMVP                  R4      '       d[   V'       d   \        P                  V4      '       d   RM\        P                  ! V4      p\        P                  ! RV,          V4      pMVP                  R4      '       d4   \        P                  ! R\        P                  ! V4      ,          V4      pMK\        P                  ! R\        P                  ! V4      ,          V4      pVP                  R4      '       d   R
pV	'       d)   V'       d!   \        P                  ! VP                  4      p
\        P                  ! WW4      pV'       dl   \        4       pVP                   P#                  V4       \        P$                  ! VP'                  4       .R
R4      pVP(                  P#                  V4       R
pV# VP                   P#                  V4       R
pV# )z8Create attribute selector from the returned regex match.FcmpcaseNattr_nsrL   	attr_nameitypeTr=   r   z^%s.*r   z.*?%s$r   z.*?%s.*~z[^\s\S]z7.*?(?:(?<=^)|(?<=[ \t\r\n\f]))%s(?=(?:[ \t\r\n\f]|$)).*r   z^%s(?:-.*)?$z^%s$!"')rM   r   r7   r;   rp   rr   DOTALL
startswithrq   rg   RE_WSsearchr   r   SelectorAttributer   r   r_   r   r   r   )rv   r   rE   r   inverseopr   nsattris_typepattern2r=   r   r   sel_attrsub_selnot_lists   &&&&             r#   parse_attribute_selector"CSSParser.parse_attribute_selector  s    WWU^./ggfootzz!''&/*467ggi6H6H\!''),Sb12bAGGK01!S[RTTa299<EZZ'DD299$EGIIEwww**:66$QWWW%5a%;TB$QWWW%56G]]3jjBIIe,<!<eDG]]3jjRYYu-=!=uEG]]3jjbii.>!>FG]]3 ',u||E/B/BJ		RWHXEjj![^c!cejkG]]3jj299U3C!CUKG jj299U+;!;UCG}}S!!wzz'//2H '''DkG%%h/(8'94GHMM  *  NN!!(+r%   c               (    V ^8  d   QhRRRRRRRR/# r   r!   )r"   s   "r#   r$   r     s)      Y : T VZ r%   c                    VP                  R4      '       d   \        VP                  R4      RR 4      MRp\        VP                  R4      4      p\        P                  ! WT4      Vn        RpV# )z#Parse tag pattern from regex match.tag_nsNtag_nameTr   )rM   r;   r   SelectorTagr   )rv   r   rE   r   prefixr   s   &&&&  r#   parse_tag_patternCSSParser.parse_tag_pattern  s]     :;9J9Jaggh/45PT177:./..-r%   c               (    V ^8  d   QhRRRRRRRR/# r   r!   )r"   s   "r#   r$   r   '  s*      Y : UY ^b r%   c                0   \         P                  ! \        VP                  R4      4      4      pV P                  P                  V4      pVf<   \        RV RVP                  ^ 4       2V P                  VP                  ^ 4      4      h\        V\        P                  4      '       gQ   V P                  V \        WPP                  V P                  R7      P                  \        R7      pWPP                  V&   VP                   P#                  V4       RpV# )z
Parse custom pseudo class alias.

Compile custom selectors as we need them. When compiling a custom selector,
set it to `None` in the dictionary so we can avoid an infinite loop.
r>   zUndefined custom selector 'z' found at position r'   r   T)r   r7   r;   rM   r   r   r   endr   
isinstancer   r   r+   r   r,   
FLG_PSEUDOr   r_   )rv   r   rE   r   r   r   s   &&&&  r#   parse_pseudo_class_custom#CSSParser.parse_pseudo_class_custom'  s     L9:;;??6*%-fX5I!%%PQ(Ta  (BOO44F# DJJj1  #+KKX&r%   c               0    V ^8  d   QhRRRRRRRRR	RR
R/# )r   r   r   rE   rF   r   rB   	iselector Iterator[tuple[str, Match[str]]]is_htmlr    ztuple[bool, bool]r!   )r"   s   "r#   r$   r   C  sN     d% d%d% d% 	d%
 4d% d% 
d%r%   c                v   Rp\         P                  ! \        VP                  R4      4      4      pVP                  R4      '       d   RpV'       d1   V\        9   d&   V P                  WW4VP                  ^ 4      4      pW53# V'       Egd   V\        9   EdX   VR8X  d*   V;P                  \        P                  ,          un        EM"VR8X  d,   V;P                  \        P                  ,          un        RpEMVR8X  d*   V;P                  \        P                  ,          un        EMVR8X  d*   V;P                  \        P                  ,          un        EMVR 9   d"   VP                  P                  \         4       EMhVR	8X  d"   VP                  P                  \"        4       EM@VR
8X  d"   VP                  P                  \$        4       EMVR8X  d"   VP                  P                  \&        4       EMVR8X  d"   VP                  P                  \(        4       EMVR8X  d"   VP                  P                  \*        4       EMVR8X  d"   VP                  P                  \,        4       EMxVR8X  d"   VP                  P                  \.        4       EMPVR8X  d"   VP                  P                  \0        4       EM(VR8X  d"   VP                  P                  \2        4       EM VR8X  d"   VP                  P                  \4        4       EMVR8X  d"   VP                  P                  \6        4       EMVR8X  d"   VP                  P                  \8        4       EMVR8X  d"   VP                  P                  \:        4       EM`VR8X  d"   VP                  P                  \<        4       EM8VR8X  dJ   VP>                  P                  \        P@                  ! ^R^ RR\        PB                  ! 4       4      4       EMVR8X  dJ   VP>                  P                  \        P@                  ! ^R^ RR\        PB                  ! 4       4      4       EMVR8X  dJ   VP>                  P                  \        P@                  ! ^R^ RR\        PB                  ! 4       4      4       EMHVR8X  dI   VP>                  P                  \        P@                  ! ^R^ RR\        PB                  ! 4       4      4       MVR8X  dw   VP>                  PE                  \        P@                  ! ^R^ RR\        PB                  ! 4       4      \        P@                  ! ^R^ RR\        PB                  ! 4       4      .4       M|VR8X  dv   VP>                  PE                  \        P@                  ! ^R^ RR\        PB                  ! 4       4      \        P@                  ! ^R^ RR\        PB                  ! 4       4      .4       RpW53# V'       dH   V\F        9   d=   V PI                  WBP                  ^ 4      \J        \L        ,          4       RVn'        RpW53# V'       g   V\P        9   d   RVn'        RpW53# V\R        9   d+   \U        RV R2V PV                  VPY                  ^ 4      4      h\U        RV R2V PV                  VPY                  ^ 4      4      h)!zParse pseudo class.Fr>   openT:root:defined:scope:empty:checked:default:indeterminate	:disabled:enabled	:required:muted:open	:optional
:read-only:read-write	:in-range:out-of-range:placeholder-shown:first-child:last-child:first-of-type:last-of-type:only-child:only-of-typez!Invalid syntax for pseudo class 'r   z' was detected as a pseudo-class and is either unsupported or invalid. If the syntax was not intended to be recognized as a pseudo-class, please escape the colon.):link	:any-link)-r   r7   r;   rM   PSEUDO_COMPLEXparse_pseudo_openr
  PSEUDO_SIMPLEr   r   SEL_ROOTSEL_DEFINED	SEL_SCOPE	SEL_EMPTYr   r_   CSS_LINKCSS_CHECKEDCSS_DEFAULTCSS_INDETERMINATECSS_DISABLEDCSS_ENABLEDCSS_REQUIRED	CSS_MUTEDCSS_OPENCSS_OPTIONALCSS_READ_ONLYCSS_READ_WRITECSS_IN_RANGECSS_OUT_OF_RANGECSS_PLACEHOLDER_SHOWNr   SelectorNthr   r   PSEUDO_COMPLEX_NO_MATCHparse_selectorsr  FLG_OPENr   PSEUDO_SIMPLE_NO_MATCHPSEUDO_SUPPORTEDr   r   start)rv   r   rE   r   r  r  complex_pseudor   s   &&&&&&  r#   parse_pseudo_classCSSParser.parse_pseudo_classC  s    L9:776??!Nf611#|XYX]X]^_X`aLj $$i  Fm$; 		R[[(	:%		R^^+	8#		R\\)	8#		R\\)	11$$X.:%$$[1:%$$[1++$$%67;&$$\2:%$$[1;&$$\28#$$Y/7"$$X.;&$$\2<'$$]3=($$^4;&$$\2?*$$%56//$$%:;>)r~~a5%IZ[\=(r~~a5$HYZ[++r~~a4HYZ[?*r~~a4rGXYZ=(q%E5"//BSTq%E4ARS ?*q%D%ARSq%D$@QR  L, $$+ *A A  EE!Hj86KLCLL$ $$#  F.D$DCLL $$ ''%3F81=
  &F8 n n
	 r%   c          
     ,    V ^8  d   QhRRRRRRRRR	R/# )
r   r   r   rE   rF   r   rB   r  r  r    r!   )r"   s   "r#   r$   r     s<     ? ?? ? 	?
 4? 
?r%   c                   VP                  4       pVP                  R4      '       d   RpMRp\        P                  ! \	        VR,          4      4      VR&   \        P                  ! VP                  RV,           4      4      pVR8X  d	   ^p^ p	Rp
EMGVR8X  d	   ^p^p	Rp
EM8\        \        \        ,          \        P                  V4      4      pVP                  R	4      '       d   VP                  R	4      R
8X  d   R
MRpVP                  R4      pVP                  R4      p
VP                  R4      '       d   VR,          pMV
'       d   WRR ,          pMW,          pVP                  R4      '       d   VP                  R4      R
8X  d   R
MRpVP                  R4      '       d   WP                  R4      ,          pMRp\        V^
4      p\        V^
4      p	VR,          pVR8X  d   VP                  R4      '       d2   V P                  WBP                  ^ 4      \         \"        ,          4      pM\$        pVR8X  d8   VP&                  P)                  \*        P,                  ! WV	RRV4      4       RpV# VR8X  d4   VP&                  P)                  \*        P,                  ! WV	RRV4      4       RpV# VR8X  dK   VP&                  P)                  \*        P,                  ! WV	RR\*        P.                  ! 4       4      4       RpV# VR8X  dG   VP&                  P)                  \*        P,                  ! WV	RR\*        P.                  ! 4       4      4       RpV# )zParse `nth` pseudo.r   _child_typer>   r   evenTodds1rY   rL   an1Ns2b0of
:nth-childF:nth-last-child:nth-of-type:nth-last-of-typer   )	groupdictr   r   r7   r;   r   r   r   RE_NTHr9   rM   endswithr   r   rG  r
  r  rH  CSS_NTH_OF_S_DEFAULTr   r_   r   rE  r   )rv   r   rE   r   r  mdictpostfixr@   rU  rY  var	nth_parts_s1rV  _s2
pseudo_selnth_sels   &&&&&            r#   parse_pseudo_nthCSSParser.parse_pseudo_nth  s    99'((GG

<f#>?f**UYYuw78fBBCBBCU3Zg)>?I"..9??43HC3O#UWC$A**S/C||C  s
"v"..9??43HC3O#UWCs##s++S"BS"B6]
hwwt}}..y%%(JQYDYZ /\)r~~br5%QR  00r~~br5$PQ  ^+r~~br4HYZ[  22r~~br4rGXYZr%   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r   r   r   r>   r   r   rB   r  r  re   r   r    r!   )r"   s   "r#   r$   r     sF        	
 4  
r%   c                    \         \        ,          pVR8X  d   V\        ,          pM)VR8X  d   V\        ,          pMVR9   d   V\        ,          pVP
                  P                  V P                  WEV4      4       RpV# )z"Parse pseudo with opening bracket.:not:hasT):where:is)r  rH  FLG_NOTFLG_RELATIVEFLG_FORGIVEr   r_   rG  )rv   r   r>   r   r  re   r   s   &&&&&& r#   r0  CSSParser.parse_pseudo_open  sm     X%6>WEV^\!E&&[ ET11)EJKr%   c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r   r   r   rE   rF   r   rB   r   r   r   r   re   r   r    ztuple[bool, _Selector, str]r!   )r"   s   "r#   r$   r     sP     )+ )+)+ )+ 	)+
 #)+ )+ )+ 
%)+r%   c                   VP                  R4      P                  4       pV'       g   \        pV\        8X  dP   WQn        VR,          P
                  P                  V4       R\        ,           pVP                  \        4       4       MfV'       d*   WQn        VR,          P
                  P                  V4       M,VR,          \        8w  d   \        RV 2V P                  V4      hRV,           p\        4       pRpW1V3# )Parse combinator tokens.relationr   rI   z%The multiple combinators at position Fr   )
rM   stripWS_COMBINATORCOMMA_COMBINATORr   r   r_   r   r   r   )rv   r   rE   r   r   r   re   
combinators   &&&&&&& r#   parse_has_combinatorCSSParser.parse_has_combinator  s     WWZ(..0
&J))#LbM##**3/]*HY[)'"''..s3". *;E7CLL  Z'Hk(**r%   c               <    V ^8  d   QhRRRRRRRRR	RR
RRRRRRR/	# )r   r   r   rE   rF   r   rB   r   r   r   	is_pseudo
is_forgivere   r   r    ztuple[bool, _Selector]r!   )r"   s   "r#   r$   r   ,  sd     .! .!.! .! 	.!
 #.! #.! .! .! .! 
 .!r%   c	                   VP                  R4      P                  4       p	V	'       g   \        p	V'       gY   V'       d   V	\        8w  d   \	        RV	 RV R2V P
                  V4      hV	\        8X  d   RVn        VR VP                  V4       MV	\        8X  dg   VP                  '       g%   V'       g   \        P                  ! RR4      Vn        VP                  P                  V4       VP                  V4       VR M5VP                  P                  V4       Wn        VR VP                  V4       \        4       pR	pW13# )
r{  r|  zThe combinator 'z' at position z , must have a selector before itTNNNr   NF)rM   r}  r~  r  r   r   r   r_   r   r   r  r   r   r   r   )
rv   r   rE   r   r   r   r  r  re   r  s
   &&&&&&&&& r#   parse_combinatorCSSParser.parse_combinator,  s    WWZ(..0
&J/?!?)&zl.GghLL  --#aL  %--wwwy nnS$7CG$$Y/  %aL$$Y/)aL  %k  r%   c               (    V ^8  d   QhRRRRRRRR/# r   r!   )r"   s   "r#   r$   r   \  s)     	 	) 	
 	$ 	SW 	r%   c                   VP                  ^ 4      pVP                  R4      '       d0   VP                  P                  \	        VR,          4      4       RpV# VP
                  P                  \	        VR,          4      4       RpV# )zParse HTML classes and ids..rI   T)rM   r   r   r_   r;   r   )rv   r   rE   r   r   s   &&&& r#   parse_class_idCSSParser.parse_class_id\  sp     771:s##KK|HRL9:  GGNN<56r%   c               (    V ^8  d   QhRRRRRRRR/# r   r!   )r"   s   "r#   r$   r   g  s*       z QU Z^ r%   c                \   \         P                  ! \        VP                  R4      4      4      pVR8X  d   \        P
                  ! R\        4       VR8H  p\        VP                  R4      4      p. p\        P                  V4       Fp  pVP                  R4      '       d   K  VP                  R4      p	V	P                  R	4      '       d   \        V	^R
 R4      p	M\        V	4      p	VP                  V	4       Kr  	  VP                  P                  \        P                  ! Wu4      4       RpV# )zParse contains.r>   	:containsz\The pseudo class ':contains' is deprecated, ':-soup-contains' should be used moving forward.:-soup-contains-ownvaluessplitr=   T)r   r   r   )r   r7   r;   rM   warningswarnFutureWarning	RE_VALUESfinditerr   r_   r   r   SelectorContains)
rv   r   rE   r   r   contains_ownr  r   tokenr=   s
   &&&&      r#   parse_pseudo_containsCSSParser.parse_pseudo_containsg  s     L9:[ MMn !66aggh/0''/E{{7##KK(E
++$U1R[$7$U+OOE" 0 	B//GHr%   c               (    V ^8  d   QhRRRRRRRR/# r   r!   )r"   s   "r#   r$   r     s)      Y : T VZ r%   c                   VP                  R4      p. p\        P                  V4       Fp  pVP                  R4      '       d   K  VP                  R4      pVP                  R4      '       d   \	        V^R R4      pM\	        V4      pVP                  V4       Kr  	  VP                  P                  \        P                  ! V4      4       RpV# )zParse pseudo language.r  r  r=   Tr   r   )	rM   r  r  r   r;   r_   r   r   SelectorLang)rv   r   rE   r   r  r   r  r=   s   &&&&    r#   parse_pseudo_langCSSParser.parse_pseudo_lang  s     "''/E{{7##KK(E
++$U1R[$7$U+OOE" 0 	12r%   c               (    V ^8  d   QhRRRRRRRR/# r   r!   )r"   s   "r#   r$   r     s)      I * D UY r%   c                    \         P                  ! VP                  R4      4      R8X  d   \        P                  M\        P
                  pV;P                  V,          un        RpV# )zParse pseudo direction.dirltrT)r   r7   rM   r   SEL_DIR_LTRSEL_DIR_RTLr   )rv   r   rE   r   r=   s   &&&& r#   parse_pseudo_dirCSSParser.parse_pseudo_dir  sD     #'**QWWU^"<"E2>>		U	r%   c               (    V ^8  d   QhRRRRRRRR/# )r   r  r  re   r   r   r    r   r!   )r"   s   "r#   r$   r     s>     uQ uQ3uQ uQ 	uQ
 
uQr%   c           
        \        4       p. pRpRp. pR\        ,           p	\        V\        ,          4      p
\        V\        ,          4      p\        V\
        ,          4      p\        V\        ,          4      p\        V\        ,          4      p\        V\        ,          4      p\        V\        ,          4      p\        V\        ,          4      p\        V\        ,          4      p\        V\        ,          4      p\        V\        ,          4      pV P                  '       d   V'       d   \        R4       V
'       d   \        R4       V'       d   \        R4       V'       d   \        R4       V'       d   \        R4       V'       d   \        R4       V'       d   \        R	4       V'       d   \        R
4       V'       d   \        R4       V'       d   \        R4       V'       d   \        R4       V'       d   VP!                  \        4       4         \#        V4      w  ppVR8X  d   \%        RVP'                  ^ 4       24      hVR8X  d,   V;P(                  \*        P,                  ,          un        RpEM<VR8X  d   V P/                  VVV4      pEM VR8X  d   V P1                  VVWaV4      w  rnEMVR8X  d   \%        RVP'                  ^ 4       24      hVR8X  d   V P3                  VVV4      pEMVR%9   d   V P5                  VVWa4      pEMVR8X  d   V P7                  VVV4      pEMVR8X  d   V P9                  VVV4      pRpEMkVR8X  d   V'       gH   V'       g9   \;        RVP'                  ^ 4       2V P<                  VP'                  ^ 4      4      hRVn        V
'       d   RpEM\;        RVP'                  ^ 4       2V P<                  VP'                  ^ 4      4      hVR8X  d:   V'       d   V PA                  VVWeW4      w  rdp	MV PC                  VVWeWVV4      w  rdMVR8X  d   V PE                  VVV4      pMvVR8X  dV   V'       d:   \;        RVP'                  ^ 4       R 2V P<                  VP'                  ^ 4      4      hV PG                  VVV4      pMVR&9   d   V PI                  VVV4      pVPK                  ^ 4      pEK  V
'       d#   V'       g   \;        R!V 2V P<                  V4      hV'       d   VPN                  '       g%   V'       g   \*        PP                  ! R"R#4      Vn'        V'       d*   Wn)        VR',          PT                  P!                  V4       MeVPT                  PW                  V4       VR$ VP!                  V4       M5V'       d.   V'       d	   V'       g   RVn        VR$ VP!                  V4       RpV'       g   \;        RV 2V P<                  V4      hV'       d   \*        PX                  VR',          n        V'       d   \*        PZ                  VR',          n        V'       d   \*        P\                  VR',          n        V'       d   \*        P^                  VR',          n        V'       d   \*        P`                  VR',          n        \*        Pb                  ! V Uu. uF  pVPe                  4       NK  	  upW4      #   \L         d     ELi ; iu upi )(zParse selectors.Fr   z    is_pseudo: Truez    is_open: Truez    is_relative: Truez    is_not: Truez    is_html: Truez    is_default: Truez    is_indeterminate: Truez    is_in_range: Truez    is_out_of_range: Truez    is_placeholder_shown: Truez    is_forgive: TrueTr   zAt-rules found at position r   r   r   r   z!Pseudo-element found at position r   r   r   r   z Expected a selector at position z)Unmatched pseudo-class close at position r   r   r   zTag name found at position z instead of at the startz"Unclosed pseudo-class at position r   Nr  )r   r   )r   r   r   )3r   r~  rB   rH  r  rv  ru  FLG_HTMLFLG_DEFAULTFLG_INDETERMINATEFLG_IN_RANGEFLG_OUT_OF_RANGEFLG_PLACEHOLDER_SHOWNrw  r   printr_   nextNotImplementedErrorrK  r   r   r4  r  rM  r  rm  r  r  r   r   r   r  r  r   r  r  r
  StopIterationr   r  r   r   r   SEL_DEFAULTSEL_INDETERMINATESEL_IN_RANGESEL_OUT_OF_RANGESEL_PLACEHOLDER_SHOWNr   r   )rv   r  re   r   r   r   r   closedr   r   is_openr  is_relativeis_notr  
is_defaultis_indeterminateis_in_rangeis_out_of_rangeis_placeholder_shownr  r<   rE   ss   &&&&                    r#   rG  CSSParser.parse_selectors  s    k		& ux'(+,	5</0ego&ux'(%+-.
(9 9:5</0u'778#E,A$AB%+-.
 :::+,)*-.())*,-23-.12#67,- Y[)D	iQ )#-0KAGGTUJ<.XYYE\II-I#'L11#'#A#A#q,#WLN*,0,C,CCLel,m)L',,-0QRSRYRYZ[R\Q].^__--#'#=#=c1l#SLCC#'#8#8a#YLM)#'#9#9#q,#OLL(#'#8#8a#NL"GN*')"5"B1771:, O $ !
# 
 (,!%1GPQ
|T LLGGAJ 
 I%"6:6O6OLX738 -1,A,ALYS]_d-)c K'#'#@#@a#VLE\#19!''!*E]^ LLGGAJ 
 $(#9#9#q,#OLO+#'#6#6sA|#LLa
 6%4UG<  7779..d3'"''..s3$$Y/aL  % )CL!S!L &25':  "$..IbM"$"6"6IbM"$//IbM"$"5"5IbM"$":":IbM I>Iq
I>PPq  		p  ?sA   E[ [ $A[ +[ /A[ 6A[ A;[ 4['[$#[$c                    V ^8  d   QhRRRR/# )r   r   r   r    r  r!   )r"   s   "r#   r$   r   T  s     '$ '$S '$-M '$r%   c              #    "   \         P                  V4      pV'       d   VP                  ^ 4      M^ p\        P                  V4      pV'       d   VP	                  ^ 4      ^,
          M\        V4      ^,
          pV P                  '       d   \        RV: 24       W48:  Ed   RpV P                   F  pVP                  WV P                  4      pV'       g   K)  VP                  4       pV P                  '       d4   \        RV RVP                  ^ 4      : RVP	                  ^ 4       24       VP                  ^ 4      pWb3x   M	  Ve   K  W,          pVR8X  d   RV 2pM0VR8X  d   R	V 2pM#VR
8X  d   RV 2pMVR8X  d   RV 2pM	RV: RV 2p\        WP                  V4      hV P                  '       d   \        R4       R# R# 5i)zIterate selector tokens.z## PARSING: NzTOKEN: 'z' --> z at position [z)Malformed attribute selector at position r  z%Malformed class selector at position #z"Malformed id selector at position r   z,Malformed pseudo-class selector at position zInvalid character z
 position z## END PARSING)RE_WS_BEGINr   r
  	RE_WS_ENDrK  r^   r   r  
css_tokensr9   r   r~   rM   r   r   )	rv   r   rE   re   r
  vr>   rf   msgs	   &&       r#   selector_iterCSSParser.selector_iterT  s     w'a1W%"#qwwqzA~#g,*::::L,-lA__GGGDJJ71::<DzzzfQWWQZN-PQPWPWXYPZ|\]EE!HE'M % yN 8EeWMC#XA%IC#X>ugFC#XHPC.qe:eWEC)#||UCC:::"# s-   AG
;G
AG
!G
;AG
A,G
;G
c               $    V ^8  d   QhRRRRRR/# )r   re   r   r   r    r   r!   )r"   s   "r#   r$   r   }  s&     T Ts Ts T? Tr%   c                X    V P                  V P                  V P                  4      W4      # )zProcess selectors.)rG  r  r   )rv   re   r   s   &&&r#   r,   CSSParser.process_selectors}  s&     ##D$6$6t||$DeSSr%   )r   r   r   r   )r  :-soup-containsr  )r]  r^  )r_  r`  ):lang):dir)N    )r  r  ))r   r   r   r   r   ri   PAT_PSEUDO_CLOSEr   PAT_PSEUDO_CONTAINSPAT_PSEUDO_NTH_CHILDPAT_PSEUDO_NTH_TYPEPAT_PSEUDO_LANGPAT_PSEUDO_DIRPAT_PSEUDO_CLASS_CUSTOMPAT_PSEUDO_CLASSPAT_PSEUDO_ELEMENTPAT_AMPPAT_AT_RULEPAT_ID	PAT_CLASSPAT_TAGPAT_ATTRPAT_COMBINEr  rw   r   r  r  rM  rm  r0  r  r  r  r  r  r  rG  r  r,   r   r!   r%   r#   r+   r+     s>    	(89 &K'#	 $%FH\^mn"$IK^`op
O_My./J	
 	-/FG(89(*<=w'	;/f%+w'X.	;/3J87DL8d%L?B.)+V.!`	2*uQn'$RT Tr%   r+   zhtml|*:is(a, area)[href]r	  z\
    html|*:is(input[type=checkbox], input[type=radio])[checked], html|option[selected]
    z
    :checked,

    /*
    This pattern must be at the end.
    Special logic is applied to the last selector.
    */
    html|form html|*:is(button, input)[type="submit"]
    aF  
    html|input[type="checkbox"][indeterminate],
    html|input[type="radio"]:is(:not([name]), [name=""]):not([checked]),
    html|progress:not([value]),

    /*
    This pattern must be at the end.
    Special logic is applied to the last selector.
    */
    html|input[type="radio"][name]:not([name='']):not([checked])
    a  
    html|*:is(input:not([type=hidden]), button, select, textarea, fieldset, optgroup, option, fieldset)[disabled],
    html|optgroup[disabled] > html|option,
    html|fieldset[disabled] > html|*:is(input:not([type=hidden]), button, select, textarea, fieldset),
    html|fieldset[disabled] >
        html|*:not(legend:nth-of-type(1)) html|*:is(input:not([type=hidden]), button, select, textarea, fieldset)
    z|
    html|*:is(input:not([type=hidden]), button, select, textarea, fieldset, optgroup, option, fieldset):not(:disabled)
    z,html|*:is(input, textarea, select)[required]z2html|*:is(input, textarea, select):not([required])aW  
    html|input:is(
        :not([type]),
        [type=""],
        [type=text],
        [type=search],
        [type=url],
        [type=tel],
        [type=email],
        [type=password],
        [type=number]
    )[placeholder]:not([placeholder='']):is(:not([value]), [value=""]),
    html|textarea[placeholder]:not([placeholder=''])
    z*|*a  
    html|*:is(
        textarea,
        input:is(
            :not([type]),
            [type=""],
            [type=text],
            [type=search],
            [type=url],
            [type=tel],
            [type=email],
            [type=number],
            [type=password],
            [type=date],
            [type=datetime-local],
            [type=month],
            [type=time],
            [type=week]
        )
    ):not([readonly], :disabled),
    html|*:is([contenteditable=""], [contenteditable="true" i])
    z!
    html|*:not(:read-write)
    z
    html|input:is(
        [type="date"],
        [type="month"],
        [type="week"],
        [type="time"],
        [type="datetime-local"],
        [type="number"],
        [type="range"]
    ):is(
        [min],
        [max]
    )
    z*
    html|*:is(details, dialog)[open]
    z(
    html|*:is(video, audio)[muted]
    >   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  r&  >   :host:past:focus:hover:active:future:paused:target:current:playing:seeking:stalled:visited	:autofill
:buffering:fullscreen:local-link:focus-within:popover-open:user-invalid:focus-visible:target-within:volume-locked:picture-in-picture>   rt  rr  rq  rs  :matchesr  r  r  >   r  r  :host-context>   r  r  r]  r_  r^  r`  )F)hr   
__future__r   rp   	functoolsr   rL   r   r   r)   r   r   r   r  typingr   r	   r
   r   rN   r1  rI  r/  rF  PSEUDO_SPECIALrJ  NEWLINEWSCOMMENTSWSCCSS_ESCAPESCSS_STRING_ESCAPES
IDENTIFIERNTHVALUEATTRr  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  rq   rr   rS   rT   rb  rs   r  r   r  r  r8   r  r~  r  ru  rv  r  r  r  rH  r  r  r  rw  	_MAXCACHEr.   r3   r(   r;   rg   ri   r   r   r+   r,   r6  r7  r8  r9  r:  r;  r<  r?  rD  rd  rA  r@  rB  rC  r>  r=  r!   r%   r#   <module>r     sE    " 	     %  - -! < 8	  !#99NJMddguu  ''!0	RD(1(O</t>'"M 88C} E88C} E

 
*#iuMJG9$CG9L`ak`llmp
cU&se;ugT#FYZ]Y^^_` zl	*	J<'=j\
N%j\1HTUVZU[[]^ LSA (LRH -j\; 
e3< *+, J< ./ 0e>#k(1RDS
RSTVSWX[W\ ] 
-. /U+cU # 
 //{5'SEC5PQRWQXX[\_[``cd-..>se3G,RDC5B23;ugSRPSuTUV[U\\_`c_ddgh  ZZ05LMrttT
4RD8RSZR[[]^`b`d`de	>se=QTPUUefhjhlhl	mJJ-wl3%r#cJBDDQ	


2jjAcU!%JJ3%r{#	JJ!34A6=	   

    	 9 ,&P686 6("? "JA AHTT TTv *x/0 	  *x/0	  
 *x/+=>  
 *x/2CCD   *x/0   *x/0	  2*x/0  8*x/0  " *x/2GGH " !	*%  . *x/0/ 2  *x/0	   *|3h>? "  *'77(BC $  *x/0	 	  *x/0	 
r%   