§
    XŠtjå  ã                   ó^   — d Z ddlmZ ddlmZ ddlmZmZ dgZd„ Z	i Z
 G d„ de¦  «        ZdS )	zÏ
    pygments.formatters.svg
    ~~~~~~~~~~~~~~~~~~~~~~~

    Formatter for SVG output.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    )Ú	Formatter)ÚComment)Úget_bool_optÚget_int_optÚSvgFormatterc                 óÎ   — |                       dd¦  «                              dd¦  «                              dd¦  «                              dd¦  «                              d	d
¦  «        S )z<Escape &, <, > as well as single and double quotes for HTML.ú&z&amp;ú<z&lt;ú>z&gt;ú"z&quot;ú'z&#39;)Úreplace)Útexts    úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pygments/formatters/svg.pyÚescape_htmlr      sT   € à�<Š<˜˜WÑ%Ô%ß’˜˜VÑ$Ô$ß’˜˜VÑ$Ô$ß’˜˜XÑ&Ô&ß’˜˜WÑ%Ô%ð	&ó    c                   ó4   — e Zd ZdZdZdgZdgZd„ Zd„ Zd„ Z	dS )	r   a	  
    Format tokens as an SVG graphics file.  This formatter is still experimental.
    Each line of code is a ``<text>`` element with explicit ``x`` and ``y``
    coordinates containing ``<tspan>`` elements with the individual token styles.

    By default, this formatter outputs a full SVG document including doctype
    declaration and the ``<svg>`` root element.

    .. versionadded:: 0.9

    Additional options accepted:

    `nowrap`
        Don't wrap the SVG ``<text>`` elements in ``<svg><g>`` elements and
        don't add a XML declaration and a doctype.  If true, the `fontfamily`
        and `fontsize` options are ignored.  Defaults to ``False``.

    `fontfamily`
        The value to give the wrapping ``<g>`` element's ``font-family``
        attribute, defaults to ``"monospace"``.

    `fontsize`
        The value to give the wrapping ``<g>`` element's ``font-size``
        attribute, defaults to ``"14px"``.

    `linenos`
        If ``True``, add line numbers (default: ``False``).

    `linenostart`
        The line number for the first line (default: ``1``).

    `linenostep`
        If set to a number n > 1, only every nth line number is printed.

    `linenowidth`
        Maximum width devoted to line numbers (default: ``3*ystep``, sufficient
        for up to 4-digit line numbers. Increase width for longer code blocks).

    `xoffset`
        Starting offset in X direction, defaults to ``0``.

    `yoffset`
        Starting offset in Y direction, defaults to the font size if it is given
        in pixels, or ``20`` else.  (This is necessary since text coordinates
        refer to the text baseline, not the top edge.)

    `ystep`
        Offset to add to the Y coordinate for each subsequent line.  This should
        roughly be the text size plus 5.  It defaults to that value if the text
        size is given in pixels, or ``25`` else.

    `spacehack`
        Convert spaces in the source to ``&#160;``, which are non-breaking
        spaces.  SVG provides the ``xml:space`` attribute to control how
        whitespace inside tags is handled, in theory, the ``preserve`` value
        could be used to keep all whitespace as-is.  However, many current SVG
        viewers don't obey that rule, so this option is provided as a workaround
        and defaults to ``True``.
    ÚSVGÚsvgz*.svgc                 ó   — t          j        | fi |¤Ž t          |dd¦  «        | _        |                     dd¦  «        | _        |                     dd¦  «        | _        t          |dd¦  «        | _        | j         	                    ¦   «         }| 
                    d	¦  «        r|d d
