§
    ¥”jµ}  ã                   óà  — d Z ddlZddlmZ ddlmZmZ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mZ d	dlmZmZmZmZ d	dlmZmZ d	dlmZ d	dlmZmZm Z m!Z!m"Z"m#Z# d	dl$m$Z$ d	dl%m&Z&m%Z%m'Z'm(Z( d	dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 e$eeee ee"e!e#ee$e$e$edœZ2 e3d¦  «        Z4 e3d¦  «        Z5 e3d¦  «        Z6 G d„ d¦  «        Z7 G d„ d¦  «        Z8 G d„ d¦  «        Z9 G d„ de9¦  «        Z:dS )zRender SVG images.é    N)Úsuppress)ÚcosÚhypotÚpiÚradiansÚsinÚsqrt)ÚElementTree)ÚElementWrapperé   ©Úget_url_attributeé   )Úparse_declarationsÚparse_stylesheets)Úapply_filtersÚdraw_gradient_or_patternÚ
paint_maskÚuse)ÚimageÚsvg)Úpath)ÚcircleÚellipseÚlineÚpolygonÚpolylineÚrect)Útext)ÚEMPTY_BOUNDING_BOXÚbounding_boxÚextend_bounding_boxÚis_valid_bounding_box)Ú
PointErrorÚalpha_valueÚcolorÚ	normalizeÚ	parse_urlÚpreserve_ratioÚsizeÚ	transform)Úar   r   r   r   r   r   r   r   r   r   ÚtextPathÚtspanr   )Úclipú	clip-pathÚfilterÚheightÚidÚmaskÚopacityÚoverflowÚrotateú
stop-colorzstop-opacityÚstyler+   útransform-originÚviewBoxÚwidthÚxÚyÚdxÚdyú"{http://www.w3.org/1999/xlink}hrefÚhref)Úfillzflood-colorzlighting-colorr8   Ústroke)	ÚclipPathr1   Úgradientr   Úmarkerr4   r   ÚpatternÚsymbolc                   óî   — e Zd ZdZd„ Zd„ Zdd„Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed	„ ¦   «         Zed
„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚNodezAn SVG document node.c                 óª   — || _         |j        | _        || _        d | _        |j        j                             ¦   «         | _        g | _        d | _        d S ©N)	Ú_wrapperÚetree_elementÚ_etree_nodeÚ_styleÚ	_childrenÚattribÚcopyÚverticesr!   )ÚselfÚwrapperr9   s      úf/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/weasyprint/svg/__init__.pyÚ__init__zNode.__init__Z   sP   € ØˆŒØ"Ô0ˆÔØˆŒØˆŒàÔ+Ô2×7Ò7Ñ9Ô9ˆŒàˆŒØ ˆÔÐÐó    c                 ó6   — t          | j        | j        ¦  «        S )z<Create a deep copy of the node as it was when first created.)rK   rN   rQ   ©rV   s    rX   rT   z	Node.copye   s   € å�D”M 4¤;Ñ/Ô/Ð/rZ   Nc                 ó8   — | j                              ||¦  «        S )zGet attribute.)rS   Úget)rV   ÚkeyÚdefaults      rX   r^   zNode.geti   s   € àŒ{�Š˜s GÑ,Ô,Ð,rZ   c                 óN   — | j         j                             dd¦  «        d         S )zXML tag name with no namespace.Ú}r   éÿÿÿÿ)rP   ÚtagÚsplitr\   s    rX   rd   zNode.tagm   s%   € ð ÔÔ#×)Ò)¨#¨qÑ1Ô1°"Ô5Ð5rZ   c                 ó   — | j         j        S )zXML node text.)rP   r   r\   s    rX   r   z	Node.textr   ó   € ð ÔÔ$Ð$rZ   c                 ó   — | j         j        S )zText after the XML node.)rP   Útailr\   s    rX   ri   z	Node.tailw   rg   rZ   c                 ó4   — |                       d¦  «        dk    S )z!Whether node should be displayed.ÚdisplayÚnone©r^   r\   s    rX   rk   zNode.display|   s   € ð �xŠx˜	Ñ"Ô" fÒ,Ð,rZ   c                 óB   — | j         o|                      d¦  «        dk    S )zWhether node is visible.Ú
visibilityÚhidden)rk   r^   r\   s    rX   ÚvisiblezNode.visible�   s"   € ð Œ|ÐB §¢¨Ñ 6Ô 6¸(Ò BÐBrZ   c                 óŠ  — |j         }| j                             ¦   «         D ]!\  }}|t          vr||j        vr
||j        |<   Œ"|                     d¦  «        x}rt          |¦  «        \  }}ng g }}| j        \  }}	d„ |                     |¦  «        D ¦   «         }
d„ |	                     |¦  «        D ¦   «         }|
|g||gfD ]+}|D ]&}|D ]!\  }}|                     ¦   «         |j        |<   Œ"Œ'Œ,|j         	                    dd¦  «        x}r[|                     ¦   «          
                    d¬¦  «        }t          |¦  «        dk    r |d	         |j        d
