� c��j=9���dZddlZejd�jZejd�jZejd�Zejd�Zejd�Z[Gd�d �Z y) z�Shared support for scanning document type declarations in HTML and XHTML. This module is used as a foundation for the html.parser module. It has no documented public API and should not be used directly. �Nz[a-zA-Z][-_.a-zA-Z0-9]*\s*z(\'[^\']*\'|"[^"]*")\s*z--\s*>z ]\s*]\s*>z]\s*>c�l�eZdZdZd�Zd�Zd�Zd�ZdZd�Z dd�Z dd �Z d �Z d �Z d �Zd �Zd�Zd�Zd�Zy)� ParserBaseziParser base class which provides some common support methods used by the SGML/HTML and XHTML parsers.c�>�|jtur td��y)Nz)_markupbase.ParserBase must be subclassed)� __class__r� RuntimeError��selfs �$/usr/lib64/python3.12/_markupbase.py�__init__zParserBase.__init__s#�� �>�>�Z� '��;�=� =� (�c� �d|_d|_y)N�r��lineno�offsetrs r �resetzParserBase.reset s���� ��� r c�2�|j|jfS)z&Return current line number and offset.rrs r �getposzParserBase.getpos$s���{�{�D�K�K�'�'r c���||k\r|S|j}|jd||�}|r6|j|z|_|jd||�}||dzz |_|S|j|z|z |_|S)N� r)�rawdata�countr�rindexr)r �i�jr�nlines�poss r � updateposzParserBase.updatepos,s�� ��6��H��,�,�����t�Q��*�� ��+�+��.�D�K��.�.��q�!�,�C��S��U�)�D�K����+�+��/�!�+�D�K��r �c��|j}|dz}|||dzdk(r|dzS|||dzdvryt|�}|||dzdk(r|j|�S||dk(r|j|�S|j ||�\}}|dkr|S|d k(rd |_||kr�||}|dk(r9||dz|}|d k(r|j |�|dzS|j|�|dzS|d vr t||�}|sy|j�}n||d vr|j ||�\} }nb||j vr|dz}nN|dk(r8|d k(r|j|dz|�}n.|d vrtd|z��td��td||z��|dkr|S||kr��y)N�r�>)�-r�����z--�[r�doctyperz"'�4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ>�link�attlist�element�linktypez&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration) r�len� parse_comment�parse_marked_section� _scan_name�_decl_otherchars� handle_decl� unknown_decl�_declstringlit_match�end�_parse_doctype_subset�AssertionError) r rrr�n�decltype�c�data�m�names r �parse_declarationzParserBase.parse_declaration<s����,�,�� ��E�� �1�Q�q�S�>�S� ��q�5�L� �1�Q�q�S�>�Y� &�� ��L�� �1�Q�q�S�>�T� !��%�%�a�(� (� �Q�Z�3� � �,�,�Q�/� /��/�/�!�Q�/�K�H�a� �q�5��H� �y� �$&�D� !��!�e��� �A��C�x��q��s�1�~���y�(��$�$�T�*��1�u� ��%�%�d�+��1�u� ��E�z�(��!�4�����E�E�G���L�L��/�/�!�Q�/���a��d�+�+�+���E���c���y�(��2�2�1�q�5�!�<�A��!K�K� )�)Q�T\�)\�]�]�(�)M�N�N�$�%H�7�ST�:�%U�V�V��1�u���M�!�e�Nr c�t�|j}|j|dz|�\}}|dkr|S|dvrtj||dz�}n2|dvrtj||dz�}nt d||dz|z��|sy|r(|j d�}|j||dz|�|jd�S)N�r>�temp�cdata�ignore�rcdata�include>�if�else�endifz+unknown status keyword %r in marked sectionr$) rr/�_markedsectionclose�search�_msmarkedsectioncloser6�startr2r4)r r�reportr�sectNamer�matchs r r.zParserBase.parse_marked_section�s��������o�o�q��s�A�/� ��!� �q�5��H� �G� G�&�-�-�g�q��s�;�E� �0� 0�(�/�/���1��=�E� �=���!��A��N�� ��� �� � �A��A� � � �g�a��c�1�o� .��y�y��|�r c���|j}|||dzdk7r td��tj||dz�}|sy|r(|j d�}|j ||dz|�|j d�S)N��