Ë
    ¨eh8Ç  ã                   óö  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZ d dlZd dlmZmZ d dlmZmZmZmZ d dlmZ d dlmZ d dlmZ d d	l m!Z! d d
lm"Z" d dl#m$Z$m%Z%  ejL                  e'«      Z(d„ Z) e
jT                  d«      Z+d„ Z,d„ Z-d„ Z.d„ Z/ G d„ d«      Z0d„ Z1d„ Z2ddddœZ3d„ Z4d„ Z5 G d„ de«      Z6 G d„ de«      Z7eZ8d Z9ejt                   G d!„ d"e«      «       Z;y)#é    N)ÚBytesIO)ÚImage)ÚcbookÚfont_manager)Ú_BackendÚFigureCanvasBaseÚFigureManagerBaseÚRendererBase)ÚMixedModeRenderer)Úrgb2hex)ÚUTC)ÚPath)Ú_path)ÚAffine2DÚAffine2DBasec                 ór   — | j                  dd«      } | j                  dd«      } | j                  dd«      } | S )Nú&ú&amp;ú<ú&lt;ú>ú&gt;©Úreplace©Úss    ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/matplotlib/backends/backend_svg.pyÚ_escape_cdatar   E   s7   € Ø	�	‰	�#�wÓ€AØ	�	‰	�#�vÓ€AØ	�	‰	�#�vÓ€AØ€Hó    z-(?=-)c                 óD   — t        | «      } t        j                  d| «      S )Nz- )r   Ú_escape_xml_commentÚsubr   s    r   Ú_escape_commentr#   O   s   € Ü�aÓ€AÜ×"Ñ" 4¨Ó+Ð+r   c                 óº   — | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  d	d
«      } | S )Nr   r   ú'z&apos;ú"z&quot;r   r   r   r   r   r   s    r   Ú_escape_attribr'   T   sW   € Ø	�	‰	�#�wÓ€AØ	�	‰	�#�xÓ €AØ	�	‰	�#�xÓ €AØ	�	‰	�#�vÓ€AØ	�	‰	�#�vÓ€AØ€Hr   c                 óx   — d| vrdt        | «      z   dz   S d| vrdt        | «      z   dz   S dt        | «      z   dz   S )Nr&   r%   )r   r'   r   s    r   Ú_quote_escape_attribr)   ]   sS   € Ø,/°q©LˆC”- Ó"Ñ" SÑ(ð +Ø,/°q©LˆC”- Ó"Ñ" SÑ(ð+à”. Ó#Ñ# cÑ)ð+r   c                 óF   — | d›j                  d«      j                  d«      S )zˆ
    Create a short string representation of a float, which is %f
    formatting with trailing zeros and the decimal point removed.
    ÚfÚ0ú.)Úrstrip)Úxs    r   Ú_short_float_fmtr0   c   s"   € ð
 �ˆU�?‰?˜3Ó×&Ñ& sÓ+Ð+r   c                   óT   — e Zd ZdZd„ Zdd„Zi fd„Zd„ Zd„ Zdd„Z	d	„ Z
di fd
„Zd„ Zy)Ú	XMLWriterzM
    Parameters
    ----------
    file : writable text file-like object
    c                 ó˜   — |j                   | _        t        |d«      r|j                  | _        d| _        g | _        g | _        d| _        y )NÚflushr   z@                                                                )ÚwriteÚ_XMLWriter__writeÚhasattrr4   Ú_XMLWriter__openÚ_XMLWriter__tagsÚ_XMLWriter__dataÚ_XMLWriter__indentation)ÚselfÚfiles     r   Ú__init__zXMLWriter.__init__r   s?   € Ø—z‘zˆŒÜ�4˜Ô!ØŸ™ˆDŒJØˆŒØˆŒØˆŒØ%ˆÕr   c                 ó  — | j                   r,|r| j                  d«       n| j                  d«       d| _         | j                  r=dj                  | j                  «      }| j                  t	        |«      «       g | _        y y )Nú>
r   r   Ú )r8   r6   r:   Újoinr   )r<   ÚindentÚdatas      r   Ú__flushzXMLWriter.__flush{   sa   € à�;Š;ÙØ—‘˜UÕ#à—‘˜SÔ!ØˆDŒKØ�;Š;Ø—7‘7˜4Ÿ;™;Ó'ˆDØ�L‰Lœ tÓ,Ô-ØˆD�Kð r   c                 óâ  — | j                  «        t        |«      }g | _        | j                  j	                  |«       | j                  | j                  dt        | j                  «      dz
   «       | j                  d|› �«       i |¥|¥j                  «       D ]5  \  }}|sŒ	t        |«      }t        |«      }| j                  d|› d|› �«       Œ7 d| _
        t        | j                  «      dz
  S )a&  
        Open a new element.  Attributes can be given as keyword
        arguments, or as a string/string dictionary. The method returns
        an opaque identifier that can be passed to the :meth:`close`
        method, to close all open elements up to and including this one.

        Parameters
        ----------
        tag
            Element tag.
        attrib
            Attribute dictionary.  Alternatively, attributes can be given as
            keyword arguments.

        Returns
        -------
        An element identifier.
        Né   r   ú ú=)Ú_XMLWriter__flushr   r:   r9   Úappendr6   r;   ÚlenÚitemsr)   r8   )r<   ÚtagÚattribÚextraÚkÚvs         r   ÚstartzXMLWriter.startˆ   sÜ   € ð& 	�‰ŒÜ˜CÓ ˆØˆŒØ�‰×Ñ˜3ÔØ�‰�T×'Ñ'Ð(=¬¨T¯[©[Ó)9¸AÑ)=Ð>Ô?Ø�‰�q˜˜�YÔØ'�vÐ' Ð'×-Ñ-Ó/ò 	*‰DˆAˆqÚÜ! !Ó$�Ü(¨Ó+�Ø—‘˜q   1 Q C˜[Õ)ð		*ð
 ˆŒÜ�4—;‘;Ó !Ñ#Ð#r   c                 óÂ   — | j                  «        | j                  | j                  dt        | j                  «       «       | j                  dt        |«      › d�«       y)zŒ
        Add a comment to the output stream.

        Parameters
        ----------
        comment : str
            Comment text.
        Nz<!-- z -->
)rJ   r6   r;   rL   r9   r#   )r<   Úcomments     r   rU   zXMLWriter.comment©   sK   € ð 	�‰ŒØ�‰�T×'Ñ'Ð(9¬¨T¯[©[Ó)9Ð:Ô;Ø�‰�uœ_¨WÓ5Ð6°fÐ=Õ>r   c                 ó:   — | j                   j                  |«       y)z�
        Add character data to the output stream.

        Parameters
        ----------
        text : str
            Character data.
        N)r:   rK   )r<   Útexts     r   rD   zXMLWriter.data¶   s   € ð 	�‰×Ñ˜4Õ r   Nc                 ó  — |rL| j                   sJ d|› d�«       ‚t        |«      | j                   d   k(  s-J d| j                   d   › d|› �«       ‚| j                   sJ d«       ‚| j                   j                  «       }| j                  r| j	                  |«       n%| j
                  rd| _        | j                  d«       y	|r1| j                  | j                  d	t        | j                   «       «       | j                  d
|› d�«       y	)a<  
        Close the current element (opened by the most recent call to
        :meth:`start`).

        Parameters
        ----------
        tag
            Element tag.  If given, the tag must match the start tag.  If
            omitted, the current element is closed.
        indent : bool, default: True
        zunbalanced end(ú)éÿÿÿÿzexpected end(z), got zunbalanced end()r   z/>
Nz</r@   )	r9   r   Úpopr:   rJ   r8   r6   r;   rL   )r<   rN   rC   s      r   ÚendzXMLWriter.endÁ   sê   € ñ Ø—;’;Ð8 /°#°°aÐ 8Ó8�;Ü  Ó%¨¯©°R©Ò8ð >Ø §¡¨B¡Ð0°¸°uÐ=ó>Ð8ð —;’;Ð2Ð 2Ó2�;Ø�k‰k�o‰oÓˆØ�;Š;Ø�L‰L˜Õ Ø�[Š[ØˆDŒKØ�L‰L˜Ô ØÙØ�L‰L˜×+Ñ+Ð,=¬S°·±Ó-=Ð>Ô?Ø�‰�r˜#˜˜c�]Õ#r   c                 óˆ   — t        | j                  «      |kD  r*| j                  «        t        | j                  «      |kD  rŒ)yy)zï
        Close open elements, up to (and including) the element identified
        by the given identifier.

        Parameters
        ----------
        id
            Element identifier, as returned by the :meth:`start` method.
        N)rL   r9   r\   )r<   Úids     r   ÚclosezXMLWriter.closeÞ   s1   € ô �$—+‘+Ó Ò#Ø�H‰HŒJô �$—+‘+Ó Õ#r   c                 óv   —  | j                   ||fi |¤Ž |r| j                  |«       | j                  d¬«       y)z³
        Add an entire element.  This is the same as calling :meth:`start`,
        :meth:`data`, and :meth:`end` in sequence. The *text* argument can be
        omitted.
        F)rC   N)rS   rD   r\   )r<   rN   rW   rO   rP   s        r   ÚelementzXMLWriter.elementë   s5   € ð 	ˆ�
‰
�3˜Ñ( %Ò(ÙØ�I‰I�dŒOØ�‰˜ˆÕr   c                  ó   — y)zFlush the output stream.N© ©r<   s    r   r4   zXMLWriter.flushö   s   € àr   )T©NT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r>   rJ   rS   rU   rD   r\   r_   ra   r4   rc   r   r   r2   r2   k   sA   „ ñò&óð !#ó $òB?ò	!ó$ò:ð !%¨Ró 	ór   r2   c           
      ó<  — g }| D ]…  \  }}|dk(  r
|dk(  s|dk(  s|dk(  r|dk(  s
|dk(  r|dk(  rŒ*|dk(  r t        |t        «      r|j                  «       }|j                  d	j	                  |d
j                  d„ |D «       «      «      «       Œ‡ d
j                  |«      S )NÚscale)rG   )rG   rG   Ú	translate)r   r   Úrotate)r   Úmatrixz{}({})rH   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N©r0   )Ú.0r/   s     r   ú	<genexpr>z&_generate_transform.<locals>.<genexpr>  s   è ø€ Ò>°1Ô+¨A×.Ñ>ùó   ‚)Ú
isinstancer   Ú	to_valuesrK   ÚformatrB   )Útransform_listÚpartsÚtypeÚvalues       r   Ú_generate_transformr|   û   s¨   € Ø€EØ%ò A‰ˆˆeØ�GŠO ¨$¢°%¸6²/Ø˜;Ò&¨5°Fª?Ø˜8Ò#¨°ªØØ�8Ò¤
¨5´,Ô ?Ø—O‘OÓ%ˆEØ�‰�X—_‘_Ø�#—(‘(Ñ>¸Ô>Ó>ó@õ 	AðAð �8‰8�E‹?Ðr   c                 óN   — dj                  d„ | j                  «       D «       «      S )Nz; c              3   ó0   K  — | ]  \  }}|› d |› �–— Œ y­w)z: Nrc   )rr   rQ   rR   s      r   rs   z _generate_css.<locals>.<genexpr>
  s   è ø€ Ò<¡T Q¨˜�s˜"˜Q˜C”[Ñ<ùs   ‚)rB   rM   ©rO   s    r   Ú_generate_cssr€   	  s   € Ø�9‰9Ñ<¨V¯\©\«^Ô<Ó<Ð<r   ÚsquareÚbuttÚround)Ú
projectingr‚   rƒ   c                 óZ   — t        | t        «      st        d|› dt        | «      › d�«      ‚y )NúInvalid type for z metadata. Expected str, not r-   )ru   ÚstrÚ	TypeErrorrz   )ÚinfoÚkeys     r   Ú_check_is_strr‹     s8   € Ü�dœCÔ ÜÐ+¨C¨5Ð0MÜ ›:˜, að)ó *ð 	*ð !r   c           	      óÈ   — t        j                  | «      r3| D ]-  }t        |t        «      rŒt	        d|› dt        |«      › d�«      ‚ y t	        d|› dt        | «      › d�«      ‚)Nr†   z) metadata. Expected iterable of str, not r-   z0 metadata. Expected str or iterable of str, not )ÚnpÚiterableru   r‡   rˆ   rz   )ÚinfosrŠ   r‰   s      r   Ú_check_is_iterable_of_strr�     s‚   € Ü	‡{�{�5ÔØò 	GˆDÜ˜d¤CÕ(ÜÐ"3°C°5ð 98Ü8<¸T»
°|À1ð!Fó Gð Gñ	Gô
 Ð+¨C¨5ð 10Ü04°U³¨}¸Að?ó @ð 	@r   c                   ó   ‡ — e Zd Zd$ddœˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd%d„Zd„ Zd„ Z	 	 d&d„Zd%d„Z	 d%d„Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd%d„Zd„ Zd„ Zd%d„Zd%d„Zd'd „Z d!„ Z!d"„ Z"d#„ Z#ˆ xZ$S )(ÚRendererSVGN)Úmetadatac                ó¢  •— || _         || _        t        |«      | _        || _        |€t        |dd«      }t        |t        «      sd}|| _        i | _	        t        j                  «       | _        i | _        i | _        i | _        d| _        i | _        d| _        d| _        t(        ‰	| �U  «        t-        «       | _        t1        |«      }t1        |«      }|j3                  t4        «       | j                  j7                  d|› d�|› d�d|› d|› �d	d
t8        j:                  d   ddi¬«      | _        | j?                  |«       | jA                  «        y )NÚnamerA   r   FÚsvgÚptz0 0 rH   zhttp://www.w3.org/2000/svgz1.1zsvg.idzxmlns:xlinkzhttp://www.w3.org/1999/xlink)ÚwidthÚheightÚviewBoxÚxmlnsÚversionr^   rO   )!r˜   r™   r2   ÚwriterÚ	image_dpiÚgetattrru   r‡   ÚbasenameÚ_groupdÚ	itertoolsÚcountÚ_image_counterÚ_clip_path_idsÚ_clipdÚ_markersÚ_path_collection_idÚ_hatchdÚ_has_gouraudÚ_n_gradientsÚsuperr>   ÚdictÚ
_glyph_mapr0   r5   Ú	svgPrologrS   ÚmplÚrcParamsÚ	_start_idÚ_write_metadataÚ_write_default_style)
r<   r˜   r™   Ú	svgwriterr    rž   r“   Ú
str_heightÚ	str_widthÚ	__class__s
            €r   r>   zRendererSVG.__init__"  sG  ø€ àˆŒ
ØˆŒÜ 	Ó*ˆŒØ"ˆŒàÐÜ˜y¨&°"Ó5ˆHÜ˜h¬Ô,Ø�Ø ˆŒàˆŒÜ'Ÿo™oÓ/ˆÔØ ˆÔØˆŒØˆŒØ#$ˆÔ ØˆŒØ!ˆÔØˆÔä‰ÑÔÜ›&ˆŒÜ% fÓ-ˆ
Ü$ UÓ+ˆ	Ø�‰œ	Ô"ØŸ™×*Ñ*ØØ�K˜rÐ"Ø �\ Ð$Ø˜9˜+ Q z lÐ3Ø.ØÜ�|‰|˜HÑ%Ø!Ð#AÐBð +ó DˆŒð 	×Ñ˜XÔ&Ø×!Ñ!Õ#r   c                 ó€   — || j                   vr"t        | j                   «      | j                   |<   | j                   |   S )a–  
        Returns a stable and unique identifier for the *clippath* argument
        object within the current rendering context.

        This allows plots that include custom clip paths to produce identical
        SVG output on each render, provided that the :rc:`svg.hashsalt` config
        setting and the ``SOURCE_DATE_EPOCH`` build-time environment variable
        are set to fixed values.
        )r¥   rL   )r<   Úclippaths     r   Ú_get_clippath_idzRendererSVG._get_clippath_idJ  s>   € ð ˜4×.Ñ.Ñ.Ü,/°×0CÑ0CÓ,DˆD×Ñ Ñ)Ø×"Ñ" 8Ñ,Ð,r   c                 óÂ   — | j                  «        | j                  «        | j                  j                  | j                  «       | j                  j                  «        y rp   )Ú_write_clipsÚ_write_hatchesr�   r_   r²   r4   rd   s    r   ÚfinalizezRendererSVG.finalizeX  s@   € Ø×ÑÔØ×ÑÔØ�‰×Ñ˜$Ÿ.™.Ô)Ø�‰×ÑÕr   c                 ó¬  ‡— |€i }dddt         j                  › d�dœ|¥}| j                  Šd|v r$|d   }t        |d«       ‰j	                  d|¬«       |j                  d	d «      }|��t        |t        «      r|g}nöt        |t        j                  t        j                  f«      r|j                  «       g}nºt        j                  |«      r�g }|D ]…  }t        |t        «      r|j                  |«       Œ%t        |t        j                  t        j                  f«      r |j                  |j                  «       «       Œot        d
t        |«      › d�«      ‚ nt        dt        |«      › d�«      ‚dj!                  |«      |d	<   n³d	|vr¯t#        j$                  d«      }|rit        j                  j'                  t)        |«      t        j*                  j,                  «      }|j/                  t0        ¬«      j                  «       |d	<   n/t        j                  j3                  «       j                  «       |d	<   d }ˆfd„}|j5                  dd «      }|� ||«      }‰j	                  dd|i¬«       dD ]O  }	|j5                  |	d «      }
|
€Œ ||«      }t        |
|	«       ‰j	                  d|	j7                  «       › �|
¬«       ŒQ dD ]¾  }	|j5                  |	d «      }|€Œt        |t        «      r|g}t9        ||	«        ||«      }‰j;                  d|	j7                  «       › �«       |D ]7  }‰j;                  d«       ‰j	                  d|¬«       ‰j=                  d«       Œ9 ‰j=                  d|	j7                  «       › �«       ŒÀ |j5                  dd «      }|�…t        |t        «      r|g}t9        |d«        ||«      }‰j;                  d«       ‰j;                  d«       |D ]  }‰j	                  d|¬«       Œ ‰j=                  d«       ‰j=                  d«       |�‰j?                  |«       |rtA        ddj!                  |«      z   «      ‚y ) Nzimage/svg+xmlz&http://purl.org/dc/dcmitype/StillImagezMatplotlib vz, https://matplotlib.org/)ÚFormatÚTypeÚCreatorÚTitleÚtitle)rW   ÚDatezQInvalid type for Date metadata. Expected iterable of str, date, or datetime, not r-   z[Invalid type for Date metadata. Expected str, date, datetime, or iterable of the same, not ú/ÚSOURCE_DATE_EPOCH)Útzinfoc                 ó‚   •— | �| S ‰j                  d«      } ‰j                  dddddœ¬«       ‰j                  d«       | S )	Nr“   zrdf:RDFz http://purl.org/dc/elements/1.1/zhttp://creativecommons.org/ns#z+http://www.w3.org/1999/02/22-rdf-syntax-ns#)zxmlns:dczxmlns:ccz	xmlns:rdfr   zcc:Work)rS   )Úmidr�   s    €r   Úensure_metadataz4RendererSVG._write_metadata.<locals>.ensure_metadata–  sL   ø€ ØˆØ�
Ø—,‘,˜zÓ*ˆCØ�L‰L˜Ø>Ø<ØJñ,ˆLô ð
 �L‰L˜Ô#ØˆJr   rÂ   zdc:typezrdf:resourcer   )	rÄ   ÚCoveragerÆ   ÚDescriptionrÁ   Ú