<   |d         |j        d<   t          D ]9}|                     |¦  «        dk    r|                     dd¦  «        |j        |<   Œ:|j                             ¦   «                              ¦   «         D ]5\  }}|dk    r*|                      |¦  «        }|€	|j        |= Œ+||j        |<   Œ6|j        dv r3|                     |dd¬¦  «        \  }}d„ |D ¦   «         |j         _        dS dS )z>Apply CSS cascade and other related operations to given child.r9   c                 ó   — g | ]
}|d          ‘ŒS ©rc   © ©Ú.0Úrules     rX   ú
<listcomp>z Node.cascade.<locals>.<listcomp>–   s   € ÐEÐEÐE˜t�$�r”(ÐEÐEÐErZ   c                 ó   — g | ]
}|d          ‘ŒS rt   ru   rv   s     rX   ry   z Node.cascade.<locals>.<listcomp>—   s   € ÐKÐKÐK $�T˜"”XÐKÐKÐKrZ   ÚfontNr   )Úmaxsplitr   r   ú	font-sizezfont-familyÚcurrentColorr&   ÚblackÚinherit)r   r-   r,   T)Útrailing_spaceÚ	text_rootc                 ó   — g | ]	}|j         ‘Œ
S ru   )rP   )rw   Úchilds     rX   ry   z Node.cascade.<locals>.<listcomp>·   s(   € ð -9ð -9ð -9Ø&+�Ô!ð-9ð -9ð -9rZ   )rN   rS   ÚitemsÚNOT_INHERITED_ATTRIBUTESr^   r   rQ   ÚmatchÚstripÚpopre   ÚlenÚCOLOR_ATTRIBUTESrT   rd   Útext_childrenÚetree_children)rV   r„   rW   r_   ÚvalueÚ
style_attrÚnormal_attrÚimportant_attrÚnormal_matcherÚimportant_matcherÚnormalÚ	importantÚdeclarations_listÚdeclarationsÚnamer{   ÚpartsÚchildrenÚ_s                      rX   ÚcascadezNode.cascade†   sº  € à”.ˆð œ+×+Ò+Ñ-Ô-ð 	.ð 	.‰JˆC�ØÕ2Ð2Ð2Ø˜eœlÐ*Ð*Ø(-�E”L Ñ%øð Ÿš 7Ñ+Ô+Ð+ˆ:ð 	1Ý*<¸ZÑ*HÔ*HÑ'ˆK˜˜à*,¨b˜ˆKØ,0¬KÑ)ˆÐ)ØEÐE ~×';Ò';¸GÑ'DÔ'DÐEÑEÔEˆØKÐKÐ*;×*AÒ*AÀ'Ñ*JÔ*JÐKÑKÔKˆ	Ø"(¨;¨-¸À^ÐDTÐ!Uð 	7ð 	7ÐØ 1ð 7ð 7�Ø#/ð 7ð 7‘K�D˜%Ø).¯ª©¬�E”L Ñ&Ð&ð7ð7ð ”<×#Ò# F¨DÑ1Ô1Ð1ˆ4ð 	7Ø—J’J‘L”L×&Ò&°Ð&Ñ2Ô2ˆEÝ�5‰zŒz˜QŠˆØ,1°!¬H�”˜[Ñ)Ø.3°A¬h�”˜]Ñ+õ $ð 	@ð 	@ˆCØ�yŠy˜‰~Œ~ Ò/Ð/Ø$)§I¢I¨g°wÑ$?Ô$?�”˜SÑ!øð  œ,×+Ò+Ñ-Ô-×3Ò3Ñ5Ô5ð 	.ð 	.‰JˆC�Ø˜	Ò!Ð!ØŸš ™œ�Ø�=Øœ SÐ)Ð)à(-�E”L Ñ%øð Œ9Ð1Ð1Ð1Ø×-Ò-Ø¨¸ð .ñ >ô >‰KˆH�að-9ð -9Ø/7ð-9ñ -9ô -9ˆEŒNÔ)Ð)Ð)ð 2Ð1rZ   c                 óÜ   — | j         €Rg }| j        D ]A}t          || j        ¦  «        }|                      |¦  «         |                     |¦  «         ŒB|| _         t          | j         ¦  «        S )z&Yield node children, handling cascade.)rR   rN   rK   rQ   rœ   ÚappendÚiter)rV   rš   rW   r„   s       rX   Ú__iter__zNode.__iter__º   so   € àŒ>Ð!ØˆHØœ=ð 'ð '�Ý˜W d¤kÑ2Ô2�Ø—’˜UÑ#Ô#Ð#Ø—’ Ñ&Ô&Ð&Ð&Ø%ˆDŒNÝ�D”NÑ#Ô#Ð#rZ   c                 ó¤   — |                       d¦  «        }|r8t          d„ t          |¦  «                             ¦   «         D ¦   «         ¦  «        S dS )z&Get node viewBox as a tuple of floats.r;   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rM   ©Úfloat)rw   Únumbers     rX   ú	<genexpr>z#Node.get_viewbox.<locals>.<genexpr>É   s(   è è € ÐPÐP¨6�˜v™œÐPÐPÐPÐPÐPÐPrZ   N)r^   Útupler'   re   )rV   Úviewboxs     rX   Úget_viewboxzNode.get_viewboxÅ   sY   € à—(’(˜9Ñ%Ô%ˆØð 	QÝÐPÐPµY¸wÑ5GÔ5G×5MÒ5MÑ5OÔ5OÐPÑPÔPÑPÔPÐPð	Qð 	QrZ   c                 óB   — dD ]}t          | ||d¬¦  «        x}r|c S ŒdS )z4Get the href attribute, with or without a namespace.©rA   rB   T)Úallow_relativeNr   )rV   Úbase_urlÚ	attr_nameÚurls       rX   Úget_hrefzNode.get_hrefË   sH   € àGð 	ð 	ˆIÝ'¨¨i¸ÐRVÐWÑWÔWÐWˆsð Ø�
�
�
ðð	ð 	rZ   c                 óF   — dD ]}| j                              |d¦  «         ŒdS )z8Remove the href attributes, with or without a namespace.r«   N)rS   r‰   )rV   r®   s     rX   Údel_hrefzNode.del_hrefÑ   s4   € àGð 	-ð 	-ˆIØŒK�OŠO˜I tÑ,Ô,Ð,Ð,ð	-ð 	-rZ   c                 ó¾   — | sdS |rt          j        dd| ¦  «        S t          j        dd| ¦  «        } |                      dd¦  «        } t          j        dd| ¦  «        S )z>Replace newlines by spaces, and merge spaces if not preserved.Ú z[
	]ú z[
]ú	z +)ÚreÚsubÚreplace)ÚstringÚpreserves     rX   Úprocess_whitespacezNode.process_whitespaceÖ   sg   € ð ð 	Ø�2Øð 	-Ý”6˜* c¨6Ñ2Ô2Ð2å”V˜H b¨&Ñ1Ô1ˆFØ—^’^ D¨#Ñ.Ô.ˆFÝ”6˜$  VÑ,Ô,Ð,rZ   c                 óÀ   — | j                              d|› d�¦  «        €dS | D ]:}|                     d¦  «        |k    r|c S |                     |¦  «        }|r|c S Œ;dS )z2Get a child with given id in the whole child tree.z
.//*[@id="z"]Nr3   )rP   Úfindr^   Ú	get_child)rV   Úid_r„   Ú
grandchilds       rX   r¿   zNode.get_childã   s‹   € àÔ× Ò Ð!5¨cÐ!5Ð!5Ð!5Ñ6Ô6Ð>ØˆFØð 	"ð 	"ˆEØ�yŠy˜‰Œ #Ò%Ð%Ø���ØŸš¨Ñ-Ô-ˆJØð "Ø!Ð!Ð!Ð!ð"ð		"ð 	"rZ   Fc                 ó  — g }d}|                       |¦  «        dk    }|                      |j        j        |¦  «        | j        _        |r&|s$| j                             d¦  «        | j        _        d„ t          |                       d¦  «        ¦  «                             ¦   «                              d¦  «        D ¦   «         }| 	                    ¦   «         }|r|  
                    ||¦  «         | j        r| j                             d¦  «        }t          |                     ¦   «         ¦  «        }	|	D �]'}
|
j        }|j        dv r[t          |
| j        ¦  «        }d|j        _        |j        }|                     ¦   «         |j        _        t%          j        |¦  «        }
nt          |
| j        ¦  «        }|                      |¦  «        dk    }|                      |j        |¦  «        |j        _        |                     |
|¦  «        \  |_        }|j                             d¦  «        }|rd|vr| 
                    ||¦  «         |                     |¦  «         |                      |j        |¦  «        }|r!|
|	d         u r|s|                     d¦  «        }|r½t3          j        d	¦  «        }t          t%          j        |¦  «        | j        ¦  «        }||j        _        |r| 
                    ||¦  «         |r&|s$|j                             d¦  «        |j        _        |j        r|j                             d¦  «        }|                     |¦  «         �Œ)|r(|s&|s$| j                             d¦  «        | j        _        ||fS )
z<Handle text node by fixing whitespaces and flattening tails.z+{http://www.w3.org/XML/1998/namespace}spacer»   rµ   c                 ó0   — g | ]}|¯t          |¦  «        ‘ŒS ru   r£   )rw   Úis     rX   ry   z&Node.text_children.<locals>.<listcomp>ø   s;   € ð Cð Cð CØØ@AðCÝ�!‰HŒHðCð Cð CrZ   r7   )z {http://www.w3.org/2000/svg}trefÚtrefr.   rc   z!{http://www.w3.org/2000/svg}tspan)r^   r¼   rO   r   rP   Úlstripr'   rˆ   re   rT   Úpop_rotationÚendswithr§   Úiter_childrenrd   rK   rQ   Úflattenr   Úfrom_xml_rootrŒ   rš   rž   ri   Úrstripr
   ÚElement)rV   Úelementr�   r‚   rš   Úspacer»   Úoriginal_rotater7   Úelement_childrenÚchild_elementr„   Ú
