Ë
    `›¾j…`  ã                   óV  — d dl 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 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z  dZ!d	Z"d
Z#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$i¥Z$ G d)„ d*«      Z% G d+„ d,«      Z& G d-„ d.«      Z'y)/é    N)ÚAnyÚDictÚListÚOptionalÚTupleÚUnioné   )ÚErrors)Úescape_htmlÚminify_htmlÚregistryé   )ÚTPL_DEP_ARCSÚTPL_DEP_SVGÚTPL_DEP_WORDSÚTPL_DEP_WORDS_LEMMAÚTPL_ENTÚTPL_ENT_RTLÚTPL_ENTSÚ
TPL_FIGUREÚTPL_KB_LINKÚTPL_PAGEÚTPL_SPANÚTPL_SPAN_RTLÚTPL_SPAN_SLICEÚTPL_SPAN_SLICE_RTLÚTPL_SPAN_STARTÚTPL_SPAN_START_RTLÚ	TPL_SPANSÚ	TPL_TITLEÚenÚltrz#dddÚORGz#7aececÚPRODUCTz#bfeeb7ÚGPEz#feca74ÚLOCz#ff9561ÚPERSONz#aa9cfcÚNORPz#c887fbÚFACz#9cc9ccÚEVENTz#ffeb80ÚLAWz#ff8197ÚLANGUAGEÚWORK_OF_ARTz#f0d0ffÚDATEz#bfe1d9ÚTIMEÚMONEYz#e4e7d2ÚQUANTITYÚORDINALÚCARDINALÚPERCENTc                   ó2  — e Zd ZdZdZi fdeeef   ddfd„Z	 dde	eeef      de
d	e
defd
„Zde	e   de	eeef      dee   defd„Zede	e   de	eeef      de	eee	eeef      f      fd„«       Zde	eeef      defd„Zde	e   defd„Zde	e   defd„Zy)ÚSpanRendererzRender Spans as SVGs.ÚspanÚoptionsÚreturnNc                 óâ  — t        t        «      }t        j                  j	                  «       }|j                  «       D ]g  }t        |«      r |«       }t        |t         «      s2t        t        j                  j                  t        |«      ¬«      «      ‚|j                  |«       Œi |j                  |j                  di «      «       t        | _        |j#                  «       D ��ci c]  \  }}|j%                  «       |“Œ c}}| _        t(        | _        t,        | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  d	«      }|r|d
   | _        |d   | _        |d   | _        y| j*                  dk(  r"t<        | _        t>        | _        t@        | _        ytB        | _        tD        | _        tF        | _        yc c}}w )zfInitialise span renderer

        options (dict): Visualiser-specific options (colors, spans)
        ©ÚobjÚcolorsÚ
top_offseté(   Úspan_label_offseté   Útop_offset_stepé   Útemplater7   ÚsliceÚstartÚrtlN)$ÚdictÚDEFAULT_LABEL_COLORSr   Údisplacy_colorsÚget_allÚvaluesÚcallableÚ
isinstanceÚ
ValueErrorr
   ÚE925ÚformatÚtypeÚupdateÚgetÚDEFAULT_ENTITY_COLORÚdefault_colorÚitemsÚupperr=   ÚDEFAULT_DIRÚ	directionÚDEFAULT_LANGÚlangr>   r@   Úoffset_stepÚspan_templateÚspan_slice_templateÚspan_start_templater   r   r   r   r   r   )Úselfr8   r=   Úuser_colorsÚ