IdentifierÚLanguageÚRelationÚSourcezdc:)rÃ   ÚContributorÚ	PublisherÚRightszcc:Agentzdc:titleÚKeywordsz
dc:subjectzrdf:Bagzrdf:liz.Unknown metadata key(s) passed to SVG writer: ú,)!r°   Ú__version__r�   r‹   ra   Úgetru   r‡   ÚdatetimeÚdateÚ	isoformatr�   rŽ   rK   rˆ   rz   rB   ÚosÚgetenvÚfromtimestampÚintÚtimezoneÚutcr   r   Útodayr[   Úlowerr�   rS   r\   r_   Ú
ValueError)r<   r“   rÅ   rÛ   ÚdatesÚdrË   rÌ   ÚurirŠ   r‰   ÚagentsÚagentÚkeywordsÚkeywordr�   s                  @r   r³   zRendererSVG._write_metadata^  s  ø€ ð ÐØˆHà%Ø<àœsŸ™Ð/Ð/HÐIñ	
ð
 ð
ˆð —‘ˆà�hÑØ˜WÑ%ˆEÜ˜% Ô)Ø�N‰N˜7¨ˆNÔ/ð �|‰|˜F DÓ)ˆØÑÜ˜$¤Ô$Ø˜‘Ü˜D¤8×#4Ñ#4´h·m±mÐ"DÔEØŸ™Ó)Ð*‘Ü—‘˜TÔ"Ø�Øò 	/�AÜ! !¤SÔ)ØŸ™ Q�Ü# A¬×(9Ñ(9¼8¿=¹=Ð'IÔJØŸ™ Q§[¡[£]Õ3ä'ð#ä#'¨£7 )¨1ð.ó/ð /ñ	/ô  ð #4ä48¸³J°<¸qð!Bó Cð Cð  #Ÿx™x¨›ˆH�VÒØ˜8Ñ#ô —9‘9Ð0Ó1ˆDÙÜ×(Ñ(×6Ñ6´s¸4³yÄ(×BSÑBS×BWÑBWÓX�Ø#'§<¡<´s <Ó#;×#EÑ#EÓ#G�˜Ò ä#+×#4Ñ#4×#:Ñ#:Ó#<×#FÑ#FÓ#H�˜Ñ àˆô
	ð �l‰l˜6 4Ó(ˆØˆ?Ù! #Ó&ˆCØ�N‰N˜9¨n¸cÐ-BˆNÔCðDò 	?ˆCà—<‘<  TÓ*ˆDØÑÙ% cÓ*�Ü˜d CÔ(Ø—‘  S§Y¡Y£[ MÐ2¸�Õ>ð	?ð Eò 	,ˆCØ—\‘\ # tÓ,ˆFØˆ~Øä˜&¤#Ô&Ø ˜�ä% f¨cÔ2á! #Ó&ˆCØ�L‰L˜3˜sŸy™y›{˜mÐ,Ô-Øò '�Ø—‘˜ZÔ(Ø—‘˜z°�Ô6Ø—
‘
˜:Õ&ð'ð �J‰J˜˜SŸY™Y›[˜MÐ*Õ+ð!	,ð& —<‘< 
¨DÓ1ˆØÐÜ˜(¤CÔ(Ø$˜:�Ü% h°
Ô;á! #Ó&ˆCØ�L‰L˜Ô&Ø�L‰L˜Ô#Ø#ò 7�Ø—‘˜x¨g�Õ6ð7à�J‰J�yÔ!Ø�J‰J�|Ô$àˆ?Ø�L‰L˜ÔáÜÐMØ ŸX™X hÓ/ñ0ó 1ð 1ð r   c                 óª   — | j                   }t        dddœ«      }|j                  d«       |j                  ddd|z  ¬«       |j	                  d«       y )	Nrƒ   r‚   )ústroke-linejoinústroke-linecapÚdefsÚstyleztext/cssz*{%s})rz   rW   )r�   r€   rS   ra   r\   )r<   r�   Údefault_styles      r   r´   z RendererSVG._write_default_styleÙ  sQ   € Ø—‘ˆÜ%Ø&Ø$ñ'&ó 'ˆð 	�‰�VÔØ�‰�w Z°gÀÑ6MˆÔNØ�
‰
�6Õr   c                 óN  — t         j                  d   }|€t        t        j                  «       «      }t        j                  «       }|j                  |j                  d«      «       |j                  t        |«      j                  d«      «       |› |j                  «       d d › �S )Nzsvg.hashsaltÚutf8é
   )
r°   r±   r‡   ÚuuidÚuuid4ÚhashlibÚsha256ÚupdateÚencodeÚ	hexdigest)r<   rz   ÚcontentÚsaltÚms        r   Ú_make_idzRendererSVG._make_idâ  s~   € Ü�|‰|˜NÑ+ˆØˆ<Ü”t—z‘z“|Ó$ˆDÜ�N‰NÓˆØ	�‰�—‘˜VÓ$Ô%Ø	�‰”�W“×$Ñ$ VÓ,Ô-Ø�˜Ÿ™› c rÐ*Ð+Ð,Ð,r   c                 óp   — |t        «       j                  dd«      j                  d| j                  «      z   S )NrG   rZ   r   )r   rk   rl   r™   )r<   Ú	transforms     r   Ú_make_flip_transformz RendererSVG._make_flip_transformë  s-   € Øœ8›:×+Ñ+¨A¨rÓ2×<Ñ<¸QÀÇÁÓLÑLÐLr   c                 óT  — |�t        |«      }|j                  «       }|�t        |«      }|j                  «       }|j                  «       |||f}| j                  j                  |«      }|€7| j                  d|«      }|j                  «       |||f|f| j                  |<   |S |\  }}|S )z,
        Create a new hatch pattern
        Úh)ÚtupleÚget_hatch_colorÚget_hatch_linewidthÚ	get_hatchr©   rÙ   r   Úget_hatch_path)r<   ÚgcÚrgbFaceÚedgeÚlwÚdictkeyÚoidÚ_s           r   Ú
_get_hatchzRendererSVG._get_hatchî  s·   € ð ÐÜ˜G“nˆGØ×!Ñ!Ó#ˆØÐÜ˜“;ˆDØ×#Ñ#Ó%ˆØ—<‘<“> 7¨D°"Ð5ˆØ�l‰l×Ñ˜wÓ'ˆØˆ;Ø—-‘-  WÓ-ˆCØ&(×&7Ñ&7Ó&9¸7ÀDÈ"Ð%MÈsÐ$SˆD�L‰L˜Ñ!ð ˆ
ð ‰FˆAˆsØˆ
r   c                 ó  — t        | j                  «      sy d}| j                  }|j                  d«       | j                  j	                  «       D �])  \  \  }}}}}|j                  d|dddt        |«      t        |«      ¬«       | j                  |t        «       j                  |«      j                  dd«      j                  d	|«      d
¬«      }|€d}	nt        |«      }	|j                  dddt        |dz   «      t        |dz   «      |	¬«       t        |«      t        |«      t        |«      dddœ}
|d   dk  rt        |d   «      |
d<   |j                  d|t        |
«      ¬«       |j                  d«       �Œ, |j                  d«       y )NéH   rð   ÚpatternÚuserSpaceOnUser,   )r^   ÚpatternUnitsr/   Úyr˜   r™   ç      ð?ç      ð¿r   F©ÚsimplifyÚnoneÚrectrG   )r/   r  r˜   r™   Úfillr‚   Úmiter)r  Ústrokeústroke-widthrï   rî   é   ústroke-opacityÚpath)rç   rñ   )rL   r©   r�   rS   Úvaluesr‡   Ú_convert_pathr   rk   rl   r   ra   r€   r\   )r<   Ú
HATCH_SIZEr�   r%  Úfacer!  r  r  Ú	path_datar  Úhatch_styles              r   r¾   zRendererSVG._write_hatches  sŒ  € Ü�4—<‘<Ô ØØˆ
Ø—‘ˆØ�‰�VÔØ-1¯\©\×-@Ñ-@Ó-Bó #	"Ñ)Ñ$ˆT�4˜  cØ�L‰LØØØ-Ø˜¤C¨
£OÜ˜:“ð ô (ð ×*Ñ*ØÜ“
ß‘�zÓ"§5¡5¨¨dÓ#3·I±I¸aÀÓ4LØð	 +ó  ˆIð
 ˆ|Ø‘ä˜t“}�Ø�N‰NØØ˜¤C¨
°1©Ó$5Ü˜: a™<Ó(Øð	 ô ô $ F›OÜ% f›oÜ$'¨£GØ&,Ø'.ñˆKð �a‰y˜1Š}Ü03°F¸1±I³�Ð,Ñ-Ø�N‰NØØÜ# KÓ0ð ô ð
 �J‰J�yÖ!ðG#	"ðH 	�
‰
�6Õr   c                 óÆ  — i }|j                  «       }|j                  «       �Ed| j                  ||«      › d�|d<   |�zt        |«      dk(  rl|d   dk7  rd|sbt	        |d   «      |d<   nP|€d	|d<   nHt        |dd «      d
k7  rt        |«      |d<   t        |«      dk(  r|d   dk7  r|st	        |d   «      |d<   |r/|j                  «       dk7  rt	        |j                  «       «      |d<   |j                  «       \  }}|�2dj                  d„ |D «       «      |d<   t	        t        |«      «      |d<   |j                  «       }|rŸ|j                  «       }t        |«      |d<   |s|d   dk7  rt	        |d   «      |d<   |dk7  rt	        |«      |d<   |j                  «       dk7  r|j                  «       |d<   |j                  «       dk7  rt        |j                  «          |d<   |S )z=Generate a style string from the GraphicsContext and rgbFace.Núurl(#rY   r  é   r#  r  úfill-opacityr  )r   r   r   Úopacityr×   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrp   rq   )rr   Úvals     r   rs   z.RendererSVG._get_style_dict.<locals>.<genexpr>G  s   è ø€ ò 26Ø*-Ô  ×%ñ26ùrt   zstroke-dasharrayzstroke-dashoffsetr!  r$  r"  rƒ   rî   r‚   rï   )Úget_forced_alphar	  r  rL   r0   r  r   Ú	get_alphaÚ
get_dashesrB   ÚfloatÚget_linewidthÚget_rgbÚget_joinstyleÚget_capstyleÚ_capstyle_d)	r<   r  r  rO   Úforced_alphaÚoffsetÚseqÚ	linewidthÚrgbs	            r   Ú_get_style_dictzRendererSVG._get_style_dict-  sí  € àˆà×*Ñ*Ó,ˆà�<‰<‹>Ð%Ø$ T§_¡_°R¸Ó%AÐ$BÀ!ÐDˆF�6‰NØÐ#¬¨G«¸Ò(9¸gÀa¹jÈCÒ>OÙ(Ü)9¸'À!¹*Ó)E��~Ò&àˆØ!'��v’ä˜  !˜Ó%¨Ò2Ü%,¨WÓ%5�F˜6‘NÜ˜“L AÒ%¨'°!©*¸Ò*;Ù ,Ü-=¸gÀa¹jÓ-I�F˜>Ñ*á˜BŸL™L›N¨cÒ1Ü 0°·±³Ó @ˆF�9Ñà—m‘m“o‰ˆ�Øˆ?Ø),¯©ñ 26Ø14ô26ó *6ˆFÐ%Ñ&ä*:¼5À»=Ó*IˆFÐ&Ñ'à×$Ñ$Ó&ˆ	ÙØ—*‘*“,ˆCÜ& s›|ˆF�8ÑÙ C¨¡F¨c¢MÜ+;¸CÀ¹FÓ+C�Ð'Ñ(Ø˜CÒÜ)9¸)Ó)D��~Ñ&Ø×ÑÓ! WÒ,Ø,.×,<Ñ,<Ó,>�Ð(Ñ)Ø�‰Ó  FÒ*Ü+6°r·±Ó7HÑ+I�Ð'Ñ(àˆr   c                 ó8   — t        | j                  ||«      «      S rp   )r€   rA  )r<   r  r  s      r   Ú
_get_stylezRendererSVG._get_styleZ  s   € Ü˜T×1Ñ1°"°gÓ>Ó?Ð?r   c                 óÌ  — |j                  «       }|j                  «       \  }}|�.| j                  |«      }| j                  |«      t	        |«      f}n.|�*|j
                  \  }}}}	| j                  ||	z   z
  }||||	f}ni S | j                  j                  |«      }
|
€:| j                  d|«      }|�||f|f| j                  |<   n||f| j                  |<   n|
\  }}dd|› d�iS )NÚpz	clip-pathr-  rY   )
Úget_clip_rectangleÚget_clip_pathr  r»   r‡   Úboundsr™   r¦   rÙ   r   )r<   r  Úcliprectrº   Úclippath_transr  r/   r  Úwr  Úclipr  r  s                r   Ú_get_clip_attrszRendererSVG._get_clip_attrs]  s  € Ø×(Ñ(Ó*ˆØ#%×#3Ñ#3Ó#5Ñ ˆ�.ØÐØ!×6Ñ6°~ÓFˆNØ×,Ñ,¨XÓ6¼¸NÓ8KÐL‰GØÐ!Ø!Ÿ™‰JˆAˆq�!�QØ—‘˜Q˜q™SÑ!ˆAØ˜!˜Q �l‰GàˆIØ�{‰{�‰˜wÓ'ˆØˆ<Ø—-‘-  WÓ-ˆCØÐ#Ø)1°>Ð(BÀCÐ'H�—‘˜GÒ$à(/° ~�—‘˜GÒ$à‰FˆAˆsØ˜u S E¨˜^Ð,Ð,r   c           
      ó  — t        | j                  «      sy | j                  }|j                  d«       | j                  j	                  «       D ]¥  \  }}|j                  d|¬«       t        |«      dk(  r-|\  }}| j                  ||d¬«      }|j                  d|¬«       nA|\  }}}	}
|j                  d	t        |«      t        |«      t        |	«      t        |
«      ¬
«       |j                  d«       Œ§ |j                  d«       y )Nrð   ÚclipPath©r^   é   Fr  r%  ©rç   r  ©r/   r  r˜   r™   )	rL   r¦   r�   rS   r&  r'  ra   r0   r\   )r<   r�   rL  r  rº   rJ  r*  r/   r  rK  r  s              r   r½   zRendererSVG._write_clipst  sô   € Ü�4—;‘;ÔØØ—‘ˆØ�‰�VÔØŸ™×+Ñ+Ó-ò 	#‰IˆD�#Ø�L‰L˜¨ˆLÔ,Ü�4‹y˜AŠ~Ø+/Ñ(�˜.Ø ×.Ñ.Ø˜n°uð /ó >�	à—‘˜v¨�Õ3à!‘
��1�a˜Ø—‘ØÜ& qÓ)Ü& qÓ)Ü*¨1Ó-Ü+¨AÓ.ð ô 0ð �J‰J�zÕ"ð	#ð  	�
‰
�6Õr   c                 óü   — |r| j                   j                  d|¬«       y | j                  j                  |d«      dz   | j                  |<   | j                   j                  d|› d| j                  |   d›�¬«       y )NÚgrP  r   rG   r  rç   )r�   rS   r¡   rÙ   )r<   r   Úgids      r   Ú
open_groupzRendererSVG.open_group‹  sl   € áØ�K‰K×Ñ˜c cÐÕ*à"Ÿl™l×.Ñ.¨q°!Ó4°qÑ8ˆD�L‰L˜‰OØ�K‰K×Ñ˜c¨¨¨1¨T¯\©\¸!©_¸QÐ,?Ð&@ÐÕAr   c                 ó:   — | j                   j                  d«       y )NrU  )r�   r\   )r<   r   s     r   Úclose_groupzRendererSVG.close_group“  s   € à�‰�‰˜Õr   c                 ó*   — t         j                  d    S )Nzimage.composite_image)r°   r±   rd   s    r   Úoption_image_nocompositez$RendererSVG.option_image_nocomposite—  s   € ä—<‘<Ð 7Ñ8Ð8Ð8r   c           
      óš   — |rdd| j                   | j                  f}nd }t        j                  |||||dg d¢d«      j	                  d«      S )Nç        é   )ó   Mó   Ló   Qó   Có   zFÚascii)r˜   r™   r   Úconvert_to_stringÚdecode)r<   r%  r  rL  r  Úsketchs         r   r'  zRendererSVG._convert_path›  sO   € áØ˜˜dŸj™j¨$¯+©+Ð6‰DàˆDÜ×&Ñ&Ø�)˜T 8¨V°QÚ*¨Eó3ç39±6¸'³?ð	Cr   c           	      ó  — | j                  |«      }|d u xr |j                  «       d u }|j                  xr |}| j                  |||||j	                  «       ¬«      }|j                  «       �,| j                  j                  dd|j                  «       i«        | j                  j                  dd|i| j                  |«      ¤d| j                  ||«      i¤Ž |j                  «       �| j                  j                  d«       y y )N)rL  r  rg  Úaú
xlink:hrefrç   rñ   )r%  )r  r
  Úshould_simplifyr'  Úget_sketch_paramsÚget_urlr�   rS   ra   rM  rC  r\   )	r<   r  r%  r  r  Útrans_and_fliprL  r  r*  s	            r   Ú	draw_pathzRendererSVG.draw_path¥  sú   € à×2Ñ2°9Ó=ˆØ˜4�Ò? B×$5Ñ$5Ó$7¸4Ð$?ˆØ×'Ñ'Ò0¨DˆØ×&Ñ&Ø�. t°hØ×'Ñ'Ó)ð 'ó +ˆ	ð �:‰:‹<Ð#Ø�K‰K×Ñ˜c L°"·*±*³,Ð#?Ô@Øˆ�‰×Ññ 	@ ið 	@°4×3GÑ3GÈÓ3Kñ 	@Ø"&§/¡/°"°gÓ">ó	@à�:‰:‹<Ð#Ø�K‰K�O‰O˜CÕ ð $r   c           	      óà  — t        |j                  «      sy | j                  }| j                  ||t	        «       j                  dd«      z   d¬«      }| j                  ||«      }	|t        |	«      f}