child_nodeÚchild_preserveri   Úanonymous_etreeÚ	anonymouss                    rX   rŒ   zNode.text_childrenî   s£  € àˆØ=ˆØ—8’8˜E‘?”? jÒ0ˆØ $× 7Ò 7ØÔ!Ô&¨ñ!2ô !2ˆÔÔàð 	: (ð 	:Ø$(¤I×$4Ò$4°SÑ$9Ô$9ˆDÔÔ!ðCð Cå�d—h’h˜xÑ(Ô(Ñ)Ô)×/Ò/Ñ1Ô1×7Ò7¸Ñ<Ô<ðCñ Cô Cˆð !×%Ò%Ñ'Ô'ˆØð 	7Ø×Ò˜o¨vÑ6Ô6Ð6ØŒ9ð 	5Ø!œY×/Ò/°Ñ4Ô4ˆNÝ  ×!6Ò!6Ñ!8Ô!8Ñ9Ô9ÐØ-ð %	+ñ %	+ˆMØ!Ô/ˆEØŒyÐHÐHÐHÝ! -°´Ñ=Ô=�
Ø-4�
Ô&Ô*ð #Ô.�Ø).¯ª©¬�Ô!Ô&Ý .Ô <¸UÑ CÔ C��å! -°´Ñ=Ô=�
Ø'Ÿ^š^¨EÑ2Ô2°jÒ@ˆNØ*.×*AÒ*AØ”
˜Nñ+,ô +,ˆJÔ"Ô'à2<×2JÒ2JØ˜~ñ3/ô 3/Ñ/ˆJÔ à'œ_×5Ò5°cÑ:Ô:ˆNØð A 8°:Ð#=Ð#=Ø×'Ò'¨¸Ñ@Ô@Ð@Ø�OŠO˜JÑ'Ô'Ð'Ø×*Ò*¨5¬:°xÑ@Ô@ˆDØð ,˜]Ð.>¸rÔ.BÐBÐBØð ,ØŸ;š; sÑ+Ô+�DØð +Ý"-Ô"5Ø7ñ#9ô #9�å Ý"Ô0°ÑAÔAÀ4Ä;ñPô P�	à-1�	Ô%Ô*Ø"ð DØ×*Ò*¨?¸FÑCÔCÐCØ!ð L¨(ð LØ1:´×1FÒ1FÀsÑ1KÔ1K�IÔ)Ô.Ø”>ð BØ%.¤^×%<Ò%<¸SÑ%AÔ%A�NØ—’ 	Ñ*Ô*Ð*ùàð 	:˜Xð 	:¨hð 	:Ø$(¤I×$4Ò$4°SÑ$9Ô$9ˆDÔÔ!à˜Ð'Ð'rZ   c                 ó  — | j         pdg}t          | ¦  «        D ]Z}|                     |                     ¦   «         ¦  «         |                     |j        pd¦  «         |                      |¦  «         Œ[d                     |¦  «        S )z)Flatten text in node and in its children.r´   )r   Úlistrž   rÊ   ri   ÚremoveÚjoin)rV   Úflattened_textr„   s      rX   rÊ   zNode.flatten-  sƒ   € àœ)˜/ rÐ*ˆÝ˜$‘Z”Zð 	ð 	ˆEØ×!Ò! %§-¢-¡/¤/Ñ2Ô2Ð2Ø×!Ò! %¤*Ð"2°Ñ3Ô3Ð3Ø�KŠK˜ÑÔÐÐØ�wŠw�~Ñ&Ô&Ð&rZ   c                 óœ   ‡‡— d                      ˆˆfd„t          t          | j        ¦  «        ¦  «        D ¦   «         ¦  «        | j        d<   dS )zMerge nested letter rotations.rµ   c              3   óp   •K  — | ]0}t          ‰r‰                     d ¦  «        n‰d         ¦  «        V — Œ1dS )r   rc   N)Ústrr‰   )rw   rÄ   rÐ   r7   s     €€rX   r¦   z$Node.pop_rotation.<locals>.<genexpr>8  sW   øè è € ð ),ð ),àõ  Ð@�—
’
˜1‘”�¨_¸RÔ-@ÑAÔAð),ð ),ð ),ð ),ð ),ð ),rZ   r7   N)rÚ   ÚrangerŠ   r   rS   )rV   rÐ   r7   s    ``rX   rÇ   zNode.pop_rotation6  s_   øø€ à #§¢ð ),ð ),ð ),ð ),ð ),å�3˜tœy™>œ>Ñ*Ô*ð),ñ ),ô ),ñ !,ô !,ˆŒ�HÑÐÐrZ   c                 óJ   ‡— t          dt          fdˆfd„i¦  «        | _        dS )u$   Override nodeâ€™s children iterator.rK   r    c                 ó   •— ‰S rM   ru   )r›   Úiterators    €rX   ú<lambda>z$Node.override_iter.<locals>.<lambda>A  s   ø€ °H€ rZ   N)ÚtyperK   Ú	__class__)rV   râ   s    `rX   Úoverride_iterzNode.override_iter<  s2   ø€ õ Ø•T�G˜jÐ*<Ð*<Ð*<Ð*<Ð=ñ?ô ?ˆŒˆˆrZ   c                 ó`  — ||_         ||_        t          ||¦  «        t          d¦  «        z  |_        |                      ¦   «         x}r|d         |d         c|_        |_        n|j         |j        c|_        |_        t          |j        |j        ¦  «        t          d¦  «        z  |_        dS )z="Set SVG concrete and inner widths and heights from svg node.r   é   N)	Úconcrete_widthÚconcrete_heightr   r	   Únormalized_diagonalr©   Úinner_widthÚinner_heightÚinner_diagonal)rV   r   ré   rê   r¨   s        rX   Úset_svg_sizezNode.set_svg_sizeC  s¥   € à+ˆÔØ-ˆÔÝ"'¨¸Ñ"HÔ"HÍ4ÐPQÉ7Ì7Ñ"RˆÔà×&Ò&Ñ(Ô(Ð(ˆ7ð 	XØ07¸´
¸GÀA¼JÐ-ˆCŒO˜SÔ-Ð-à03Ô0BÀCÔDWÐ-ˆCŒO˜SÔ-Ý" 3¤?°CÔ4DÑEÔEÍÈQÉÌÑOˆÔÐÐrZ   rM   ©F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rY   rT   r^   Úpropertyrd   r   ri   rk   rq   rœ   r    r©   r°   r²   Ústaticmethodr¼   r¿   rŒ   rÊ   rÇ   ræ   rï   ru   rZ   rX   rK   rK   W   s¥  € € € € € ØÐð	!ð 	!ð 	!ð0ð 0ð 0ð-ð -ð -ð -ð ð6ð 6ñ „Xð6ð ð%ð %ñ „Xð%ð ð%ð %ñ „Xð%ð ð-ð -ñ „Xð-ð ðCð Cñ „XðCð29ð 29ð 29ðh	$ð 	$ð 	$ðQð Qð Qðð ð ð-ð -ð -ð
 ð
