Ë
    Ÿ2ÚiÓ5  ã                  óü  — d Z ddlmZ ddlZddlZddlZej                  j                  d«      Z	ej                  j                  e	«      Ze	j                  j                  e«       eej                  d<    ej                  d«      e_         ej                  d«      e_        ej"                  e_         ej                  dej&                  «      e_         ej                  d	«      Z G d
„ dej,                  «      Zy)a  
This module imports a copy of [`html.parser.HTMLParser`][] and modifies it heavily through monkey-patches.
A copy is imported rather than the module being directly imported as this ensures that the user can import
and  use the unmodified library for their own needs.
é    )ÚannotationsNzhtml.parserÚ
htmlparserz\?>z&([a-zA-Z][-.a-zA-Z0-9]*);a”  
  <[a-zA-Z][^`\t\n\r\f />\x00]*       # tag name <= added backtick here
  (?:[\s/]*                           # optional whitespace before attribute name
    (?:(?<=['"\s/])[^`\s/>][^\s/=>]*  # attribute name <= added backtick here
      (?:\s*=+\s*                     # value indicator
        (?:'[^']*'                    # LITA-enclosed value
          |"[^"]*"                    # LIT-enclosed value
          |(?!['"])[^`>\s]*           # bare value <= added backtick here
         )
         (?:\s*,)*                    # possibly followed by a comma
       )?(?:\s|/(?!>))*
     )*
   )?
  \s*                                 # trailing whitespace
z^([ ]*\n){2}c                  óè   ‡ — e Zd ZU dZˆ fd„Zˆ fd„Zˆ fd„Ze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!d„Zd!d„Zdd„Zdd„Zdd„Zdd„Zd"ˆ fd„Zd"ˆ fd„ZdZded<   d#d„Zd"d„Zˆ xZS )$ÚHTMLExtractorzû
    Extract raw HTML from text.

    The raw HTML is stored in the [`htmlStash`][markdown.util.HtmlStash] of the
    [`Markdown`][markdown.Markdown] instance passed to `md` and the remaining text
    is stored in `cleandoc` as a list of strings.
    c                óv   •— d|vrd|d<   t        dg«      | _        dg| _        t        ‰| �  |i |¤Ž || _        y )NÚconvert_charrefsFÚhrr   )ÚsetÚ
empty_tagsÚlineno_start_cacheÚsuperÚ__init__Úmd)Úselfr   ÚargsÚkwargsÚ	__class__s       €úJ/var/www/html/acx/venv/lib/python3.12/site-packages/markdown/htmlparser.pyr   zHTMLExtractor.__init__O   sJ   ø€ Ø VÑ+Ø).ˆFÐ%Ñ&ô ˜t˜f›+ˆŒà#$ #ˆÔô 	‰Ñ˜$Ð) &Ò)Øˆ�ó    c                óx   •— d| _         d| _        g | _        g | _        g | _        dg| _        t        ‰| �  «        y)z1Reset this instance.  Loses all unprocessed data.Fr   N)ÚinrawÚintailÚstackÚ_cacheÚcleandocr   r   Úreset©r   r   s    €r   r   zHTMLExtractor.reset\   s9   ø€ àˆŒ
ØˆŒØˆŒ
ØˆŒØˆŒØ#$ #ˆÔä‰‰�r   c                óø  •— t         ‰| �  «        t        | j                  «      rb| j                  r;| j
                  s/| j                  t        j                  | j                  «      «       n| j                  | j                  «       t        | j                  «      r_| j                  j                  | j                  j                  j                  dj                  | j                  «      «      «       g | _	        yy)zHandle any buffered data.Ú N)r   ÚcloseÚlenÚrawdatar   Ú