| j                  j                  |
«      }t        |	j                  «       D ��ci c]  \  }}|j                  d«      r||“Œ c}}«      }	|€X| j                  d|
«      }|j                  d«       |j                  d|||	¬	«       |j                  d«       || j                  |
<    |j                  di | j!                  |«      ¤Ž |j#                  «       �,| j                  j                  dd|j#                  «       i«       | j%                  |«      }dd|› �i}dd| j&                  dz  | j(                  dz  f}|j+                  ||d¬«      D ]]  \  }}t        |«      sŒ|dd  \  }}t-        |«      |d<   t-        |«      |d<   | j/                  ||«      |d<   |j                  d|¬«       Œ_ |j#                  «       �| j                  j                  d«       |j                  d
«       y c c}}w )Nr  r  Fr  r!  rÿ   rð   r%  )r^   rç   rñ   rU  ri  rj  ú#r   r  )rL  r  éþÿÿÿr/   r  rñ   Úuser   ©rU  )rL   Úverticesr�   r'  r   rk   rA  r€   r§   rÙ   rM   Ú
startswithr   rS   ra   r\   rM  rm  r  r˜   r™   Úiter_segmentsr0   rC  )r<   r  Úmarker_pathÚmarker_transr%  Útransr  r�   r*  rñ   r  r  rQ   rR   rn  rO   rL  ru  Úcoder/   r  s                        r   Údraw_markerszRendererSVG.draw_markersµ  sA  € ô �4—=‘=Ô!Øà—‘ˆØ×&Ñ&ØØœ8›:×+Ñ+¨C°Ó6Ñ6Øð 'ó ˆ	ð ×$Ñ$ R¨Ó1ˆØœm¨EÓ2Ð3ˆØ�m‰m×Ñ Ó(ˆÜ°·±³÷ 9©¨¨1Ø!"§¡¨hÔ!7ð  ! !™tó 9ó :ˆð ˆ;Ø—-‘-  WÓ-ˆCØ�L‰L˜Ô Ø�N‰N˜6 c¨Y¸eˆNÔDØ�J‰J�vÔØ%(ˆD�M‰M˜'Ñ"àˆ�‰Ñ5˜D×0Ñ0°Ó4Ò5Ø�:‰:‹<Ð#Ø�K‰K×Ñ˜c L°"·*±*³,Ð#?Ô@Ø×2Ñ2°5Ó9ˆØ ! C 5 	Ð*ˆØ�1�d—j‘j ‘m T§[¡[°¡^Ð4ˆØ"×0Ñ0Ø T°Eð 1ó ;ò 	5‰NˆH�dä�8�}Ø  �}‘��1Ü.¨qÓ1��s‘Ü.¨qÓ1��s‘Ø"&§/¡/°"°gÓ">��w‘Ø—‘˜u¨V�Õ4ð	5ð �:‰:‹<Ð#Ø�K‰K�O‰O˜CÔ Ø�
‰
�3�ùó59s   Â$I*
c                 ó¢  •— t        |«      dkD  rt        |d   j                  «      nd}| j                  |||||«      }|d|z  z   dz   |dz   |z  k  }|st        ‰ | �  |||||||||	|
|||«      S | j
                  }g }|j                  d«       t        | j                  |||«      «      D ]—  \  }\  }}t        |j                  «       «      j                  dd«      }| j                  ||d¬	«      }d
j                  | j                  || j                  d|«      «      }|j!                  d||¬«       |j#                  |«       Œ™ |j%                  d«       | j'                  |||||||	|
|||«      D ]Ç  \  }}}}}|j)                  «       }|�|j                  dd|i¬«       | j+                  |«      }|r |j                  di |¤Ž d|› �t-        |«      t-        | j.                  |z
  «      | j1                  ||«      dœ}|j!                  d|¬«       |r|j%                  d«       |€Œ·|j%                  d«       ŒÉ | xj                  dz  c_        y )Nr   é	   r#  é   rð   r  r  Fr  zC{:x}_{:x}_{}rA   r%  )r^   rç   ri  rj  r   rU  rq  )rj  r/   r  rñ   rs  rG   rt  )rL   ru  Ú_iter_collection_uses_per_pathr¬   Údraw_path_collectionr�   rS   Ú	enumerateÚ_iter_collection_raw_pathsr   Ú
get_matrixrk   r'  rw   r¨   r   ra   rK   r\   Ú_iter_collectionrm  rM  r0   r™   rC  )!r<   r  Úmaster_transformÚpathsÚall_transformsÚoffsetsÚoffset_transÚ
facecolorsÚ
edgecolorsÚ
linewidthsÚ
linestylesÚantialiasedsÚurlsÚoffset_positionÚlen_pathÚuses_per_pathÚshould_do_optimizationr�   Ú
path_codesÚir%  r  rç   r  ÚxoÚyoÚpath_idÚgc0r  ÚurlÚ
clip_attrsrO   r¸   s!                                   €r   r�  z RendererSVG.draw_path_collectionà  s{  ø€ ô .1°«Z¸!ª^”3�u˜Q‘x×(Ñ(Ô)ÀˆØ×;Ñ;Ø�> 7¨J¸
óDˆð �q˜=Ñ(Ñ(¨1Ñ,°¸1±ÀÑ/MÑMð 	á%Ü‘7Ñ/ØÐ$ e¨^Ø˜ z°:Ø˜J¨°dØó	!ð !ð —‘ˆØˆ
Ø�‰�VÔÜ$-¨d×.MÑ.MØ  %¨ó/9ó %:ò 	#Ñ ˆAÑ ��iä  ×!5Ñ!5Ó!7Ó8×>Ñ>¸sÀDÓIˆIØ×"Ñ" 4¨¸UÐ"ÓCˆAØ!×(Ñ(Ø×(Ñ(¨!¨T¯]©]¸2¸qÓ-AóCˆCà�N‰N˜6 c¨QˆNÔ/Ø×Ñ˜cÕ"ð	#ð 	�
‰
�6Ôà-1×-BÑ-BØ�J ¨Ø˜J¨
°JØ˜d Oó.5ò 	 Ñ)ˆB��G˜S 'ð —+‘+“-ˆCØˆØ—‘˜S¨,¸Ð)<�Ô=Ø×-Ñ-¨cÓ2ˆJÙØ�—‘Ñ/ JÒ/à ! ' ˜mÜ% bÓ)Ü% d§k¡k°BÑ&6Ó7ØŸ™¨¨gÓ6ñ	ˆFð �N‰N˜5¨ˆNÔ0ÙØ—
‘
˜3”Ø‰Ø—
‘
˜3•ð)	 ð, 	× Ò  AÑ%Ö r   c                 ó^  — t        j                  |d¬«      }|d   dk(  ry | j                  }|j                  d«       t	        d«      D �]2  }||   \  }}||dz   dz     \  }}	||dz   dz     \  }
}||   }||
k(  r|}|}n?|	|k(  r|}|	}n5|	|z
  ||
z
  z  }|	||z  z
  }d|z   }|||z  z
  }| |z   ||z
  z  }||z  |z   }|j                  d	d
| j
                  d›d|d›�dt        |«      t        |«      t        |«      t        |«      ¬«       |j                  ddt        t        |«      t        |d   «      dœ«      ¬«       |j                  ddt        t        |«      ddœ«      ¬«       |j                  d	«       �Œ5 |j                  d«       dt        «      › dt        «      › dt        «      › dt        	«      › dt        
«      › dt        «      › d�}|j                  d|t        |«      dddœ¬«       |j                  ddddd d!œ¬«       |j                  d|d"| j
                  d›d#�dd$œ¬«       |j                  d|d"| j
                  d›d%�d&dd'œ¬«       |j                  d|d"| j
                  d›d(�d&dd'œ¬«       |j                  d«       | xj
                  dz  c_        y ))Nr   )ÚaxisrZ   rð   r#  rG   rQ  r  ÚlinearGradientÚGRr/   r  rç   r  )r^   ÚgradientUnitsÚx1Úy1Úx2Úy2ÚstopÚ1)z
stop-colorzstop-opacity)r=  rñ   r,   zM r×   z L rH   z Zr%  Ú
crispEdges)rç   r  r/  úshape-renderingr   rU  r  zurl(#colorMat))r!  r"  r©  Úfilterzurl(#GRz_0))rç   r  r©  z_1)zurl(#colorAdd))rç   r  rª  r©  z_2))r�   Úaverager�   rS   Úranger«   r0   ra   r€   r   r\   )r<   Útransformed_pointsÚcolorsÚ	avg_colorr�   r–  r¢  r£  r¤  r¥  Úx3Úy3Ú
rgba_colorÚxbÚybÚm1Úb1Úm2Úb2Údpaths                       r   Ú_draw_gouraud_trianglez"RendererSVG._draw_gouraud_triangle  s]  € ô —J‘J˜v¨AÔ.ˆ	Ø�R‰=˜AÒàà—‘ˆØ�‰�VÔÜ�q“ó &	)ˆAØ'¨Ñ*‰FˆB�Ø'¨¨Q©°!©Ñ4‰FˆB�Ø'¨¨Q©°!©Ñ4‰FˆB�Ø ™ˆJà�RŠxØ�Ø‘Ø�r’Ø�Ø‘à˜2‘g " r¡'Ñ*�Ø˜2 ™7‘^�Ø˜R‘x�[�Ø˜2 ™7‘^�Ø�c˜B‘h 2¨¡7Ñ+�Ø˜"‘W˜r‘\�à�L‰LØ Ø˜×)Ñ)¨!Ð,¨A¨a°¨UÐ3Ø.Ü# BÓ'Ô,<¸RÓ,@Ü# BÓ'Ô,<¸RÓ,@ð ô Bð �N‰NØØÜ#Ü")¨)Ó"4Ü$4°ZÀ±^Ó$Dñ%Fó Gð ô Hð �N‰NØØÜ#´7¸:Ó3FØ47ñ%9ó :ð ô ;ð �J‰JÐ'Ö(ðM&	)ðP 	�
‰
�6Ôð Ô& rÓ*Ð+¨1Ô-=¸bÓ-AÐ,BØÔ'¨Ó+Ð,¨AÔ.>¸rÓ.BÐ-CØÔ% bÓ)Ð*¨!Ô,<¸RÓ,@Ð+AÀðEˆð 	�‰ØØÜ# IÓ.Ø$'Ø'3ñ5ð 	ô 	6ð 	�‰ØØ"(Ø(+Ø+7Ø"2ñ4ð 	ô 	5ð 	�‰ØØØ% d×&7Ñ&7¸Ð%:¸#Ð>Ø'3ñ5ð 	ô 	6ð 	�‰ØØØ% d×&7Ñ&7¸Ð%:¸#Ð>Ø.Ø'3ñ5ð 	ô 	6ð 	�‰ØØØ% d×&7Ñ&7¸Ð%:¸#Ð>Ø.Ø'3ñ5ð 	ô 	6ð 	�
‰
�3Œà×Ò˜QÑÖr   c                 ó@  — | j                   } |j                  di | j                  |«      ¤Ž |j                  «       }| j	                  |«      }| j
                  s~d| _        |j                  dd¬«       |j                  dddid	d
