Ë
    ¡ëiô>  ã                   óÄ   — d Z dZddlZddlZddlmZmZmZmZm	Z	m
Z
mZmZmZmZ ddlmZmZmZmZmZmZmZmZmZ d„ Zd„ Zd	„ Zd
„ Zd„ Zdd„Zdd„Zd„ Z  G d„ dee«      Z!y)z.this code is derived from that used by svglib.)ÚSvgPathé    N)
ÚacosÚceilÚcopysignÚcosÚdegreesÚfabsÚhypotÚradiansÚsinÚsqrté   )	ÚGroupÚmmultÚrotateÚ	translateÚtransformPointÚPathÚFILL_EVEN_ODDÚ
_CLOSEPATHÚUserNodec                 óþ   — t        j                  d|«      D �cg c]  }|sŒt        |«      ‘Œ }}g }t        dt	        |«      |«      D ]-  }|dkD  r| dv r	| dk(  rdnd} |j                  | ||||z    g«       Œ/ |S c c}w )a;  Split `value`, a list of numbers as a string, to a list of float numbers.

    Also optionally insert a `l` or `L` operation depending on the operation
    and the length of values.
    Example: with op='m' and value='10,20 30,40,' the returned value will be
             ['m', [10.0, 20.0], 'l', [30.0, 40.0]]
    ú(-?\d*\.?\d*(?:[eE][+-]?\d+)?)r   >   ÚMÚmr   ÚlÚL)ÚreÚfindallÚfloatÚrangeÚlenÚextend)ÚopÚmin_numÚvalueÚseqÚfloatsÚresÚis          úZ/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/graphics/svgpath.pyÚsplit_floatsr,      s�   € ô %'§J¡JÐ/PÐRWÓ$XÖ`˜SÒ\_Œe�C�jÐ`€FÐ`Ø
€CÜ�1”c˜&“k 7Ó+ò 0ˆØˆqŠ5�R˜:Ñ%Ø˜cš	‘ sˆBØ�
‰
�B˜˜q  W¡Ð-Ð.Õ/ð0ð €Jùò as
   ™A:¡A:c           
      ó  — d}d}dj                  |||||||g«      dz   }g }t        j                  ||j                  «       «      D ]:  }|j	                  | |j                  «       D �cg c]  }t        |«      ‘Œ c}g«       Œ< |S c c}w )Nr   z([1|0])z[\s,]*)Újoinr   ÚfinditerÚstripr#   Úgroupsr    )r$   r&   Úfloat_reÚflag_reÚa_seq_rer)   r'   Únums           r+   Úsplit_arc_valuesr6      s�   € Ø0€HØ€Gà�~‰~Ø�(˜H g¨w¸À(ðó à	ñ€Hð €CÜ�{‰{˜8 U§[¡[£]Ó3ò ?ˆØ�
‰
�B¨s¯z©z«|Ö<¨œ˜s�Ò<Ð=Õ>ð?à€Jùò =s   Á'Bc                 ób  — i dd“dd“dd“dd“dd“d	d“d
d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“ddddœ¥}|j                  «       }g }t        j                  d| j                  «       t        j                  ¬«      }d}|D ]¦  }|j                  «       dk(  rŒ||v r9|dk(  r||k(  rd}n|dk(  r||k(  rd}n|}||   dk(  sŒ@|j                  |g g«       ŒT|j                  «       dk(  r|j                  t        ||«      «       n|j                  t        |||   |«      «       |d   }Œ¨ |S )aÀ  Normalise SVG path.

    This basically introduces operator codes for multi-argument
    parameters. Also, it fixes sequences of consecutive M or m
    operators to MLLL... and mlll... operators. It adds an empty
    list as argument for Z and z only in order to make the resul-
    ting list easier to iterate over.

    E.g. "M 10 20, M 20 20, L 30 40, 40 40, Z"
      -> ['M', [10, 20], 'L', [20, 20], 'L', [30, 40], 'L', [40, 40], 'Z', []]
    ÚAé   ÚaÚQé   ÚqÚTé   ÚtÚSÚsr   r   r   r   ÚHr   ÚVÚhÚvÚCé   r   )ÚcÚZÚzz([achlmqstvz]))ÚflagsNÚ éþÿÿÿ)	Úkeysr   Úsplitr0   ÚIr#   Úlowerr6   r,   )ÚattrÚopsÚop_keysÚresultr1   r$   Úitems          r+   Únormalise_svg_pathrX   #   sÁ  € ðØˆQðØ�QðàˆQðà�Qðà˜Qðà # Qðà(+¨Qðà03°Qðð 	ˆQðð �Qðð ˜Qðð !$ Qðð ),¨Qðð 14°Qðð 	ˆQð	ð �Qð	ð ˜Qð	ð &'¨Q°Qò	€Cð �h‰h‹j€Gð €FÜ�X‰XÐ&¨¯