-ð 
-ñ „\ð
-ð	"ð 	"ð 	"ð=(ð =(ð =(ð =(ð~'ð 'ð 'ð,ð ,ð ,ð?ð ?ð ?ð
Pð 
Pð 
Pð 
Pð 
PrZ   rK   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚLazyDefsc                 ó0   — || _         || _        i | _        d S rM   )Ú_nameÚ_svgÚ_data)rV   r˜   r   s      rX   rY   zLazyDefs.__init__Q  s   € ØˆŒ
ØˆŒ	ØˆŒ
ˆ
ˆ
rZ   c                 ó,   — |                       |¦  «        S rM   rm   ©rV   r˜   s     rX   Ú__getitem__zLazyDefs.__getitem__V  ó   € Ø�xŠx˜‰~Œ~ÐrZ   c                 óD  — |sd S || j         v r| j         |         S | j        j                             |¦  «        }|�O| j        |j                             ¦   «         v r/|| j         |<   | j        dv r| j                             || ¦  «         n
d | j         |<   | j         |         S )N)rF   rH   )rü   rû   Útreer¿   rú   rd   ÚlowerÚinherit_element)rV   r˜   Únodes      rX   r^   zLazyDefs.getY  sª   € Øð 	ØˆFØ�4”:ÐÐØ”:˜dÔ#Ð#ØŒyŒ~×'Ò'¨Ñ-Ô-ˆØÐ ¤
¨d¬h¯nªnÑ.>Ô.>Ð >Ð >Ø#ˆDŒJ�tÑØŒzÐ4Ð4Ð4Ø”	×)Ò)¨$°Ñ5Ô5Ð5øà#ˆDŒJ�tÑØŒz˜$ÔÐrZ   c                 ó,   — |                       |¦  «        S rM   rm   rþ   s     rX   Ú__contains__zLazyDefs.__contains__g  r   rZ   N)rñ   rò   ró   rY   rÿ   r^   r  ru   rZ   rX   rø   rø   P  sP   € € € € € ðð ð ð
ð ð ð ð  ð  ðð ð ð ð rZ   rø   c                   ó€   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	dd
„Z
d„ Zed„ ¦   «         Zdd„Zdd„Zd„ Zd„ Zdd„ZdS )ÚSVGzAn SVG document.Nc                 ót  — t          j        |¦  «        }t          ||||¦  «        }t          ||¦  «        | _        || _        || _        || _        t          d| ¦  «        | _	        t          d| ¦  «        | _
        t          d| ¦  «        | _        t          d| ¦  «        | _        t          d| ¦  «        | _        t          d| ¦  «        | _        t          d| ¦  «        | _        t          d| ¦  «        | _        i | _        d	d	g| _        d	d	g| _        d	| _        | j                             | j        ¦  «         d S )
Nr1   rF   r   rG   r4   rH   r   rI   r   )r   rË   r   rK   r  Úfont_configÚurl_fetcherr¯   rø   ÚfiltersÚ	gradientsÚimagesÚmarkersÚmasksÚpatternsÚpathsÚsymbolsÚ	use_cacheÚcursor_positionÚcursor_d_positionÚtext_path_widthrœ   )rV   r  r¯   r  r  rW   r9   s          rX   rY   zSVG.__init__n  s  € Ý Ô.¨tÑ4Ô4ˆÝ! '¨3°¸[ÑIÔIˆÝ˜ %Ñ(Ô(ˆŒ	Ø&ˆÔØ&ˆÔØˆŒå ¨$Ñ/Ô/ˆŒÝ! *¨dÑ3Ô3ˆŒÝ˜w¨Ñ-Ô-ˆŒÝ ¨$Ñ/Ô/ˆŒÝ˜f dÑ+Ô+ˆŒ
Ý  ¨DÑ1Ô1ˆŒÝ˜f dÑ+Ô+ˆŒ
Ý ¨$Ñ/Ô/ˆŒàˆŒà ! 1˜vˆÔØ"# Q ˆÔØ ˆÔàŒ	×Ò˜$œ)Ñ$Ô$Ð$Ð$Ð$rZ   c                 óÒ   — | j                              dd¦  «        }d|v rd}nt          ||¦  «        }| j                              dd¦  «        }d|v rd}nt          ||¦  «        }||fS )z Get intrinsic size of the image.r<   z100%ú%Nr2   )r  r^   r*   )rV   Ú	font_sizeÚintrinsic_widthÚintrinsic_heights       rX   Úget_intrinsic_sizezSVG.get_intrinsic_size‡  s€   € àœ)Ÿ-š-¨°Ñ8Ô8ˆØ�/Ð!Ð!Ø"ˆOˆOå" ?°IÑ>Ô>ˆOàœ9Ÿ=š=¨°6Ñ:Ô:ÐØÐ"Ð"Ð"Ø#ÐÐå#Ð$4°iÑ@Ô@ÐàÐ 0Ð0Ð0rZ   c                 ó4   — | j                              ¦   «         S )z*Get document viewBox as a tuple of floats.)r  r©   r\   s    rX   r©   zSVG.get_viewbox—  s   € àŒy×$Ò$Ñ&Ô&Ð&rZ   c                 óZ   — t          ||| j        ¦  «        t          ||| j        ¦  «        fS )z.Compute size of an x/y or width/height couple.)r*   rì   rí   )rV   r=   r>   r  s       rX   Úpointz	SVG.point›  s2   € õ ��I˜tÔ/Ñ0Ô0Ý��I˜tÔ0Ñ1Ô1ð3ð 	3rZ   c                 ó.   — t          ||| j        ¦  «        S )z'Compute size of an arbirtary attribute.)r*   rî   )rV   Úlengthr  s      rX   r#  z
SVG.length¡  s   € å�F˜I tÔ':Ñ;Ô;Ð;rZ   c                 ó¸   — || _         | j                             | ||¦  «         || _        || _        |                      | j        t          d¦  «        ¦  «         dS )zDraw image on a stream.Ú12ptN)Ústreamr  rï   r­   ÚcontextÚ	draw_noder*   )rV   r&  ré   rê   r­   r'  s         rX   ÚdrawzSVG.draw¥  sS   € àˆŒàŒ	×Ò˜t ^°_ÑEÔEÐEà ˆŒØˆŒà�Š�t”y¥$ v¡,¤,Ñ/Ô/Ð/Ð/Ð/rZ   Tc                 ó  — |j         dk    rdS t          |                     dd¦  «        ||¦  «        }g }|o|j         dv }|r| j                             ¦   «          | j                             t          |                     d¦  «        ¦  «        j        ¦  «        }|rt          | |||¦  «         |  	                    ||¦  «         t          |                     dd¦  «        ¦  «        }|rLd	|cxk    rdk     r?n n<|                     | j        ¦  «         | j                             d	d	d	d	¦  «        | _        |r|                      ||¦  «         t          |                     d
¦  «        ¦  «        j        }|�r”|| j        v �rŠ| j        j        }	| j        |         }|                     d¦  «        dk    rž|                      |                     d¦  «        |                     d¦  «        |¦  «        \  }
}|                      |                     d¦  «        |                     d¦  «        |¦  «        \  }}| j         	                    |||
|¬¦  «         |j        j         }d|j        _         |                      ||d¬¦  «         ||j        _         | j                             d	d	d	d	¦  «         | j                             ¦   «          | j                             ¦   «          | j        j        }|j        r | j        j	        |	|j        z  j        Ž  d}|j        r�t4                               |j         ¦  «        t6          k    re|                     d¦  «        x}dv r@d}| j                             d	d	d	d	¦  «        }|                     | j        ¦  «         || _        t8          |_        |j         dk    r| j        }| j        }|j         rV|j         t4          v rHtC          tD          ¦  «        5  t5          |j                  | ||¦  «         ddd¦  «         n# 1 swxY w Y   |j        �r+|j         tF          v�r|D �]}|o|j         dk    pd|j$        v pd|j$        v }|r| j        }|d         | _        |                      |||¦  «         |r|| _        t4                               |j         ¦  «        t6          k    o.t4                               |j         ¦  «        t6          k    o|j         }|rgtK          |j        ¦  «        sŒÆ|j        dd…         \  }}||j        d         z   }||j        d         z   }tM          |j        ||f||ff¦  «        |_        �Œ|j         dk    r!| j'         (                    tR          ||¦  «         |rÿ| j        j*        }| +                    ¦   «         | _        | j                             ¦   «          tK          |j        ¦  «        rz|j        \  }
}}}|
|z
  ||z
  |