dd¬«       |j                  d«       |j                  dd¬«       |j                  dddid¬«       |j                  d«       t        ||«      D ]&  \  }}| j                  |j                  |«      |«       Œ( |j                  d«       y )NrU  Trª  ÚcolorAddrP  ÚfeCompositeÚinÚSourceGraphicÚBackgroundImageÚ
arithmeticr§  )rO   Úin2ÚoperatorÚk2Úk3ÚcolorMatÚfeColorMatrixrz   rn   z61 0 0 0 0 
0 1 0 0 0 
0 0 1 0 0 
1 1 1 1 0 
0 0 0 0 1 )rO   r&  rt  )r�   rS   rM  Úfrozenr  rª   ra   r\   Úziprº  r  )	r<   r  Útriangles_arrayÚcolors_arrayr  r�   rn  Úpointsr®  s	            r   Údraw_gouraud_trianglesz"RendererSVG.draw_gouraud_triangles‚  s-  € à—‘ˆØˆ�‰Ñ5˜D×0Ñ0°Ó4Ò5Ø×$Ñ$Ó&ˆ	Ø×2Ñ2°9Ó=ˆà× Ò Ø $ˆDÔØ�L‰LØØð ô ð �N‰NØØ˜oÐ.Ø%Ø%Ø˜3ð ô  ð �J‰J�xÔ à�L‰LØØð ô ð �N‰NØØ Ð)ØSð ô Uð �J‰J�xÔ ä! /°<Ó@ò 	R‰NˆF�FØ×'Ñ'¨×(@Ñ(@ÀÓ(HÈ&ÕQð	Rà�
‰
�3�r   c                  ó   — yre   rc   rd   s    r   Úoption_scale_imagezRendererSVG.option_scale_image£  ó   € àr   c                 ó    — | j                   dz  S )Nç      R@)rž   rd   s    r   Úget_image_magnificationz#RendererSVG.get_image_magnification§  s   € Ø�~‰~ Ñ$Ð$r   c           
      óæ  — |j                   d d \  }}|dk(  s|dk(  ry | j                  |«      }|r | j                  j                  d i |¤Ž |j	                  «       }	|	�| j                  j                  dd|	i¬«       i }
|j                  «       }t        j                  d   r�t        «       }t        j                  |«      j                  |d¬	«       |xs  | j                  d
|j                  «       «      }dt        j                  |j                  «       «      j!                  d«      z   |
d<   n”| j"                  €t%        d«      ‚| j"                  › dt'        | j(                  «      › d�}t*        j-                  d|«       t        j                  |«      j                  |«       |xs d| j                  d
|«      z   }||
d<   ||
d<   |€Œd|z  | j.                  z  }d|z  | j.                  z  }| j                  j1                  d
t3        ddd| ffg«      t5        |«      t5        | j6                  |z
  |z
   «      t5        |«      t5        |«      |
¬«       nà|j9                  «       }|dk7  rt5        |«      |
d<   t;        «       j=                  d|z  d|z  «      |z   t;        «       j?                  ||«      j=                  dd«      j?                  d| j6                  «      z   }t3        d|jA                  «       fg«      |
d<   d|
d<   | j                  j1                  d
t5        |«      t5        |«      |
¬«       |	�| j                  jC                  d«       |r| j                  jC                  d«       y y )!NrQ  r   rU  ri  rj  r   zsvg.image_inlineÚpng)rw   Úimagezdata:image/png;base64,
rd  zLCannot save image data to filesystem when writing SVG to an in-memory bufferz.imagez.pngz$Writing image file for inclusion: %sÚIm_r^   rÒ  )rk   )rG   rZ   rl   )r  r/   r  r˜   r™   rO   r  r0  r  r]  rn   r  z5image-rendering:crisp-edges;image-rendering:pixelatedrñ   )r˜   r™   rO   rt  )"ÚshaperM  r�   rS   rm  Úget_gidr°   r±   r   r   Ú	fromarrayÚsaver   ÚgetvalueÚbase64Ú	b64encoderf  r    rå   Únextr¤   Ú_logr‰   rž   ra   r|   r0   r™   r4  r   rk   rl   rÈ  r\   )r<   r  r/   r  Úimr  r  rK  rœ  r›  rO   r  ÚbufÚfilenameÚalphaÚflippeds                   r   Ú
draw_imagezRendererSVG.draw_imageª  sD  € ð �x‰x˜˜ˆ|‰ˆˆ1à�Š6�Q˜!’VØà×)Ñ)¨"Ó-ˆ
Ùð ˆD�K‰K×ÑÑ0 ZÒ0à�j‰j‹lˆØˆ?Ø�K‰K×Ñ˜c¨<¸Ð*=ÐÔ>àˆØ�j‰j‹lˆÜ�<‰<Ð*Ò+Ü“)ˆCÜ�O‰O˜BÓ×$Ñ$ S°Ð$Ô7ØÒ?˜Ÿ™ w°·±³Ó?ˆCà*Ü× Ñ  §¡£Ó0×7Ñ7¸Ó@ñAð �<Ò ð �}‰}Ð$Ü ð "Fó Gð GàŸ-™-˜¨¬t°D×4GÑ4GÓ/HÐ.IÈÐNˆHÜ�I‰IÐ<¸hÔGÜ�O‰O˜BÓ×$Ñ$ XÔ.ØÒA˜ §¡¨w¸Ó!AÑAˆCØ#+ˆF�<Ñ Øˆˆt‰àÐØ�q‘˜4Ÿ>™>Ñ)ˆAØ�q‘˜4Ÿ>™>Ñ)ˆAà�K‰K×ÑØÜ-Ø&¨°q¸1¸"°gÐ(>ð/@ó Aä" 1Ó%Ü" T§[¡[°1¡_°qÑ%8Ð#9Ó:Ü& qÓ)Ô2BÀ1Ó2EØð  õ ð —L‘L“NˆEØ˜Š|Ü$4°UÓ$;��yÑ!ô “
× Ñ   q¡¨#°©'Ó2Øñä“
ß‘˜1˜a“ß‘�s˜DÓ!ß‘˜3 §¡Ó,ñ-ð ô #6Ø˜GŸN™NÓ,Ð-Ð.ó#0ˆF�;Ñð,ð �7‰Oð �K‰K×ÑØÜ& qÓ)Ô2BÀ1Ó2EØð  ô ð
 ˆ?Ø�K‰K�O‰O˜CÔ ÙØ�K‰K�O‰O˜CÕ ð r   c           	      ór  — | j                   }|r©|j                  d«       |j                  «       D ]X  \  }\  }}| j                  |«      }| j	                  t        |dz  |«      d¬«      }|j                  d||t        dg«      ¬«       ŒZ |j                  d«       | j                  j                  |«       yy)	zn
        Emit definitions for not-yet-defined glyphs, and record them as having
        been defined.
        rð   é@   Fr  r%  )rk   )g      �?)r^   rç   r  N)r�   rS   rM   Ú_adjust_char_idr'  r   ra   r|   r\   r®   rú   )r<   Úglyph_map_newr�   Úchar_idru  Úcodesr*  s          r   Ú_update_glyph_map_defsz"RendererSVG._update_glyph_map_defsø  sÀ   € ð
 —‘ˆÙØ�L‰L˜Ô Ø.;×.AÑ.AÓ.Cò KÑ*�Ñ*˜( EØ×.Ñ.¨wÓ7�à ×.Ñ.Ü˜ B™¨Ó.¸ð /ó @�	à—‘Ø˜w¨)Ü1Ð3GÐ2HÓIð õ KðKð �J‰J�vÔØ�O‰O×"Ñ" =Õ1ð r   c                 ó&   — |j                  dd«      S )Nz%20r  r   )r<   rë  s     r   ré  zRendererSVG._adjust_char_id  s   € Ø�‰˜u cÓ*Ð*r   c	           	      óœ  — | j                   }	|	j                  |«       | j                  }
