403Webshell
Server IP : 35.80.110.71  /  Your IP : 216.73.216.221
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /usr/lib/python3/dist-packages/cssselect/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3/dist-packages/cssselect/__pycache__/parser.cpython-312.pyc
�

E�Zc���
�F�dZddlZddlZddlZddlZddlmZmZmZmZm	Z	m
Z
mZdedefd�Z
Gd�de�ZGd	�d
ee�ZedZedefZGd
�d�ZGd�d�ZGd�d�ZGd�d�ZGd�d�ZGd�d�ZGd�d�ZGd�d�ZGd�d�ZGd�d�ZGd �d!�ZGd"�d#�ZGd$�d%�Z ejBd&�Z"ejBd'�Z#ejBd(�Z$d)edeefd*�Z%d+d,deefd-�Z&d+d,de
eeeffd.�Z'	dUd+d,d/e(de
eeeffd0�Z)d+d,ded1fd2�Z*d+d,de
d1effd3�Z+d+d,deefd4�Z,d5ed+d,defd6�Z-d7ed1de
e.e.ffd8�Z/Gd9�d1e
eeef�Z0Gd:�d;e0�Z1Gd<�d=�Z2ejfrGd>�d?ejh�Z5d@edd?fdA�Z6e6dB�Z7e6dC�Z8e6dD�Z9e6dE�Z:e6dF�e6dG�dH�Z;ejBdI�jxZ=ejBe2j|ej~�jxZ@ejBdJ�jxZAej�dKdL�ZCdMdNdefdO�ZDdPedefdQ�ZEdRedee0fdS�ZFGdT�d,�ZGy)Va
    cssselect.parser
    ================

    Tokenizer, parser and parsed objects for CSS selectors.


    :copyright: (c) 2007-2012 Ian Bicking and contributors.
                See AUTHORS for more details.
    :license: BSD, see LICENSE for more details.

�N)�Iterable�Iterator�List�Optional�Sequence�Tuple�Union�string�returnc�^�|jd�j�jd�S)z(Lower-case, but only in the ASCII range.�utf8)�encode�lower�decode)r
s �2/usr/lib/python3/dist-packages/cssselect/parser.py�ascii_lowerrs%���=�=�� �&�&�(�/�/��7�7�c��eZdZdZy)�
SelectorErrorz�Common parent for :class:`SelectorSyntaxError` and
    :class:`ExpressionError`.

    You can just use ``except SelectorError:`` when calling
    :meth:`~GenericTranslator.css_to_xpath` and handle both exceptions types.

    N��__name__�
__module__�__qualname__�__doc__�rrrrs��rrc��eZdZdZy)�SelectorSyntaxErrorz3Parsing a selector that does not match the grammar.Nrrrrrr%s��=rr)�Element�Hash�Class�Function�Pseudo�Attrib�Negation�Relation�Matching�SpecificityAdjustment�CombinedSelector�FunctionalPseudoElementc�\�eZdZdZd
dedeeddfd�Zdefd�Z	defd�Z
deeeeffd	�Z
y)�Selectoru"
    Represents a parsed selector.

    :meth:`~GenericTranslator.selector_to_xpath` accepts this object,
    but ignores :attr:`pseudo_element`. It is the user’s responsibility
    to account for pseudo-elements and reject selectors with unknown
    or unsupported pseudo-elements.

    N�tree�pseudo_elementrc�Z�||_|�t|t�st|�}||_y�N)�parsed_tree�
isinstancer)rr-)�selfr,r-s   r�__init__zSelector.__init__Fs.������%�j��I`�.a�(��8�N�*-��rc���t|jt�rt|j�}n|jrd|jz}nd}|jj
�d|j�|�d�S)N�::%s��[�])r1r-r)�repr�	__class__rr0)r2r-s  r�__repr__zSelector.__repr__`s^���d�)�)�+B�C�!�$�"5�"5�6�N�
�
 �
 �#�d�&9�&9�9�N��N�!�^�^�4�4�d�6F�6F��W�Wrc�,�t|jt�rd|jj�z}n|jrd|jz}nd}|jj��|��}t|�dkDr|j
d�}|S)z8Return a CSS representation for this selector (a string)r5r6��*)r1r-r)�	canonicalr0�len�lstrip)r2r-�ress   rr?zSelector.canonicalis����d�)�)�+B�C�#�d�&9�&9�&C�&C�&E�E�N�
�
 �
 �#�d�&9�&9�9�N��N��(�(�2�2�4�n�E���s�8�a�<��*�*�S�/�C��
rc�j�|jj�\}}}|jr|dz
}|||fS)z�Return the specificity_ of this selector as a tuple of 3 integers.

        .. _specificity: http://www.w3.org/TR/selectors/#specificity

        r=)r0�specificityr-�r2�a�b�cs    rrDzSelector.specificityvs;���"�"�.�.�0���1�a����
��F�A��!�Q�w�rr/)rrrr�Treer�
PseudoElementr3�strr;r?r�intrDrrrr+r+;sX���-�T�-�8�M�3J�-�VZ�-�4X�#�X��3��	�U�3��S�=�1�	rr+c�T�eZdZdZdededdfd�Zdefd�Zdefd�Zde	e
e
e
ffd	�Zy)
r z(
    Represents selector.class_name
    �selector�
class_namerNc� �||_||_yr/)rNrO)r2rNrOs   rr3zClass.__init__�s�� ��
�$��rc�h�|jj�d|j�d|j�d�S)Nr7�.r8)r:rrNrO�r2s rr;zClass.__repr__�s!��"�n�n�5�5�t�}�}�d�o�o�V�Vrc�T�|jj��d|j��S)NrR)rNr?rOrSs rr?zClass.canonical�s���-�-�1�1�3�T�_�_�E�Erc�R�|jj�\}}}|dz
}|||fS�Nr=�rNrDrEs    rrDzClass.specificity��.���-�-�+�+�-���1�a�	�Q����!�Q�w�r�rrrrrIrKr3r;r?rrLrDrrrr r �sT���%��%�3�%�4�%�W�#�W�F�3�F��U�3��S�=�1�rr c�P�eZdZdZdededfd�Zdefd�Zdeefd�Z	defd	�Z
y
)r)ax
    Represents selector::name(arguments)

    .. attribute:: name

        The name (identifier) of the pseudo-element, as a string.

    .. attribute:: arguments

        The arguments of the pseudo-element, as a list of tokens.

        **Note:** tokens are not part of the public API,
        and may change between cssselect versions.
        Use at your own risks.

    �name�	arguments�Tokenc�2�t|�|_||_yr/)rr[r\)r2r[r\s   rr3z FunctionalPseudoElement.__init__�s����%��	�"��rrc��|jj�d|j�d|jD�cgc]}|j��c}�d�Scc}w)Nz[::�(�)])r:rr[r\�value�r2�tokens  rr;z FunctionalPseudoElement.__repr__�s;���N�N�#�#��I�I�&*�n�n�5�U�U�[�[�5�
�	
��
6s�Ac�T�|jD�cgc]}|j��c}Scc}wr/�r\�typercs  r�argument_typesz&FunctionalPseudoElement.argument_types����(,���7�u��
�
�7�7��7��%c�j�djd�|jD��}|j�d|�d�S)Nr6c3�<K�|]}|j����y�wr/��css��.0rds  r�	<genexpr>z4FunctionalPseudoElement.canonical.<locals>.<genexpr>������?�u�u�y�y�{�?���r`�))�joinr\r[�r2�argss  rr?z!FunctionalPseudoElement.canonical�s)���w�w�?����?�?���9�9�d�+�+rN)rrrrrKrr3r;rrhr?rrrr)r)�sG���"#�S�#�X�g�->�#�
�#�
�8��S�	�8�,�3�,rc�p�eZdZdZdedededddfd�Zdefd	�Zde	efd
�Z
defd�Zdee
e
e
ffd�Zy)
r!z(
    Represents selector:name(expr)
    rNr[r\r]rNc�@�||_t|�|_||_yr/)rNrr[r\)r2rNr[r\s    rr3zFunction.__init__�s�� ��
���%��	�"��rc
��|jj�d|j�d|j�d|jD�cgc]}|j
��c}�d�Scc}w)Nr7�:r`ra)r:rrNr[r\rbrcs  rr;zFunction.__repr__�sB���N�N�#�#��M�M��I�I�&*�n�n�5�U�U�[�[�5�	
�	
��
6s�Ac�T�|jD�cgc]}|j��c}Scc}wr/rfrcs  rrhzFunction.argument_types�rirjc��djd�|jD��}|jj��d|j�d|�d�S)Nr6c3�<K�|]}|j����y�wr/rmros  rrqz%Function.canonical.<locals>.<genexpr>�rrrsr{r`rt)rur\rNr?r[rvs  rr?zFunction.canonical�s8���w�w�?����?�?��"�m�m�5�5�7����D�I�Irc�R�|jj�\}}}|dz
}|||fSrVrWrEs    rrDzFunction.specificity�rXr)rrrrrIrKrr3r;rrhr?rrLrDrrrr!r!�so���#��#�S�#�X�g�=N�#�SW�#�

�#�
�8��S�	�8�J�3�J��U�3��S�=�1�rr!c�T�eZdZdZdededdfd�Zdefd�Zdefd�Zde	e
e
e
ffd	�Zy)
r"z#
    Represents selector:ident
    rN�identrNc�2�||_t|�|_yr/)rNrr�)r2rNr�s   rr3zPseudo.__init__�s�� ��
� ��'��
rc�h�|jj�d|j�d|j�d�S)Nr7r{r8)r:rrNr�rSs rr;zPseudo.__repr__�s!��"�n�n�5�5�t�}�}�d�j�j�Q�Qrc�T�|jj��d|j��S)Nr{)rNr?r�rSs rr?zPseudo.canonical�s���-�-�1�1�3�T�Z�Z�@�@rc�R�|jj�\}}}|dz
}|||fSrVrWrEs    rrDzPseudo.specificity�rXrrYrrrr"r"�sT���(��(�c�(�d�(�R�#�R�A�3�A��U�3��S�=�1�rr"c�T�eZdZdZdededdfd�Zdefd�Zdefd�Zde	e
e
e
ffd	�Zy)
r$z.
    Represents selector:not(subselector)
    rN�subselectorrNc� �||_||_yr/)rNr�)r2rNr�s   rr3zNegation.__init__�s�� ��
�&��rc�h�|jj�d|j�d|j�d�S)Nr7�:not(ra�r:rrNr�rSs rr;zNegation.__repr__�s#��#'�>�>�#:�#:�D�M�M�4�K[�K[�\�\rc��|jj�}t|�dkDr|jd�}|jj��d|�d�S)Nr=r>r�rt)r�r?r@rArN�r2�subsels  rr?zNegation.canonical�sG���!�!�+�+�-���v�;��?��]�]�3�'�F�#�}�}�6�6�8�&�A�Arc��|jj�\}}}|jj�\}}}||z||z||zfSr/�rNrDr��r2�a1�b1�c1�a2�b2�c2s       rrDzNegation.specificity�M���]�]�.�.�0�
��B���%�%�1�1�3�
��B���B�w��R���b��(�(r)rrrrrIr3rKr;r?rrLrDrrrr$r$�sT���'��'�D�'�T�'�]�#�]�B�3�B�)�U�3��S�=�1�)rr$c�T�eZdZdZdedddefd�Zdefd�Zdefd	�Z	de
eeeffd
�Zy)r%z.
    Represents selector:has(subselector)
    rN�
combinatorr]r�c�.�||_||_||_yr/�rNr�r��r2rNr�r�s    rr3zRelation.__init__
s�� ��
�$���&��rrc�h�|jj�d|j�d|j�d�S)Nr7�:has(rar�rSs rr;zRelation.__repr__s)���N�N�#�#��M�M����
�	
rc��	|jdj�}t|�dkDr|j	d�}|j
j��d|�d�S#t$r|jj�}Y�dwxYw)Nrr=r>r�rt)r�r?�	TypeErrorr@rArNr�s  rr?zRelation.canonicalsx��	2��%�%�a�(�2�2�4�F��v�;��?��]�]�3�'�F�#�}�}�6�6�8�&�A�A��	�	2��%�%�/�/�1�F�	2�s�A�#B�Bc��|jj�\}}}	|jdj�\}}}||z||z||zfS#t$r!|jj�\}}}Y�7wxYw)N���)rNrDr�r�r�s       rrDzRelation.specificity"s����]�]�.�.�0�
��B��	8��)�)�"�-�9�9�;�J�B��B��B�w��R���b��(�(���	8��)�)�5�5�7�J�B��B�	8�s�!A�'A9�8A9N)
rrrrrIr+r3rKr;r?rrLrDrrrr%r%sR���'��'�7�'��'�

�#�
�B�3�B�)�U�3��S�=�1�)rr%c�V�eZdZdZdedeefd�Zdefd�Zdefd�Z	de
eeeffd�Zy	)
r&z/
    Represents selector:is(selector_list)
    rN�
selector_listc� �||_||_yr/�rNr��r2rNr�s   rr3zMatching.__init__0��� ��
�*��rrc
��|jj�d|j�ddjt	t
|j���d�S)Nr7�:is(�, ra�r:rrNru�mapr9r�rSs rr;zMatching.__repr__4�9���N�N�#�#��M�M��I�I�c�$�� 2� 2�3�4�
�	
rc��g}|jD]2}|j�}|j|jd���4|jj��ddjt
t|���d�S)Nr>r�r�rt�r�r?�appendrArNrur�rK�r2�selector_arguments�s�selargs    rr?zMatching.canonical;sj�����#�#�	:�A��[�[�]�F��%�%�f�m�m�C�&8�9�	:�#�m�m�5�5�7����3�s�L^�C_�9`�a�arc�:�td�|jD��S)Nc3�<K�|]}|j����y�wr/)rD)rp�xs  rrqz'Matching.specificity.<locals>.<genexpr>Cs����?�q�1�=�=�?�?�rs)�maxr�rSs rrDzMatching.specificityBs���?�D�,>�,>�?�?�?rN)
rrrrrIrr3rKr;r?rrLrDrrrr&r&+sQ���+��+�h�t�n�+�
�#�
�b�3�b�@�U�3��S�=�1�@rr&c�V�eZdZdZdedeefd�Zdefd�Zdefd�Z	de
eeeffd�Zy	)
r'zz
    Represents selector:where(selector_list)
    Same as selector:is(selector_list), but its specificity is always 0
    rNr�c� �||_||_yr/r�r�s   rr3zSpecificityAdjustment.__init__Lr�rrc
