o
    ¸¼tf½;  ã                   @   sÒ   d dl Z d dlZd dlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ e  d¡Ze  d¡Zdd	d
„Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#dS )é    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]?Fc              	   C   s€  |   dd¡  dd¡  dd¡  dd¡} t| ƒ}d }}d}d	}g  }}d
}	g }
||k r¾|  d||¡}|d	krC|d|  d||¡ 7 }|}|| }|}| | }|dv ru|d7 }|  d|¡re|d7 }|  d|¡s[| ||… }| t|||ƒ¡ q&|dv r¤|d |k r¤| |d  dkr¤| |d  dv r¤t| |d ƒ\}}}| t||||ƒ¡ q&|  d|¡r¸| t	||dƒ¡ |d7 }q&t
| |ƒrgt| |ƒ\}}|  d|¡sÕ| t|||ƒ¡ q&|d7 }t|ƒdkrO|}|  d|¡rò|d7 }|  d|¡sè||ksý| | dvrOt| |ƒ\}}}|d
ur=d t|ƒ¡}|d
ur3|d }|dkr&|d
d… }n|dks-J ‚|d
d	… }| t||||ƒ¡ |d
urN| t||g|¢R Ž ¡ q&g }| t||||ƒ¡ |
 ||	f¡ d}	|}q&t | |¡}|rÐ| ¡ }| ||… }t|ƒ}t| ¡ ƒs‰t|ƒnd
}||k r«t
| |ƒr«t| |ƒ\}}| t||||||ƒ¡ n|  d|¡rÃ|d7 }| t|||||ƒ¡ n÷| t|||||ƒ¡ nê|dkr|d7 }||k röt
| |ƒröt| |ƒ\}}| t|||ƒ¡ nÄ| t	||dƒ¡ n¹|dkrP|d7 }||k rE| | dv s-t| | ƒdks-| | d krE|  d!|¡sEt
| |ƒ}t| |ƒ\}}| t ||||ƒ¡ nu| t	||dƒ¡ nj|d"krqg }| t!|||ƒ¡ |
 ||	f¡ d#}	|}|d7 }nI|d$kr’g }| t"|||ƒ¡ |
 ||	f¡ d%}	|}|d7 }n(|dkr³g }| t#|||ƒ¡ |
 ||	f¡ d}	|}|d7 }n||	krÃ|
 $¡ \}}	|d7 }n÷|d&v rÙ| t|||d'| ƒ¡ |d7 }ná|dv rt%| |ƒ\}}}|d
urd( t&|ƒ¡}|d
urý|d
d	… }| t'||||ƒ¡ |d
ur| t||g|¢R Ž ¡ n¡|  d)|¡rY|  (d*|d ¡}|d	krB|s?| t)||| |d d
… ƒ¡ 	 |S |sT| t)||| |d |… ƒ¡ |d7 }na|  d+|¡rn| t	||d+ƒ¡ |d,7 }nL|  d-|¡rƒ| t	||d-ƒ¡ |d7 }n7|d.v r­|d7 }|  d/|¡r£|d7 }| t	|||d/ ƒ¡ n| t	|||ƒ¡ n| t	|||ƒ¡ |d7 }||k s+|S )0aw  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   ú	Z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   )ÚcssZskip_commentsÚlengthZtoken_start_posÚposÚlineZlast_newlineÚrootÚtokensZend_charÚstackÚnewlineÚcolumnÚcÚvalueÚstartrF   Zurl_posÚerrorÚreprZ	error_keyÚ	argumentsrE   Úrepr_Z	int_valueÚunitZis_identifierÚcontent© ra   ú[/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/tinycss2/tokenizer.pyÚparse_component_value_list   sD  
þ
ÿ$ÿ




ÿ














€
í



 ä rc   c                 C   s   | | }|dv pt |ƒdkS )z>Return true if the given character is a name-start code point.Z5abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_r0   )rK   )rO   rQ   rX   ra   ra   rb   Ú_is_name_startÈ   s   