user_colorÚlabelÚcolorrD   s           ú_/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/spacy/displacy/render.pyÚ__init__zSpanRenderer.__init__9   s’  € ô Ô*Ó+ˆÜ×.Ñ.×6Ñ6Ó8ˆØ%×,Ñ,Ó.ò 	&ˆJÜ˜
Ô#ñ (›\�
Ü˜j¬$Ô/Ü ¤§¡×!3Ñ!3¼¸ZÓ8HÐ!3Ó!IÓJÐJØ�M‰M˜*Õ%ð	&ð 	�‰�g—k‘k (¨BÓ/Ô0Ü1ˆÔØ@FÇÁÃ×O±°°u�u—{‘{“} eÑ+ÓOˆŒô %ˆŒÜ ˆŒ	à!Ÿ+™+ l°BÓ7ˆŒà!(§¡Ð-@À"Ó!EˆÔØ"Ÿ;™;Ð'8¸"Ó=ˆÔð —;‘;˜zÓ*ˆÙØ!)¨&Ñ!1ˆDÔØ'/°Ñ'8ˆDÔ$Ø'/°Ñ'8ˆDÕ$à�~‰~ Ò&Ü%1�Ô"Ü+=�Ô(Ü+=�Õ(ä%-�Ô"Ü+9�Ô(Ü+9�Õ(ùó3 Ps   Ã'G+ÚparsedÚpageÚminifyc           
      óB  — g }t        |«      D ]‰  \  }}|dk(  rH|j                  di «      }|j                  dt        «      | _        |j                  dt        «      | _        |j                  | j                  |d   |d   |j                  d«      «      «       Œ‹ |r`dj                  |D �cg c]  }t        j                  |¬	«      ‘Œ c}«      }	t        j                  |	| j
                  | j                  ¬
«      }
ndj                  |«      }
|rt        |
«      S |
S c c}w )úòRender complete markup.

        parsed (list): Dependency parses to render.
        page (bool): Render parses wrapped as full HTML page.
        minify (bool): Minify HTML markup.
        RETURNS (str): Rendered SVG or HTML markup.
        r   ÚsettingsrZ   r\   ÚtokensÚspansÚtitleÚ ©Úcontent©rs   r\   Údir)Ú	enumeraterT   rY   rZ   r[   r\   ÚappendÚrender_spansÚjoinr   rQ   r   r   ©ra   rh   ri   rj   ÚrenderedÚiÚprm   ÚdocÚdocsÚmarkups              rf   ÚrenderzSpanRenderer.renderf   só   € ð ˆÜ˜fÓ%ò 	X‰DˆAˆqØ�AŠvØŸ5™5 ¨RÓ0�Ø!)§¡¨k¼;Ó!G�”Ø$ŸL™L¨´Ó>�”	Ø�O‰O˜D×-Ñ-¨a°©k¸1¸W¹:ÀqÇuÁuÈWÃ~ÓVÕWð	Xñ Ø—7‘7ÀhÖO¸sœJ×-Ñ-°cÖ:ÒOÓPˆDÜ—_‘_¨T¸¿	¹	ÀtÇ~Á~ÔV‰Fà—W‘W˜XÓ&ˆFÙÜ˜vÓ&Ð&Øˆùò Pó   Â+Drn   ro   rp   c                 óÄ   — | j                  ||«      }| j                  |«      }t        j                  || j                  ¬«      }|rt        j                  |¬«      |z   }|S )aÒ  Render span types in text.

        Spans are rendered per-token, this means that for each token, we check if it's part
        of a span slice (a member of a span type) or a span start (the starting token of a
        given span type).

        tokens (list): Individual tokens in the text
        spans (list): Individual entity spans and their start, end, label, kb_id and kb_url.
        title (str / None): Document title set in Doc.user_data['title'].
        ©rs   ru   ©rp   )Ú_assemble_per_token_infoÚ_render_markupr   rQ   rZ   r    )ra   rn   ro   rp   Úper_token_infor€   s         rf   rx   zSpanRenderer.render_spans�   sY   € ð  ×6Ñ6°v¸uÓEˆØ×$Ñ$ ^Ó4ˆÜ×!Ñ!¨&°d·n±nÔEˆÙÜ×%Ñ%¨EÔ2°VÑ;ˆFØˆó    c                 ó(  — g }t        |d„ ¬«      }|D ]  }d|d<   Œ	 t        | «      D ]ç  \  }}i }||d<   g }g }|D ]¼  }	i }
|	d   |cxk  r|	d   k  r¢n nŸ||	d   k(  }|	d   |
d<   ||
d	<   |rt        |«      r|d
   d   nddz   |	d<   |j                  |	«       |	d   |
d<   |	j	                  dd«      }|	j	                  dd«      }|rt        j                  ||¬«      nd|
d<   |j                  |
«       Œ¸d|	d<   Œ¾ ||d<   |j                  |«       Œé |S )a6  Assembles token info used to generate markup in render_spans().
        tokens (List[str]): Tokens in text.
        spans (List[Dict[str, Any]]): Spans in text.
        RETURNS (List[Dict[str, List[Dict, str, Any]]]): Per token info needed to render HTML markup for given tokens
            and spans.
        c                 ó,   — | d   | d   | d   z
   | d   fS )NÚstart_tokenÚ	end_tokenrd   © )Úss    rf   ú<lambda>z7SpanRenderer._assemble_per_token_info.<locals>.<lambda>©   s,   € Ø�-Ñ Ø�K‘. 1 ]Ñ#3Ñ3Ð4Ø�'‘
ð€ r‰   ©Úkeyr   Úrender_slotÚtextrŒ   r�   rd   Úis_startéÿÿÿÿr   Úkb_idrq   Úkb_urlú#©r—   r˜   Úkb_linkÚentities)Úsortedrv   Úlenrw   rT   r   rQ   )rn   ro   rˆ   r�   ÚidxÚtokenÚtoken_markupÚintersecting_spansrœ   r7   ÚentÚ
span_startr—   r˜   s                 rf   r†   z%SpanRenderer._assemble_per_token_info˜   sŒ  € ð ACˆô
 Øñô
ˆð ò 	!ˆAð  !ˆAˆmÒð	!ô
 $ FÓ+ò &	0‰JˆC�ð ,.ˆLØ#(ˆL˜Ñ Ø79ÐØˆHØò ,�Ø�Ø˜Ñ&¨#ÔA°°[Ñ0AÕAØ!$¨¨]Ñ(;Ñ!;�JØ#'¨¡=�C˜‘LØ&0�C˜
‘OÙ!ô  #Ð#5Ô6ð /¨rÑ2°=ÒAà!"Øñ	/˜˜]Ñ+ð
 '×-Ñ-¨dÔ3Ø)-¨mÑ)<�C˜Ñ&Ø ŸH™H W¨bÓ1�EØ!ŸX™X h°Ó4�FáJOœ×*Ñ*°¸vÕFÐUWð ˜	‘Nð —O‘O CÕ(ð +,�D˜Ò'ð;,ð< (0ˆL˜Ñ$Ø×!Ñ! ,Õ/ðM&	0ðP Ðr‰   rˆ   c                 ó®  — d}|D ]Í  }t        |d   d„ ¬«      }|d   j                  «       dk(  }|rŽ|sŒ| j                  |d   «      }| j                  |d   «      }| j                  | j
                  z   | j                  t        |«      dz
  z  z   }|| j                  j                  t        |d   «      |||¬«      z  }Œº|t        |d   dz   «      z  }ŒÏ |S )	z,Render the markup from per-token informationrq   rœ   c                 ó   — | d   S )Nr“   rŽ   )Úds    rf   r�   z-SpanRenderer._render_markup.<locals>.<lambda>ã   s   € ¸qÀÑ?O€ r‰   r‘   r”   r   )r”   Úspan_slicesÚspan_startsÚtotal_heightú )r�   ÚstripÚ_get_span_slicesÚ_get_span_startsr>   r@   r]   rž   r^   rQ   r   )	ra   rˆ   r€   r    rœ   Úis_whitespaceÚslicesÚstartsrª   s	            rf   r‡   zSpanRenderer._render_markupß   s   € àˆØ#ò 	;ˆEÜ˜e JÑ/Ñ5OÔPˆHð " &™M×/Ñ/Ó1°RÑ7ˆMÙ¡Ø×.Ñ.¨u°ZÑ/@ÓA�Ø×.Ñ.¨u°ZÑ/@ÓA�à—O‘OØ×,Ñ,ñ-à×'Ñ'¬3¨x«=¸1Ñ+<Ñ=ñ?ð ð
 ˜$×,Ñ,×3Ñ3Ü$ U¨6¡]Ó3Ø &Ø &Ø!-ð	 4ó ñ ‘ð œ+ e¨F¡m°cÑ&9Ó:Ñ:‘ð+	;ð, ˆr‰   rœ   c                 óD  — g }|D ]‰  }| j                   j                  |d   j                  «       | j                  «      }| j                  | j
                  |d   dz
  z  z   }| j                  j                  ||¬«      }|j                  |«       Œ‹ dj                  |«      S )z*Get the rendered markup of all Span slicesrd   r“   r   )Úbgr>   rq   )
r=   rT   rX   rV   r>   r]   r_   rQ   rw   ry   )ra   rœ   r¨   Úentityre   r>   Ú
span_slices          rf   r­   zSpanRenderer._get_span_slicesú   s©   € àˆØò 	+ˆFð
 —K‘K—O‘O F¨7¡O×$9Ñ$9Ó$;¸T×=OÑ=OÓPˆEØŸ™Ø× Ñ  F¨=Ñ$9¸AÑ$=Ñ>ñˆJð ×1Ñ1×8Ñ8ØØ%ð 9ó ˆJð ×Ñ˜zÕ*ð	+ð �w‰w�{Ó#Ð#r‰   c                 ób  — g }|D ]˜  }| j                   j                  |d   j                  «       | j                  «      }| j                  | j
                  |d   dz
  z  z   }|d   r%| j                  j                  |||d   |d   ¬«      nd}|j                  |«       Œš dj                  |«      S )z0Get the rendered markup of all Span start tokensrd   r“   r   r•   r›   )r³   r>   rd   r›   rq   )
r=   rT   rX   rV   r>   r]   r`   rQ   rw   ry   )ra   rœ   r©   r´   re   r>   r¤   s          rf   r®   zSpanRenderer._get_span_starts  sÈ   € àˆØò 	+ˆFØ—K‘K—O‘O F¨7¡O×$9Ñ$9Ó$;¸T×=OÑ=OÓPˆEØŸ™Ø× Ñ  F¨=Ñ$9¸AÑ$=Ñ>ñˆJð ˜*Ò%ð ×(Ñ(×/Ñ/ØØ)Ø  ™/Ø" 9Ñ-ð	 0ô ð ð ð ×Ñ˜zÕ*ð	+ð  �w‰w�{Ó#Ð#r‰   ©FF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústyler   Ústrr   rg   r   Úboolr�   r   rx   Ústaticmethodr†   r‡   r­   r®   rŽ   r‰   rf   r6   r6   4   sO  „ Ùà€Eà13ñ +:  S¨# X¡ð +:¸ó +:ð\ PUñØ˜4  S ™>Ñ*ðØ26ðØHLðà	óð6à�S‘	ðð �D˜˜c˜‘NÑ#ðð ˜‰}ð	ð
 
óð. ðDØ�S‘	ðDØ"& t¨C°¨H¡~Ñ"6ðDà	ˆd�3˜˜T # s (™^Ñ,Ð,Ñ-Ñ	.òDó ðDðL¨T°$°s¸C°x±.Ñ-Að Àcó ð6$¨¨d©ð $¸ó $ð&$¨¨d©ð $¸ô $r‰   r6   c                   óP  — e Zd ZdZdZi fdeeef   ddfd„Z	 d!de	eeef      de
d	e
defd
„Zdeeef   de	eeef      de	eeef      defd„Zdededee   dedef
d„Zdedededededefd„Zdededededef
d„Zdededededef
d„Zde	eeef      deeeeef   ef   fd „Zy)"ÚDependencyRendererz!Render dependency parses as SVGs.Údepr8   r9   Nc                 óP  — |j                  dd«      | _        |j                  dd«      | _        |j                  d| j                  rdnd«      | _        |j                  d| j                  rd	nd
«      | _        |j                  dd«      | _        |j                  d| j                  rdnd«      | _        |j                  dd«      | _        |j                  dd«      | _        |j                  dd«      | _	        |j                  dd«      | _
        t        | _        t        | _        y)zÜInitialise dependency renderer.

        options (dict): Visualiser-specific options (compact, word_spacing,
            arrow_spacing, arrow_width, arrow_stroke, distance, offset_x,
            color, bg, font)
        ÚcompactFÚword_spacingé-   Úarrow_spacingé   rA   Úarrow_widthé   é
   Úarrow_stroker	   Údistanceé–   é¯   Úoffset_xé2   re   z#000000r³   z#ffffffÚfontÚArialN)rT   rÄ   rÅ   rÇ   rÉ   rÌ   rÍ   rÐ   re   r³   rÒ   rY   rZ   r[   r\   )ra   r8   s     rf   rg   zDependencyRenderer.__init__(  sã   € ð —{‘{ 9¨eÓ4ˆŒØ#ŸK™K¨¸Ó;ˆÔØ$Ÿ[™[¨ÀÇÂ¹"ÐRTÓUˆÔØ"Ÿ;™; }¸4¿<º<±aÈRÓPˆÔØ#ŸK™K¨¸Ó:ˆÔØŸ™ J°t·|²|±ÈÓMˆŒØŸ™ J°Ó3ˆŒØ—[‘[ ¨)Ó4ˆŒ