��|jj�d|j�ddjt	t
|j���d�S)Nr7�:where(r�rar�rSs rr;zSpecificityAdjustment.__repr__Pr�rc��g}|jD]2}|j�}|j|jd���4|jj��ddjt
t|���d�S)Nr>r�r�rtr�r�s    rr?zSpecificityAdjustment.canonicalWso�����#�#�	:�A��[�[�]�F��%�%�f�m�m�C�&8�9�	:�
�M�M�#�#�%��I�I�c�#�1�2�3�
�	
rc��y)N�rrrrrSs rrDz!SpecificityAdjustment.specificityas��rN)
rrrrrIrr3rKr;r?rrLrDrrrr'r'FsM���
+��+�d�4�j�+�
�#�
�
�3�
��U�3��S�=�1�rr'c
���eZdZdZej
dedeededdddd	dfd
��Z	ej
dedeedededdd	dfd��Z	dedeededededd	dfd
�Z	d	efd�Z
d	efd�Zd	ee
e
e
ffd�Zy)r#z>
    Represents selector[namespace|attrib operator value]
    rN�	namespace�attrib�operatorztyping.Literal["exists"]rbNrc��yr/r�r2rNr�r�r�rbs      rr3zAttrib.__init__js��	rr]c��yr/rr�s      rr3zAttrib.__init__us��	rc�J�||_||_||_||_||_yr/)rNr�r�r�rbr�s      rr3zAttrib.__init__{s'��!��
�"������ ��
���
rc��|jr|j�d|j��}n|j}|jdk(r)|jj�d|j
�d|�d�S|jj�d|j
�d|�d|j�dt
jd|j�j�d�
S)N�|�existsr7z]]� r])	r�r�r�r:rrN�typing�castrb)r2r�s  rr;zAttrib.__repr__�s����>�>� $������<�F��[�[�F��=�=�H�$�#'�>�>�#:�#:�D�M�M�6�R�R����'�'��
�
���
�
����G�T�Z�Z�0�6�6��
rc�J�|jr|j�d|j��}n|j}|jdk(r|}n>|�|j�tjd|j
�j
���}|jj��d|�d�S)Nr�r�r]r7r8)	r�r�r�r�r�rbrnrNr?)r2r��ops   rr?zAttrib.canonical�su���>�>� $������<�F��[�[�F��=�=�H�$��B�#�T�]�]�F�K�K�����4T�4X�4X�4Z�[�B��=�=�2�2�4�b�9�9rc�R�|jj�\}}}|dz
}|||fSrVrWrEs    rrDzAttrib.specificity�rXr)rrrrr��overloadrIrrKr3r;r?rrLrDrrrr#r#es ����_�_�����C�=���	�
-���
�
�����_�_����)1�#���@C��OR��[b��	
����
����C�=���	�
���� �
�
���#�� :�3�:��U�3��S�=�1�rr#c�b�eZdZdZd
deedeeddfd�Zdefd�Zdefd�Zde	e
e
e
ffd	�Zy)rzU
    Represents namespace|element

    `None` is for the universal selector '*'

    Nr��elementrc� �||_||_yr/)r�r�)r2r�r�s   rr3zElement.__init__�s��"�����rc�V�|jj�d|j��d�S)Nr7r8)r:rr?rSs rr;zElement.__repr__�s���>�>�2�2�D�N�N�4D�E�Erc�`�|jxsd}|jr|j�d|��}|S)Nr>r�)r�r�)r2r�s  rr?zElement.canonical�s*���,�,�%�#���>�>�!%����9�G��rc��|jryy)N)rrr=r��r�rSs rrDzElement.specificity�s���<�<��r)NN)rrrrrrKr3r;r?rrLrDrrrrr�s[����(�3�-���#���Z^��F�#�F��3���U�3��S�=�1�rrc�T�eZdZdZdededdfd�Zdefd�Zdefd�Zde	e