|z   |z   ||z   |z   f|j,        d         dd…<   |dk    r|dz  n|}|j         dk    sd|j$        v s	d|j$        v r| j         	                    | ¬¦  «         | j         -                    |¦  «         | j         .                    ¦   «          | j/                             t          |                     d ¦  «        ¦  «        j        ¦  «        }|rta          | |||¦  «         |r|  1                    ||¦  «         |  2                    |||¦  «         |rÉd	|cxk    rdk     r¼n n¹|  3                    ||¦  «        } tK          | ¦  «        sd	d	| j4        | j5        f} | \  }
}}}|
||
|z   ||z   f| j        j,        d         dd…<   | j        j*        }| +                    ¦   «         | _        | j         6                    |dd¬!¦  «         | j         -                    |¦  «         |j         dk    rd	d	g| _7        d	d	g| _8        d	| _9        |r| j         .                    ¦   «          dS dS )"zDraw a node.ÚdefsNr}   Ú1em)r   r   r   r   r   r   r   r1   r5   r   r   r0   ÚclipPathUnitsÚobjectBoundingBoxr=   r>   r<   r2   )r,   ÚdÚeÚfÚgF©Úfill_strokeztext-anchor)ÚmiddleÚendTr   r   rc   r   rè   ÚBBoxr5  )r0  r4   )rD   rC   ):rd   r*   r^   r&  Ú
push_stater  r(   Úfragmentr   r+   r%   rž   Ú	add_groupÚset_graphical_stater  Úctmr!  rP   r(  Ú	rectangler/   r6  ÚdeterminantÚinvertÚvaluesrk   ÚTAGSr   r    Útext_bounding_boxré   rê   rq   r   r$   Ú	DEF_TYPESrS   r#   r"   r  rï   r   r3   r‰   ÚextraÚdraw_x_objectÚ	pop_stater  r   r4  Údraw_markersÚcalculate_bounding_boxrì   rí   Ú	set_alphar  r  r  )!rV   r  r  r4  Úoriginal_streamsÚcall_fill_strokeÚfilter_r5   Ú	clip_pathÚold_ctmr=   r>   r<   r2   Úoriginal_tagÚnew_ctmÚtext_anchor_shiftÚtext_anchorÚgroupré   rê   r„   Ú	new_chunkÚ
new_streamÚvisible_text_childÚx1Úy1Úx2Úy2Úgroup_idÚx_alignr4   Úboxs!                                    rX   r(  zSVG.draw_node°  s­  € àŒ8�vÒÐØˆFõ ˜Ÿš +¨uÑ5Ô5°yÀ)ÑLÔLˆ	àÐà&ð P¨4¬8ð 8Pð ,PÐð ð 	%ØŒK×"Ò"Ñ$Ô$Ð$ð ”,×"Ò"¥9¨T¯XªX°hÑ-?Ô-?Ñ#@Ô#@Ô#IÑJÔJˆØð 	:Ý˜$  g¨yÑ9Ô9Ð9ð 	�Š�t˜YÑ'Ô'Ð'õ ˜dŸhšh y°!Ñ4Ô4Ñ5Ô5ˆØð 	<˜1 Ð+Ð+Ò+Ð+¨!Ò+Ð+Ð+Ð+Ð+Ø×#Ò# D¤KÑ0Ô0Ð0Øœ+×/Ò/°°1°a¸Ñ;Ô;ˆDŒKð ð 	6Ø×$Ò$ T¨9Ñ5Ô5Ð5õ ˜dŸhšh {Ñ3Ô3Ñ4Ô4Ô=ˆ	Øñ 	J˜ d¤jÐ0Ñ0Ø”k”oˆGØœ
 9Ô-ˆIØ�}Š}˜_Ñ-Ô-Ð1DÒDÐDØ—z’z $§(¢(¨3¡-¤-°·²¸#±´À	ÑJÔJ‘��1Ø $§
¢
Ø—H’H˜WÑ%Ô% t§x¢x°Ñ'9Ô'9¸9ñ!Fô !F‘��và”×%Ò%¨°¸1ÀÐ%ÑBÔBÐBØ$Ô0Ô4ˆLØ(+ˆIÔ!Ô%Ø�NŠN˜9 i¸UˆNÑCÔCÐCØ(4ˆIÔ!Ô%ð ŒK×!Ò! ! Q¨¨1Ñ-Ô-Ð-ØŒK×ÒÑÔÐØŒK�OŠOÑÔÐØ”k”oˆGØÔ"ð JØ%�”Ô%¨°'´.Ñ(@Ô'HÐIÐIð "ÐØŒ<ð 	8�DŸHšH T¤XÑ.Ô.µ$Ò6Ð6Ø#Ÿxšx¨Ñ6Ô6Ð6�Ð;LÐLÐLØ$(Ð!Øœ×-Ò-¨a°°A°qÑ9Ô9�Ø ×'Ò'¨¬Ñ4Ô4Ð4Ø#�”Ý%7ˆDÔ"ð Œ8�uÒÐØ!Ô0ˆNØ"Ô2ˆOð Œ<ð 	6˜DœH­Ð,Ð,Ý�*Ñ%Ô%ð 6ð 6Ý�T”X”˜t T¨9Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð Œ<ñ 	F˜DœH­IÐ5Ñ5Øð Fñ F�Ø-ð WØ”I Ò'ÐU¨3°%´,Ð+>ÐUÀ#ÈÌÐBUð àð 7Ø!%¤�JØ"2°2Ô"6�D”KØ—’˜u i°Ñ=Ô=Ð=Øð -Ø",�D”Kå—H’H˜TœXÑ&Ô&­$Ò.ð "Ý—H’H˜UœYÑ'Ô'­4Ò/ð"à”Mð #ð &ð FÝ0°Ô1HÑIÔIð !Ø Ø"Ô4°R°a°RÔ8‘F�B˜Ø˜eÔ5°aÔ8Ñ8�BØ˜eÔ5°aÔ8Ñ8�BÝ-@ØÔ.°"°b°¸BÀ¸8Ð0Dñ.Fô .F�DÔ*ùð Œ8�uÒÐØŒI×"Ò"¥3¨¸ÑHÔHÐHð ð 	$Ø”{”~ˆHØ*×.Ò.Ñ0Ô0ˆDŒKØŒK×"Ò"Ñ$Ô$Ð$Ý$ TÔ%;Ñ<Ô<ð 6Ø&*Ô&<Ñ#��1�e˜Vð ˜	‘M 1 y¡=Ø˜‘I 	Ñ)¨1¨v©:¸	Ñ+Að*C�”˜FÔ# A A AÑ&ð (3°hÒ'>Ð'>˜% !™)˜)ÀE�Ø”8˜vÒ%Ð%¨°´Ð);Ð);¸sÀdÄkÐ?QÐ?QØ”K×)Ò)¨W¨HÐ)Ñ5Ô5Ð5ØŒK×%Ò% hÑ/Ô/Ð/ØŒK×!Ò!Ñ#Ô#Ð#ð Œz�~Š~�i¨¯ª°Ñ(8Ô(8Ñ9Ô9ÔBÑCÔCˆØð 	2Ý�t˜T 4¨Ñ1Ô1Ð1ð ð 	.Ø×Ò˜T 9Ñ-Ô-Ð-ð 	×Ò˜$ 	¨;Ñ7Ô7Ð7ð ð 
	0˜1 Ð+Ð+Ò+Ð+¨!Ò+Ð+Ð+Ð+Ð+Ø×-Ò-¨d°IÑ>Ô>ˆCÝ(¨Ñ-Ô-ð BØ˜!˜TÔ-¨tÔ/@ÐA�Ø"%ÑˆAˆq�%˜Ø+,¨a°°U±¸AÀ¹JÐ+FˆDŒKÔ˜fÔ% a a aÑ(à”{”~ˆHØ*×.Ò.Ñ0Ô0ˆDŒKØŒK×!Ò! '°$¸TÐ!ÑBÔBÐBØŒK×%Ò% hÑ/Ô/Ð/ð Œ8�vÒÐØ$% q 6ˆDÔ Ø&'¨ VˆDÔ"Ø#$ˆDÔ àð 	$ØŒK×!Ò!Ñ#Ô#Ð#Ð#Ð#ð	$ð 	$s   Ï#PÐPÐPc           
      ó	  — |j         sdS i }t          |                     d¦  «        ¦  «        j        }dD ]8}d|› �}||j        v r#t          |j        |         ¦  «        j        ||<   Œ3|||<   Œ9d\  }}	d}|j         �r|j                              d¦  «        }