cdata_elemÚhandle_datar   Úunescaper   r   Úappendr   Ú	htmlStashÚstoreÚjoinr   s    €r   r    zHTMLExtractor.closeg   s¤   ø€ ä‰‰ŒÜˆt�|‰|Ôð ×$Ò$¨T¯_ª_Ø× Ñ ¤×!4Ñ!4°T·\±\Ó!BÕCà× Ñ  §¡Ô.äˆt�{‰{ÔØ�M‰M× Ñ  §¡×!2Ñ!2×!8Ñ!8¸¿¹ÀÇÁÓ9MÓ!NÔOØˆD�Kð r   c                óh  — t        t        | j                  «      dz
  | j                  dz
  «      D ]e  }| j                  |   }| j                  j                  d|«      }|dk(  rt        | j                  «      }| j                  j                  |dz   «       Œg | j                  | j                  dz
     S )zHReturns char index in `self.rawdata` for the start of the current line. é   ú
éÿÿÿÿ)Úranger!   r   Úlinenor"   Úfindr&   )r   ÚiiÚlast_line_start_posÚlf_poss       r   Úline_offsetzHTMLExtractor.line_offsetv   s¢   € ô œ˜D×3Ñ3Ó4°QÑ6¸¿¹ÀA¹ÓFò 	5ˆBØ"&×"9Ñ"9¸"Ñ"=ÐØ—\‘\×&Ñ& tÐ-@ÓAˆFØ˜Š|ä˜TŸ\™\Ó*�Ø×#Ñ#×*Ñ*¨6°!©8Õ4ð	5ð ×&Ñ& t§{¡{°1¡}Ñ5Ð5r   c                óÄ   — | j                   dk(  ry| j                   dkD  ry| j                  | j                  | j                  | j                   z    j                  «       dk(  S )z†
        Returns True if current position is at start of line.

        Allows for up to three blank spaces at start of line.
        r   Té   Fr   )Úoffsetr"   r4   Ústrip©r   s    r   Úat_line_startzHTMLExtractor.at_line_startƒ   sV   € ð �;‰;˜!ÒØØ�;‰;˜Š?Øà�|‰|˜D×,Ñ,¨T×-=Ñ-=ÀÇÁÑ-KÐL×RÑRÓTÐXZÑZÐZr   c                óè   — | j                   | j                  z   }t        j                  j	                  | j
                  |«      }|r| j
                  ||j                  «        S dj                  |«      S )z™
        Returns the text of the end tag.

        If it fails to extract the actual text from the raw data, it builds a closing tag with `tag`.
        z</{}>)r4   r7   r   Ú	endendtagÚsearchr"   ÚendÚformat)r   ÚtagÚstartÚms       r   Úget_endtag_textzHTMLExtractor.get_endtag_text�   s_   € ð × Ñ  4§;¡;Ñ.ˆÜ× Ñ ×'Ñ'¨¯©°eÓ<ˆÙØ—<‘<  a§e¡e£gÐ.Ð.ð —>‘> #Ó&Ð&r   c                ó*  — || j                   v r| j                  ||«       y | j                  j                  |«      rJ| j                  s| j                  «       r.| j                  s"d| _        | j                  j                  d«       | j                  «       }| j                  r7| j                  j                  |«       | j                  j                  |«       y | j                  j                  |«       || j                  v r| j                  «        y y )NTr,   )r   Úhandle_startendtagr   Úis_block_levelr   r:   r   r   r&   Úget_starttag_textr   r   ÚCDATA_CONTENT_ELEMENTSÚclear_cdata_mode)r   r@   ÚattrsÚtexts       r   Úhandle_starttagzHTMLExtractor.handle_starttagŸ   sÐ   € à�$—/‘/Ñ!Ø×#Ñ# C¨Ô/Øà�7‰7×!Ñ! #Ô&¨D¯KªK¸D×<NÑ<NÔ<PÐY]×YcÒYcàˆDŒJØ�M‰M× Ñ  Ô&à×%Ñ%Ó'ˆØ�:Š:Ø�J‰J×Ñ˜cÔ"Ø�K‰K×Ñ˜tÕ$à�M‰M× Ñ  Ô&Ø�d×1Ñ1Ñ1à×%Ñ%Õ'ð 2r   c                ó:  — | j                  |«      }| j                  �rb| j                  j                  |«       || j                  v r7| j                  r+| j                  j                  «       |k(  rn| j                  rŒ+t        | j                  «      dk(  rét        j                  | j                  | j                  | j                  z   t        |«      z   d  «      r| j                  j                  d«       nd| _        d| _        | j                  j                  | j                  j                  j!                  dj#                  | j                  «      «      «       | j                  j                  d«       g | _        y y | j                  j                  |«       y )Nr   r,   TFr   ú

)rC   r   r   r&   r   Úpopr!   Úblank_line_reÚmatchr"   r4   r7   r   r   r   r'   r(   r)   )r   r@   rK   s      r   Úhandle_endtagzHTMLExtractor.handle_endtag´   s,  € Ø×#Ñ# CÓ(ˆà�:‹:Ø�K‰K×Ñ˜tÔ$Ø�d—j‘jÑ à—j’jØ—z‘z—~‘~Ó'¨3Ò.Øð —j“jô �4—:‘:‹ !Ò#ä ×&Ñ& t§|¡|°D×4DÑ4DÀtÇ{Á{Ñ4RÔUXÐY]ÓU^Ñ4^Ð4_Ð'`Ôaà—K‘K×&Ñ& tÕ,ð #'�D”Kà"�”
Ø—‘×$Ñ$ T§W¡W×%6Ñ%6×%<Ñ%<¸R¿W¹WÀTÇ[Á[Ó=QÓ%RÔSà—‘×$Ñ$ VÔ,Ø �•ð $ð �M‰M× Ñ  Õ&r   c                ó¸   — | j                   rd|v rd| _         | j                  r| j                  j                  |«       y | j                  j                  |«       y )Nr,   F)r   r   r   r&   r   ©r   Údatas     r   r$   zHTMLExtractor.handle_dataÏ   sA   € Ø�;Š;˜4 4™<ØˆDŒKØ�:Š:Ø�K‰K×Ñ˜tÕ$à�M‰M× Ñ  Õ&r   c                óÖ  — | j                   s| j                  r| j                  j                  |«       y| j	                  «       �r	|�rt
        j                  | j                  | j                  | j                  z   t        |«      z   d «      r|dz  }nd| _        | j                  r| j                  d   nd}|j                  d«      s,|j                  d«      r| j                  j                  d«       | j                  j                  | j                  j                  j                  |«      «       | j                  j                  d«       y| j                  j                  |«       y)z Handle empty tags (`<data>`). Nr,   Tr-   r   rN   )r   r   r   r&   r:   rP   rQ   r"   r4   r7   r!   r   Úendswithr   r'   r(   )r   rU   Úis_blockÚitems       r   Úhandle_empty_tagzHTMLExtractor.handle_empty_tag×   s   € à�:Š:˜Ÿšà�K‰K×Ñ˜tÕ$Ø×ÑÕ!¢hä×"Ñ" 4§<¡<°×0@Ñ0@À4Ç;Á;Ñ0NÔQTÐUYÓQZÑ0ZÐ0[Ð#\Ô]à˜‘‘ð #�”Ø(,¯ª�4—=‘= Ò$¸2ˆDà—=‘= Ô(¨T¯]©]¸4Ô-@Ø—‘×$Ñ$ TÔ*Ø�M‰M× Ñ  §¡×!2Ñ!2×!8Ñ!8¸Ó!>Ô?à�M‰M× Ñ  Õ(à�M‰M× Ñ  Õ&r   c                óx   — | j                  | j                  «       | j                  j                  |«      ¬«       y )N©rX   )rZ   rG   r   rF   )r   r@   rJ   s      r   rE   z HTMLExtractor.handle_startendtagî   s.   € Ø×Ñ˜d×4Ñ4Ó6ÀÇÁ×AWÑAWÐX[ÓA\ÐÕ]r   c                óH   — | j                  dj                  |«      d¬«       y )Nz&#{};Fr\   ©rZ   r?   ©r   Únames     r   Úhandle_charrefzHTMLExtractor.handle_charrefñ   s   € Ø×Ñ˜gŸn™n¨TÓ2¸UÐÕCr   c                óH   — | j                  dj                  |«      d¬«       y )Nz&{};Fr\   r^   r_   s     r   Úhandle_entityrefzHTMLExtractor.handle_entityrefô   s   € Ø×Ñ˜fŸm™m¨DÓ1¸EÐÕBr   c                óH   — | j                  dj                  |«      d¬«       y )Nz	<!--{}-->Tr\   r^   rT   s     r   Úhandle_commentzHTMLExtractor.handle_comment÷   s    € Ø×Ñ˜k×0Ñ0°Ó6ÀÐÕFr   c                óH   — | j                  dj                  |«      d¬«       y )Nz<!{}>Tr\   r^   rT   s     r   Úhandle_declzHTMLExtractor.handle_declú   s   € Ø×Ñ˜gŸn™n¨TÓ2¸TÐÕBr   c                óH   — | j                  dj                  |«      d¬«       y )Nz<?{}?>Tr\   r^   rT   s     r   Ú	handle_pizHTMLExtractor.handle_piý   s   € Ø×Ñ˜hŸo™o¨dÓ3¸dÐÕCr   c                ót   — |j                  d«      rdnd}| j                  dj                  ||«      d¬«       y )NzCDATA[z]]>z]>z<![{}{}Tr\   )Ú