…          	                    ¦   «         }	 t          |¦  «        }n# t          $ r d}Y nw xY wt          |d|¦  «        | _        t          |d|dz   ¦  «        | _        t          |dd¦  «        | _        t          |dd¦  «        | _        t          |dd¦  «        | _        t          |dd¦  «        | _        t          |dd| j        z  ¦  «        | _        i | _        d S )NÚnowrapFÚ
fontfamilyÚ	monospaceÚfontsizeÚ14pxÚxoffsetr   Úpxéþÿÿÿé   ÚyoffsetÚystepé   Ú	spacehackTÚlinenosÚlinenostarté   Ú
linenostepÚlinenowidthé   )r   Ú__init__r   r   Úgetr   r   r   r   ÚstripÚendswithÚintÚ
ValueErrorr    r!   r#   r$   r%   r'   r(   Ú_stylecache)ÚselfÚoptionsÚfsÚint_fss       r   r*   zSvgFormatter.__init__]   s|  € ÝÔ˜4Ð+Ð+ 7Ð+Ð+Ð+Ý" 7¨H°eÑ<Ô<ˆŒØ!Ÿ+š+ l°KÑ@Ô@ˆŒØŸš J°Ñ7Ô7ˆŒÝ" 7¨I°qÑ9Ô9ˆŒØŒ]× Ò Ñ"Ô"ˆØ�;Š;�tÑÔð 	!Ø�C�R�C”—’‘”ˆBð	Ý˜‘W”WˆFˆFøÝð 	ð 	ð 	ØˆFˆFˆFð	øøøå" 7¨I°vÑ>Ô>ˆŒÝ  ¨'°6¸A±:Ñ>Ô>ˆŒ
Ý% g¨{¸DÑAÔAˆŒÝ# G¨I°eÑ<Ô<ˆŒÝ& w¨}¸QÑ?Ô?ˆÔÝ% g¨l¸1Ñ=Ô=ˆŒÝ& w¨}¸aÀÄ
¹lÑKÔKˆÔØˆÔÐÐs   Ã C ÃCÃCc                 óh  — | j         }| j        }| j        s‹| j        r|                     d| j        › d�¦  «         n|                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d| j        › d| j        › d�¦  «         | j        }| j        }|  	                    t          ¦  «        }|}| j        rJ||z  d	k    r*|                     d
|| j        z   › d|› d|› d|› d�	¦  «         || j        | j        z   z  }|dz  }|                     d
|› d|› d�¦  «         |D �]C\  }	}
|  	                    |	¦  «        }|rd|z   dz   pd}|rdpd}t          |
¦  «        }
| j        r(|
                     ¦   «                              dd¦  «        }
|
                     d¦  «        }|dd…         D ]—}|                     ||z   |z   ¦  «         || j        z  }|                     d¦  «         | j        r3||z  d	k    r*|                     d
|| j        z   › d|› d|› d|› d�	¦  «         |dz  }|                     d
|› d|› d�¦  «         Œ˜|                     ||d         z   |z   ¦  «         �ŒE|                     d¦  «         | j        s|                     d¦  «         dS dS )zÏ
        Format ``tokensource``, an iterable of ``(tokentype, tokenstring)``
        tuples and write it into ``outfile``.

        For our implementation we put all lines in their own 'line group'.
        z<?xml version="1.0" encoding="z"?>