|j         r|j                              d¦  «        nd}|r3|dk    rt          |d         z
  }n|	t          z   |d         z
  dz  }|\  }}	n|	}d	}| j                             ||         ¦  «        x}s|rd
nd}Œ§|                      |                     d¦  «        |                     d¦  «        |¦  «        \  }}|                      |                     dd¦  «        |                     dd¦  «        |¦  «        \  }}d|j        v rüt          | ||||¦  «        \  }}}}| 
                    ¦   «         \  }}}}|                     dd¦  «                             d¦  «        d         }|dk    rdx}}n8|dd…                              ¦   «         }|dd…                              ¦   «         }|d
k    r||||z  z
  dz  z  }n|dk    r||||z  z
  z  }|d
k    r||||z  z
  dz  z  }n|dk    r||||z  z
  z  }||||z  ||z  f}n
dx}}dd||f}|                     d¦  «        dk    r4|                      |                     dd¦  «        |¦  «        }||z  }||z  }|                     dd¦  «        }|dvrt          t          |¦  «        ¦  «        }n|dk    r|dk    r|t          d ¦  «        z  }|D �]}| j                             ¦   «           | j        j        |t'          |¦  «        z  |t)          |¦  «        z  | t)          |¦  «        z  |t'          |¦  «        z  g|
¢R Ž  | j                             | | ¬!¦  «         |                     d"d#¦  «        } | d$v rA | j        j        |Ž  | j                             ¦   «          | j                             ¦   «          |                      |||¦  «         | j                             ¦   «          �Œ|rd
nd}|j         �° dS dS )%zDraw markers defined in a node.NrG   )ÚstartÚmidr6  zmarker-©NNr_  r   r   r6  r`  ÚrefXÚrefYÚmarkerWidthrè   ÚmarkerHeightr;   ÚpreserveAspectRatioÚxMidYMidrµ   rl   Úminr   é   é   ÚmaxÚmarkerUnitsÚuserSpaceOnUseústroke-widthÚorient)Úautoúauto-start-reverserq  é´   )r0  r1  r6   rp   )rp   Úscroll)rU   r(   r^   r9  rS   r‰   r   r  r!  r)   r©   re   r  r#  r   r¤   r&  r8  r+   r   r   r=  r/   r6  r(  rF  )!rV   r  r  r4  r  Úcommon_markerÚpositionÚ	attributeÚangle1Úangle2r!  ÚanglesÚangleÚmarker_nodeÚtranslate_xÚtranslate_yÚmarker_widthÚmarker_heightÚscale_xÚscale_yr›   Úclip_xÚclip_yÚviewbox_widthÚviewbox_heightÚalignÚ
x_positionÚ
y_positionÚclip_boxÚscaleÚ
node_angler„   r6   s!                                    rX   rG  zSVG.draw_markersL  sm  € àŒ}ð 	ØˆFàˆÝ! $§(¢(¨8Ñ"4Ô"4Ñ5Ô5Ô>ˆØ/ð 	2ð 	2ˆHØ, (Ð,Ð,ˆIØ˜DœKÐ'Ð'Ý$-¨d¬k¸)Ô.DÑ$EÔ$EÔ$N�˜Ñ!Ð!à$1�˜Ñ!Ð!à#‰ˆ�ØˆàŒmñ \	4à”M×%Ò% aÑ(Ô(ˆEØ-1¬]ÐD�T”]×&Ò& qÑ)Ô)Ð)ÀˆFØð !Ø˜wÒ&Ð&Ý ¨¤™N�E�Eà#¥b™[¨6°!¬9Ñ4¸Ñ9�EØ!'‘�˜˜à�Ø �ð $(¤<×#3Ò#3°G¸HÔ4EÑ#FÔ#FÐF�Kð Ø$*Ð7˜5˜5°�Øð (,§z¢zØ—’ Ñ'Ô'¨¯ª¸Ñ)@Ô)@Øñ(ô (Ñ$ˆK˜ð +/¯*ª*Ø—’ ¨qÑ1Ô1Ø—’ °Ñ2Ô2Øñ+ô +Ñ'ˆL˜-ð ˜KÔ.Ð.Ð.Ý)7Ø˜+ y°,Àñ*Oô *OÑ&�˜ ! Qð  ×+Ò+Ñ-Ô-ñ >�˜ ¨~ð $ŸšØ)¨:ñ7ô 7ß7<²u¸S±z´zÀ!ôE�à˜F’?�?Ø.3Ð3�J  à!& q¨ s¤×!1Ò!1Ñ!3Ô!3�JØ!& q r r¤§¢Ñ!2Ô!2�Jà Ò&Ð&Ø˜}¨|¸gÑ/EÑEÈÑJÑJ�F�FØ 5Ò(Ð(Ø˜m¨l¸WÑ.DÑDÑD�Fà Ò&Ð&ØØ&¨¸Ñ)@Ñ@ÀAñFñ F�F�Fà 5Ò(Ð(Ø˜n¨}¸wÑ/FÑFÑF�Fð ˜FØ  7Ñ*¨M¸GÑ,CðE��ð %&Ð%�˜'Ø˜q ,°Ð>�ð �Š˜}Ñ-Ô-Ð1AÒAÐAØŸš D§H¢H¨^¸QÑ$?Ô$?ÀÑKÔK�Ø˜5Ñ �Ø˜5Ñ �ð %Ÿš¨°1Ñ5Ô5ˆJØÐ!?Ð?Ð?Ý¥ jÑ 1Ô 1Ñ2Ô2��ØÐ3Ò3Ð3¸ÀGÒ8KÐ8KØ� ™œÑ%�ð %ð (ñ (�Ø”×&Ò&Ñ(Ô(Ð(à%�”Ô%Ø�c %™jœjÑ(¨'µC¸±J´JÑ*>Ø�H�s 5™zœzÑ)¨7µS¸±Z´ZÑ+?ðð ðð ð ð ð ”×%Ò%¨¨¸¸Ð%ÑEÔEÐEà&Ÿ?š?¨:°xÑ@Ô@�ØÐ3Ð3Ð3Ø)�D”KÔ)¨8Ð4Ð4Ø”K×$Ò$Ñ&Ô&Ð&Ø”K—O’OÑ%Ô%Ð%à—’˜u i°Ñ=Ô=Ð=Ø”×%Ò%Ñ'Ô'Ð'Ñ'à &Ð3�u�u¨GˆHðy Œmñ \	4ð \	4ð \	4ð \	4ð \	4rZ   c                 ó"  — | r| dk    rdS |                       ¦   «         } t          j        d¦  «                             | ¦  «        }|r?t	          |                     d¦  «        ¦  «        j        }|                     d¦  «        pd}nd}| pd}||fS )z9Get paint fill or stroke attribute with a color or a URL.rl   ra  z(url\(.+\)) *(.*)r   r   N)rˆ   r·   ÚcompileÚsearchr(   rS  r9  )rŽ   r‡   Úsourcer&   s       rX   Ú	get_paintzSVG.get_paint»  s”   € ð ð 	˜ š˜Ø�:à—’‘”ˆÝ”
Ð/Ñ0Ô0×7Ò7¸Ñ>Ô>ˆØð 	"Ý˜uŸ{š{¨1™~œ~Ñ.Ô.Ô7ˆFØ—K’K ‘N”NÐ* dˆEˆEàˆFØ�M˜TˆEà�uˆ}ÐrZ   Fc                 ó®  ‡ ‡— ‰                       |                     dd¦  «        ¦  «        \  }}t          |                     dd¦  «        ¦  «        }|‰ j        v }|‰ j        v }|r=|s;|s9t          |¦  «        }	|	xj        |z  c_        ‰ j                             |	¦  «         ‰                       |                     d¦  «        ¦  «        \  }
}t          |                     dd¦  «        ¦  «        }|
‰ j        v }|
‰ j        v }|r?|s=|s;t          |¦  «        }	|	xj        |z  c_        ‰ j                             |	d¬¦  «         ‰  	                    |                     d	d
¦  «        ‰¦  «        }|r‰ j         
                    |¦  «         t          ˆˆ fd„t          |                     d¦  «        ¦  «                             ¦   «         D ¦   «         ¦  «        }|o3t          d„ |D ¦   «         ¦  «         ot          d„ |D ¦   «         ¦  «         }|rx‰  	                    |                     d¦  «        ‰¦  «        }|dk     r.t!          d„ |D ¦   «         ¦  «        }|t#          |¦  «        |z  z
  }‰ j                             ||¦  «         |                     dd¦  «        }|dk    rd}n|dk    rd}nd}‰ j                             |¦  «         |                     dd¦  «        }|dk    rd}n|dk    rd}nd}‰ j                             |¦  «         t+          |                     dd¦  «        ¦  «        }|dk     rd}‰ j                             |¦  «         dS )z-Set stroke and fill colors, and line options.rC   r   úfill-opacityr   rD   ústroke-opacityT©rD   rn  Ú1pxc              3   óP   •K  — | ] }|d k    ¯‰                      |‰¦  «        V — Œ!dS )rl   N)r#  )rw   rŽ   r  rV   s     €€rX   r¦   z*SVG.set_graphical_state.<locals>.<genexpr>æ  sG   øè è € ð Pð PØ.3Ø?DÈº¸ð �KŠK˜˜yÑ)Ô)Ø?N¸¸¸ðPð PrZ   zstroke-dasharrayc              3   ó"   K  — | ]
}|d k    V — ŒdS ©r   Nru   ©rw   rŽ   s     rX   r¦   z*SVG.set_graphical_state.<locals>.<genexpr>ë  s&   è è € Ð7Ð7 5�E˜Q’JÐ7Ð7Ð7Ð7Ð7Ð7rZ   c              3   ó"   K  — | ]
}|d k     V — ŒdS r˜  ru   r™  s     rX   r¦   z*SVG.set_graphical_state.<locals>.<genexpr>ì  s&   è è € Ð6Ð6 %�E˜A’IÐ6Ð6Ð6Ð6Ð6Ð6rZ   zstroke-dashoffsetr   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rM   r£   r™  s     rX   r¦   z*SVG.set_graphical_state.<locals>.<genexpr>ð  s(   è è € Ð FÐ F°%¥ u¡¤Ð FÐ FÐ FÐ FÐ FÐ FrZ   zstroke-linecapÚbuttÚroundÚsquarer   zstroke-linejoinÚmiterÚbevelzstroke-miterlimitri  N)r�  r^   r%   r  r  r&   Úalphar&  Ú	set_colorr#  Úset_line_widthr§   r'   re   ÚallÚanyÚsumÚabsÚset_dashÚset_line_capÚset_line_joinr¤   Úset_miter_limit)rV   r  r  r   Úfill_sourceÚ
fill_colorÚfill_opacityÚfill_in_gradientÚfill_in_patternÚstream_colorÚstroke_sourceÚstroke_colorÚstroke_opacityÚstroke_in_gradientÚstroke_in_patternÚstroke_widthÚ
dash_arrayÚdash_conditionÚoffsetÚ
sum_dashesÚline_capÚ	line_joinÚmiter_limits   ` `                    rX   r;  zSVG.set_graphical_stateÌ  s¼  øø€ ð #'§.¢.°·²¸&À'Ñ1JÔ1JÑ"KÔ"KÑˆ�ZÝ" 4§8¢8¨N¸AÑ#>Ô#>Ñ?Ô?ˆØ&¨$¬.Ð8ÐØ%¨¬Ð6ˆØð 	0Ð/ð 	0°?ð 	0Ý  Ñ,Ô,ˆLØÐÔ ,Ñ.ÐÔØŒK×!Ò! ,Ñ/Ô/Ð/ð '+§n¢n°T·X²X¸hÑ5GÔ5GÑ&HÔ&HÑ#ˆ�|Ý$ T§X¢XÐ.>ÀÑ%BÔ%BÑCÔCˆØ*¨d¬nÐ<ÐØ)¨T¬]Ð:ÐØð 	=Ð!3ð 	=Ð7Hð 	=Ý  Ñ.Ô.ˆLØÐÔ .Ñ0ÐÔØŒK×!Ò! ,°tÐ!Ñ<Ô<Ð<Ø—{’{ 4§8¢8¨N¸EÑ#BÔ#BÀIÑNÔNˆØð 	5ØŒK×&Ò& |Ñ4Ô4Ð4õ ð Pð Pð Pð Pð På�d—h’hÐ1Ñ2Ô2Ñ3Ô3×9Ò9Ñ;Ô;ðPñ Pô Pñ Pô Pˆ
ð ð 7ÝÐ7Ð7¨JÐ7Ñ7Ô7Ñ7Ô7Ð7ð7åÐ6Ð6¨:Ð6Ñ6Ô6Ñ6Ô6Ð6ð 	ð ð 	5Ø—[’[ §¢Ð*=Ñ!>Ô!>À	ÑJÔJˆFØ˜ŠzˆzÝ Ð FÐ F¸:Ð FÑ FÔ FÑFÔF�
Ø#¥c¨&¡k¤k°JÑ&>Ñ>�ØŒK× Ò  ¨VÑ4Ô4Ð4ð —8’8Ð,¨fÑ5Ô5ˆØ�wÒÐØˆHˆHØ˜Ò!Ð!ØˆHˆHàˆHØŒ× Ò  Ñ*Ô*Ð*ð —H’HÐ.°Ñ8Ô8ˆ	Ø˜ÒÐØˆIˆIØ˜'Ò!Ð!ØˆIˆIàˆIØŒ×!Ò! )Ñ,Ô,Ð,õ ˜DŸHšHÐ%8¸!Ñ<Ô<Ñ=Ô=ˆØ˜Š?ˆ?ØˆKØŒ×#Ò# KÑ0Ô0Ð0Ð0Ð0rZ   c                 óx  — |                       |                     dd¦  «        ¦  «        \  }}t          |                     dd¦  «        ¦  «        }t          | ||||d¬¦  «        }|p|}|                       |                     d¦  «        ¦  «        \  }	}
t          |                     dd¦  «        ¦  «        }t          | ||	||d	¬¦  «        }|                      |                     d
d¦  «        |¦  «        }|
s|o|}|                     d¦  «        dk    }|r/|r|rd}n|rd}n|rd}nd}| j                             |¦  «         dS |r|r| j                             |¦  «         dS |r| j                             ¦   «          dS |r| j         	                    |¦  «         dS | j         
                    ¦   «          dS )z!Paint fill and stroke for a node.rC   r   r’  r   Fr”  rD   r“  Trn  r•  z	fill-ruleÚevenoddr   r   rè   N)r�  r^   r%   r   r#  r&  Úset_text_renderingÚfill_and_strokerD   rC   r6  )rV   r  r  r   r¬  r­  r®  Ú
fill_drawnrC   r²  r³  r´  Ústroke_drawnr·  rD   Úeven_oddÚtext_renderings                    rX   r4  zSVG.fill_stroke  s  € ð #'§.¢.°·²¸&À'Ñ1JÔ1JÑ"KÔ"KÑˆ�ZÝ" 4§8¢8¨N¸AÑ#>Ô#>Ñ?Ô?ˆÝ-Ø�$˜ Y°ÀUðLñ Lô Lˆ
àÐ'˜Zˆð '+§n¢n°T·X²X¸hÑ5GÔ5GÑ&HÔ&HÑ#ˆ�|Ý$ T§X¢XÐ.>ÀÑ%BÔ%BÑCÔCˆÝ/Ø�$˜ y°.ÈðOñ Oô Oˆà—{’{ 4§8¢8¨N¸EÑ#BÔ#BÀIÑNÔNˆØÐ. ,Ð@°Lˆð —8’8˜KÑ(Ô(¨IÒ5ˆØð 	"Øð #˜$ð #Ø!"��Øð #Ø!"��Øð #Ø!"��à!"�ØŒK×*Ò*¨>Ñ:Ô:Ð:Ð:Ð:àð "˜ð "Ø”×+Ò+¨HÑ5Ô5Ð5Ð5Ð5Øð "Ø”×"Ò"Ñ$Ô$Ð$Ð$Ð$Øð "Ø”× Ò  Ñ*Ô*Ð*Ð*Ð*à”—’Ñ!Ô!Ð!Ð!Ð!rZ   c                 óÊ   — |                      d¦  «        }|                      d¦  «        }|sdS t          |||| j        ¦  «        }|j        r | j        j        |j        Ž  dS dS )z*Apply a transformation string to the node.r:   r+   N)r^   r+   rî   r>  r&  r@  )rV   r  r  Útransform_originÚtransform_stringÚmatrixs         rX   r+   zSVG.transform5  s�   € àŸ8š8Ð$6Ñ7Ô7ÐØŸ8š8 KÑ0Ô0ÐØð 	ØˆFåØÐ.°	¸4Ô;NñPô PˆàÔð 	2Ø!ˆDŒKÔ! 6¤=Ð1Ð1Ð1Ð1ð	2ð 	2rZ   c                 óÜ  — |                      | j        ¦  «        }|sdS |                     ¦   «          |                     t	          |¦  «        j        ¦  «        }|sdS |                      ||¦  «         |j                             ¦   «         D ]\  }}||j        vr
||j        |<   Œt          t          |¦  «        d¦  «        €)|                     |                     ¦   «         ¦  «         dS dS )z2Recursively handle inheritance of defined element.N)r°   r¯   r²   r^   r(   r9  r  rS   r…   ÚnextrŸ   ræ   r    )rV   rÎ   r+  rB   Úparentr_   rŽ   s          rX   r  zSVG.inherit_elementA  sð   € à×Ò ¤Ñ)Ô)ˆØð 	ØˆFØ×ÒÑÔÐØ—’�) D™/œ/Ô2Ñ3Ô3ˆØð 	ØˆFØ×Ò˜V TÑ*Ô*Ð*Ø œ-×-Ò-Ñ/Ô/ð 	,ð 	,‰JˆC�Ø˜'œ.Ð(Ð(Ø&+�”˜sÑ#øÝ•�W‘”˜tÑ$Ô$Ð,Ø×!Ò! &§/¢/Ñ"3Ô"3Ñ4Ô4Ð4Ð4Ð4ð -Ð,rZ   c                 ó’   — |s|j         €8t          | |||¦  «        }t          |¦  «        rd|dd…         vr|r|S ||_         |j         S )z%Calculate the bounding box of a node.Nr   r   )r!   r#   )rV   r  r  rD   r]  s        rX   rH  zSVG.calculate_bounding_boxQ  se   € àð 	(�TÔ&Ð.Ý˜t T¨9°fÑ=Ô=ˆCÝ$ SÑ)Ô)ð (¨a°s¸1¸2¸2´wÐ.>Ð.>Øð Ø�JØ$'�Ô!ØÔ Ð rZ   rM   ©Trð   )rñ   rò   ró   rô   rY   r  r©   r!  r#  r)  r(  rG  rö   r�  r;  r4  r+   r  rH  ru   rZ   rX   r	  r	  k  s   € € € € € ØÐð%ð %ð %ð %ð21ð 1ð 1ð 'ð 'ð 'ð3ð 3ð 3ð<ð <ð <ð	0ð 	0ð 	0ðZ$ð Z$ð Z$ð Z$ðxm4ð m4ð m4ð^ ðð ñ „\ðð @1ð @1ð @1ð @1ðD%"ð %"ð %"ð %"ðN
2ð 
2ð 
2ð5ð 5ð 5ð !ð !ð !ð !ð !ð !rZ   r	  c                   ó.   ‡ — e Zd ZdZˆ fd„Zdˆ fd„	Zˆ xZS )ÚPatternzSVG node applied as a pattern.c                 ó”   •— t          ¦   «                              |j        |j        |j        |j        ¦  «         || _        || _        d S rM   )ÚsuperrY   rP   r¯   r  r  r   r  )rV   r  r   rå   s      €rX   rY   zPattern.__init__^  s<   ø€ Ý‰Œ×Ò˜Ô)¨3¬7°C´OÀSÄ_ÑUÔUÐUØˆŒØˆŒ	ˆ	ˆ	rZ   Tc                 óˆ   •— || j         k    r| j        j         | _         t          ¦   «                              ||d¬¦  «         d S )NTr3  )r  r   rÓ  r(  )rV   r  r  r4  rå   s       €rX   r(  zPattern.draw_nodec  sB   ø€ ð �4”9ÒÐØœœˆDŒIÝ‰Œ×Ò˜$ 	°tÐÑ<Ô<Ð<Ð<Ð<rZ   rÏ  )rñ   rò   ró   rô   rY   r(  Ú__classcell__)rå   s   @rX   rÑ  rÑ  \  s\   ø€ € € € € Ø(Ð(ðð ð ð ð ð
=ð =ð =ð =ð =ð =ð =ð =ð =ð =rZ   rÑ  );rô   r·   Ú
contextlibr   Úmathr   r   r   r   r   r	   Ú	xml.etreer
   Ú
cssselect2r   Úurlsr   Úcssr   r   r+  r   r   r   r   r  r   r   r   Úshapesr   r   r   r   r   r   r   r!   r    r"   r#   Úutilsr$   r%   r&   r'   r(   r)   r*   r+   rA  Ú	frozensetr†   r‹   rC  rK   rø   r	  rÑ  ru   rZ   rX   ú<module>rß     s(  ðØ Ð à 	€	€	€	Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø !Ð !Ð !Ð !Ð !Ð !à %Ð %Ð %Ð %Ð %Ð %à $Ð $Ð $Ð $Ð $Ð $Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ Ð Ð Ð Ð Ð ðRð Rð Rð Rð Rð Rð Rð Rð Rð Rð Rð Rðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
 
ØØØØØØØØØØØØØðð €ð" %˜9ð &ñ ô Ð ð2 �9ð ñ ô Ð ð ˆIð 
ñ 
ô 
€	ðvPð vPð vPð vPð vPñ vPô vPð vPðrð ð ð ð ñ ô ð ð6n!ð n!ð n!ð n!ð n!ñ n!ô n!ð n!ðb=ð =ð =ð =ð =ˆcñ =ô =ð =ð =ð =rZ   