Ø—+‘+˜d IÓ.ˆŒØ—K‘K ¨Ó0ˆŒ	Ü$ˆŒÜ ˆ�	r‰   rh   ri   rj   c                 óä  — t        j                  «       j                  }g }t        |«      D ]¼  \  }}|dk(  rH|j	                  di «      }|j	                  dt
        «      | _        |j	                  dt        «      | _        |› d|› �}	| j                  |	|d   |d   «      }
|j	                  d«      r(t        j                  |j	                  d«      ¬	«      |
z   }
|j                  |
«       Œ¾ |r`d
j                  |D �
cg c]  }
t        j                  |
¬«      ‘Œ c}
«      }t        j                  || j                  | j                  ¬«      }nd
j                  |«      }|rt!        |«      S |S c c}
w )rl   r   rm   rZ   r\   ú-ÚwordsÚarcsrp   r…   rq   rr   rt   )ÚuuidÚuuid4Úhexrv   rT   rY   rZ   r[   r\   Ú
render_svgr    rQ   rw   ry   r   r   r   )ra   rh   ri   rj   Ú	id_prefixr{   r|   r}   rm   Ú	render_idÚsvgrs   r€   s                rf   r�   zDependencyRenderer.render<  s:  € ô —J‘J“L×$Ñ$ˆ	ØˆÜ˜fÓ%ò 		!‰DˆAˆqØ�AŠvØŸ5™5 ¨RÓ0�Ø!)§¡¨k¼;Ó!G�”Ø$ŸL™L¨´Ó>�”	Ø$˜+ Q q cÐ*ˆIØ—/‘/ )¨Q¨w©Z¸¸6¹ÓCˆCØ�u‰u�WŒ~Ü×&Ñ&¨Q¯U©U°7«^Ô<¸sÑB�Ø�O‰O˜CÕ ð		!ñ Ø—g‘gÈÖRÀ#œz×0Ñ0¸Ö=ÒRÓSˆGÜ—_‘_Ø d§i¡i°T·^±^ô‰Fð —W‘W˜XÓ&ˆFÙÜ˜vÓ&Ð&Øˆùò Ss   Ã<E-rÝ   rÖ   r×   c                 ó¾  — | j                  |«      | _        t        | j                  j                  «       d¬«      | _        | j
                  dz  | j                  z  | j                  z   | _        | j                  t        |«      | j
                  z  z   | _
        | j                  d| j                  z  z   | _        || _        t        |«      D ��cg c]/  \  }}| j                  |d   |d   |j!                  dd«      |«      ‘Œ1 }}}t        |«      D ��cg c]&  \  }}| j#                  |d	   |d
   |d   |d   |«      ‘Œ( }}}dj%                  |«      dj%                  |«      z   }	t'        j(                  | j                  | j                  | j                  | j*                  | j,                  | j.                  |	| j0                  | j2                  ¬«	      S c c}}w c c}}w )a  Render SVG.

        render_id (Union[int, str]): Unique ID, typically index of document.
        words (list): Individual words and their tags.
        arcs (list): Individual arcs and their start, end, direction and label.
        RETURNS (str): Rendered SVG markup.
        r   ©Údefaultr	   é   r”   ÚtagÚlemmaNrd   rF   Úendru   rq   )	ÚidÚwidthÚheightre   r³   rÒ   rs   ru   r\   )Ú
get_levelsÚlevelsÚmaxrL   Úhighest_levelrÍ   rÌ   Úoffset_yrÐ   rž   rç   rÅ   rè   ræ   rv   Úrender_wordrT   Úrender_arrowry   r   rQ   re   r³   rÒ   rZ   r\   )
ra   rÝ   rÖ   r×   r|   ÚwÚ	words_svgÚaÚarcs_svgrs   s
             rf   rÛ   zDependencyRenderer.render_svg_  s¡  € ð —o‘o dÓ+ˆŒÜ  §¡×!3Ñ!3Ó!5¸qÔAˆÔØŸ™¨Ñ)¨D×,>Ñ,>Ñ>À×ARÑARÑRˆŒØ—]‘]¤S¨£Z°$·-±-Ñ%?Ñ?ˆŒ
Ø—m‘m a¨$×*;Ñ*;Ñ&;Ñ;ˆŒØˆŒô " %Ó(÷
á��1ð ×Ñ˜Q˜v™Y¨¨%©°!·%±%¸ÀÓ2FÈÕJð
ˆ	ñ 
ô " $›÷
á��1ð ×Ñ˜a ™j¨!¨G©*°a¸±hÀÀ%ÁÈ!ÕLð
ˆñ 
ð —'‘'˜)Ó$ r§w¡w¨xÓ'8Ñ8ˆÜ×!Ñ!Ø�w‰wØ—*‘*Ø—;‘;Ø—*‘*Ø�w‰wØ—‘ØØ—‘Ø—‘ô

ð 
	
ùó
ùó
s   Ã4GÄ+Gr”   rã   rä   r|   c                 ó(  — | j                   | j                  z   }| j                  || j                  z  z   }| j                  dk(  r| j
                  |z
  }t        |«      }|�t        j                  |||||¬«      S t        j                  ||||¬«      S )zÅRender individual word.

        text (str): Word text.
        tag (str): Part-of-speech tag.
        i (int): Unique ID, typically word index.
        RETURNS (str): Rendered SVG markup.
        rG   )r”   rã   rä   ÚxÚy)r”   rã   rõ   rö   )
rí   rÅ   rÐ   rÍ   rZ   rç   r   r   rQ   r   )ra   r”   rã   rä   r|   rö   rõ   Ú	html_texts           rf   rî   zDependencyRenderer.render_word‡  s�   € ð �M‰M˜D×-Ñ-Ñ-ˆØ�M‰M˜A §¡Ñ-Ñ-ˆØ�>‰>˜UÒ"Ø—
‘
˜Q‘ˆAÜ Ó%ˆ	ØÐÜ&×-Ñ-Ø C¨u¸¸Qôð ô ×#Ñ#¨¸¸qÀAÔFÐFr‰   rd   rF   rå   rZ   c           	      ó  — |dk  s|dk  r7t        ||||¬«      }t        t        j                  j                  di |¤Ž«      ‚| j
                  |||f   }| j                  || j                  z  z   | j                  z   }| j                  dk(  r| j                  |z
  }| j                  }	| j                  ||z
  | j                  z  z   || j                  z  z   | j                  | j                  |z
  z  dz  z
  }
| j                  dk(  r| j                  |
z
  }
| j                  || j                  z  dz  z
  }| j                  r| j                  || j                  z  dz  z
  }|dk(  r5t        | j
                  j                  «       d¬«      dkD  r| j                   }| j!                  |||	|
«      }| j#                  ||	||
«      }| j                  dk(  rd	nd
}t%        j                  | j&                  || j(                  ||||¬«      S )a5  Render individual arrow.

        label (str): Dependency label.
        start (int): Index of start word.
        end (int): Index of end word.
        direction (str): Arrow direction, 'left' or 'right'.
        i (int): Unique ID, typically arrow index.
        RETURNS (str): Rendered SVG markup.
        r   )rF   rå   rd   ru   rG   é   r	   rÊ   rà   é   ÚrightÚleft)ræ   r|   ÚstrokeÚheadrd   Ú
label_sideÚarcrŽ   )rH   rO   r
   ÚE157rQ   rê   rÐ   rÍ   rÇ   rZ   rç   rí   rì   rÄ   rë   rL   Úget_arrowheadÚget_arcr   ræ   rÌ   )ra   rd   rF   rå   rZ   r|   Ú
error_argsÚlevelÚx_startrö   Úx_endÚy_curveÚ	arrowheadr   rÿ   s                  rf   rï   zDependencyRenderer.render_arrowš  sæ  € ð �1Š9˜˜ašÜ E¨s¸%ÀYÔOˆJÜœVŸ[™[×/Ñ/Ñ=°*Ñ=Ó>Ð>Ø—‘˜U C¨Ð/Ñ0ˆØ—-‘- %¨$¯-©-Ñ"7Ñ7¸$×:LÑ:LÑLˆØ�>‰>˜UÒ"Ø—j‘j 7Ñ*ˆGØ�M‰Mˆà�M‰MØ�U‰{˜dŸm™mÑ+ñ,à�d—m‘mÑ#ñ$ð × Ñ  D×$6Ñ$6¸Ñ$>Ñ?À!ÑCñDð 	ð �>‰>˜UÒ"Ø—J‘J Ñ&ˆEØ—-‘- %¨$¯-©-Ñ"7¸!Ñ";Ñ;ˆØ�<Š<Ø—m‘m e¨d¯m©mÑ&;¸aÑ&?Ñ?ˆGØ�aŠ<œC §¡× 2Ñ 2Ó 4¸aÔ@À1ÒDØ—}‘}�nˆGØ×&Ñ& y°'¸1¸eÓDˆ	Ø�l‰l˜7 A w°Ó6ˆØ $§¡°%Ò 7‘W¸Vˆ
Ü×"Ñ"Ø�w‰wØØ×$Ñ$ØØØ!Øô
ð 	
r‰   r  rö   r  r  c                 óL   — d}| j                   rd}|j                  ||||¬«      S )uS  Render individual arc.

        x_start (int): X-coordinate of arrow start point.
        y (int): Y-coordinate of arrow start and end point.
        y_curve (int): Y-corrdinate of Cubic BÃ©zier y_curve point.
        x_end (int): X-coordinate of arrow end point.
        RETURNS (str): Definition of the arc path ('d' attribute).
        z!M{x},{y} C{x},{c} {e},{c} {e},{y}z M{x},{y} {x},{c} {e},{c} {e},{y})rõ   rö   ÚcÚe)rÄ   rQ   )ra   r  rö   r  r  rD   s         rf   r  zDependencyRenderer.get_arcÈ  s,   € ð 7ˆØ�<Š<Ø9ˆHØ�‰ ¨A°¸EˆÓBÐBr‰   rõ   c                 ó  — |dk(  r'||| j                   z
  dz   || j                   z   dz
  }}}n&||| j                   z   dz
  || j                   z
  dz   }}}d|› d|dz   › d|› d|| j                   z
  › d|› d|| j                   z
  › �S )aR  Render individual arrow head.

        direction (str): Arrow direction, 'left' or 'right'.
        x (int): X-coordinate of arrow start point.
        y (int): Y-coordinate of arrow start and end point.
        end (int): X-coordinate of arrow end point.
        RETURNS (str): Definition of the arrow head path ('d' attribute).
        rü   r	   ÚMú,z Lr«   )rÉ   )ra   rZ   rõ   rö   rå   Úp1Úp2Úp3s           rf   r  z DependencyRenderer.get_arrowheadÖ  s®   € ð ˜ÒØ˜Q ×!1Ñ!1Ñ1°AÑ5°q¸4×;KÑ;KÑ7KÈaÑ7O�B�‰Bà˜s T×%5Ñ%5Ñ5¸Ñ9¸3À×AQÑAQÑ;QÐTUÑ;U�B�ˆBØ�2�$�a˜˜A™�w˜b   A a¨$×*:Ñ*:Ñ&:Ð%;¸1¸R¸DÀÀ!Àd×FVÑFVÑBVÐAWÐXÐXr‰   c           	      óª  — |D �ch c]$  }t        t        |j                  «       «      «      ’Œ& c}D �cg c]  }t        |«      ‘Œ }}t	        |D �cg c]  }|d   ‘Œ	 c}d¬«      }dg|z  }i }t        |d„ ¬«      D ]F  }t	        ||d   |d    «      dz   }t        |d   |d   «      D ]  }|||<   Œ	 |||d   |d   |d   f<   ŒH |S c c}w c c}w c c}w )	a  Calculate available arc height "levels".
        Used to calculate arrow heights dynamically and without wasting space.

        args (list): Individual arcs and their start, end, direction and label.
        RETURNS (dict): Arc levels keyed by (start, end, label).
        rå   r   rà   c                 ó   — | d   | d   z
  S )Nrå   rF   rŽ   )r   s    rf   r�   z/DependencyRenderer.get_levels.<locals>.<lambda>ð  s   € °°E±
¸SÀ¹\Ñ0I€ r‰   r‘   rF   r   rd   )Útupler�   rW   rH   rë   Úrange)	ra   r×   r   ÚtÚlengthÚ	max_levelrê   r  r|   s	            rf   ré   zDependencyRenderer.get_levelså  sñ   € ð IMÖ!MÀ¤%¬¨s¯y©y«{Ó(;Õ"<Ò!MÖN˜A”�Q•ÐNˆÐNÜ¨DÖ1 S�c˜%“jÒ1¸1Ô=ˆØ�C˜&‘Lˆ	ØˆÜ˜$Ñ$IÔJò 	EˆCÜ˜	 # g¡,°°U±Ð<Ó=ÀÑAˆEÜ˜3˜w™<¨¨U©Ó4ò %�Ø$�	˜!’ð%à?DˆF�C˜‘L # e¡*¨c°'©lÐ;Ò<ð		Eð
 ˆùò "NùÒNùÚ1s   …)C³CÁCr·   )r¸   r¹   rº   r»   r¼   r   r½   r   rg   r   r¾   r�   r   ÚintrÛ   r   rî   rï   r  r  r   ré   rŽ   r‰   rf   rÁ   rÁ   #  s«  „ Ù+à€Eà13ñ !  S¨# X¡ð !¸ó !ð* PUñ!Ø˜4  S ™>Ñ*ð!Ø26ð!ØHLð!à	ó!ðF&
à˜˜c˜‘?ð&
ð �D˜˜c˜‘NÑ#ð&
ð �4˜˜S˜‘>Ñ"ð	&
ð
 
ó&
ðPG ð G¨#ð G°h¸s±mð GÈð GÐPSó Gð&,
Øð,
Ø!$ð,
Ø+.ð,
Ø;>ð,
ØCFð,
à	ó,
ð\C˜sð C sð C°Sð CÀð CÈó CðY sð Y¨sð Y°sð YÀð YÈó Yð˜t D¨¨c¨¡NÑ3ð ¸¸UÀ3ÈÈSÀ=Ñ=QÐSVÐ=VÑ8Wô r‰   rÁ   c            	       óŒ   — e Zd ZdZdZi fdeeef   ddfd„Z	 dde	eeef      de
d	e
defd
„Zdede	eeef      dee   defd„Zy)ÚEntityRendererzRender named entities as HTML.r£   r8   r9   Nc                 ó|  — t        t        «      }t        j                  j	                  «       }|j                  «       D ]g  }t        |«      r |«       }t        |t         «      s2t        t        j                  j                  t        |«      ¬«      «      ‚|j                  |«       Œi |j                  |j                  di «      «       t        | _        |j#                  «       D ��ci c]  \  }}|j%                  «       |“Œ c}}| _        |j                  dd«      | _        | j(                  �-| j(                  D �cg c]  }|j%                  «       ‘Œ c}| _        t*        | _        t.        | _        |j                  d«      }|r|| _        y| j,                  dk(  rt4        | _        yt6        | _        yc c}}w c c}w )zhInitialise entity renderer.

        options (dict): Visualiser-specific options (colors, ents)
        r;   r=   ÚentsNrD   rG   )rH   rI   r   rJ   rK   rL   rM   rN   rO   r
   rP   rQ   rR   rS   rT   rU   rV   rW   rX   r=   r  rY   rZ   r[   r\   Úent_templater   r   )	ra   r8   r=   rb   rc   rd   re   r£   rD   s	            rf   rg   zEntityRenderer.__init__ý  sR  € ô
 Ô*Ó+ˆÜ×.Ñ.×6Ñ6Ó8ˆØ%×,Ñ,Ó.ò 	&ˆJÜ˜
Ô#ñ (›\�
Ü˜j¬$Ô/Ü ¤§¡×!3Ñ!3¼¸ZÓ8HÐ!3Ó!IÓJÐJØ�M‰M˜*Õ%ð	&ð 	�‰�g—k‘k (¨BÓ/Ô0Ü1ˆÔØ@FÇÁÃ×O±°°u�u—{‘{“} eÑ+ÓOˆŒØ—K‘K ¨Ó-ˆŒ	Ø�9‰9Ð Ø04·	±	Ö:¨˜Ÿ™�Ò:ˆDŒIÜ$ˆŒÜ ˆŒ	Ø—;‘;˜zÓ*ˆÙØ (ˆDÕà�~‰~ Ò&Ü$/�Õ!ä$+�Õ!ùó Pùò ;s   Ã'F3Ä<F9rh   ri   rj   c           
      óB  — g }t        |«      D ]‰  \  }}|dk(  rH|j                  di «      }|j                  dt        «      | _        |j                  dt        «      | _        |j                  | j                  |d   |d   |j                  d«      «      «       Œ‹ |r`dj                  |D �cg c]  }t        j                  |¬	«      ‘Œ c}«      }	t        j                  |	| j
                  | j                  ¬