| j                  }t	        |j                  «       «      }|j                  «       }i }|dk7  r||d<   |j                  «       r|j                  «       n|j                  «       d   }|dk7  rt        |«      |d<   ||j                  z  }t        |«      t        d||ffd| ffd|| ffg«      d	œ}|	j                  d
|¬«       |su|j                  |«      }|j                  |||
d¬«      }|\  }}}| j!                  |«       |D ]2  \  }}}}|	j#                  dt        d||ffd|ffg«      dd|› �i¬«       Œ4 nË|dk(  r|j%                  |||
d¬«      }n|j'                  |||
d¬«      }|\  }}}| j!                  |«       |D ]C  \  }}}}| j)                  |«      }|	j#                  dt        d||ffd|ffg«      dd|› �i¬«       ŒE |D ]7  \  }}t+        ||«      }| j-                  |d¬«      }|	j#                  d|¬«       Œ9 |	j/                  d
«       y )Nú#000000r  r#  rG   r0  rl   rm   rk   ©rñ   r  rU  r   T)Ú	glyph_mapÚreturn_new_glyphs_onlyrs  rj  rq  )r  rO   ÚTeXFr  r%  rR  )r�   rU   r®   Ú
_text2pathr   r8  Úget_size_in_pointsr3  r4  r0   Ú
FONT_SCALEr€   r|   rS   Ú	_get_fontÚget_glyphs_with_fontrí  ra   Úget_glyphs_texÚget_glyphs_mathtextré  r   r'  r\   ) r<   r  r/   r  r   ÚpropÚangleÚismathÚmtextr�   rò  Ú	text2pathÚcolorÚfontsizerñ   rä  Ú
font_scalerO   ÚfontÚ_glyphsÚ
glyph_inforê  ÚrectsÚglyph_idÚ	xpositionÚ	ypositionrk   rë  Úvertsrì  r%  r*  s                                    r   Ú_draw_text_as_pathzRendererSVG._draw_text_as_path  sÌ  € à—‘ˆà�‰�qÔà—O‘Oˆ	à—O‘Oˆ	Ü˜Ÿ
™
›Ó%ˆØ×*Ñ*Ó,ˆàˆØ�IÒØ!ˆE�&‰MØ"$×"5Ñ"5Ô"7�—‘”¸R¿Z¹Z»\È!¹_ˆØ�AŠ:Ü/°Ó6ˆE�)ÑØ 	× 4Ñ 4Ñ4ˆ
ä" 5Ó)Ü,Ø˜q !˜fÐ%Ø˜U˜F˜9Ð%Ø˜:¨
 {Ð3Ð4ð.6ó 7ñ
ˆð 	�‰�S ˆÔ(áØ×&Ñ& tÓ,ˆDØ×4Ñ4Ø�a 9ÀTð 5ó KˆGà/6Ñ,ˆJ˜ uØ×'Ñ'¨Ô6à9Cò ;Ñ5�˜) Y°Ø—‘ØÜ1Ø$ y°)Ð&<Ð=Ø  5 (Ð+ð3ó ð )¨A¨h¨Z¨.Ð9ð õ ;ñ;ð ˜ŠØ#×2Ñ2Ø˜! yÈð 3ó O‘ð $×7Ñ7Ø˜! yÈð 8ó O�à/6Ñ,ˆJ˜ uØ×'Ñ'¨Ô6à8Bò :Ñ4�˜ I¨uØ×.Ñ.¨wÓ7�Ø—‘ØÜ1Ø$ y°)Ð&<Ð=Ø  5 (Ð+ð3ó ð )¨A¨g¨Y¨-Ð8ð õ :ð:ð !&ò 4‘��uÜ˜E 5Ó)�Ø ×.Ñ.¨t¸eÐ.ÓD�	Ø—‘˜v¨�Õ3ð4ð
 	�
‰
�3�r   c	           
      ó’
  ‡'‡(— | j                   }	t        |j                  «       «      }
i }i }|
dk7  r|
|d<   |j                  «       r|j	                  «       n|j                  «       d   }|dk7  rt        |«      |d<   |�s{i }|j                  «       dk7  r|j                  «       |d<   |j                  «       dk7  r|j                  «       |d<   t        j                  |j                  «          }|d	k7  r|› |d
<   d„ Š(ˆ(fd„Š'ˆ'fd„}t        |j                  «       «      › d�|d<   dj                  t        j                   ||«      «      «      |d<   |j                  «       dk7  r|j                  «       |d<   t!        i |¥|¥«      |d<   |�r@|dk(  s|j#                  «       dk(  �r'|j%                  «       }|j'                  |j)                  «       «      \  }}| j*                  |z
  }t-        j.                  |«      }t-        j0                  t-        j2                  |«      t-        j4                  |«      g«      }t-        j6                  |||z
  ||z
  g«      }|||d   z  z   }|||d   z  z   }ddddœ}||j9                  «          |d<   t        |«      |d<   t        |«      |d<   t!        i |¥|¥«      |d<   t;        d| ||ffg«      |d<   nt;        d||ffd| ffg«      |d<   |	j=                  d ||¬!«       y |	j?                  |«       | j@                  jB                  jE                  |d"|«      \  }}}}}|	jG                  d#t!        i |¥|¥«      t;        d||ffd| ffg«      ¬$«       |	jG                  d «       i }|D ]ô  \  }}} }!}"t        jH                  |«      }#i }|#jJ                  dk7  r|#jJ                  |d<   |#jL                  dk7  r|#jL                  |d<   |#jN                  d	k7  r|#jN                  › |d
<   t        |«      › d�|d<   |#jP                  ›|d<   |#jR                  dk7  r|#jR                  |d<   t!        i |¥|¥«      }$| d%k(  rd&} |jU                  |$g «      jW                  |!|" | f«       Œö |jY                  «       D ]Q  \  }$}%|%j[                  «        |%D ]7  \  }}}&|	j=                  d't]        |&«      t        |«      t        |«      |$¬(«       Œ9 ŒS |	j_                  d «       |D ]E  \  }}}}|	j=                  d)t        |«      t        | dz
  «      t        |«      t        |«      ¬*«       ŒG |	j_                  d#«       y )+Nrð  r  r#  rG   r0  Únormalz
