Ë
    RPf
  ã                  óÂ   — d dl mZ d dlmZ d dlmZ d dlZd dlmZm	Z	m
Z
mZ d dlZddlmZ dZdd	„Zdd
„Z ej$                  d«      Z ej$                  d«      Zddd„Zy)é    )Úannotations)ÚCallable)ÚsuppressN)ÚquoteÚunquoteÚurlparseÚ
urlunparseé   )Ú	_punycode)zhttp:zhttps:zmailto:c                óz  — t        j                  | d¬«      }|j                  re|j                  r|j                  t        v rGt        t        «      5  |j                  t        j                  |j                  «      ¬«      }ddd«       t        j                  t        j                  |«      «      S # 1 sw Y   Œ1xY w)zvNormalize destination URLs in links

    ::

        [label]:   destination   'title'
                ^^^^^^^^^^^
    T©Úslashes_denote_host©ÚhostnameN)ÚmdurlÚparser   ÚprotocolÚRECODE_HOSTNAME_FORr   Ú	ExceptionÚ_replacer   Úto_asciiÚencodeÚformat©ÚurlÚparseds     úZ/var/www/fastapitest/venv/lib/python3.12/site-packages/markdown_it/common/normalize_url.pyÚnormalizeLinkr      sŠ   € ô �[‰[˜°$Ô7€Fð ‡‚Ø�OŠO˜vŸ™Ô2EÑEä”iÓ ñ 	SØ—_‘_¬i×.@Ñ.@ÀÇÁÓ.Q�_ÓRˆF÷	Sô �<‰<œŸ™ VÓ,Ó-Ð-÷	Sð 	Sús   Á0B1Â1B:c                óž  — t        j                  | d¬«      }|j                  re|j                  r|j                  t        v rGt        t        «      5  |j                  t        j                  |j                  «      ¬«      }ddd«       t        j                  t        j                  |«      t         j                  dz   «      S # 1 sw Y   ŒCxY w)zSNormalize autolink content

    ::

        <destination>
         ~~~~~~~~~~~
    Tr   r   Nú%)r   r   r   r   r   r   r   r   r   Ú
to_unicodeÚdecoder   ÚDECODE_DEFAULT_CHARSr   s     r   ÚnormalizeLinkTextr$   (   s—   € ô �[‰[˜°$Ô7€Fð ‡‚Ø�OŠO˜vŸ™Ô2EÑEä”iÓ ñ 	UØ—_‘_¬i×.BÑ.BÀ6Ç?Á?Ó.S�_ÓTˆF÷	Uô �<‰<œŸ™ VÓ,¬e×.HÑ.HÈ3Ñ.NÓOÐO÷		Uð 	Uús   Á0CÃCz!^(vbscript|javascript|file|data):z!^data:image\/(gif|png|jpeg|webp);c                ó¼   — |� || «      S | j                  «       j                  «       } t        j                  | «      rt	        t
        j                  | «      «      S dS )a  Validate URL link is allowed in output.

    This validator can prohibit more than really needed to prevent XSS.
    It's a tradeoff to keep code simple and to be secure by default.

    Note: url should be normalized at this point, and existing entities decoded.
    T)ÚstripÚlowerÚBAD_PROTO_REÚsearchÚboolÚGOOD_DATA_RE)r   Ú	validators     r   ÚvalidateLinkr-   F   sP   € ð ÐÙ˜‹~ÐØ
�)‰)‹+×
Ñ
Ó
€CÜ-9×-@Ñ-@ÀÔ-EŒ4”×#Ñ# CÓ(Ó)ÐOÈ4ÐOó    )r   ÚstrÚreturnr/   )N)r   r/   r,   zCallable[[str], bool] | Noner0   r*   )Ú
__future__r   Úcollections.abcr   Ú
contextlibr   ÚreÚurllib.parser   r   r   r	   r   Ú r   r   r   r$   Úcompiler(   r+   r-   © r.   r   ú<module>r9      sX   ðÝ "å $Ý Û 	ß =Ó =ã å à4Ð ó.ó2Pð4 ˆr�z‰zÐ>Ó?€Øˆr�z‰zÐ>Ó?€õPr.   