e
e
ffd	�Zy)
rz 
    Represents selector#id
    rN�idrNc� �||_||_yr/)rNr�)r2rNr�s   rr3z
Hash.__init__�s�� ��
���rc�h�|jj�d|j�d|j�d�S)Nr7�#r8)r:rrNr�rSs rr;z
Hash.__repr__�s!��"�n�n�5�5�t�}�}�d�g�g�N�Nrc�T�|jj��d|j��S)Nr�)rNr?r�rSs rr?zHash.canonical�s���-�-�1�1�3�T�W�W�=�=rc�R�|jj�\}}}|dz
}|||fSrVrWrEs    rrDzHash.specificity�rXrrYrrrrr�sR������3��4��O�#�O�>�3�>��U�3��S�=�1�rrc�T�eZdZdedededdfd�Zdefd�Zdefd�Zdee	e	e	ffd	�Z
y)
r(rNr�r�rNc�6�|�J�||_||_||_yr/r�r�s    rr3zCombinedSelector.__init__�s$���#�#�#� ��
�$���&��rc��|jdk(rd}n|j}|jj�d|j�d|�d|j�d�S)Nr�z
<followed>r7r8)r�r:rrNr�)r2�combs  rr;zCombinedSelector.__repr__�s?���?�?�c�!��D��?�?�D�!%���!8�!8�$�-�-��t�O_�O_�`�`rc���|jj�}t|�dkDr|jd�}|jj��d|j
�d|��S)Nr=r>r�)r�r?r@rArNr�r�s  rr?zCombinedSelector.canonical�sM���!�!�+�+�-���v�;��?��]�]�3�'�F�!�]�]�4�4�6�����P�Prc��|jj�\}}}|jj�\}}}||z||z||zfSr/r�r�s       rrDzCombinedSelector.specificity�r�r)rrrrIrKr3r;r?rrLrDrrrr(r(�sV��'��'�3�'�T�'�d�'�a�#�a�Q�3�Q�)�U�3��S�=�1�)rr(z%^[ \t\r\n\f]*([a-zA-Z]+)[ \t\r\n\f]*$z6^[ \t\r\n\f]*([a-zA-Z]*)#([a-zA-Z0-9_-]+)[ \t\r\n\f]*$z?^[ \t\r\n\f]*([a-zA-Z]*)\.([a-zA-Z][a-zA-Z0-9_-]*)[ \t\r\n\f]*$rnc	�<�tj|�}|r%tt|j	d����gSt
j|�}|�Btt
t|j	d�xsd��|j	d���gStj|�}|�Bttt|j	d�xsd��|j	d���gStt|��}||_tt|��S)a�Parse a CSS *group of selectors*.

    If you don't care about pseudo-elements or selector specificity,
    you can skip this and use :meth:`~GenericTranslator.css_to_xpath`.

    :param css:
        A *group of selectors* as a string.
    :raises:
        :class:`SelectorSyntaxError` on invalid selectors.
    :returns:
        A list of parsed :class:`Selector` objects, one for each
        selector in the comma-separated group.

    r=r�N�)�_el_re�matchr+r�group�_id_rer�	_class_rer �TokenStream�tokenize�source�list�parse_selector_group)rnr��streams   r�parser�s��� 