©
«¼B¿D¹DÔA€FØ	€BØò ˆØ�:‰:‹<˜2ÒØØ�7‰?ð �sŠ{˜t ršzØ‘Ø˜’ ¨¢Ø‘à�Ø�2‰w˜!‹|Ø—‘˜r 2˜hÕ'à�x‰x‹z˜SÒ Ø—‘Ô.¨r°4Ó8Õ9à—‘œl¨2¨s°2©w¸Ó=Ô>Ø˜‘‰Bð'ð* €Mó    c                 ó¶   — | }| d   d|d   | d   z
  z  z   | d   d|d   | d   z
  z  z   f}|d   d|d   | d   z
  z  z   |d   d|d   | d   z
  z  z   f}|}||||fS )zM
    Convert a quadratic Bezier curve through q0, q1, q2 to a cubic one.
    r   gUUUUUUå?r   gUUUUUUÕ?© )Úq0Úq1Úq2Úc0Úc1Úc2Úc3s          r+   Úconvert_quadratic_to_cubic_pathrc   T   s˜   € ð 
€BØ
ˆQ‰%�%˜2˜a™5 2 a¡5™=Ñ)Ñ
)¨2¨a©5°5¸B¸q¹EÀBÀqÁE¹MÑ3JÑ+JÐ	K€BØ
ˆQ‰%�%˜2˜a™5 2 a¡5™=Ñ)Ñ
)¨2¨a©5°5¸B¸q¹EÀBÀqÁE¹MÑ3JÑ+JÐ	K€BØ	€BØˆr�2�rˆ>ÐrY   c                 óì   — t        | Ž t        |Ž z  }|dk(  ry| d   |d   z  | d   |d   z  z   |z  }|dk  rd}n|dkD  rd}| d   |d   z  | d   |d   z  z
  }t        t        t        |«      |«      «      S )Nr   r   éÿÿÿÿ)r
   r   r   r   )ÚurF   ÚdrI   rB   s        r+   Úvector_anglerh   a   s•   € Üˆqˆ	”E˜1�IÑ€AØˆA‚vØØ	
ˆ1‰��!‘‰�q˜‘t˜a ™d‘{Ñ	" aÑ'€AØˆ2‚vØ‰Ø	
ˆQŠØˆØ	ˆ!‰ˆq�‰t‰�a˜‘d˜Q˜q™T‘kÑ!€AÜ”8œD ›G QÓ'Ó(Ð(rY   c	                 ót  — t        |«      }t        |«      }|rHt        |«      }	t        |	«      }
t        |	«      }d| |z
  z  }d||z
  z  }||z  |
|z  z
  }|
|z  ||z  z   }nd| |z
  z  }d||z
  z  }||z  ||z  z  ||z  ||z  z  z   }|dkD  r5t	        |«      }||z  }||z  }||z  ||z  z  ||z  ||z  z  z   }d|z  dz
  }n|dk7  rd|z  dz
  }d|cxk  rdk  rn nd}t	        |«      }||k(  r| }||z  |z  |z  }||z  |z   |z  }|r)|z  
|z  z
  d| |z   z  z   }|
|z  ||z  z   d||z   z  z   }n|d| |z   z  z   }|d||z   z  z   }t        d||z
  |z  ||z
  |z  f«      }t        ||z
  |z  ||z
  |z  f| |z
  |z  | |z
  |z  f«      dz  }|dk(  r|dkD  r|dz  }n|dk(  r
|dk  r|dz  }||||| | fS )zŠ
    See http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes F.6.5
    note that we reduce phi to zero outside this routine
    ç      à?r   r   g»½×Ùß|Û½)r   r   ih  )r	   r   r   r   r   rh   )Úx1Úy1Úx2Úy2ÚfAÚfSÚrxÚryÚphiÚphi_radÚsin_phiÚcos_phiÚtxÚtyÚx1dÚy1dÚrÚrrÚcxdÚcydÚcxÚcyÚtheta1Údthetas                           r+   Úend_point_to_center_parametersrƒ   m   s…  € ô
 