þrd   c                 C   s|   t | |ƒrdS | | dkr/|d7 }|t| ƒk r"t | |ƒp.| | dkp.|  d|¡o.|  d|¡ S | | dkr<|  d|¡ S dS )zCReturn True if the given position is the start of a CSS identifier.Tú-r   r1   r2   F)rd   r:   r=   )rO   rQ   ra   ra   rb   r@   Ñ   s   
"ür@   c                 C   s°   g }t | ƒ}|}||k rH| | }|dv st|ƒdkr|d7 }n%|dkrC|  d|¡sC| | ||… ¡ t| |d ƒ\}}| |¡ |}nn||k s| | ||… ¡ d |¡|fS )ztReturn (unescaped_value, new_pos).

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

    z@abcdefghijklmnopqrstuvwxyz-_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZr0   r   r1   r2   Ú )r:   rK   r=   r>   Ú_consume_escapeÚjoin)rO   rQ   ÚchunksrP   Ú	start_posrX   ra   ra   rb   rA   â   s"   

ôrA   c                 C   s
  d}| | }|dv sJ ‚|d7 }g }t | ƒ}|}||k rr| | }||kr2| | ||… ¡ |d7 }nK|dkra| | ||… ¡ |d7 }||k r^| | dkrR|d7 }nt| |ƒ\}}| |¡ |}n|dkrjd|dfS |d7 }||k sd}| | ||… ¡ d |¡||fS )	z"Return (unescaped_value, new_pos).Nr&   r   r1   r   )z
bad-stringzBad string token)r)   zEOF in stringrf   )r:   r>   rg   rh   )rO   rQ   r[   Úquoteri   rP   rj   rX   ra   ra   rb   rM   ý   s:   


ìrM   c                 C   sr   t  | |¡}|r't| d¡dƒ}d|  k rtjkr!n nt|ƒnd| ¡ fS |t| ƒk r5| | |d fS d|fS )ztReturn (unescaped_char, new_pos).

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

    r   é   r   r   )	Ú_HEX_ESCAPE_RErE   rJ   ÚgroupÚsysÚ
maxunicodeÚchrrF   r:   )rO   rQ   Z	hex_matchÚ	codepointra   ra   rb   rg   "  s   $þrg   c                 C   s.  d}t | ƒ}|  d|¡r|d7 }|  d|¡s||krd|dfS | | }|dv r0t| |ƒ\}}}n|dkr;d|d |fS g }|}	 ||krU| | ||… ¡ d |¡|dfS | | }|dkrr| | ||… ¡ |d7 }d |¡||fS |dv r‰| | ||… ¡ d |¡}|d7 }n4|d	kr­|  d
|¡s­| | ||… ¡ t| |d ƒ\}}| |¡ |}n|dv r¸d}|d7 }n|d7 }q@|durî|  d|¡rÑ|d7 }|  d|¡sÇ||k rã| | dkrâ||d |fS n|du réd}|||fS ||k r|  d|¡rþ|d7 }n| | dkr
|d7 }n|d7 }||k sód|dfS )zgReturn (unescaped_url, new_pos)

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

    Nr   r   rf   )r+   z
EOF in URLr&   r,   r   r1   r2   z "'( z\)r!   )zbad-urlzbad URL token)r:   r=   rM   r>   rh   rg   )rO   rQ   r[   rP   rX   rY   ri   rj   ra   ra   rb   rB   5  sz   ÿ


ÿâ ÿÿ


ù
rB   c                 C   sJ  t | ƒ}|}t|d |ƒ}||k r%| | dv r%|d7 }||k r%| | dv s| ||… }|}||k rE| | dkrE|d7 }||k rE| | dks7|| }|rX|d|  }|d|  }nB|d |k r˜| | dkr˜| |d  dv r˜|d7 }|}t|d |ƒ}||k r‘| | dv r‘|d7 }||k r‘| | dv sƒ| ||… }n|}t|dƒt|dƒ|fS )	zdReturn (range, new_pos)

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

    é   Z0123456789abcdefABCDEFr   ú?ÚFÚ0re   rl   )r:   ÚminrJ   )rO   rQ   rP   rj   Zmax_posrZ   Zquestion_marksrF   ra   ra   rb   r?   ‚  s4   ÿÿÿr?   )F)$Úrero   Zwebencodingsr   Úastr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   Ú
serializerr   r   ÚcompilerD   rm   rc   rd   r@   rA   rM   rg   rB   r?   ra   ra   ra   rb   Ú<module>   s     L


 8	%M