«      }
ndj                  |«      }
|rt        |
«      S |
S c c}w )rl   r   rm   rZ   r\   r”   r  rp   rq   rr   rt   )rv   rT   rY   rZ   r[   r\   rw   Úrender_entsry   r   rQ   r   r   rz   s              rf   r�   zEntityRenderer.render  só   € ð ˆÜ˜fÓ%ò 	T‰DˆAˆqØ�AŠvØŸ5™5 ¨RÓ0�Ø!)§¡¨k¼;Ó!G�”Ø$ŸL™L¨´Ó>�”	Ø�O‰O˜D×,Ñ,¨Q¨v©Y¸¸&¹	À1Ç5Á5ÈÃ>ÓRÕSð	Tñ Ø—7‘7ÀhÖO¸sœJ×-Ñ-°cÖ:ÒOÓPˆDÜ—_‘_¨T¸¿	¹	ÀtÇ~Á~ÔV‰Fà—W‘W˜XÓ&ˆFÙÜ˜vÓ&Ð&Øˆùò Pr‚   r”   ro   rp   c                 ó  — d}d}|D �]g  }|d   }|d   }|d   }	|j                  dd«      }
|j                  dd«      }|
rt        j                  |
|¬	«      nd}|j                  d
i «      }t        |||	 «      }||| j	                  d«      }t        |«      D ]9  \  }}|t        |«      z  }t        |«      dkD  sŒ#|t        |«      dz
  k7  sŒ5|dz  }Œ; | j                  �|j                  «       | j                  v rl| j                  j                  |j                  «       | j                  «      }||||dœ}|j                  |«       | | j                  j                  di |¤Žz  }n||z  }|	}�Œj ||d j	                  d«      }t        |«      D ]9  \  }}|t        |«      z  }t        |«      dkD  sŒ#|t        |«      dz
  k7  sŒ5|dz  }Œ; t        j                  || j                  ¬«      }|rt        j                  |¬«      |z   }|S )zìRender entities in text.

        text (str): Original text.
        spans (list): Individual entity spans and their start, end, label, kb_id and kb_url.
        title (str / None): Document title set in Doc.user_data['title'].
        rq   r   rd   rF   rå   r—   r˜   r™   rš   Úparamsú