ˆb‹€BÜ	ˆb‹€Bñ Ü˜#“,ˆÜ�g“,ˆÜ�g“,ˆØ�B˜‘G‰_ˆØ�B˜‘G‰_ˆØ˜‰l˜W r™\Ñ)ˆØ˜‰l˜W r™\Ñ)‰à�R˜"‘W‰oˆØ�R˜"‘W‰oˆð, 	ˆc‰	�R˜"‘WÑ  c¡	¨R°"©WÑ 5Ñ5€AØˆ1‚uÜ�!‹WˆØ
ˆb‰ˆØ
ˆb‰ˆØ�#‰I˜˜b™Ñ! C¨#¡I°°b±Ñ$9Ñ9ˆØ�‰E�A‰I‰Ø	
ˆaŠØ�‰E�A‰IˆØ�„~�A…~ØˆÜˆQ‹€AØ	ˆR‚xØˆBˆØˆr‰6�C‰<˜2Ñ
€CØ�‰F�S‰Lˆ/˜BÑ
€Cñ Ø�s‰]˜W s™]Ñ*¨S°B¸±G©_Ñ<ˆØ�s‰]˜W s™]Ñ*¨S°B¸±G©_Ñ<‰à�3˜"˜r™'‘?Ñ"ˆØ�3˜"˜r™'‘?Ñ"ˆô ˜& C¨#¡I°Ñ#3°c¸C±iÀ2Ñ5EÐ"FÓG€FÜØ
�‰)�rÑ	˜C #™I¨Ñ+Ð,Øˆ$�‰*˜Ñ	˜c˜T C™Z¨2Ñ-Ð.óð 	ñ€Fð 
ˆQ‚w�6˜A’:Ø�#‰‰Ø	ˆqŠ�V˜a’ZØ�#‰ˆØˆr�2�r˜F˜7 V GÐ+Ð+rY   c                 ód  — t        |«      dk  rd}|}nt        t        |«      dz  «      }||z  }|dk(  rg S t        |«      }|dz  }	t        ddt        |	«      z
  z  t	        |	«      z  «      }
|dk  r|
 }
g }t        |«      }||z   }t        |«      }t	        |«      }t        |«      D ]…  }|}|}|||z  z   }t        |«      }t	        |«      }|j                  | ||z  z   |||z  z
  | |||
|z  z
  z  z   ||||
|z  z   z  z
  | |||
|z  z   z  z   ||||
|z  z
  z  z
  | ||z  z   |||z  z
  f«       Œ‡ |S )NéZ   r   r   rj   gUUUUUUõ?)Úabsr   r   r   r   r!   Úappend)r   r€   rq   rr   Ú	start_angÚextentÚnfragÚ
