K iwdZddlmZddlZddlmZddlmZddlmZ ddlm Z dd lm Z ddl Z dd lmZmZmZmZd Zhd Zhd ZhdZhdZhdZeezezezezZdZdedZdZdededZdedZdededZdededZ deded Z!d!ed"ed#e d$Z"ded%ed&e"d'ed(ed) Z#d*e Z$d+e Z%d,e d-e d.Z&d/ed0e d1e de#Z'd2e d3ed4Z(d2e d3ed5Z)d6e dZ*d7Z+ed8Z,d9e(Z-d:e Z.d;e)ded?eed@ed?eedAZ/dBe)dCe!dDedEZ0e)dFe"dedGed?e"dHed8 Z1e)dIed8Z2edJedKed?Z3e)dFe"dedGed?e"dHed8 Z4ejjdLedMejlZ7ejjdLedNedejlZ8ejjdOedPedQejlZ9ejjdRe"dSedGedTejtZ;ejjeZ<ejjdUed?Z=ejjedVZ>ejjdUe*dWejtZ?dXZ@dYZAdZBdZZCd[ZDd\ZEd]ZFd^ZGd_ZHd`ZIdaZJdbZKdcZLddZMeeMe ddfZNddgZOddhZPdddiZQddjZRGdkdlZSGdmdneSZTGdodpZUGdqdrZVeVdsjeBeFztZXeVdujeBeFztZYeVdvjeBeFzeEztZZeVdwjeBeFzeGztZ[eVdxjeBeFztZ\eVdyjeBeFztZ]eVdzjeBeFztZ^eVd{jeBeFztZ_eVd|jeBeFzeKztZ`eVd}jeBtZaeVd~jeBeFztZbeVdjeBeFztZceVdjeBeIzeFztZdeVdjeBeJzeFztZeeVdjeBeFztZfeVdjeBeFztZgy)zCSS selector parser.) annotationsN) lru_cache)util) css_match) css_types)SelectorSyntaxError)MatchAnyIteratorcasti>:link:open:root:empty:muted:scope:checked:default:defined:enabled :any-link :disabled :in-range :optional :required :read-only :last-child :only-child :read-write :first-child :last-of-type :only-of-type :out-of-range:first-of-type:indeterminate:placeholder-shown>:past:focus:hover:active:future:paused:target:playing:seeking:stalled:visited :autofill :buffering :fullscreen :local-link :focus-within :popover-open :user-invalid:focus-visible:target-within:volume-locked:picture-in-picture:host:current>:matches:is:has:not:where :contains:-soup-contains:-soup-contains-own> :host-contextr>r?>:dir:lang :nth-child :nth-of-type:nth-last-child:nth-last-of-typez(?:\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+)z*(?P[!~^|*$]?=)z *(?Pz)(?:z*(?P[is]))?)?z*\]z\#z\.z(?P(?:z|\*)?\|)?(?Pz|\*)z\[z*(?P(?:z|\*)?\|)?(?Pz (?P:z )(?P\(z*)?z*)z(?P:(?=--)&z*\):z@Pz (?Pz (?Pz|even|odd))(?:z *\)|(?P*z*ofz*)) z (?Pz (?Pz |even|odd))z*\) z (?Pz*,z)*)z(?Pltr|rtl)z*?(?P[,+>~]|z (?![,+>~]))z(?:(\\[a-f0-9]{1,6}z?)|(\\[^\r\n\f])|(\\$))z?)|(\\[^\r\n\f])|(\\$)|(\\z'(?P[-+])?(?P[0-9]+n?|n)(?:(?<=n)z *(?P[-+])z*(?P[0-9]+))?z (?:(?Pz )|(?Pz*))^z*$$,  @iii)maxsizec~t|}tj|t|||j |||S)zCached CSS compile.customflags)process_customcm SoupSieve CSSParserprocess_selectors)pattern namespacesrcrdcustom_selectorss Z/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/soupsieve/css_parser.py_cached_css_compilernsH&f- << #       c,tjy)zPurge the cache.N)rn cache_clearrorm _purge_cacherss##%roci}|r|jD]_\}}tj|}tj |t d|d||vrt d|d||t|<a|S)zProcess custom.z The name 'z)' is not a valid custom pseudo-class namezThe custom selector 'z' has already been registered)itemsrlower RE_CUSTOMmatchr KeyError css_unescape)rcrlkeyvaluenames rmreres  ,,. 9JC::c?Dt$,)Jtf.replaces 771:AGGAJqrNB/IA~4  NE WWQZGGAJqrNE  WWQZE E ro)r Match[str]returnstr) RE_CSS_ESCRE_CSS_STR_ESCsub)contentstringrs rmrzrzs "%J. = =gw OOroczg}t|}|dkDxr|ddk(}|dk(r|r|jd|nt|D]\}}t|}|dk(r|jd(d|cxkrdksn|dk(r|jd|dd Q|dk(s|r*|dk(r%d |cxkrd krnn|jd|dd |d vs:|d k\s5d |cxkrd ks*nd |cxkrd ksnd|cxkrdksnd|cxkrdkrnn|j||jd|dj |S)zEscape identifier.r-r\rxrW09)-_r^AZazr)lenappend enumerateordjoin)identrlength start_dashindexcrs rmescapersGF ZF!/aCJ {z 5'l#!%( (HE1AID  h')+t+ T0A 9Q-q121* $)B[W[B[ 9Q-q12\)Y$->49C\X\C\*d* 0IT0ItW`OhdhOh a  1#h' ( 776?roc(eZdZdZddZddZddZy) SelectorPatternSelector pattern.c||_tj|tjtjztj z|_y) Initialize.N)r}recompileIXU re_pattern)selfr}rjs rm__init__zSelectorPattern.__init__2s2 **WbddRTTkBDD.@Aroc|jS) Get name.)r}rs rmget_namezSelectorPattern.get_name8syyroc:|jj||S)Match the selector.)rrx)rselectorrrds rmrxzSelectorPattern.match=s$$Xu55roN)r}rrjrrNonerrrrrrrdrrzMatch[str] | None__name__ __module__ __qualname____doc__rrrxrrrormrr/sB  6rorc(eZdZdZddZddZddZy) SpecialPseudoPatternrc&i|_|D]/}|d}|d||d}|dD]}||j|<1d|_tjttj tj ztjz|_y)rrrrXrN) patterns matched_namerrPAT_PSEUDO_CLASS_SPECIALrrrre_pseudo_name)rrpr}rjpseudos rmrzSpecialPseudoPattern.__init__Fs  0AQ4Dad41&GA$ 0(/ f% 0 0 ! jj)A244"$$;QSQUQUCUVrocR|jdS|jjS)rr)rrrs rmrzSpecialPseudoPattern.get_nameSs)&&.rPD4E4E4N4N4PProcd}|jj||}|rftjt |j d}|j j|}|r|j|||}|r||_|S)rNr}) rrxrrvrzrrgetr)rrrrdrrr}rjs rmrxzSpecialPseudoPattern.matchXsx    % %h 6 ::l1776?;(/D% roN)rzCtuple[tuple[str, tuple[str, ...], str, type[SelectorPattern]], ...]rrrrrrrrormrrCs WQ rorc4eZdZdZddZddZd dZd dZeZy) _Selectorz 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 ,|jdd|_|jdg|_|jdg|_|jdg|_|jdg|_|jdg|_|jdg|_|jd d|_|jd g|_ |jd g|_ |jd d |_ |jdd|_ y)rtagNidsclasses attributesnth selectors relationsrel_typecontainslangrdrno_matchF) rrrrrrrrrrrrdr)rkwargss rmrz_Selector.__init__qs::eT*::eR(zz)R0  **\26::eR(K4K4 :t4  :r2 JJvr* ZZ+  :u5 roc|rG|d}|jj|ddtj|j gStjS)zFreeze relation.rrN)rextendct SelectorListfreeze)rrsels rm_freeze_relationsz_Selector._freeze_relationssL A,C MM 12 /??CJJL>2 2??$ $roc|jrtjStj|jt |j t |jt |jt |jt |j|j|j|jt |jt |j|j S)z Freeze self.)rr SelectorNullSelectorrtuplerrrrrrrrrrrdrs rmrz_Selector.freezes ==??$ $;;dhhdll#doo&dhhdnn%&&t~~6 dmm$dii    roc@d|jd|jd|jd|jd|jd|j d|j d|jd |jd |jd |jd |jd S)zString 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=rO) rrrrrrrrrrrdrrs rm__str__z_Selector.__str__sTXXLtxxl*T\\DTTabfbqbqatu88,l4>>*!>FG ]]3 ',u||E/BJ RWHXEjj![^c!cejkG ]]3 jj299U3C!CUKGjj299U+;!;UCG}}S! wzz'//2H''b'8D kG    % %h /(8'94GH MM  *  NN ! !( + roc|jdrt|jdddnd}t|jd}tj|||_d}|S)z#Parse tag pattern from regex match.tag_nsNr tag_nameT)rrzr SelectorTagr)rrrrprefixrs rmparse_tag_patternzCSSParser.parse_tag_patterns\:;9Jaggh/45PT177:./..f- roc"tjt|jd}|jj |}|;t d|d|jd|j|jdt|tjsR|j|=t||j|jjt}||j|<|j j#|d}|S)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}zUndefined custom selector 'z' found at position rrbrdT)rrvrzrrcrr endrj isinstancerrrhrdri FLG_PSEUDOrr)rrrrrrs rmparse_pseudo_class_customz#CSSParser.parse_pseudo_class_custom'sL9:;;??6*  %-fX5I!%%PQ(T a  (BOO4 F# DJJj1 #+DKK  X& roc z d}tjt|jd}|jdrd}|r0|tvr(|j |||||j d}||fS|s|tvr|dk(r%|xjtjzc_n|dk(r'|xjtjzc_d}n|dk(r%|xjtjzc_n|d k(r%|xjtjzc_nU|d vr!|jjt n0|d k(r!|jjt"n |d k(r!|jjt$n|d k(r!|jjt&n|dk(r!|jjt(n|dk(r!|jjt*nr|dk(r!|jjt,nL|dk(r!|jjt.n&|dk(r!|jjt0n|dk(r!|jjt2n|dk(r!|jjt4n|dk(r!|jjt6n|dk(r!|jjt8nh|dk(r!|jjt:nB|dk(r!|jjt<n|dk(rG|j>jtj@dddddtjBn|dk(rG|j>jtj@dddddtjBn|dk(rG|j>jtj@dddddtjBn8|dk(rF|j>jtj@dddddtjBn|dk(rr|j>jEtj@dddddtjBtj@dddddtjBgnv|dk(rq|j>jEtj@dddddtjBtj@dddddtjBgd}||fS|rB|tFvr:|jI||j dtJtLzd|_'d}||fS|s|tPvr d|_'d}||fS|tRvr*tUd |d!|jV|jYdtUd!|d"|jV|jYd)#zParse pseudo class.Fr}openTrrrrr)rrrrr&rrrrrrrr rr$r'r!rrr%r"rr#z!Invalid syntax for pseudo class 'rz' 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.)-rrvrzrPSEUDO_COMPLEXparse_pseudo_openr+ PSEUDO_SIMPLErdrSEL_ROOT SEL_DEFINED SEL_SCOPE SEL_EMPTYrrCSS_LINK CSS_CHECKED CSS_DEFAULTCSS_INDETERMINATE CSS_DISABLED CSS_ENABLED CSS_REQUIRED CSS_MUTEDCSS_OPEN CSS_OPTIONAL CSS_READ_ONLYCSS_READ_WRITE CSS_IN_RANGECSS_OUT_OF_RANGECSS_PLACEHOLDER_SHOWNr SelectorNthrrPSEUDO_COMPLEX_NO_MATCHparse_selectorsr-FLG_OPENrPSEUDO_SIMPLE_NO_MATCHPSEUDO_SUPPORTEDr rjstart)rrrr iselectoris_htmlcomplex_pseudors rmparse_pseudo_classzCSSParser.parse_pseudo_classCsL9: 776?!N f611#v|YXYX]X]^_X`aLjW$$i Fm$;  R[[( :% R^^+ 8# R\\) 8# R\\) 11 $$X.:% $$[1:% $$[1++ $$%67;& $$\2:% $$[1;& $$\28# $$Y/7" $$X.;& $$\2<' $$]3=( $$^4;& $$\2?* $$%56// $$%:;>)r~~a5%IZ[\=(r~~a5$HYZ[++r~~a4HYZ[?*r~~a4rGXYZ=(q%E5"//BSTq%E4ARS ?*q%D%ARSq%D$@QR  L,W$$+*A A  AEE!Hj86K LCLL$W$$# F.D$DCLLW$$' '%3F81=    &F8nn   roc |j}|jdrd}nd}tjt |d|d<tj|jd|z}|dk(rd}d} d } n|d k(rd}d } d } nt t ttj|} | jd r| jd d k(rd nd} | jd} | jd} | jdr| dz } n| r | | ddz } n| | z } | jdr| jdd k(rd nd}| jdr|| jdz }nd}t| d}t|d} |d}|dk(r|jdr.|j||jdt t"z}nt$}|dk(r7|j&j)t+j,|| | dd|d }|S|dk(r3|j&j)t+j,|| | dd |d }|S|dk(rI|j&j)t+j,|| | d dt+j.d }|S|dk(rE|j&j)t+j,|| | d d t+j.d }|S)zParse `nth` pseudo.r_child_typer}revenrXrToddrs1rran1Nr s2b0 ofrKFrMrLrN) groupdictrrrvrzr r rRE_NTHrxrendswithrrrIr+r-rJCSS_NTH_OF_S_DEFAULTrrrrGr)rrrrrNmdictpostfixrrWr[var nth_parts_s1rX_s2 pseudo_selnth_sels rmparse_pseudo_nthzCSSParser.parse_pseudo_nths  99' (GG <f #>?f **UYYuw78 f BBC  BBCU3Zg)>?I".9??43HC3O#UWC$A**S/C||C s q"v q".9??43HC3O#UWCs#ys++S"BS"B6] h wwt}..y!%%(JQYDYZ/\)r~~b#r5%QR 00r~~b#r5$PQ   ^+r~~b#r4HYZ[ 22r~~b#r4rGXYZ rocttz}|dk(r |tz}n|dk(r |tz}n |dvr |tz}|j j |j|||d}|S)z"Parse pseudo with opening bracket.rCrB)rDrAT)r-rJFLG_NOT FLG_RELATIVE FLG_FORGIVErrrI)rrr}rrNrrds rmr2zCSSParser.parse_pseudo_opensoX% 6> W E V^ \ !E & & [ E T11)UEJK roc|jdj}|st}|tk(rH||_|dj j |dtz}|j tnS|r&||_|dj j |n&|ddtk7rtd||j|d|z}t}d}|||fS)Parse combinator tokens.relationr rRrNz%The multiple combinators at position F) rstrip WS_COMBINATORCOMMA_COMBINATORrrrrr rj)rrrrrrr combinators rmparse_has_combinatorzCSSParser.parse_has_combinatorsWWZ(..0 &J ) )#CL bM # # * *3 /]*H   Y[ )' " ''..s3!". *;E7CLLZ'Hk S(**roc L|jdj} | st} |sP|r | tk7rt d| d|d|j || tk(rd|_|dd=|j|n| tk(r[|js|stjdd|_|jj||j||dd=n8|jj|| |_ |dd=|j|t}d}||fS) rrrszThe combinator 'z' at position z , must have a selector before itTNrSF)rrtrurvr rjrrrrr&rrrr) rrrrrr is_pseudo is_forgiverrws rmparse_combinatorzCSSParser.parse_combinator,sWWZ(..0 &J/?!?)&zl.GghLL--# aL  %--wwy nnS$7CG $$Y/  %aL $$Y/) aL  %k S  roc|jd}|jdr+|jjt |ddd}|S|j jt |ddd}|S)zParse HTML classes and ids.r.rNT)rrrrrzr)rrrrrs rmparse_class_idzCSSParser.parse_class_id\sq771:   s # KK  |HQRL9 :  GGNN< 5 6 roc6tjt|jd}|dk(rt j dt |dk(}t|jd}g}tj|D]b}|jdr|jd} | jdrt| d d d } n t| } |j| d|jjtj||d }|S) zParse contains.r}rEz\The pseudo class ':contains' is deprecated, ':-soup-contains' should be used moving forward.rGvaluessplitr|)rrrr T)rrvrzrwarningswarn FutureWarning RE_VALUESfinditerrrrrSelectorContains) rrrrr contains_ownrrtokenr|s rmparse_pseudo_containszCSSParser.parse_pseudo_containsgsL9: [ MMn !66 aggh/0''/ #E{{7#KK(E +$U1R[$7$U+ OOE " # B//,GH roc|jd}g}tj|D]b}|jdr|jd}|jdrt |ddd}n t |}|j |d|j j tj|d}|S)zParse pseudo language.rrr|rrr T) rrrrrzrrr SelectorLang)rrrrrrrr|s rmparse_pseudo_langzCSSParser.parse_pseudo_langs"''/ #E{{7#KK(E +$U1R[$7$U+ OOE " # 12 roctj|jddk(rtjntj }|xj |zc_d}|S)zParse pseudo direction.dirltrT)rrvrr SEL_DIR_LTR SEL_DIR_RTLrd)rrrrr|s rmparse_pseudo_dirzCSSParser.parse_pseudo_dirsD#'**QWWU^"<"E2>> U  roc  t}g}d}d}g}dtz} t|tz} t|tz} t|t z} t|t z} t|tz}t|tz}t|tz}t|tz}t|tz}t|tz}t|tz}|jr| r td| r td| r td| r td|r td|r td|r td |r td |r td |r td |r td | r|j!t t#|\}}|dk(rt%d|j'd|dk(r'|xj(t*j,zc_d}n |dk(r|j/|||}n|dk(r|j1|||||\}}n|dk(rt%d|j'd|dk(r|j3|||}n|dvr|j5||||}n~|dk(r|j7|||}nd|dk(r|j9|||}d}nH|dk(r|sA|s8t;d|j'd|j<|j'dd|_| rd}n t;d|j'd|j<|j'd|dk(r9| r|jA||||| |\}}} n|jC|||||| ||\}}n|dk(r|jE|||}nk|d k(rO|r9t;d!|j'dd"|j<|j'd|jG|||}n|d#vr|jI|||}|jKd}| | r|st;d$||j<||r|jNs| st+jPd%d&|_'| r&| |_)|d'jTj!|nW|jTjW||d&d&=|j!|n%|r#|r|sd|_|d&d&=|j!|d}|st;d||j<||rt*jX|d'_|rt*jZ|d'_|rt*j\|d'_|rt*j^|d'_|rt*j`|d'_t+jb|Dcgc]}|jec}| |S#tL$rYwxYwcc}w)(zParse selectors.FrRz 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: TrueTrzAt-rules found at position rrrrrz!Pseudo-element found at position r)rrrrrz Expected a selector at position z)Unmatched pseudo-class close at position rrrzTag name found at position z instead of at the start)rrz"Unclosed pseudo-class at position rSNr )3rruboolrJr-rornFLG_HTML FLG_DEFAULTFLG_INDETERMINATE FLG_IN_RANGEFLG_OUT_OF_RANGEFLG_PLACEHOLDER_SHOWNrprprintrnextNotImplementedErrorrMrdrr6r.rQrrlrrr rjrrxr|r"r(rr+ StopIterationrr&rrr SEL_DEFAULTSEL_INDETERMINATE SEL_IN_RANGESEL_OUT_OF_RANGESEL_PLACEHOLDER_SHOWNrr)rrNrrdrrrclosedrris_openrz is_relativeis_notrO is_defaultis_indeterminate is_in_rangeis_out_of_rangeis_placeholder_shownr{r{rss rmrIzCSSParser.parse_selectorssk   &ux'(+, 5</0 ego&ux'(%+-. (9 9:5</0 u'778#E,A$AB%+-.  ::+,)*-.())*,-23-.12#67,-    Y[ )D iQ)#-0KAGGTUJ<.XYYE\II-I#'L11#'#A#A#q,#WLN*,0,C,CCLZcel,m)L',,-0QRSRYRYZ[R\Q].^__--#'#=#=c1l#SLCC#'#8#8ay#YLM)#'#9#9#q,#OLL(#'#8#8a#NL"GN*')"5"B1771:, O $ ! # (, !%1GPQ |T LLGGAJ I%"6:6O6OL)Xu73 c8-1,A,AL)Y S]_d-) cK'#'#@#@a#VLE\#19!''!*E]^ LLGGAJ $(#9#9#q,#OLO+#'#6#6sA|#LLaCHD 6%4UG<   779..d3' " ''..s3 $$Y/aL  %)CL!   S !L&25':   "$..IbM  "$"6"6IbM  "$//IbM  "$"5"5IbM  "$":":IbM I>q >PPq   p ?sI=V0W0 V=<V=c #"Ktj|}|r|jdnd}tj|}|r|j ddz n t |dz }|j rtd|||krd}|jD]}|j|||j}|s#|j}|j r2td|d|jdd|j d|jd}||fn|P||}|dk(rd |}n)|d k(rd |}n|d k(rd |}n|dk(rd|}nd|d|}t||j|||kr|j r tdyyw)zIterate selector tokens.rrz ## PARSING: NzTOKEN: 'z' --> z at position [z)Malformed attribute selector at position r~z%Malformed class selector at position #z"Malformed id selector at position rRz,Malformed pseudo-class selector at position zInvalid character z position z## END PARSING) RE_WS_BEGINrr+ RE_WS_ENDrMrrr css_tokensrxrdrrr rj) rrjrrr+vr}rmsgs rm selector_iterzCSSParser.selector_iterTs   w 'a1   W %"#qwwqzA~#g,*: :: L , -slA__ GGGUDJJ7::ugFC#XHPC.qe:eWEC)#t||UCC5sl6 :: " # sB3F6B?F6FcZ|j|j|j||S)zProcess selectors.)rIrrj)rrrds rmrizCSSParser.process_selectors}s(##D$6$6t||$DeUSSro)Nr)rrrcz'dict[str, str | ct.SelectorList] | Nonerdrrr)rrrrrrrr) rrrrrrrN Iterator[tuple[str, Match[str]]]rOrrztuple[bool, bool]) rrrrrrrNrrr) rrr}rrrrNrrrrr)rrrrrrrrrrrrrztuple[bool, _Selector, str])rrrrrrrrrrrzrr{rrrrztuple[bool, _Selector])rr)rNrrrrdrrr)rjrrr)rrrdrrr)'rrrrrPAT_PSEUDO_CLOSErPAT_PSEUDO_CONTAINSPAT_PSEUDO_NTH_CHILDPAT_PSEUDO_NTH_TYPEPAT_PSEUDO_LANGPAT_PSEUDO_DIRPAT_PSEUDO_CLASS_CUSTOMPAT_PSEUDO_CLASSPAT_PSEUDO_ELEMENTPAT_AMP PAT_AT_RULEPAT_ID PAT_CLASSPAT_TAGPAT_ATTR PAT_COMBINErrr"r(r.rQrlr2rxr|rrrrrIrrirrrormrhrhs (89&K'#  $%FH\^mn"$IK^`op O_My./J   -/FG(89(*<=w' ;/f%+w' X. ;/3J>;? 7 78 7 7  7DL8d% d% d% d% 4 d%  d% d%L? ? ? ? 4 ?  ?B   4    .)+ )+ )+ )+ # )+  )+)+ %)+V.! .! .! .! # .! # .!.!.!.! .!` 2* uQ3uQuQ uQ  uQn'$RTrorhzhtml|*: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] ) rjrrkzct.Namespaces | Nonercct.CustomSelectors | Nonerdrrz cm.SoupSieve)rr)rcrrz dict[str, str | ct.SelectorList])F)rrrrrr)rrrr)hr __future__rr functoolsrrrrrfrrr rtypingr r r r rr3rKr1rHPSEUDO_SPECIALrLNEWLINEWSCOMMENTSWSC CSS_ESCAPESCSS_STRING_ESCAPES IDENTIFIERNTHVALUEATTRrrrrrrrrrrrrrrrrrrrrrrarrrrrrwrvrur-rnrorrrrJrrrrp _MAXCACHErnrsrerzrrrrrhrir8r9r:r;r<r=r>rArFrcrCrBrDrEr@r?rrrormrs" %--! <8 !#99NJMddguu ''! 0 RD(1(O< /t>'"M88C}E88C}E *#iuMJ G9$CG9L`ak`llnq cU&se;ugT#FYZ]Y^^ab zl *  J<'=j\ N%j\1H TUVZU[ \  LSA( LRH-j\; e3<*+,J< ./0e>#k(1RDS RSTVSWX[W\] -./U+cU# //{5'SEC5PQRWQXX[\_[``cd-..>se3G,RD C5B 23;ugSRPSuTUV[U\\_`c_ddghRZZ05LMrtt T 4RD8RSZR[[]^`b`d`de >se=QTPUUefhjhlhl m BJJ-wl3%r#cJBDD Q  2bjjAcU!% BJJ3%r{ # BJJ!34A6 =           9 $ &    ,& P6866("?"JAAHT TT Tv  *x/0 *x/0   *x/+=>   *x/2CCD*x/0 *x/0  2*x/0 8*x/0 " *x/2GGH"! *%.*x/0/2*x/0   *|3h>? " *'77(BC$  *x/0    *x/0  ro