r   z<br>N)rd   r”   r³   r›   r„   r…   rŽ   )rT   r   rQ   r   Úsplitrv   rž   r  rX   r=   rV   rS   r  r   rZ   r    )ra   r”   ro   rp   r€   Úoffsetr7   rd   rF   rå   r—   r˜   r›   Úadditional_paramsr´   Ú	fragmentsr|   Úfragmentre   Úent_settingss                       rf   r!  zEntityRenderer.render_ents7  s  € ð ˆØˆØó 	ˆDØ˜‘MˆEØ˜‘MˆEØ�u‘+ˆCØ—H‘H˜W bÓ)ˆEØ—X‘X˜h¨Ó,ˆFÙHM”k×(Ñ(¨u¸VÕDÐSUˆGØ $§¡¨°2Ó 6ÐÜ   e¨C Ó1ˆFØ˜V EÐ*×0Ñ0°Ó6ˆIÜ(¨Ó3ò %‘��8Øœ+ hÓ/Ñ/�Ü�y“> AÓ%¨!¬s°9«~ÀÑ/AÓ*AØ˜fÑ$‘Fð%ð �y‰yÐ  E§K¡K£M°T·Y±YÑ$>ØŸ™Ÿ™¨¯©«°t×7IÑ7IÓJ�à"Ø"ØØ&ñ	 �ð ×#Ñ#Ð$5Ô6ØÐ2˜$×+Ñ+×2Ñ2ÑB°\ÑBÑB‘à˜&Ñ �ØŠFð5	ð6 ˜˜�M×'Ñ'¨Ó-ˆ	Ü$ YÓ/ò 	!‰KˆAˆxØ”k (Ó+Ñ+ˆFÜ�9‹~ Ó! a¬3¨y«>¸AÑ+=Ó&=Ø˜&Ñ ‘ð	!ô —‘¨°T·^±^ÔDˆÙÜ×%Ñ%¨EÔ2°VÑ;ˆFØˆr‰   r·   )r¸   r¹   rº   r»   r¼   r   r½   r   rg   r   r¾   r�   r   r!  rŽ   r‰   rf   r  r  ø  s˜   „ Ù(à€Eà13ñ ,  S¨# X¡ð ,¸ó ,ðB PUñØ˜4  S ™>Ñ*ðØ26ðØHLðà	óð4.Øð.Ø $ T¨#¨s¨(¡^Ñ 4ð.Ø=EÀc¹]ð.à	ô.r‰   r  )(rØ   Útypingr   r   r   r   r   r   Úerrorsr
   Úutilr   r   r   Ú	templatesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r[   rY   rU   rI   r6   rÁ   r  rŽ   r‰   rf   ú<module>r/     sD  ðÛ ß :× :å ß 5Ñ 5÷÷ ÷ ÷ ÷ ð* €Ø€ØÐ ðØ	ˆ9ðàˆyðð 
ˆ9ðð 
ˆ9ð	ð
 ˆiðð ˆIðð 
ˆ9ðð ˆYðð 
ˆ9ðð �	ðð �9ðð ˆIðð ˆIðð ˆYðð �	ðð  ˆyð!ð" �	ð#ð$ ˆyñ%Ð ÷,l$ñ l$÷^Rñ R÷jmò mr‰   