font-stylezfont-varianti�  zfont-weightc                 ó   — | dv rdS | S )N)Úsansz
sans serifz
sans-serifrc   )r•   s    r   Ú_normalize_sansz7RendererSVG._draw_text_as_text.<locals>._normalize_sanss  s   € Ø'+Ð/EÑ'E�|ÐOÈ4ÐOr   c              3   ó¦   •K  —  ‰| «      } | t         j                  v r.t         j                  j                  | «      D ]  } ‰|«      –— Œ | –— y ­wrp   )ÚfmÚfont_family_aliasesÚFontManagerÚ_expand_aliases)Úfnr•   r  s     €r   Ú_expand_family_entryz<RendererSVG._draw_text_as_text.<locals>._expand_family_entryv  sQ   øè ø€ Ù$ RÓ(�àœ×/Ñ/Ñ/ô !#§¡× >Ñ >¸rÓ Bò 4˜Ù-¨dÓ3Ó3ð4ð “ùs   ƒAAc                 ó¤   •— | j                  «       D ��cg c].  } ‰|«      D ]!  }|t        j                  v r|n
t        |«      ‘Œ# Œ0 c}}S c c}}w rp   )Ú
get_familyr  r  Úrepr)rü  Úentryr•   r  s      €r   Ú_get_all_quoted_namesz=RendererSVG._draw_text_as_text.<locals>._get_all_quoted_names‚  s`   ø€ ð &*§_¡_Ó%6÷AØ!Ù$8¸Ó$?òAà ð !%¬×(>Ñ(>Ñ >™ÄDÈÃJÑNð AÐNó Að Aùó As   •3AÚpxz	font-sizez, zfont-familyzfont-stretchrñ   r   ÚanchorrS   r\   Úmiddle)ÚleftÚrightÚcenterztext-anchorr/   r  rm   r  rl   rW   r   r  rU  rñ  é    é    Útspan)r/   r  rñ   r  rS  )0r�   r   r8  r3  r4  r0   Ú	get_styleÚget_variantr  Úweight_dictÚ
get_weightÚget_sizerB   r­   ÚfromkeysÚget_stretchr€   Úget_rotation_modeÚget_transformr  Úget_unitless_positionr™   r�   Údeg2radÚarrayÚsinÚcosÚdotÚget_har|   ra   rU   rõ  Úmathtext_parserÚparserS   ÚttfFontPropertyrñ   ÚvariantÚweightr•   ÚstretchÚ
setdefaultrK   rM   ÚsortÚchrr\   ))r<   r  r/   r  r   rü  rý  rþ  rÿ  r�   r  Ú
font_styleÚcolor_stylerä  rO   r;  r  r  ÚaxÚayÚ	angle_radÚdir_vertÚv_offsetÚha_mpl_to_svgr˜   r™   ÚdescentÚglyphsr  Úspansr  r  ÚthetextÚnew_xÚnew_yr  rñ   ÚcharsÚtr  r  s)                                          @@r   Ú_draw_text_as_textzRendererSVG._draw_text_as_textU  s€  ù€ ð —‘ˆä˜Ÿ
™
›Ó%ˆØˆ
ØˆØ�IÒØ"'ˆK˜Ñà"$×"5Ñ"5Ô"7�—‘”¸R¿Z¹Z»\È!¹_ˆØ�AŠ:Ü%5°eÓ%<ˆK˜	Ñ"âØˆFð �~‰~Ó 8Ò+Ø+/¯>©>Ó+;�
˜<Ñ(Ø×ÑÓ! XÒ-Ø-1×-=Ñ-=Ó-?�
˜>Ñ*Ü—^‘^ D§O¡OÓ$5Ñ6ˆFØ˜Š}Ø/5¨h�
˜=Ñ)òPô
ôAô *:¸$¿-¹-»/Ó)JÐ(KÈ2Ð&NˆJ�{Ñ#à(,¯	©	Ü—‘Ñ3°DÓ9Ó:ó)ˆJ�}Ñ%ð ×ÑÓ! XÒ-Ø-1×-=Ñ-=Ó-?�
˜>Ñ*Ü+Ð,I¨zÐ,I¸[Ð,IÓJˆF�7‰Oâ˜% 1š*¨×(?Ñ(?Ó(AÀXÓ(Mð
 "×/Ñ/Ó1�	Ø"×,Ñ,¨U×-HÑ-HÓ-JÓK‘��BØ—[‘[ 2Ñ%�ô
 ŸJ™J uÓ-�	ÜŸ8™8¤R§V¡V¨IÓ%6¼¿¹¸yÓ8IÐ$JÓK�ÜŸ6™6 (¨a°"©f¸¸B¹Ð,@ÓA�Ø˜( X¨a¡[Ñ0Ñ0�Ø˜( X¨a¡[Ñ0Ñ0�à)0¸5Ø+3ñ!5�à,9¸%¿,¹,».Ñ,I�
˜=Ñ)ä.¨rÓ2��s‘Ü.¨rÓ2��s‘Ü"/Ð0M°:Ð0MÀÐ0MÓ"N��w‘Ü&9Ø  ¨¨BÐ/Ð0ð;2ó '3��{Ò#ô ':Ø  1 a &Ð)Ø  ˜yÐ)ð;+ó ',��{Ñ#ð �N‰N˜6 1¨VˆNÕ4ð �N‰N˜1Ôð —‘×/Ñ/×5Ñ5°a¸¸TÓBñ 2ˆE�6˜7 F¨Eð
 �L‰L˜Ü,Ð-J°
Ð-J¸kÐ-JÓKÜ#6Ø)¨A¨q¨6Ð2Ø&¨%¨¨	Ð2ð84ó $5ð ô ð �L‰L˜Ô ð ˆEØ9?ò MÑ5��h ¨°Ü×*Ñ*¨4Ó0�Ø�
à—;‘; (Ò*Ø/4¯{©{�J˜|Ñ,Ø—=‘= HÒ,Ø16·±�J˜~Ñ.Ø—<‘< 3Ò&Ø38·<±<°.�J˜}Ñ-Ü-=¸hÓ-GÐ,HÈÐ*K�
˜;Ñ'Ø/4¯z©z¨n�
˜=Ñ)Ø—=‘= HÒ,Ø16·±�J˜~Ñ.Ü%Ð&C¨Ð&C°{Ð&CÓD�Ø˜b’=Ø"�GØ× Ñ  ¨Ó+×2Ñ2°E¸E¸6À7Ð3KÕLð#Mð& !&§¡£ò %‘��uØ—
‘
”Ø$ò %‘G�A�q˜!Ø—N‘NØÜ˜A›Ü*¨1Ó-Ü*¨1Ó-Ø#ð #õ %ñ%ð%ð �J‰J�vÔà',ò Ñ#��1�e˜VØ—‘ØÜ& qÓ)Ü&¨ r¨!¡tÓ,Ü*¨5Ó1Ü+¨FÓ3ð õ ðð �J‰J�s�Or   c	           
      óú  — | j                  |«      }	|	r | j                  j                  di |	¤Ž |j                  «       �,| j                  j                  dd|j                  «       i«       t        j
                  d   dk(  r| j                  ||||||||«       n| j                  ||||||||«       |j                  «       �| j                  j                  d«       |	r| j                  j                  d«       y y )NrU  ri  rj  zsvg.fonttyper%  rt  )	rM  r�   rS   rm  r°   r±   r  rP  r\   )
r<   r  r/   r  r   rü  rý  rþ  rÿ  rœ  s
             r   Ú	draw_textzRendererSVG.draw_textò  sØ   € ð ×)Ñ)¨"Ó-ˆ
Ùð ˆD�K‰K×ÑÑ0 ZÒ0à�:‰:‹<Ð#Ø�K‰K×Ñ˜c L°"·*±*³,Ð#?Ô@ä�<‰<˜Ñ'¨6Ò1Ø×#Ñ# B¨¨1¨a°°u¸fÀeÕLà×#Ñ# B¨¨1¨a°°u¸fÀeÔLà�:‰:‹<Ð#Ø�K‰K�O‰O˜CÔ áØ�K‰K�O‰O˜CÕ ð r   c                  ó   — yre   rc   rd   s    r   ÚflipyzRendererSVG.flipy	  rÐ  r   c                 ó2   — | j                   | j                  fS rp   )r˜   r™   rd   s    r   Úget_canvas_width_heightz#RendererSVG.get_canvas_width_height  s   € à�z‰z˜4Ÿ;™;Ð&Ð&r   c                 ó<   — | j                   j                  |||«      S rp   )rõ  Úget_text_width_height_descent)r<   r   rü  rþ  s       r   rX  z)RendererSVG.get_text_width_height_descent  s   € à�‰×<Ñ<¸QÀÀfÓMÐMr   )Nr  rp   )NNNN)FN)%rf   rg   rh   r>   r»   r¿   r³   r´   r   r  r  r¾   rA  rC  rM  r½   rW  rY  r[  r'  ro  r|  r�  rº  rÍ  rÏ  rÓ  ræ  rí  ré  r  rP  rR  rT  rV  rX  Ú__classcell__©r¸   s   @r   r’   r’   !  sÖ   ø„ ð&$Ø!ö&$òP-òòy1òvò-òMòò&*òX+òZ@ò-ò.ó.Bòò9ð GKØ!óCó!ð" GKó)ôV8&òtfòPòBò%óL!ò\2ò&+óEóN[óz!ò.ò'öNr   r’   c                   óF   ‡ — e Zd ZdddœZdZdddœd„Zd„ Zd„ Zˆ fd	„Zˆ xZ	S )
ÚFigureCanvasSVGzScalable Vector Graphics)r–   Úsvgzr  N)Úbbox_inches_restorer“   c                ó  — t        j                  |dd¬«      5 }t        j                  |«      s t        j                  d«      |«      }| j
                  j                  }d| j
                  _        | j
                  j                  «       \  }}|dz  |dz  }	}t        | j
                  |||t        ||	|||¬«      |¬«      }
| j
                  j                  |
«       |
j                  «        ddd«       y# 1 sw Y   yxY w)a  
        Parameters
        ----------
        filename : str or path-like or file-like
            Output target; if a string, a file will be opened for writing.

        metadata : dict[str, Any], optional
            Metadata in the SVG file defined as key-value pairs of strings,
            datetimes, or lists of strings, e.g., ``{'Creator': 'My software',
            'Contributor': ['Me', 'My Friend'], 'Title': 'Awesome'}``.

            The standard keys and their value types are:

            * *str*: ``'Coverage'``, ``'Description'``, ``'Format'``,
              ``'Identifier'``, ``'Language'``, ``'Relation'``, ``'Source'``,
              ``'Title'``, and ``'Type'``.
            * *str* or *list of str*: ``'Contributor'``, ``'Creator'``,
              ``'Keywords'``, ``'Publisher'``, and ``'Rights'``.
            * *str*, *date*, *datetime*, or *tuple* of same: ``'Date'``. If a
              non-*str*, then it will be formatted as ISO 8601.

            Values have been predefined for ``'Creator'``, ``'Date'``,
            ``'Format'``, and ``'Type'``. They can be removed by setting them
            to `None`.

            Information is encoded as `Dublin Core Metadata`__.

            .. _DC: https://www.dublincore.org/specifications/dublin-core/

            __ DC_
        rK  zutf-8)Úencodingr  )rž   r“   )r^  N)r   Úopen_file_cmÚfile_requires_unicodeÚcodecsÚ	getwriterÚfigureÚdpiÚget_size_inchesr   r’   Údrawr¿   )r<   rã  r^  r“   Úfhrf  r˜   r™   rK  r  Úrenderers              r   Ú	print_svgzFigureCanvasSVG.print_svg  sÜ   € ô@ ×Ñ ¨#¸Ô@ð 	 ÀBÜ×.Ñ.¨rÔ2Ø.”V×%Ñ% gÓ.¨rÓ2�Ø—+‘+—/‘/ˆCØ ˆD�K‰KŒOØ ŸK™K×7Ñ7Ó9‰MˆE�6Ø˜2‘:˜v¨™{ˆqˆAÜ(Ø—‘˜U F¨CÜ˜A˜q "°¸hÔGØ$7ô9ˆHð �K‰K×Ñ˜XÔ&Ø×ÑÔ÷	 ÷ 	 ñ 	 ús   ™CC5Ã5C>c                 óì   — t        j                  |d«      5 }t        j                  d|¬«      5 } | j                  |fi |¤Žcd d d «       cd d d «       S # 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY w)NÚwbrK  )ÚmodeÚfileobj)r   ra  ÚgzipÚGzipFilerk  )r<   rã  Úkwargsri  Ú
gzipwriters        r   Ú
print_svgzzFigureCanvasSVG.print_svgzJ  sg   € Ü× Ñ  ¨4Ó0ð 	8°BÜ�m‰m ¨bÔ1ð	8Ø5?Ø!�4—>‘> *Ñ7°Ñ7÷	8÷ 	8÷ 	8ó 	8ú÷ 	8÷ 	8ñ 	8ús"   —A*¯AÁ	A*ÁA	ÁA*Á*A3c                  ó   — y)Nr–   rc   rd   s    r   Úget_default_filetypez$FigureCanvasSVG.get_default_filetypeO  s   € Ør   c                 óT   •— | j                   j                  «        t        ‰| �  «       S rp   )re  Údraw_without_renderingr¬   rh  )r<   r¸   s    €r   rh  zFigureCanvasSVG.drawR  s   ø€ Ø�‰×*Ñ*Ô,Ü‰w‰|‹~Ðr   )
rf   rg   rh   Ú	filetypesÚ	fixed_dpirk  rt  rv  rh  rY  rZ  s   @r   r\  r\    s6   ø„ Ø2Ø3ñ5€Ið €Ià9=Èô , ò\8ò
÷ð r   r\  zœ<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
c                   ó(   — e Zd Zej                  ZeZy)Ú_BackendSVGN)rf   rg   rh   r°   rØ   Úbackend_versionr\  ÚFigureCanvasrc   r   r   r|  r|  a  s   „ à—o‘o€OØ"�Lr   r|  )<rÝ  rc  rÚ   rp  rø   Úior   r¢   ÚloggingrÝ   Úrerö   Únumpyr�   ÚPILr   Ú
matplotlibr°   r   r   r  Úmatplotlib.backend_basesr   r   r	   r
   Ú!matplotlib.backends.backend_mixedr   Úmatplotlib.colorsr   Úmatplotlib.datesr   Úmatplotlib.pathr   r   Úmatplotlib.transformsr   r   Ú	getLoggerrf   rà  r   Úcompiler!   r#   r'   r)   r0   r2   r|   r€   r;  r‹   r�   r’   r\  ÚFigureManagerSVGr¯   Úexportr|  rc   r   r   ú<module>r�     s  ðÛ Û Û Û Û Ý Û Û Û 	Û 	Û ã Ý ã ß 0÷Bó Bå ?Ý %Ý  Ý  Ý ß 8ð €w×Ñ˜Ó"€òRð !�b—j‘j Ó+Ð ò,ò
ò+ò,÷Mñ Mò`ò=ð &¨vÀÑH€ò*ò@ôrN�,ô rNôj>Ð&ô >ðB %Ð ð€	ð 
‡�ô#�(ó #ó ñ#r   