
    Bh;                         S SK r S SKrS SKJr  SSKJrJrJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJr  SSKJrJr  \ R2                  " S5      r\ R2                  " S5      rSS jrS	 rS
 rS rS r S r!S r"S r#g)    N)ascii_lower   )AtKeywordTokenCommentCurlyBracketsBlockDimensionTokenFunctionBlock	HashToken
IdentTokenLiteralTokenNumberTokenParenthesesBlock
ParseErrorPercentageTokenSquareBracketsBlockStringTokenUnicodeRangeTokenURLTokenWhitespaceToken)serialize_string_valueserialize_urlz([-+]?([0-9]*\.)?[0-9]+([eE][+-]?[0-9]+)?z([0-9A-Fa-f]{1,6})[ \n\t]?c           
         U R                  SS5      R                  SS5      R                  SS5      R                  SS5      n [        U 5      nS=p4SnS	n/ =pxS
n	/ n
XB:  Ga  U R                  SX45      nUS	:w  a  USU R                  SX;5      -   -  nUnXF-
  nUnX   nUS;   a[  US-  nU R	                  SU5      (       a  US-  nU R	                  SU5      (       a  M  XU nUR                  [        X\U5      5        M  US;   aO  US-   U:  aF  XS-      S:X  a;  XS-      S;   a0  [        XS-   5      u  nnnUR                  [        X\UU5      5        M  U R	                  SU5      (       a#  UR                  [        X\S5      5        US-  nGM2  [        X5      (       Ga\  [        X5      u  pU R	                  SU5      (       d  UR                  [        X\U5      5        GM  US-  n[        U5      S:X  a  UnU R	                  SU5      (       a  US-  nU R	                  SU5      (       a  M  UU:  d	  U U   S;  a  [        X5      u  pnUbW  SR                  [!        U5      5      nUb  US   nUS:X  a  US
S nOUS:X  d   eUS
S	 nUR                  [#        X\UU5      5        Ub  UR                  [%        X\/UQ76 5        GMh  / nUR                  ['        X\UU5      5        U
R                  X45        Sn	UnGM  [(        R+                  X5      nU(       a  UR-                  5       nXU n[/        U5      n[1        UR3                  5       5      (       d  [5        U5      OS
nXB:  a>  [        X5      (       a.  [        X5      u  nnUR                  [7        X\UUUU5      5        GOVU R	                  SU5      (       a$  US-  nUR                  [9        X\UUU5      5        GOUR                  [;        X\UUU5      5        GOUS:X  aa  US-  nXB:  a:  [        X5      (       a*  [        X5      u  pUR                  [=        X\U5      5        GOUR                  [        X\S5      5        GOUS:X  a  US-  nXB:  an  X   S;   d0  [?        X   5      S:  d  X   S :X  aM  U R	                  S!U5      (       d6  [        X5      n[        X5      u  pUR                  [A        X\UU5      5        GOUR                  [        X\S5      5        GOUS":X  a:  / nUR                  [C        X\U5      5        U
R                  X45        S#n	UnUS-  nGOUS$:X  a:  / nUR                  [E        X\U5      5        U
R                  X45        S%n	UnUS-  nGOzUS:X  a:  / nUR                  [G        X\U5      5        U
R                  X45        Sn	UnUS-  nGO:X:X  a  U
RI                  5       u  pUS-  nGOUS&;   a&  UR                  [%        X\US'U-   5      5        US-  nGOUS;   ao  [K        X5      u  pnUb>  S(R                  [M        U5      5      nUb  US
S	 nUR                  [O        X\UU5      5        Ub  UR                  [%        X\/UQ76 5        GO{U R	                  S)U5      (       ar  U RQ                  S*US-   5      nUS	:X  a*  U(       d   UR                  [S        X\XS-   S
 5      5         U$ U(       d   UR                  [S        X\XS-   U 5      5        US-  nOU R	                  S+U5      (       a!  UR                  [        X\S+5      5        US,-  nOU R	                  S-U5      (       a!  UR                  [        X\S-5      5        US-  nOUS.;   a\  US-  nU R	                  S/U5      (       a$  US-  nUR                  [        X\US/-   5      5        O<UR                  [        X\U5      5        O UR                  [        X\U5      5        US-  nXB:  a  GM  U$ )0aS  Parse a list of component values.

:type css: :obj:`str`
:param css: A CSS string.
:type skip_comments: :obj:`bool`
:param skip_comments:
    Ignore CSS comments.
    The return values (and recursively its blocks and functions)
    will not contain any :class:`~tinycss2.ast.Comment` object.
:returns: A list of :term:`component values`.

    �z

r   r   N 
	 r   	Uu   +z0123456789abcdefABCDEF?z-->   (url"'zurl({})eof-in-string
eof-in-url)%@#z@0123456789abcdefghijklmnopqrstuvwxyz-_ABCDEFGHIJKLMNOPQRSTUVWXYZ   \\
{}[]z}])z
Unmatched z"{}"z/*z*/z<!--   z||z~|^$*=)*replacelenrfindcount
startswithappendr   _consume_unicode_ranger   r   _is_ident_start_consume_identr   r   _consume_urlformatr   r   r   r	   
_NUMBER_REmatchendfloatanygroupsintr   r   r   r   ordr
   r   r   r   pop_consume_quoted_stringr   r   findr   )cssskip_commentslengthtoken_start_posposlinelast_newlineroottokensend_charstacknewlinecolumncvaluestartrI   url_poserrorrepr	error_key	argumentsrH   repr_	int_valueunitis_identifiercontents                               D/var/www/html/env/lib/python3.13/site-packages/tinycss2/tokenizer.pyparse_component_value_listrm      s    ;;tX&GFD!''$"5ggdD6I  XFODLDHE
,))D/7b=A		$AAAD"L#H<1HC..!2C88q ..!2C88,EMM/$>?4iC!Gf,1W1D'l774S'BOE3MM+D%EF^^E3''MM,tU;<1HCS&&'1JE>>#s++ju=>1HC5!U*nn%6@@qLG nn%6@@f$GJ(F(4S(>%E((//e0DE ,(-aI(O;'+CRy'0L'@ @'@'+CRyhtUD&IJ(j&F&FGIMM-eYGHLL&+,HF  *))+C,E%LE*-elln*=*=E
4I| 9 9*34	cn%E4A BS))qodE9eTUk$y%PQ#X1HC| 9 9+C5
nT5ABl4=>#X1HC|H !? ?MD(X%cnnVS.I.I / 9+C5
ie]KLl4=>#XGMM,T7CDLL&+,HF1HC#XGMM-dGDELL&+,HF1HC#XGMM*4ABLL&+,HF1HC]  %yy{F1HC%ZMM*T1lQ6FGH1HC*_ 6s @E }}%;E%BC$9Dk$tDE j>>?^^D#&&((4q)Cby$MM'$a<O<P8Q"RS( K' !gdC!8KC4PQR1HC^^FC((MM,tV<=1HC^^D#&&MM,tT:;1HC'\1HC~~c3''ql4SABl4;<MM,tQ781HCw ,x K    c                 >    X   nUS;   =(       d    [        U5      S:  $ )z>Return true if the given character is a name-start code point.5abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_r3   )rN   )rR   rV   r_   s      rl   _is_name_startrq      s)     	A	DD 	Arn   c                 H   [        X5      (       a  gX   S:X  aj  US-  nU[        U 5      :  =(       a    [        X5      =(       d    X   S:H  =(       d0    U R                  SU5      =(       a    U R                  SU5      (       + $ X   S:X  a  U R                  SU5      (       + $ g)zCReturn True if the given position is the start of a CSS identifier.T-r   r4   r5   F)rq   r=   r@   )rR   rV   s     rl   rC   rC      s     c	Sq 3s8^M!9!LSX_ L^^D#&Js~~fc/J+J		M
 
T	>>&#...rn   c                 l   / n[        U 5      nUnX:  a{  X   nUS;   d  [        U5      S:  a  US-  nOUUS:X  aN  U R                  SU5      (       d7  UR                  XU 5        [	        XS-   5      u  pQUR                  U5        UnOOX:  a  M{  UR                  XU 5        SR                  U5      U4$ )zlReturn (unescaped_value, new_pos).

Assumes pos starts at a valid identifier. See :func:`_is_ident_start`.

z@abcdefghijklmnopqrstuvwxyz-_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZr3   r   r4   r5    )r=   rN   r@   rA   _consume_escapejoin)rR   rV   chunksrT   	start_posr_   s         rl   rD   rD      s     FXFI
,H . /25a&4-1HC$Ys~~fc::MM#,-$S'2FAMM!I , MM#$%776?Crn   c                    SnX   nUS;   d   eUS-  n/ n[        U 5      nUnX:  a  X   nXs:X  a  UR                  XU 5        US-  nO~US:X  aL  UR                  XU 5        US-  nX:  a,  X   S:X  a  US-  nO[        X5      u  pqUR                  U5        UnOUS:X  a  SUS4$ US-  nX:  a  M  SnUR                  XU 5        SR                  U5      X4$ )	z"Return (unescaped_value, new_pos).Nr)   r   r4   r   )z
bad-stringzBad string token)r,   zEOF in stringru   )r=   rA   rv   rw   )rR   rV   rc   quoterx   rT   ry   r_   s           rl   rP   rP      s    EHEJ1HCFXFI
,H:MM#,-1HC$YMM#,-1HC|8t#1HC,S6FAMM!$I$Y@@@1HC) ,, 3cC()776?C&&rn   c                    [         R                  X5      nU(       aV  [        UR                  S5      S5      nSUs=:  a  [        R
                  ::  a  O  O[        U5      OSUR                  5       4$ U[        U 5      :  a	  X   US-   4$ SU4$ )zlReturn (unescaped_char, new_pos).

Assumes a valid escape: pos is just after '\' and not followed by '\n'.

r      r   r   )	_HEX_ESCAPE_RErH   rM   groupsys
maxunicodechrrI   r=   )rR   rV   	hex_match	codepoints       rl   rv   rv   "  s     $$S.I	*B/	)=s~~=C	N8MMO 	 
s3xxq  }rn   c                    Sn[        U 5      nU R                  SU5      (       a  US-  nU R                  SU5      (       a  M  X:  a  SUS4$ X   nUS;   a  [        X5      u  pQnGOUS:X  a  SUS-   U4$ / nUn X:  a'  UR                  XU 5        SR	                  U5      US4$ X   nUS:X  a+  UR                  XU 5        US-  nSR	                  U5      X4$ US;   a*  UR                  XU 5        SR	                  U5      nUS-  nOiUS	:X  aN  U R                  S
U5      (       d7  UR                  XU 5        [        XS-   5      u  pAUR                  U5        UnOUS;   a  SnUS-  nOUS-  nM  UbS  U R                  SU5      (       a  US-  nU R                  SU5      (       a  M  X:  a  X   S:X  a  XQS-   U4$ O	Uc  SnXQU4$ X:  a7  U R                  SU5      (       a  US-  nOX   S:X  a  US-  nOUS-  nX:  a  M7  SUS4$ )z_Return (unescaped_url, new_pos)

The given pos is assumed to be just after the '(' of 'url('.

Nr    r   ru   )r.   z
EOF in URLr)   r/   r   r4   r5   z "'( z\)r$   )zbad-urlzbad URL token)r=   r@   rP   rA   rw   rv   )rR   rV   rc   rT   r_   r`   rx   ry   s           rl   rE   rE   5  sn    EXF ..*C
0
0q ..*C
0
0
}3444AJ23<E	
c37E!!	}cC01wwv-IIIACxcC01qwwv22gcC01qd3>>&##>#>cC01(Ag6a 	11 qq= @ nn.441HC nn.44<x3Agu,,  }4u$$ ,>>%%%1HCX_1HC1HC , 222rn   c                    [        U 5      nUn[        US-   U5      nX:  a  X   S;   a  US-  nX:  a
  X   S;   a  M  XU nUnX:  a  X   S:X  a  US-  nX:  a
  X   S:X  a  M  X-
  nU(       a  USU-  -   nUSU-  -   nOZUS-   U:  aO  X   S:X  aG  XS-      S;   a<  US-  nUn[        US-   U5      nX:  a  X   S;   a  US-  nX:  a
  X   S;   a  M  XU nOUn[        US5      [        US5      U4$ )	z\Return (range, new_pos)

The given pos is assume to be just after the '+' of 'U+' or 'u+'.

   0123456789abcdefABCDEFr   ?F0rs   r}   )r=   minrM   )rR   rV   rT   ry   max_posra   question_marksrI   s           rl   rB   rB     s9    XFI#'6"G
-CH(@@q -CH(@@#EI
-CHOq -CHO_NcN**n,,
'F
sx3
Ag,2
2q	cAgv&m,D D1HC m,D DC ub>3sB<,,rn   )F)$rer   webencodingsr   astr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   
serializerr   r   compilerG   r~   rm   rq   rC   rD   rP   rv   rE   rB    rn   rl   <module>r      sw    	 
 $    
 >ZZCD
9:tn" 6"'J&J3Z!-rn   