z<?xml version="1.0"?>
zk<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
z)<svg xmlns="http://www.w3.org/2000/svg">
z<g font-family="z" font-size="z">
r   z	<text x="z" y="z" z text-anchor="end">z</text>r&   z" xml:space="preserve">z<tspanr   Ú z</tspan>ú z&#160;ú
Néÿÿÿÿz</text>
z" text-anchor="end" z</g></svg>
)r   r    r   ÚencodingÚwriter   r   r%   r'   Ú
_get_styler   r$   r(   r!   r   r#   Ú
expandtabsr   Úsplit)r1   ÚtokensourceÚoutfileÚxÚyÚcounterÚcounter_stepÚcounter_styleÚline_xÚttypeÚvalueÚstyleÚtspanÚtspanendÚpartsÚparts                   r   Úformat_unencodedzSvgFormatter.format_unencodeds   sL  € ð ŒLˆØŒLˆØŒ{ð 		`ØŒ}ð 9Ø—’ÐS¸t¼}ÐSÐSÐSÑTÔTÐTÐTà—’Ð7Ñ8Ô8Ð8Ø�MŠMð *ñ +ô +ð +ð �MŠMÐFÑGÔGÐGØ�MŠMÐ^¨T¬_Ð^Ð^È4Ì=Ð^Ð^Ð^Ñ_Ô_Ð_àÔ"ˆØ”ˆØŸš­Ñ0Ô0ˆØˆàŒ<ð 	Ø˜Ñ%¨Ò*Ð*Ø—’Ðz¨!¨DÔ,<Ñ*<ÐzÐzÀ1ÐzÐzÈÐzÐzÐjqÐzÐzÐzÑ{Ô{Ð{Ø�dÔ&¨¬Ñ3Ñ3ˆFØ�q‰LˆGà�ŠÐI &ÐIÐI¨qÐIÐIÐIÑJÔJÐJØ'ð 	8ñ 	8‰LˆE�5Ø—O’O EÑ*Ô*ˆEØÐ4˜h¨Ñ.°Ñ4Ð:¸ˆEØÐ+ Ð1¨rˆHÝ Ñ&Ô&ˆEØŒ~ð BØ×(Ò(Ñ*Ô*×2Ò2°3¸ÑAÔA�Ø—K’K Ñ%Ô%ˆEØ˜c˜r˜cœ
ð Vð V�Ø—’˜e d™l¨XÑ5Ñ6Ô6Ð6Ø�T”Z‘�Ø—’˜kÑ*Ô*Ð*Ø”<ð @ G¨lÑ$:¸aÒ$?Ð$?Ø—M’MÐ"~¨a°Ô0@Ñ.@Ð"~Ð"~ÀqÐ"~Ð"~Ð^kÐ"~Ð"~ÐnuÐ"~Ð"~Ð"~ÑÔÐà˜1‘�Ø—’ÐT¨&ÐTÐT°qÐTÐTÐTÑUÔUÐUÐUØ�MŠM˜% %¨¤)Ñ+¨hÑ6Ñ7Ô7Ð7Ñ7Ø�Š�iÑ Ô Ð àŒ{ð 	*Ø�MŠM˜.Ñ)Ô)Ð)Ð)Ð)ð	*ð 	*r   c                 óX  — || j         v r| j         |         S |}| j                             |¦  «        s!|j        }| j                             |¦  «        ¯!| j                             |¦  «        }d}|d         rd|d         z   dz   }|d         r|dz  }|d         r|dz  }|| j         |<   |S )	Nr6   Úcolorz fill="#r   Úboldz font-weight="bold"Úitalicz font-style="italic")r0   rI   Ústyles_tokenÚparentÚstyle_for_token)r1   Ú	tokentypeÚ
otokentyperH   Úresults        r   r<   zSvgFormatter._get_styleª   sÖ   € Ø˜Ô(Ð(Ð(ØÔ# IÔ.Ð.Øˆ
Ø”*×)Ò)¨)Ñ4Ô4ð 	)Ø!Ô(ˆIð ”*×)Ò)¨)Ñ4Ô4ð 	)à”
×*Ò*¨9Ñ5Ô5ˆØˆØ�Œ>ð 	7Ø %¨¤.Ñ0°3Ñ6ˆFØ�Œ=ð 	,ØÐ+Ñ+ˆFØ�Œ?ð 	-ØÐ,Ñ,ˆFØ'-ˆÔ˜Ñ$Øˆr   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesr*   rN   r<   © r   r   r   r      sb   € € € € € ð:ð :ðv €DØˆg€GØ�	€Iðð ð ð,5*ð 5*ð 5*ðnð ð ð ð r   N)r\   Úpygments.formatterr   Úpygments.tokenr   Úpygments.utilr   r   Ú__all__r   Úclass2styler   r`   r   r   ú<module>rf      s©   ððð ð )Ð (Ð (Ð (Ð (Ð (Ø "Ð "Ð "Ð "Ð "Ð "Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3àÐ
€ð&ð &ð &ð €ð\ð \ð \ð \ð \�9ñ \ô \ð \ð \ð \r   