startswithrZ   r?   )r   rU   r>   s      r   Úunknown_declzHTMLExtractor.unknown_decl   s4   € Ø—‘ xÔ0‰e°dˆØ×Ñ˜i×.Ñ.¨t°SÓ9ÀDÐÕIr   c                ó†   •— | j                  «       s| j                  rt        ‰| �  |«      S | j	                  d«       |dz   S )Nz<?é   )r:   r   r   Úparse_pir$   ©r   Úir   s     €r   ro   zHTMLExtractor.parse_pi  s>   ø€ Ø×ÑÔ 4§;¢;Ü‘7Ñ# AÓ&Ð&ð 	×Ñ˜ÔØ�1‰uˆr   c                ó†   •— | j                  «       s| j                  rt        ‰| �  |«      S | j	                  d«       |dz   S )Nz<!rn   )r:   r   r   Úparse_html_declarationr$   rp   s     €r   rs   z$HTMLExtractor.parse_html_declaration  s>   ø€ Ø×ÑÔ 4§;¢;Ü‘7Ñ1°!Ó4Ð4ð 	×Ñ˜ÔØ�1‰uˆr   Nz
str | NoneÚ_HTMLExtractor__starttag_textc                ó   — | j                   S )z)Return full source of start tag: `<...>`.)rt   r9   s    r   rG   zHTMLExtractor.get_starttag_text  s   € à×#Ñ#Ð#r   c                óÌ  — d | _         | j                  |«      }|dk  r|S | j                  }||| | _         g }t        j                  j                  ||dz   «      }|sJ d«       ‚|j                  «       }|j                  d«      j                  «       x| _	        }||k  r¹t        j                  j                  ||«      }|sn–|j                  ddd«      \  }	}
}|
sd }n,|d d dcxk(  r|dd  k(  sn |d d dcxk(  r|dd  k(  rn n|dd }|rt        j                  |«      }|j                  |	j                  «       |f«       |j                  «       }||k  rŒ¹||| j                  «       }|d	vrŸ| j                  «       \  }}d
| j                   v rP|| j                   j                  d
«      z   }t!        | j                   «      | j                   j#                  d
«      z
  }n|t!        | j                   «      z   }| j%                  ||| «       |S |j'                  d«      r| j)                  ||«       |S || j*                  v r| j-                  |«       | j/                  ||«       |S )Nr   r+   z#unexpected call to parse_starttag()rn   r6   ú'r-   ú")ú>ú/>r,   rz   )rt   Úcheck_for_whole_start_tagr"   r   Útagfind_tolerantrQ   r>   ÚgroupÚlowerÚlasttagÚattrfind_tolerantr%   r&   r8   ÚgetposÚcountr!   Úrfindr$   rW   rE   rH   Úset_cdata_moderL   )r   rq   Úendposr"   rJ   rQ   Úkr@   rB   ÚattrnameÚrestÚ	attrvaluer>   r/   r7   s                  r   Úparse_starttagzHTMLExtractor.parse_starttag  s`  € Ø#ˆÔØ×/Ñ/°Ó2ˆØ�AŠ:ØˆMØ—,‘,ˆØ& q¨Ð0ˆÔð ˆÜ×+Ñ+×1Ñ1°'¸1¸Q¹3Ó?ˆÙÐ;Ð;Ó;ˆuØ�I‰I‹KˆØ"Ÿ[™[¨›^×1Ñ1Ó3Ð3ˆŒ�sØ�&ŠjÜ×,Ñ,×2Ñ2°7¸AÓ>ˆAÙØØ()¯©°°1°aÓ(8Ñ%ˆH�d˜IÙØ ‘	Ø˜2˜A� $Ô8¨)°B°C¨.Ô8Ø˜2˜A� #Ô7¨°2°3¨Õ7Ø% a¨˜O�	ÙÜ&×/Ñ/°	Ó:�	Ø�L‰L˜(Ÿ.™.Ó*¨IÐ6Ô7Ø—‘“ˆAð �&‹jð �a˜Ð×%Ñ%Ó'ˆØ�kÑ!Ø!Ÿ[™[›]‰NˆF�FØ�t×+Ñ+Ñ+Ø $×"6Ñ"6×"<Ñ"<¸TÓ"BÑB�Ü˜T×1Ñ1Ó2Ø×/Ñ/×5Ñ5°dÓ;ñ<‘ð  ¤# d×&:Ñ&:Ó";Ñ;�Ø×Ñ˜W Q vÐ.Ô/ØˆMØ�<‰<˜Ôà×#Ñ# C¨Ô/ð ˆð �d×1Ñ1Ñ1Ø×#Ñ# CÔ(Ø× Ñ   eÔ,Øˆr   )ÚreturnÚint)r‹   Úbool)r@   Ústrr‹   rŽ   )r@   rŽ   rJ   zlist[tuple[str, str]])r@   rŽ   )rU   rŽ   )rU   rŽ   rX   r�   )r`   rŽ   )rq   rŒ   r‹   rŒ   )r‹   rŽ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r    Úpropertyr4   r:   rC   rL   rR   r$   rZ   rE   ra   rc   re   rg   ri   rl   ro   rs   rt   Ú__annotations__rG   rŠ   Ú__classcell__)r   s   @r   r   r   F   s”   ø… ñôô	ôð ò
6ó ð
6ó[ó'ó(ó*'ó6'ó'ó.^óDóCóGóCóDóJõõð #'€O�ZÓ&ó$÷0r   r   )r’   Ú
__future__r   ÚreÚimportlib.utilÚ	importlibÚsysÚutilÚ	find_specÚspecÚmodule_from_specr   ÚloaderÚexec_moduleÚmodulesÚcompileÚpicloseÚ	entityrefÚ
incompleteÚVERBOSEÚlocatestarttagend_tolerantrP   Ú
HTMLParserr   © r   r   ú<module>rª      sâ   ðñ(õ #ã 	Û Û 
ð
 ‡~�~×Ñ Ó.€Ø�^‰^×,Ñ,¨TÓ2€
Ø ‡�× Ñ ˜
Ô #Ø&€‡�ˆLÑ ð  �R—Z‘Z Ó'€
Ô à!�r—z‘zÐ"?Ó@€
Ô ð #×,Ñ,€
Ô à(2¨¯
©
ð 4ð ‡Z�Zó)€
Ô %ð$ �—
‘
˜?Ó+€ôH�J×)Ñ)õ Hr   