frag_angleÚfrag_radÚhalf_radÚkappaÚ
point_listr�   Ú	start_radr`   Ús1r*   r_   Ús0s                      r+   Úbezier_arc_from_centrer“   »   s„  € Ü
ˆ6ƒ{�bÒØˆØ‰
ä”S˜“[ 2Ñ%Ó&ˆØ˜e‘^ˆ
Ø�Q‚Øˆ	ä�zÓ"€HØ˜#‰~€HÜ�˜œS ›]Ñ*Ñ+¬c°(«mÑ;Ó<€Eà�A‚~Ø�ˆà€JÜ�YÓ€FØ˜Ñ!€Iä	ˆV‹€BÜ	ˆV‹€BÜ�5‹\ò )ˆØˆØˆØ˜Q ™\Ñ)ˆÜ�‹[ˆÜ�‹[ˆØ×Ñ˜2  R¡™<Ø˜r B™w™,Ø˜r R¨%°"©*¡_Ñ5Ñ5Ø˜r R¨%°"©*¡_Ñ5Ñ5Ø˜r R¨%°"©*¡_Ñ5Ñ5Ø˜r R¨%°"©*¡_Ñ5Ñ5Ø˜r B™w™,Ø˜r B™w™,ð(õ 	)ð)ð ÐrY   c	           
      ó"  — | |k(  r||k(  rg S |rÙt        t        | «      t        |  | «      «      }	t        |	||f«      \  }
}t	        dd|
|||||«      \  }}}}}}t        ||||||«      }t        t        | |«      t        |«      «      }	g }|D ]U  \  } }}}}}}}|j                  t        |	| |f«      t        |	||f«      z   t        |	||f«      z   t        |	||f«      z   «       ŒW |S t	        | |||||||«      \  }}}}}}t        ||||||«      S )Nr   )r   r   r   r   rƒ   r“   r‡   )rk   rl   rq   rr   rs   ro   rp   rm   rn   ÚmxÚtx2Úty2r   r€   rˆ   r‰   Úbpr)   Úx3Úy3Úx4Úy4s                         r+   Úbezier_arc_from_end_pointsr�   â   s]  € Ø
ˆbŠ�R˜2’Xð ˆ	Ù
ô ”6˜3˜$“<¤¨B¨3°°Ó!4Ó5ˆÜ! " r¨2 hÓ/‰ˆˆSä,JØˆq�#�s˜B  B¨ó-
Ñ)ˆˆB��B˜	 6ô $ B¨¨B°°I¸vÓFˆä”9˜R Ó$¤f¨S£kÓ2ˆØˆØ.0ò 	Ñ*ˆB��B˜˜B  B¨Ø�J‰JÜ˜r B¨ 8Ó,¬~¸bÀ2ÀrÀ(Ó/KÑKÜ˜r B¨ 8Ó,ñ-Ü/=¸bÀ2ÀrÀ(Ó/KñLõð	ð
 ˆ
ä,JØ��B˜˜B  B¨ó-
Ñ)ˆˆB��B˜	 6ô & b¨"¨b°"°iÀÓHÐHrY   c                   ó0   ‡ — e Zd ZdZddefˆ fd„	Zd„ Zˆ xZS )r   zPath, from an svg path stringr   Nc                 óÈ  •— |j                  dd«      }|j                  dd«      }t        ‰)| �  d%d d |||dœ|¤Ž |sy t        |«      }| j                  }	g }
g }d}d }t        dt        |«      d«      D �]"  }|||dz    \  }}|dv r?|dkD  r:| j                  d   t        k7  r$|
j                  t        | j                  «      «       |d	k(  r | j                  |Ž  |	d
d  }�n®|dk(  r | j                  |Ž  �n˜|dk(  rYt        |	«      dk\  r5|dv r|}n|	d
d  }|d   |d   z   |d   |d   z   }}| j                  ||«       n | j                  |Ž  |	d
d  }�n:|dk(  r*|	d
   |d   z   |	d   |d   z   }}| j                  ||«       �n|dk(  r| j                  |d   |	d   «       �nì|dk(  r| j                  |	d
   |d   «       �nÍ|dk(  r | j                  |	d
   |d   z   |	d   «       �n¨|dk(  r | j                  |	d
   |	d   |d   z   «       �nƒ|dk(  r | j                  |Ž  �nm|dk(  rY|\  }}}}t        |	«      dk  s|dvr|	d
d  dz  \  }}}}n
|	dd  \  }}}}|||z
  z   |||z
  z   }}| j                  ||||||«       �n|dk(  r;|	d
d  \  }}|\  }}}}}}| j                  ||z   ||z   ||z   ||z   ||z   ||z   «       �nÏ|dk(  re|\  }}}}t        |	«      dk  s|dvr|	d
d  dz  \  }}}}n
|	dd  \  }}}}|||z
  z   |||z
  z   }}| j                  ||||z   ||z   ||z   ||z   «       �ne|dk(  rO|	d
d  \  }}|\  }}}}||f}t        ||f||f||f«      \  \  }}\  }}\  }}\  }}| j                  ||||||«       �n|dk(  rm|�|\  }}n|	d
d  \  }}|	d
d  \  }}|||z
  z   |||z
  z   }}||f}|\  }}t        ||f||f||f«      \  \  }}\  }}\  }}\  }}| j                  ||||||«       �nŸ|dk(  rf|	d
d  \  }}|\  }}}}||z   ||z   ||z   ||z   f\  }}}}||f}t        ||f||f||f«      \  \  }}\  }}\  }}\  }}| j                  ||||||«       �n4|dk(  rv|�|\  }}n|	d
d  \  }}|	d
d  \  }}|\  }}||z   ||z   }}|||z
  z   |||z
  z   }}||f}t        ||f||f||f«      \  \  }}\  }}\  }}\  }}| j                  ||||||«       n¹|dv rŠ|\  }}} }!}"}}|	d
d  \  }}|d k(  r
||z  }||z  }t        |«      d!k  st        |«      d!k  r| j                  ||«       net        ||||| |!|"||«	      }#|#D ]!  \  }$}$}}}}}}| j                  ||||||«       Œ# n+|dv r| j!                  «        nt"        j%                  d"|«       |d#vrd }|}�Œ% | j                  d   t        k7  r$|
j                  t        | j                  «      «       |s|rv| j'                  «       }%|r1|%d   |%d   z   }&t        dt        |	«      d«      D ]  }|&|	|   z
  |	|<   Œ |r1|%d$   |%d   z   }&t        dt        |	«      d«      D ]  }|&|	|   z
  |	|<   Œ |
r�| j(                  ��t+        «       }'|'j,                  j/                  t1        j2                  | j,                  «      «       t5        |
«      D ]"  }(|'j                  j7                  |(t        «       Œ$ |'| _        d | _        y d | _        y )&NÚvswapr   Úhswap)ÚpointsÚ	operatorsÚ
isClipPathÚ	autocloseÚfillModerM   r?   )r   r   re   r   rN   r   r   )rJ   rK   r   r   rC   rD   rE   rF   rG   rA   r<   >   rG   rA   rI   rB   éüÿÿÿrI   rB   r;   r>   r=   r@   )r8   r:   r:   g»½×Ùß|Û=zSuspicious self operator: %s)r;   r=   r>   r@   é   r[   )ÚpopÚsuperÚ__init__rX   r¢   r!   r"   r£   r   r‡   ÚmoveToÚlineToÚcurveTorc   r†   r�   Ú	closePathÚloggerÚdebugÚ	getBoundsÚ	fillColorr   Ú__dict__ÚupdateÚcopyÚdeepcopyÚreversedÚinsertÚ_SvgPath__closed_path)*ÚselfrB   r¤   r¥   r¦   Úkwr    r¡   ÚnormPathr¢   Úunclosed_subpath_pointersÚsubpath_startÚlastopÚlast_quadratic_cpr*   r$   ÚnumsÚstarting_pointÚxnÚynrm   rn   ÚxpÚypÚx0Úy0ÚxiÚyirk   rl   rq   rr   rs   ro   rp   r˜   Ú_Úbr   Úclosed_pathÚpointerÚ	__class__s*                                            €r+   r«   zSvgPath.__init__  s‡  ø€ Ø—‘�w˜qÓ!ˆØ—‘�w˜qÓ!ˆÜ‰Ñð 	1Ø#¨dØ#-Ø"+Ø!)ñ		1ð .0ò		1ñ
 �&Ü% aÓ(ˆØ—‘ˆà$&Ð!ØˆØˆØ Ðä�qœ#˜h›-¨Ó+ó H	ˆAØ  ! A¡#�‰HˆB�à�ZÑ A¨¢E¨d¯n©n¸RÑ.@ÄJÒ.NØ)×0Ñ0´°T·^±^Ó1DÔEð �SŠyØ�—‘˜TÑ"Ø & r s ’à�s’Ø�—‘˜TÓ"ð �s’Ü�v“; !Ò#Ø Ñ+Ø)6™à)/°°¨˜Ø+¨AÑ.°°a±Ñ8¸.ÈÑ:KÈdÐSTÉgÑ:U˜�BØ—K‘K  BÕ'à�D—K‘K Ñ&Ø & r s ’à�s’Ø ™ d¨1¡gÑ-¨v°b©z¸DÀ¹GÑ/C�B�Ø—‘˜B Ö#ð �s’Ø—‘˜D ™G V¨B¡ZÖ0Ø�s’Ø—‘˜F 2™J¨¨Q©Ö0ð �s’Ø—‘˜F 2™J¨¨a©Ñ0°&¸±*Ö=Ø�s’Ø—‘˜F 2™J¨¨r©
°T¸!±WÑ(<Ö=ð �s’Ø�—‘˜dÓ#Ø�s’Ø!%‘��B˜˜BÜ�v“; ’? fÐ4HÑ&HØ%+¨B¨C [°1¡_‘N�B˜˜B¡à%+¨B¨C [‘N�B˜˜B Ø˜r B™w™¨¨r°B©w©�B�Ø—‘˜R  R¨¨R°Ö4ð �s’Ø  ˜‘��BØ)-Ñ&��B˜˜B  BØ—‘˜R "™W b¨2¡g¨r°B©w¸¸R¹ÀÀbÁÈ"ÈrÉ'ÖRØ�s’Ø!%‘��B˜˜BÜ�v“; ’? fÐ4HÑ&HØ%+¨B¨C [°1¡_‘N�B˜˜B¡à%+¨B¨C [‘N�B˜˜B Ø˜r B™w™¨¨r°B©w©�B�Ø—‘˜R  R¨"¡W¨b°2©g°r¸B±wÀÀRÁÖHð �s’Ø  ˜‘��BØ!%‘��B˜˜BØ%'¨ HÐ!ä3°R¸°H¸rÀ2¸hÈÈRÈÓQñ 7‘��R™(˜2˜r¡H R¨©h¨r°2à—‘˜R  R¨¨R°Ö4Ø�s’Ø$Ð0Ø.‘F�B™à# B C˜[‘F�B˜Ø  ˜‘��BØ˜r B™w™¨¨r°B©w©�B�Ø%'¨ HÐ!Ø‘��Bä3°R¸°H¸rÀ2¸hÈÈRÈÓQñ 7‘��R™(˜2˜r¡H R¨©h¨r°2à—‘˜R  R¨¨R°Ö4ð �s’Ø  ˜‘��BØ!%‘��B˜˜BØ!# b¡¨"¨r©'°2¸±7¸BÀ¹GÐ!C‘��B˜˜BØ%'¨ HÐ!ä3°R¸°H¸rÀ2¸hÈÈRÈÓQñ 7‘��R™(˜2˜r¡H R¨©h¨r°2à—‘˜R  R¨¨R°Ö4Ø�s’Ø$Ð0Ø.‘F�B™à# B C˜[‘F�B˜Ø  ˜‘��BØ‘��BØ˜b™ " r¡'�B�Ø˜r B™w™¨¨r°B©w©�B�Ø%'¨ HÐ!ä3°R¸°H¸rÀ2¸hÈÈRÈÓQñ 7‘��R™(˜2˜r¡H R¨©h¨r°2à—‘˜R  R¨¨R°Õ4ð �zÑ!Ø.2Ñ+��B˜˜R  R¨Ø  ˜‘��BØ˜’9Ø˜"‘H�BØ˜"‘H�BÜ�r“7˜eÒ#¤s¨2£w°%Ò'7Ø—K‘K  BÕ'ä3°B¸¸BÀÀCÈÈRÐQSÐUWÓX�BØ8:ò =Ñ4˜˜1˜b " b¨"¨b°"ØŸ™ R¨¨R°°R¸Õ<ñ=ð �zÑ!Ø—‘Õ ô —‘Ð;¸RÔ@àÐ-Ñ-Ø$(Ð!ØŠFðQH	ðT �>‰>˜"Ñ¤Ò+Ø%×,Ñ,¬S°·±Ó-@ÔAá‘EØ—‘Ó ˆAÙØ�a‘D˜˜1™‘I�Ü˜q¤ V£¨QÓ/ò .�AØ ! F¨1¡I¡�F˜1’Ið.áØ�a‘D˜˜1™‘I�Ü˜q¤ V£¨QÓ/ò .�AØ ! F¨1¡I¡�F˜1’Ið.ñ %¨¯©Ð)Cô ›&ˆKØ× Ñ ×'Ñ'¬¯©°d·m±mÓ(DÔEÜ#Ð$=Ó>ò B�Ø×%Ñ%×,Ñ,¨W´jÕAðBà!,ˆDÔØ!ˆD�Nà!%ˆDÕrY   c                 óä   — t        «       }| j                  j                  «       |_        |`| j                  r8t	        «       }|j                  | j                  «       |j                  |«       |S |S )N)r   r´   r¶   rº   r   Úadd)r»   ÚpÚgs      r+   ÚprovideNodezSvgPath.provideNode¹  sZ   € Ü‹FˆØ—]‘]×'Ñ'Ó)ˆŒ
ØÐ#Ø×ÒÜ“ˆAØ�E‰E�$×$Ñ$Ô%Ø�E‰E�!ŒHØˆHàˆHrY   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r«   rÕ   Ú__classcell__)rÐ   s   @r+   r   r     s   ø„ Ù'Ø%&°$Àõ t&öl
rY   r   )r   )r   r…   )"rÙ   Ú__all__r   r¶   Úmathr   r   r   r   r   r	   r
   r   r   r   Úshapesr   r   r   r   r   r   r   r   r   r,   r6   rX   rc   rh   rƒ   r“   r�   r   r[   rY   r+   ú<module>rÞ      s_   ðÙ 4Ø€ß ß T× T× Tß n× nÕ nòò 
ò/òbò
)óL,ó\%òNIô>Bˆd�8õ BrY   