�L�L���E�������Q��8�9�:�:��L�L���E�����g�e�k�k�!�n�.D��E�u�{�{�ST�~�V�W�X�X��O�O�C� �E�����w�u�{�{�1�~�/E��F����TU��W�X�Y�Y�
��#��
'�F��F�M��$�V�,�-�-rr�r�c#�K�|j�	tt|����|j�dk(r!|j	�|j�ny�I�w)N��DELIM�,)�skip_whitespacer+�parse_selector�peek�next)r�s rr�r�+sP����
����
���v�.�/�/��;�;�=�N�*��K�K�M��"�"�$��
�s�AAc�z�t|�\}}	|j�|j�}|dvr	||fS|rtd|z��|j	ddd�rCtjt|j�j�}|j�nd}t|�\}}t|||�}��)N�)�EOFNr��4Got pseudo-element ::%s not at the end of a selector�+�>�~r�)�parse_simple_selectorr�r�r�is_delimr�r�rKr�rbr()r��resultr-r�r��
next_selectors      rr�r�6s���2�6�:��F�N�
���� ��{�{�}���2�2���>�!�!��%�F��W��
��=�=��c�3�'����S�&�+�+�-�*=�*=�>�J��"�"�$��J�(=�f�(E�%�
�~�!�&�*�m�D��%r�inside_negationc�^
�|j�t|j�}|j�}|jdk(s|dk(ru|jdk(r|j�j}n|j�d}|j�dk(r!|j�|j�}n	|}d}ndx}}t||�}d}	|j�}|jdvs|jdddd�s|r|d	k(r�n�|rtd
|z��|jdk(r>t|tjt|j�j��}�n�|dk(r,|j�t||j!��}�nZ|dk(r,|j�td|j!��}�n)|d
k(r|j�t#||�}�n|dk(�r�|j�|j�dk(rZ|j�|j!�}|j�dk(r%|j�t%|t'|��}���|j!�}|j)�dvr
t|�}���|j�dk7r�t+||�}t-|�dk(r�t|j�dk(s�t|j�dk(r|jdjdk(s�t|j�dk\r|jdjd�s]t|j�dk\r:|jdjdk(r|jdjd�std�����|j�|j�|j)�dk(rj|rtd��t/|d��\}	}
|j�}|
rtd|
�d|j0����|d	k7rtd |����t3||	�}n�|j)�d!k(rt5|�\}}
t7|||
�}nz|j)�d"vrt9|�}t;||�}nP|j)�d#k(rt9|�}t=||�}n%t?||t'|��}ntd$|������%t|j�|k(rtd$|j�����||fS)%N�IDENT�r�r>�r�r�)�Srr�rrr�r�rtr�HASH�r�rR)r�r7)r�r{)r�r`)z
first-linezfirst-letter�before�afterzPseudo[Element[*]:scope]r��rr�������zJGot immediate child pseudo-element ":scope" not at the start of a selector�notzGot nested :not()T)r	�Got pseudo-element ::z inside :not() at zExpected ')', got �has)�matches�is�wherezExpected selector, got ) r�r@�usedr�rgr�rb�next_ident_or_starrrrrr�r�rKr �
next_ident�parse_attribr)�parse_argumentsrr"r9r�posr$�parse_relative_selectorr%�parse_simple_selector_argumentsr&r'r!)r�r	�selector_startr�r�r�rr-r��argument�argument_pseudo_elementr�r�r\�	selectorss               rrrNsk����������%�N��;�;�=�D��y�y�G��t�~�5��9�9������
�+�+�I��K�K�M��I��;�;�=�N�*��K�K�M��/�/�1�G��G��I�"�"��)��9�g�.�F�.2�N�
��{�{�}���I�I��%��}�}�S�#�s�C�0��D�N�$:���%�F��W��
��9�9����&�&�+�+�c�6�;�;�=�3F�3F�"G�H�F�
�^�
#��K�K�M��6�6�#4�#4�#6�7�F�
�^�
#��K�K�M��T�6�#4�#4�#6�7�F�
�^�
#��K�K�M�!�&�&�1�F�
�^�
#��K�K�M��{�{�}��.����
�!'�!2�!2�!4���;�;�=�N�2��K�K�M�%<�&���(?�&�N���%�%�'�E��{�{�}� Q�Q�"%�U�����{�{�}��.����.����<�#=�=��F�K�K�(�A�-�����,��1�f�k�k�!�n�6I�6I�S�6P�����,��1�f�k�k�"�o�6N�6N�s�6S�����,��1� &���B�� 4� 4�� ;� &���B�� 8� 8�� =�2�=�����K�K�M��"�"�$��{�{�}��%�"�-�.A�B�B�4I��D�5�1��1��{�{�}��*�-�2�D�H�H�>����>�)�-��.N�O�O�!�&�(�3������%�'�(?��(G�%�
�I�!�&�*�i�@������"3�3�;�F�C�	�!�&�)�4������'�)�;�F�C�	�.�v�y�A��!�&�%���1H�I��%�T�&K�L�L�q�r�6�;�;��>�)�!�����"P�Q�Q��>�!�!rr]c��g}	|j�|j�}|jdvs|dvr|j|�n|dk(r|St	d|�����Z)N�r�STRING�NUMBER)�r�r�r��-r�Expected an argument, got )r�r�rgr�r)r�r\r�s   rr"r"�se��!�I�
���� ��{�{�}���9�9�5�5��Aa�9a����T�"�
�^�
#���%��&N�O�O�rc��|j�d}|j�}|dvr#|}|j�|j�}ntddd��}	|jdvs|dvr(|t	j
t|j�z
}n%|d	k(rt|�}||dfStd
|����|j�}�p)Nr6)r.r/)r�r)r�rr�r�r�r#r+)rrrr1)
r�r�r]rgr�r�rKrbr�r)r�r�r�r�rs     rr$r$�s���
�����K��;�;�=�D��O�O��
���� ��{�{�}���7�C�Q�/�
�
��9�9�5�5��Aa�9a��6�;�;�s�D�J�J�7�7�K�
�^�
#��;�'�F��v�a�y�(�(�%��&N�O�O��{�{�}��rc�D�g}	t|d�\}}|rtd|�d���|j�|j�}|dvr2|j�|j�|j	|�n'|dk(r|j	|�	|Std|������)NTrz inside functionr�rr1)rrr�r�r�)r�r\rr-r�s     rr%r%�s����I�
�!6�v�t�!D�����%�=K�M��
�	��� ��{�{�}���2�2��K�K�M��"�"�$����V�$�
�^�
#����V�$����&��&N�O�O�!rrNc�"�|j�|j�}|�/|j�dk7rtd|j�����|j�dk(rM|j	�|j�dk(rd}|j	�d}n|}|j�}d}ndx}}|��|j�|j	�}|dk(r't
||tjt|�dd�S|dk(rd}no|jdd	d
ddd
�rK|j�dk(r8tjt|j�dz}|j	�ntd|����|j�|j	�}|jdvrtd|����|j�|j	�}|dk7rtd|����t
||tjt|�||�S)Nr
zExpected '|', got )r��=z|=)r�r8r�r6�^�$r>rr��!zOperator expected, got )rr,zExpected string or ident, got zExpected ']', got )
r�rr�rr�r r#r�r�rKrrbrg)rNr�r�r�r�r�rbs       rr!r!�s���
����
�
&�
&�
(�F�
�~�&�+�+�-�>�9�!�F�K�K�M�"K�L�L��{�{�}��&����
��;�;�=�N�*��I��K�K�M��B��I��&�&�(�F��B���	�B�	�z���� ��{�{�}���>�!��(�I�v�{�{�3��/G��SW�X�X�
�^�
#��B�
�]�]�3��S�#�s�C�
8�f�k�k�m�~�>]����S�$�*�*�-��3�B��K�K�M�%�T�&K�L�L�
�����K�K�M�E��z�z�,�,�!��"O�P�P�
�����;�;�=�D��~��!�D�"B�C�C��(�I�v�{�{�3��'?��U�K�Kr�tokensc��|D]}|jdk(s�td��djd�|D��j�}|dk(ry|dk(ry|d	k(ry
d	|vr
dt	|�fS|jd	d�\}}|sd}n$|d
k(s|dk(rt	|dz�}nt	|�}|sd}||fSt	|�}||fS)zv
    Parses the arguments for :nth-child() and friends.

    :raises: A list of tokens
    :returns: :``(a, b)``

    r,z$String tokens not allowed in series.r6c3�dK�|](}tjt|j����*y�wr/)r�r�rKrbros  rrqzparse_series.<locals>.<genexpr>1s����B�%����C����-�B�s�.0�odd)r�r=�even)r�r�n)r=rrr=r0r�1)rg�
ValueErrorru�striprL�split)r:rdr�rFrG�a_as_int�b_as_ints       r�parse_seriesrF&s����E���:�:��!��C�D�D�E�	���B�6�B�B�H�H�J�A��E�z��	
�f���	
�c���
�!�|��#�a�&�y���7�7�3��?�D�A�q����	
�c��Q�#�X��q�3�w�<���q�6������X����q�6���X��rc	��eZdZUejdddededdfd��Zejdddddeddfd	��Zdedeededdfd
�Zdefd�Z	dede
fd
�Zeed<e
defd��Ze
deefd��Zdefd�Zy)r]�type_zAtyping.Literal["IDENT", "HASH", "STRING", "S", "DELIM", "NUMBER"]rbr#rc��yr/r��clsrHrbr#s    r�__new__z
Token.__new__Os��	rztyping.Literal["EOF"]Nc��yr/rrJs    rrLz
Token.__new__Xs��rc�D�tj|||f�}||_|Sr/)�tuplerLr#)rKrHrbr#�objs     rrLz
Token.__new__\s"���m�m�C�%���0������
rc�N�d|j|j|jfzS)Nz<%s '%s' at %i>)rgrbr#rSs rr;zToken.__repr__as �� �D�I�I�t�z�z�4�8�8�#D�D�Dr�valuesc�@�|jdk(xr|j|vS)Nr�)rgrb)r2rRs  rrzToken.is_delimds���y�y�G�#�<��
�
�f�(<�<rc��|dS)NrrrSs rrgz
Token.typei����A�w�rc��|dSrVrrSs rrbzToken.valuemrUrc��|jdk(rt|j�Stjt
|j�S)Nr,)rgr9rbr�r�rKrSs rrnz	Token.cssqs2���9�9�� ���
�
�#�#��;�;�s�D�J�J�/�/r)rrrr�r�rKrLrLrr;�boolr�__annotations__�propertyrgrbrnrrrr]r]Ns���_�_��R�����	�

�����_�_��3��D��s��w�����C����
��C��G��
E�#�E�=��=��=�

�H�
��c������x��}����0�S�0rc�(�eZdZdeddfd�Zdefd�Zy)�EOFTokenr#rc	�Z�tjdtj|dd|��S)Nr\r)r�r�r]rL)rKr#s  rrLzEOFToken.__new__ys"���{�{�:�u�}�}�S�%��s�'K�L�Lrc�8�d|j|jfzS)Nz
<%s at %i>)rgr#rSs rr;zEOFToken.__repr__|s���t�y�y�$�(�(�3�3�3rN)rrrrLrLrKr;rrrr\r\xs$��M�#�M�*�M�4�#�4rr\c�H�eZdZdZedzZdezZdZde�de��Zde�de��Zy)	�TokenMacrosz&\\([0-9a-f]{1,6})(?:\r\n|[ \n\r\t\f])?z|\\[^\n\r\f0-9a-f]z\\(?:\n|\r\n|\r|\f)|z
[^\0-\177]z[_a-z0-9-]|r�z[_a-z]|N)	rrr�unicode_escape�escape�
string_escape�nonascii�nmchar�nmstartrrrr`r`�s5��>�N�
�3�
3�F�+�f�4�M��H�#)�8�
4�F� &��1�Grr`c
�.�eZdZ	ddededededfd�Zy)	�	MatchFuncr
r#�endposr�
re.Match[str]c��yr/r)r2r
r#ris    r�__call__zMatchFunc.__call__�s��
rN)..)rrrrKrLrrlrrrrhrh�s/��=@�	��	�$'�	�7:�	�
�o�
&�	rrh�patternc�~�tj|tt�ztj�j
Sr/)�re�compile�varsr`�
IGNORECASEr�)rms r�_compilers�s'��
�:�:�g��[� 1�1�2�=�=�A�G�G�Grz[ \t\r\n\f]+z[+-]?(?:[0-9]*\.[0-9]+|[0-9]+)z#(?:%(nmchar)s)+z -?(?:%(nmstart)s)(?:%(nmchar)s)*z!([^\n\r\f\\']|%(string_escape)s)*z!([^\n\r\f\\"]|%(string_escape)s)*)�'�"z\\(.)z\\(?:\n|\r\n|\r|\f)r�r=r�rjc�x�t|jd�d�}|tjkDrd}t	|�S)Nr=�i��)rLr��sys�
maxunicode�chr)r��	codepoints  r�_replace_unicoder|�s1���E�K�K��N�B�'�I��3�>�>�!��	��y�>�rrbc�F�tt|�}tt|�}|Sr/)�_sub_unicode_escaper|�_sub_simple_escape�_replace_simple)rbs r�unescape_identr��s ��� 0�%�8�E����6�E��Lrr�c#�K�d}t|�}||k�r"t||��}|r tdd|���|j�}�5t	||��}|rLtttt|j���}td||���|j�}��t||��}|rOtttt|j�dd��}td||���|j�}��||}|tvr�t|||dz��}|sJd��|j�}||k(rtd	|z��|||k7rtd
|z��tttttd|j����}td||���|dz}���t||��}|r1|j�}td
||���|j�}���|dz}|||dk(r!|jd|�}|dk(r|}n|dz
}��
td|||���|dz
}||kr��"||k(sJ�t!|���y�w)Nrr3rr�rr=rz)Should have found at least an empty matchzUnclosed string at %szInvalid string at %sr6r,r-r�z/*z*/r�r�)r@�_match_whitespacer]�end�_match_identrr�r~r|r��_match_hash�_match_string_by_quoter�_sub_newline_escape�
_match_number�findr\)r�r#�len_sr�rb�quote�end_pos�pos2s        rr�r��sV����
�C���F�E�

��+�!�!��-�����S�#�&�&��)�)�+�C���Q�C�(���&��!4�5E�u�{�{�}�!U��E�����,�,��)�)�+�C���A�3�'���&��!4�5E�u�{�{�}�UV�UW�GX�!Y��E����s�+�+��)�)�+�C���#����*�*�*�5�1�!��q��A�E��E�E�E�5��i�i�k�G��%��)�*A�C�*G�H�H���z�U�"�)�*@�3�*F�G�G�&��#�$4�6I�"�e�k�k�m�6\�]��E���%��-�-��A�+�C���a�S�)����K�K�M�E���%��-�-��)�)�+�C���Q�w���S��;�$���&�&��t�$�C��b�y����q�����G�Q�s�V�S�)�)��q���w��+�z�%�<��<�
�3�-��s�H4I
�8I
c�l�eZdZddeedeeddfd�Zdefd�Zdefd�Z	defd�Z
deefd	�Zdd
�Zy)
r�Nr:r�rc��g|_t|�|_||_d|_d|_|jj|_y�NF)r�iterr:r��peeked�_peeking�__next__�
next_token)r2r:r�s   rr3zTokenStream.__init__�s:��!#��	��6�l������'+�����
��+�+�.�.��rc�D�|jrhd|_|jjtjt
|j��tjt
|j�S|j�}|jj|�|Sr�)r�rr�r�r�r]r�r��r2r�s  rr�zTokenStream.nextsi���=�=�!�D�M��I�I���V�[�[�����<�=��;�;�u�d�k�k�2�2��?�?�$�D��I�I���T�"��Krc��|js|j�|_d|_tjt
|j�S)NT)r�r�r�r�r�r]rSs rr�zTokenStream.peeks3���}�}��/�/�+�D�K� �D�M��{�{�5�$�+�+�.�.rc��|j�}|jdk7rtd|����tjt
|j�S)NrzExpected ident, got )r�rgrr�r�rKrbr�s  rr zTokenStream.next_idents<���y�y�{���9�9���%�$�&H�I�I��{�{�3��
�
�+�+rc��|j�}|jdk(r|jS|dk(rytd|����)NrrzExpected ident or '*', got )r�rgrbrr�s  rrzTokenStream.next_ident_or_stars<���y�y�{���9�9����:�:��
�^�
#��%��&O�P�Prc�d�|j�}|jdk(r|j�yy)Nr)r�rgr�)r2r�s  rr�zTokenStream.skip_whitespace#s'���y�y�{���9�9����I�I�K�rr/)rN)
rrrrr]rrKr3r�r�r rr�rrrr�r��s`��/�x���/���
�/�QU�/��e��/�e�/�,�C�,�Q�H�S�M�Q�r)F)Hrrxror�r�rrrrrrr	rKr�	Exceptionr�SyntaxErrorrrIrJr+r r)r!r"r$r%r&r'r#rrr(rpr�r�r�r�r�r�rXrr"r$r%r!rLrFr]r\r`�
TYPE_CHECKING�Protocolrhrsr�r�r�r�r��subrra�Ir~r��methodcallerr�r|r�r�r�rrr�<module>r�s�����	��
�M�M�M�8��8��8�
�I��>�-��>�
�
����/��4�5�
�D�D�N��*",�",�J��>��*)�)�0 )� )�F@�@�6��>D�D�N��8��*)�)�:
����<�	=��
����M�	N��
�B�J�J�Y�Z�	�.�s�.�t�H�~�.�P���8�H�3E��"�=�"�U�4��-�9P�3P�-Q�"�249�q"��q"�,0�q"�
�4��-�(�(�)�q"�h
P�M�
P�d�7�m�
P��M��e�G�X�<M�6N��.�M��d�4�j��,'L�4�'L��'L�6�'L�T"��'�*�"�u�S�#�X��"�P'0�E�#�x��}�$�%�'0�T4�u�4�2�2�
����F�O�O��H�c�H�k�H��_�-���:�;�
��)�*���:�;��	�6�	7�	�6�	7���
 �R�Z�Z��)�-�-�� �b�j�j��!;�!;�R�T�T�B�F�F�� �b�j�j�!7�8�<�<��(�(�'�'���3���O�����#��#��A��A����A�H+�+r

Youez - 2016 - github.com/yon3zu
LinuXploit