Ë
    D^(h›  ã                   ó  — d Z ddlZddlZddlmZmZmZmZmZ ddl	Z
ddlmZ g d¢Z edd¬«      dd
„«       Zdd„Z edd¬«       e
j                   dd	¬«      dd„«       «       Z G d„ d«      Z G d„ de«      Z G d„ de«      Zd„ Zy)aS  Read and write graphs in GEXF format.

.. warning::
    This parser uses the standard xml library present in Python, which is
    insecure - see :external+python:mod:`xml` for additional information.
    Only parse GEFX files you trust.

GEXF (Graph Exchange XML Format) is a language for describing complex
network structures, their associated data and dynamics.

This implementation does not support mixed graphs (directed and
undirected edges together).

Format
------
GEXF is an XML format.  See http://gexf.net/schema.html for the
specification and http://gexf.net/basic.html for examples.
é    N)ÚElementÚElementTreeÚ
SubElementÚregister_namespaceÚtostring)Ú	open_file)Ú
write_gexfÚ	read_gexfÚrelabel_gexf_graphÚgenerate_gexfé   Úwb)ÚmodeTc                 ód   — t        |||¬«      }|j                  | «       |j                  |«       y)a4  Write G in GEXF format to path.

    "GEXF (Graph Exchange XML Format) is a language for describing
    complex networks structures, their associated data and dynamics" [1]_.

    Node attributes are checked according to the version of the GEXF
    schemas used for parameters which are not user defined,
    e.g. visualization 'viz' [2]_. See example for usage.

    Parameters
    ----------
    G : graph
       A NetworkX graph
    path : file or string
       File or file name to write.
       File names ending in .gz or .bz2 will be compressed.
    encoding : string (optional, default: 'utf-8')
       Encoding for text data.
    prettyprint : bool (optional, default: True)
       If True use line breaks and indenting in output XML.
    version: string (optional, default: '1.2draft')
       The version of GEXF to be used for nodes attributes checking

    Examples
    --------
    >>> G = nx.path_graph(4)
    >>> nx.write_gexf(G, "test.gexf")

    # visualization data
    >>> G.nodes[0]["viz"] = {"size": 54}
    >>> G.nodes[0]["viz"]["position"] = {"x": 0, "y": 1}
    >>> G.nodes[0]["viz"]["color"] = {"r": 0, "g": 0, "b": 256}


    Notes
    -----
    This implementation does not support mixed graphs (directed and undirected
    edges together).

    The node id attribute is set to be the string of the node label.
    If you want to specify an id use set it as node data, e.g.
    node['a']['id']=1 to set the id of node 'a' to 1.

    References
    ----------
    .. [1] GEXF File Format, http://gexf.net/
    .. [2] GEXF schema, http://gexf.net/schema.html
    ©ÚencodingÚprettyprintÚversionN)Ú
GEXFWriterÚ	add_graphÚwrite)ÚGÚpathr   r   r   Úwriters         úU/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/networkx/readwrite/gexf.pyr	   r	   $   s-   € ôd  °{ÈGÔT€FØ
×Ñ�QÔØ
‡L�L�Õó    c              #   ó�   K  — t        |||¬«      }|j                  | «       t        |«      j                  «       E d{  –—†  y7 Œ­w)aÌ  Generate lines of GEXF format representation of G.

    "GEXF (Graph Exchange XML Format) is a language for describing
    complex networks structures, their associated data and dynamics" [1]_.

    Parameters
    ----------
    G : graph
    A NetworkX graph
    encoding : string (optional, default: 'utf-8')
    Encoding for text data.
    prettyprint : bool (optional, default: True)
    If True use line breaks and indenting in output XML.
    version : string (default: 1.2draft)
    Version of GEFX File Format (see http://gexf.net/schema.html)
    Supported values: "1.1draft", "1.2draft"


    Examples
    --------
    >>> G = nx.path_graph(4)
    >>> linefeed = chr(10)  # linefeed=

    >>> s = linefeed.join(nx.generate_gexf(G))
    >>> for line in nx.generate_gexf(G):  # doctest: +SKIP
    ...     print(line)

    Notes
    -----
    This implementation does not support mixed graphs (directed and undirected
    edges together).

    The node id attribute is set to be the string of the node label.
    If you want to specify an id use set it as node data, e.g.
    node['a']['id']=1 to set the id of node 'a' to 1.

    References
    ----------
    .. [1] GEXF File Format, https://gephi.org/gexf/format/
    r   N)r   r   ÚstrÚ
splitlines)r   r   r   r   r   s        r   r   r   [   s;   è ø€ ôP  °{ÈGÔT€FØ
×Ñ�QÔÜ�6‹{×%Ñ%Ó'×'Ò'ús   ‚<A¾A¿AÚrb)ÚgraphsÚreturns_graphc                 óZ   — t        ||¬«      }|rt         || «      «      }|S  || «      }|S )aw  Read graph in GEXF format from path.

    "GEXF (Graph Exchange XML Format) is a language for describing
    complex networks structures, their associated data and dynamics" [1]_.

    Parameters
    ----------
    path : file or string
       File or file name to read.
       File names ending in .gz or .bz2 will be decompressed.
    node_type: Python type (default: None)
       Convert node ids to this type if not None.
    relabel : bool (default: False)
       If True relabel the nodes to use the GEXF node "label" attribute
       instead of the node "id" attribute as the NetworkX node label.
    version : string (default: 1.2draft)
    Version of GEFX File Format (see http://gexf.net/schema.html)
       Supported values: "1.1draft", "1.2draft"

    Returns
    -------
    graph: NetworkX graph
        If no parallel edges are found a Graph or DiGraph is returned.
        Otherwise a MultiGraph or MultiDiGraph is returned.

    Notes
    -----
    This implementation does not support mixed graphs (directed and undirected
    edges together).

    References
    ----------
    .. [1] GEXF File Format, http://gexf.net/
    )Ú	node_typer   )Ú
GEXFReaderr   )r   r$   Úrelabelr   Úreaderr   s         r   r
   r
   ˆ   s9   € ôJ  )°WÔ=€FÙÜ™v d›|Ó,ˆð €Hñ �4‹LˆØ€Hr   c            	       ó”   — e Zd Zddddj                  ddg«      ddœdd	ddj                  dd
g«      ddœdœZd„ ZdddddddddœZd„ Zy)ÚGEXFzhttp://www.gexf.net/1.1draftz http://www.gexf.net/1.1draft/vizz)http://www.w3.org/2001/XMLSchema-instanceú z%http://www.gexf.net/1.1draft/gexf.xsdú1.1)ÚNS_GEXFÚNS_VIZÚNS_XSIÚSCHEMALOCATIONÚVERSIONzhttp://www.gexf.net/1.2draftz http://www.gexf.net/1.2draft/vizz%http://www.gexf.net/1.2draft/gexf.xsdz1.2)z1.1draftú1.2draftc                 óš  — t         dft        dft        dft        dft        dft        dft         dft
        dft
        dft
        dfg
}	 d	d l}|j                  df|j                  df|j                  df|j                  d
f|j                  d
f|j                  d
f|j                  d
f|j                  d
f|j                  d
f|j                   d
f|j"                  d
f|j$                  d
f|j                  d
f|j&                  d
f|j(                  d
fg|z   }t	        |«      | _        t	        d„ |D «       «      | _        y # t*        $ r Y Œ3w xY w)NÚintegerÚfloatÚdoubleÚbooleanÚstringÚlongÚ
liststringÚanyURIr   Úintc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úreversed)Ú.0Úas     r   ú	<genexpr>z'GEXF.construct_types.<locals>.<genexpr>ù   s   è ø€ Ò;°¤¨§Ñ;ùs   ‚)r;   r4   ÚboolÚlistÚdictr   ÚnumpyÚfloat64Úfloat32Úfloat16Úint_Úint8Úint16Úint32Úint64Úuint8Úuint16Úuint32Úuint64ÚintcÚintpÚImportErrorÚxml_typeÚpython_type)ÚselfÚtypesÚnps      r   Úconstruct_typeszGEXF.construct_typesÑ   sY  € ä�)ÐÜ�GÐÜ�HÐÜ�9ÐÜ�8ÐÜ�8ÐÜ�&ˆMÜ�,ÐÜ�(ˆOÜ�(ˆOð
ˆð	Ûð —‘˜WÐ%Ø—‘˜WÐ%Ø—‘˜WÐ%Ø—‘˜%Ð Ø—‘˜%Ð Ø—‘˜5Ð!Ø—‘˜5Ð!Ø—‘˜5Ð!Ø—‘˜5Ð!Ø—‘˜EÐ"Ø—‘˜EÐ"Ø—‘˜EÐ"Ø—‘˜%Ð Ø—‘˜%Ð Ø—‘˜%Ð ðð  ñ!ˆEô$ ˜U›ˆŒÜÑ;°UÔ;Ó;ˆÕøô/ ò 	Ùð	ús   Á
D> Ä>	E
Å	E
TF)ÚtrueÚfalseÚTrueÚFalseÚ0r   Ú1r   c                 óâ   — | j                   j                  |«      }|€t        j                  d|› d�«      ‚|d   | _        |d   | _        |d   | _        |d   | _        |d   | _        || _	        y )NzUnknown GEXF version ú.r,   r-   r.   r/   r0   )
ÚversionsÚgetÚnxÚNetworkXErrorr,   r-   r.   r/   r0   r   )rW   r   Úds      r   Úset_versionzGEXF.set_version  sw   € Ø�M‰M×Ñ˜gÓ&ˆØˆ9Ü×"Ñ"Ð%:¸7¸)À1Ð#EÓFÐFØ˜‘|ˆŒØ˜‘kˆŒØ˜‘kˆŒØÐ 0Ñ1ˆÔØ˜‘|ˆŒØˆ�r   N)Ú__name__Ú
__module__Ú__qualname__Újoinrc   rZ   Úconvert_boolrh   © r   r   r)   r)   µ   s�   „ ð 6Ø8ØAØ!Ÿh™hà2Ø;ðóð ñ
ð 6Ø8ØAØ!Ÿh™hà2Ø;ðóð ñ
ñ€Hò6(<ðX ØØØØØØØñ	€Ló	r   r)   c                   óf   — e Zd Z	 d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y)r   Nc                 ól  — | j                  «        || _        || _        | j                  |«       t	        d| j
                  | j                  | j                  | j                  dœ«      | _	        t	        d«      }dt        j                  › �}|t        |d«      _        |j                  dt        j                   d«      «       | j                  j#                  |«       t%        d| j&                  «       t)        j*                  «       | _        t)        j*                  «       | _        t        «       | _        i | _        i | j2                  d	<   i | j2                  d
<   i | j2                  d	   d<   i | j2                  d	   d<   i | j2                  d
   d<   i | j2                  d
   d<   |�| j5                  |«       y y )NÚgexf)Úxmlnsz	xmlns:xsizxsi:schemaLocationr   Úmetaz	NetworkX ÚcreatorÚlastmodifieddatez%Y-%m-%dÚvizÚnodeÚedgeÚdynamicÚstatic)rZ   r   r   rh   r   r,   r.   r/   r0   Úxmlre   Ú__version__r   ÚtextÚsetÚtimeÚstrftimeÚappendr   r-   Ú	itertoolsÚcountÚedge_idÚattr_idÚall_edge_idsÚattrr   )rW   Úgraphr   r   r   Úmeta_elementÚsubelement_texts          r   Ú__init__zGEXFWriter.__init__  sp  € ð 	×ÑÔØ&ˆÔØ ˆŒØ×Ñ˜Ô!ÜØàŸ™Ø!Ÿ[™[Ø&*×&9Ñ&9ØŸ<™<ñ	ó
ˆŒô ˜v“ˆØ%¤b§n¡nÐ%5Ð6ˆØ3BŒ
�< Ó+Ô0Ø×ÑÐ+¬T¯]©]¸:Ó-FÔGØ�‰�‰˜Ô%ä˜5 $§+¡+Ô.ô !—‘Ó(ˆŒÜ —‘Ó(ˆŒÜ›EˆÔàˆŒ	Øˆ�	‰	�&ÑØˆ�	‰	�&ÑØ')ˆ�	‰	�&Ñ˜)Ñ$Ø&(ˆ�	‰	�&Ñ˜(Ñ#Ø')ˆ�	‰	�&Ñ˜)Ñ$Ø&(ˆ�	‰	�&Ñ˜(Ñ#àÐØ�N‰N˜5Õ!ð r   c                 ó°   — | j                   r| j                  | j                  «       t        | j                  «      j	                  | j
                  «      }|S r=   )r   Úindentr{   r   Údecoder   )rW   Úss     r   Ú__str__zGEXFWriter.__str__A  s=   € Ø×ÒØ�K‰K˜Ÿ™Ô!Ü�T—X‘XÓ×%Ñ% d§m¡mÓ4ˆØˆr   c                 óü  — |j                  d¬«      D ]>  \  }}}|j                  d«      }|€Œ| j                  j                  t	        |«      «       Œ@ |j
                  j                  d«      dk(  rd}nd}|j                  «       rd}nd}|j
                  j                  d	d
«      }t        d|||¬«      }	|	| _        | j                  ||	«       | j                  ||	«       | j                  j                  |	«       y )NT©ÚdataÚidr   ry   rz   ÚdirectedÚ
undirectedÚnameÚ rˆ   )Údefaultedgetyper   r—   )Úedgesrd   r†   Úaddr   rˆ   Úis_directedr   Úgraph_elementÚ	add_nodesÚ	add_edgesr{   r�   )
rW   r   ÚuÚvÚddÚeidr   Údefaultr—   r�   s
             r   r   zGEXFWriter.add_graphG  sÙ   € àŸ™ T˜Ó*ò 	0‰HˆAˆq�"Ø—&‘&˜“,ˆCØ‰Ø×!Ñ!×%Ñ%¤c¨#£hÕ/ð	0ð
 �7‰7�;‰;�vÓ )Ò+Ø‰DàˆDà�=‰=Œ?Ø ‰Gà"ˆGØ�w‰w�{‰{˜6 2Ó&ˆÜ ¸ÀtÐRVÔWˆØ*ˆÔØ�‰�q˜-Ô(Ø�‰�q˜-Ô(Ø�‰�‰˜Õ&r   c                 ó¼  — t        d«      }|j                  d¬«      D �]{  \  }}|j                  «       }t        |j	                  d|«      «      }d|i}t        |j	                  d|«      «      }	|	|d<   	 |j	                  d«      }
t        |
«      |d<   	 |j	                  d«      }t        |«      |d<   | j                  |«       	 |j	                  d«      }t        |«      |d<   | j                  |«       t        di |¤Ž}|j                  j                  d
i «      }| j                  ||«      }| j                  dk(  r| j                  ||«      }n| j                  ||«      }| j                  ||«      }| j                  d	|||«      }|j                  |«       �Œ~ |j                  |«       y # t
        $ r Y �Œ'w xY w# t
        $ r Y �Œw xY w# t
        $ r Y Œäw xY w)NÚnodesTr’   r”   ÚlabelÚpidÚstartÚendrw   Únode_defaultr+   )rw   )r   r¦   Úcopyr   ÚpopÚKeyErrorÚalter_graph_mode_timeformatrˆ   rd   Úadd_parentsr0   Ú
add_slicesÚ
add_spellsÚadd_vizÚadd_attributesr�   )rW   r   r�   Únodes_elementrw   r“   Ú	node_dataÚnode_idÚkwr§   r¨   r©   rª   Únode_elementr¤   s                  r   rž   zGEXFWriter.add_nodes^  sÎ  € Ü Ó(ˆØŸ'™' t˜'Ó,ó "	/‰JˆD�$ØŸ	™	›ˆIÜ˜)Ÿ-™-¨¨dÓ3Ó4ˆGØ˜�ˆBÜ˜	Ÿ™ g¨tÓ4Ó5ˆEØˆBˆw‰KðØ—m‘m EÓ*�Ü ›H��5‘	ðØ!Ÿ™ gÓ.�Ü! %›j��7‘Ø×0Ñ0°Ô7ðØ—m‘m EÓ*�Ü ›H��5‘	Ø×0Ñ0°Ô5ô #Ñ0¨RÑ0ˆLà—g‘g—k‘k .°"Ó5ˆGØ×(Ñ(¨°yÓAˆIØ�|‰|˜uÒ$Ø ŸO™O¨L¸)ÓD‘	à ŸO™O¨L¸)ÓD�	ØŸ™ \°9Ó=ˆIØ×+Ñ+¨F°LÀ)ÈWÓUˆIØ× Ñ  Ö.ðE"	/ðF 	×Ñ˜]Õ+øô5 ò Úðûô ò Úðûô ò Ùðús6   Á5F/Â0F?Ã0GÆ/	F<Æ;F<Æ?	GÇGÇ	GÇGc                 óx  ‡ — ˆ fd„}t        d«      } ||«      D �]¼  \  }}}}dt        |«      i}		 |j                  d«      }
t        |
«      |	d<   	 |j                  d«      }t        |«      |	d<   	 |j                  d«      }t        |«      |	d<   	 |j                  d«      }t        |«      |	d<   ‰ j	                  |«       	 |j                  d«      }t        |«      |	d<   ‰ j	                  |«       t        |j
                  |   j                  d|«      «      }t        |j
                  |   j                  d|«      «      }t        d||d
œ|	¤Ž}|j                  j                  di «      }‰ j                  dk(  r‰ j                  ||«      }n‰ j                  ||«      }‰ j                  ||«      }‰ j                  d	|||«      }|j                  |«       �Œ¿ |j                  |«       y # t        $ r Y �Œ¨w xY w# t        $ r Y �Œ˜w xY w# t        $ r Y �Œˆw xY w# t        $ r Y �Œgw xY w# t        $ r Y �ŒFw xY w)Nc              3   óh  •K  — | j                  «       rÙ| j                  dd¬«      D ]Â  \  }}}}|j                  «       }|j                  |¬«       |j	                  dd «      }|€}t        ‰j                  «      }t        |«      ‰j                  v r-t        ‰j                  «      }t        |«      ‰j                  v rŒ-‰j                  j                  t        |«      «       ||||f–— ŒÄ y | j                  d¬«      D ]¯  \  }}}|j                  «       }|j	                  dd «      }|€}t        ‰j                  «      }t        |«      ‰j                  v r-t        ‰j                  «      }t        |«      ‰j                  v rŒ-‰j                  j                  t        |«      «       ||||f–— Œ± y ­w)NT)r“   Úkeys)Úkeyr”   r’   )
Úis_multigraphrš   r¬   Úupdater­   Únextr„   r   r†   r›   )r   r    r¡   r½   r“   Ú	edge_datar„   rW   s          €r   Úedge_key_dataz+GEXFWriter.add_edges.<locals>.edge_key_data†  sz  øè ø€ à�‰Ô Ø'(§w¡w°D¸t wÓ'Dò 	3‘O�A�q˜#˜tØ $§	¡	£�IØ×$Ñ$¨Ð$Ô-Ø'Ÿm™m¨D°$Ó7�GØ�Ü"& t§|¡|Ó"4˜Ü! '›l¨d×.?Ñ.?Ñ?Ü&*¨4¯<©<Ó&8˜Gô " '›l¨d×.?Ñ.?Ò?à×)Ñ)×-Ñ-¬c°'«lÔ;Ø˜Q ¨Ð2Ó2ñ	3ð #$§'¡'¨t 'Ó"4ò 3‘J�A�q˜$Ø $§	¡	£�IØ'Ÿm™m¨D°$Ó7�GØ�Ü"& t§|¡|Ó"4˜Ü! '›l¨d×.?Ñ.?Ñ?Ü&*¨4¯<©<Ó&8˜Gô " '›l¨d×.?Ñ.?Ò?à×)Ñ)×-Ñ-¬c°'«lÔ;Ø˜Q ¨Ð2Ó2ñ3ùs   ƒB:F2Â>CF2Æ/F2rš   r”   r§   ÚweightÚtyper©   rª   rx   )ÚsourceÚtargetÚedge_defaultr+   )rx   )r   r   r­   r®   r¯   r¦   rd   rˆ   r0   r±   r²   r³   r´   r�   )rW   r   r�   rÂ   Úedges_elementr    r¡   r½   rÁ   r¸   Ú
edge_labelÚedge_weightÚ	edge_typer©   rª   Ú	source_idÚ	target_idÚedge_elementr¤   s   `                  r   rŸ   zGEXFWriter.add_edges…  s4  ø€ ô	3ô0   Ó(ˆÙ$1°!Ó$4ó '	/Ñ ˆAˆq�#�yØœ˜C›Ð!ˆBðØ&Ÿ]™]¨7Ó3�
Ü! *›o��7‘ðØ'Ÿm™m¨HÓ5�Ü" ;Ó/��8‘ðØ%ŸM™M¨&Ó1�	Ü  ›^��6‘
ðØ!Ÿ™ gÓ.�Ü! %›j��7‘Ø×0Ñ0°Ô7ðØ—m‘m EÓ*�Ü ›H��5‘	Ø×0Ñ0°Ô5ô ˜AŸG™G A™JŸN™N¨4°Ó3Ó4ˆIÜ˜AŸG™G A™JŸN™N¨4°Ó3Ó4ˆIÜ"ÐT°)ÀIÑTÐQSÑTˆLØ—g‘g—k‘k .°"Ó5ˆGØ�|‰|˜uÒ$Ø ŸO™O¨L¸)ÓD‘	à ŸO™O¨L¸)ÓD�	ØŸ™ \°9Ó=ˆIØ×+Ñ+¨F°LÀ)ÈWÓUˆIØ× Ñ  Ö.ðO'	/ðP 	×Ñ˜]Õ+øôG ò Úðûô
 ò Úðûô
 ò Úðûô ò Úðûô ò ÚðúsY   ±G,ÁG<Á1HÂ0HÃ0H,Ç,	G9Ç8G9Ç<	H	ÈH	È	HÈHÈ	H)È(H)È,	H9È8H9c                 óø  — t        d«      }t        |«      dk(  r|S d}|j                  «       D �]·  \  }}|dk(  rd}t        |«      }	|	| j                  vrt        d|	› �«      ‚t        |t        «      �r]|D ];  \  }
}}t        |
«      }	|€|€Œd}| j                  |«       | j                  |«        n | j                  t        |«      | j                  |	   |||«      }|D ]ë  \  }
}}t        d«      }||j                  d	<   t        |
«      |j                  d
<   |	t        k(  re|j                  d
   dk(  rd|j                  d
<   nC|j                  d
   dk(  rd|j                  d
<   n!|j                  d
   dk(  rd|j                  d
<   |�t        |«      |j                  d<   |�t        |«      |j                  d<   |j                  |«       Œí �Œ£d}| j                  t        |«      | j                  |	   |||«      }t        d«      }||j                  d	<   t        |t        «      r't        |«      j                  «       |j                  d
<   n†t        |«      |j                  d
<   |	t        k(  re|j                  d
   dk(  rd|j                  d
<   nC|j                  d
   dk(  rd|j                  d
<   n!|j                  d
   dk(  rd|j                  d
<   |j                  |«       �Œº |j                  |«       |S )NÚ	attvaluesr   rz   r½   Únetworkx_keyz%attribute value type is not allowed: ry   ÚattvalueÚforÚvalueÚinfÚINFÚnanÚNaNz-infz-INFr©   rª   )r   ÚlenÚitemsrÄ   rU   Ú	TypeErrorÚ
isinstancerC   r¯   Úget_attr_idr   Úattribr4   r�   rB   Úlower)rW   Únode_or_edgeÚxml_objr“   r¤   rÐ   r   Úkr¡   Úval_typeÚvalr©   rª   r…   Úes                  r   r´   zGEXFWriter.add_attributesÉ  sÓ  € ä˜KÓ(ˆ	Üˆt‹9˜Š>ØˆKØˆØ—J‘J“Ló 8	$‰DˆAˆqà�EŠzØ"�Ü˜A“wˆHØ˜tŸ}™}Ñ,ÜÐ"GÈÀzÐ RÓSÐSÜ˜!œTÕ"à'(ò ‘O�C˜ Ü# C›y�HØÐ(¨C©OØ(˜Ø×8Ñ8¸Ô?Ø×8Ñ8¸Ô=Ùðð ×*Ñ*Ü˜“F˜DŸM™M¨(Ñ3°\À7ÈDó�ð ()ò (‘O�C˜ Ü 
Ó+�AØ&-�A—H‘H˜U‘OÜ(+¨C«�A—H‘H˜WÑ%à¤5Ò(ØŸ8™8 GÑ,°Ò5Ø05˜AŸH™H WÒ-ØŸX™X gÑ.°%Ò7Ø05˜AŸH™H WÒ-ØŸX™X gÑ.°&Ò8Ø06˜AŸH™H WÑ-ØÐ(Ü,/°«J˜Ÿ™ Ñ)Ø�Ü*-¨c«(˜Ÿ™ ™Ø×$Ñ$ QÕ'ò!(ð&  �Ø×*Ñ*Ü˜“F˜DŸM™M¨(Ñ3°\À7ÈDó�ô ˜JÓ'�Ø")�—‘˜‘Ü˜a¤Ô&Ü(+¨A«¯©«�A—H‘H˜WÒ%ä(+¨A«�A—H‘H˜WÑ%à¤5Ò(ØŸ8™8 GÑ,°Ò5Ø05˜AŸH™H WÒ-ØŸX™X gÑ.°%Ò7Ø05˜AŸH™H WÒ-ØŸX™X gÑ.°&Ò8Ø06˜AŸH™H WÑ-Ø× Ñ  Ö#ðq8	$ðr 	�‰�yÔ!Øˆr   c                 óz  — 	 | j                   |   |   |   S # t        $ �r t        t        | j                  «      «      }|| j                   |   |   |<   |||dœ}t        d	i |¤Ž}|j                  |«      }	|	�,t        d«      }
t        |	«      |
_        |j                  |
«       d }| j                  j                  d«      D ]3  }|j                  d«      }|j                  dd«      }||k(  sŒ,||k(  sŒ2|}Œ5 |€,||dœ}t        d
i |¤Ž}| j                  j                  d|«       |j                  |«       Y |S w xY w)N)r”   ÚtitlerÄ   r¤   Ú
attributesÚclassr   rz   )r   ré   r   )Ú	attribute)rè   )r‡   r®   r   rÀ   r…   r   rd   r}   r�   r�   ÚfindallÚinsert)rW   rç   Ú	attr_typeÚedge_or_noder¤   r   Únew_idÚattr_kwargsrê   Údefault_titleÚdefault_elementÚattributes_elementr@   Úa_classÚa_modes                  r   rÝ   zGEXFWriter.get_attr_id  sM  € ð	1Ø—9‘9˜\Ñ*¨4Ñ0°Ñ7Ð7øÜó 	1äœ˜dŸl™lÓ+Ó,ˆFØ39ˆD�I‰I�lÑ# DÑ)¨%Ñ0Ø!'°%ÀÑKˆKÜÑ;¨{Ñ;ˆIà#ŸK™K¨Ó.ˆMØÐ(Ü")¨)Ó"4�Ü'*¨=Ó'9�Ô$Ø× Ñ  Ô1à!%ÐØ×'Ñ'×/Ñ/°Ó=ò +�àŸ%™% ›.�ØŸ™˜v xÓ0�Ø˜lÓ*¨v¸«~Ø)*Ñ&ð+ð "Ð)à'+°lÑC�Ü%,Ñ%I¸[Ñ%IÐ"Ø×"Ñ"×)Ñ)¨!Ð-?Ô@Ø×%Ñ% iÕ0Øˆð5	1ús   ‚ —CD:Ã-D:Ã3AD:Ä9D:c                 ó’  — |j                  dd«      }|�r±|j                  d«      }|��| j                  dk(  rft        d| j                  › d�t        |j                  d«      «      t        |j                  d«      «      t        |j                  d	«      «      ¬
«      }nt        d| j                  › d�t        |j                  d«      «      t        |j                  d«      «      t        |j                  d	«      «      t        |j                  dd«      «      ¬«      }|j                  |«       |j                  d«      }|�5t        d| j                  › d�t        |«      ¬«      }|j                  |«       |j                  d«      }|�5t        d| j                  › d�t        |«      ¬«      }|j                  |«       |j                  d«      }|�l|j                  d«      r&t        d| j                  › d�dt        |«      ¬«      }n$t        d| j                  › d�t        |«      ¬«      }|j                  |«       |j                  d«      }	|	�vt        d| j                  › d�t        |	j                  d«      «      t        |	j                  d«      «      t        |	j                  d«      «      ¬«      }|j                  |«       |S )Nrv   FÚcolorr+   ú{ú}colorÚrÚgÚb©rú   rû   rü   r@   g      ð?©rú   rû   rü   r@   Úsizeú}size)rÔ   Ú	thicknessú
}thicknessÚshapeÚhttpú}shapeÚimage)rÔ   ÚuriÚpositionú	}positionÚxÚyÚz©r
  r  r  )r­   rd   r0   r   r-   r   r�   Ú
startswith)
rW   Úelementr¶   rv   r÷   rå   rÿ   r  r  r  s
             r   r³   zGEXFWriter.add_viz+  sI  € Ø�m‰m˜E 5Ó)ˆÚØ—G‘G˜GÓ$ˆEØÑ Ø—<‘< 5Ò(ÜØ˜TŸ[™[˜M¨Ð1Ü˜eŸi™i¨›nÓ-Ü˜eŸi™i¨›nÓ-Ü˜eŸi™i¨›nÓ-ô	‘Aô  Ø˜TŸ[™[˜M¨Ð1Ü˜eŸi™i¨›nÓ-Ü˜eŸi™i¨›nÓ-Ü˜eŸi™i¨›nÓ-Ü˜eŸi™i¨¨SÓ1Ó2ô�Að —‘˜qÔ!à—7‘7˜6“?ˆDØÐÜ˜b §¡ ¨VÐ4¼CÀ»IÔF�Ø—‘˜qÔ!àŸ™ Ó,ˆIØÐ$Ü˜b §¡ ¨[Ð9ÄÀYÃÔP�Ø—‘˜qÔ!à—G‘G˜GÓ$ˆEØÐ Ø×#Ñ# FÔ+ÜØ˜TŸ[™[˜M¨Ð1¸ÄcÈ%Ãjô‘Aô   " T§[¡[ M°Ð 9ÄÀUÃÔL�AØ—‘˜qÔ!à—w‘w˜zÓ*ˆHØÐ#ÜØ˜Ÿ™˜ ZÐ0Ü˜(Ÿ,™, sÓ+Ó,Ü˜(Ÿ,™, sÓ+Ó,Ü˜(Ÿ,™, sÓ+Ó,ô	�ð —‘˜qÔ!ØÐr   c                 óÜ   — |j                  dd«      }|rWt        d«      }|D ]6  }t        d«      }t        |«      |j                  d<   |j	                  |«       Œ8 |j	                  |«       |S )NÚparentsFÚparentrÓ   )r­   r   r   rÞ   r�   )rW   r¹   r¶   r  Úparents_elementÚprå   s          r   r°   zGEXFWriter.add_parents`  sm   € Ø—-‘- 	¨5Ó1ˆÙÜ% iÓ0ˆOØò *�Ü˜HÓ%�Ü"% a£&�—‘˜‘Ø×&Ñ& qÕ)ð*ð ×Ñ Ô0ØÐr   c                 óÜ   — |j                  dd«      }|rWt        d«      }|D ]6  \  }}t        dt        |«      t        |«      ¬«      }|j                  |«       Œ8 |j                  |«       |S )NÚslicesFÚslice)r©   rª   )r­   r   r   r�   )rW   Únode_or_edge_elementÚnode_or_edge_datar  Úslices_elementr©   rª   rå   s           r   r±   zGEXFWriter.add_slicesk  sn   € Ø"×&Ñ& x°Ó7ˆÙÜ$ XÓ.ˆNØ$ò )‘
��sÜ˜G¬3¨u«:¼3¸s»8ÔD�Ø×%Ñ% aÕ(ð)ð !×'Ñ'¨Ô7Ø Ð r   c                 ó^  — |j                  dd«      }|r˜t        d«      }|D ]w  \  }}t        d«      }|�)t        |«      |j                  d<   | j	                  |«       |�)t        |«      |j                  d<   | j	                  |«       |j                  |«       Œy |j                  |«       |S )NÚspellsFÚspellr©   rª   )r­   r   r   rÞ   r¯   r�   )rW   r  r  r  Úspells_elementr©   rª   rå   s           r   r²   zGEXFWriter.add_spellsu  s¬   € Ø"×&Ñ& x°Ó7ˆÙÜ$ XÓ.ˆNØ$ò )‘
��sÜ˜GÓ$�ØÐ$Ü(+¨E«
�A—H‘H˜WÑ%Ø×4Ñ4°UÔ;Ø�?Ü&)¨#£h�A—H‘H˜U‘OØ×4Ñ4°SÔ9Ø×%Ñ% aÕ(ð)ð !×'Ñ'¨Ô7Ø Ð r   c                 óT  — | j                   j                  d«      dk(  rŠ|�‡t        |t        «      rd}n;t        |t        «      rd}n(t        |t
        «      rd}nt        j                  d«      ‚| j                   j                  d|«       | j                   j                  dd«       y y y )	Nr   rz   Údater5   r8   z2timeformat should be of the type int, float or strÚ
timeformatry   )	r�   rd   rÜ   r   r4   r;   re   rf   r~   )rW   Ústart_or_endr!  s      r   r¯   z&GEXFWriter.alter_graph_mode_timeformat…  sž   € ð ×Ñ×!Ñ! &Ó)¨XÒ5ØÐ'Ü˜l¬CÔ0Ø!'‘JÜ ¬eÔ4Ø!)‘JÜ ¬cÔ2Ø!'‘Jä×*Ñ*ØLóð ð ×"Ñ"×&Ñ& |°ZÔ@Ø×"Ñ"×&Ñ& v¨yÕ9ð (ð 6r   c                 ó¸   — | j                   r| j                  | j                  «       t        | j                  «      }|j	                  || j
                  d¬«       y )NT)r   Úxml_declaration)r   r�   r{   r   r   r   )rW   ÚfhÚdocuments      r   r   zGEXFWriter.write—  s?   € à×ÒØ�K‰K˜Ÿ™Ô!Ü˜tŸx™xÓ(ˆØ�‰�r D§M¡MÀ4ˆÕHr   c                 óÜ  — dd|z  z   }t        |«      r¨|j                  r|j                  j                  «       s
|dz   |_        |j                  r|j                  j                  «       s||_        |D ]  }| j	                  ||dz   «       Œ |j                  r|j                  j                  «       s||_        y y |r/|j                  r|j                  j                  «       s||_        y y y )Nú
z  r   )rÙ   r}   ÚstripÚtailr�   )rW   ÚelemÚlevelÚis       r   r�   zGEXFWriter.indentž  s¹   € à�4˜%‘<ÑˆÜˆtŒ9Ø—9’9 D§I¡I§O¡OÔ$5Ø ™H�”	Ø—9’9 D§I¡I§O¡OÔ$5Ø�”	Øò -�Ø—‘˜D %¨!¡)Õ,ð-à—9’9 D§I¡I§O¡OÔ$5Ø�•	ð %6ñ ˜dŸiši¨t¯y©y¯©Ô/@Ø�•	ð 0Aˆur   )Núutf-8Tr1   )r   )ri   rj   rk   r‹   r�   r   rž   rŸ   r´   rÝ   r³   r°   r±   r²   r¯   r   r�   rn   r   r   r   r     sX   „ ð GQó)"òVò'ò.%,òNB,òH@òDò@3òj	ò!ò!ò :ò$Iôr   r   c                   óX   — e Zd Zdd„Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zy)r%   Nc                 ób   — | j                  «        || _        d| _        | j                  |«       y )NT)rZ   r$   Úsimple_graphrh   )rW   r$   r   s      r   r‹   zGEXFReader.__init__²  s+   € Ø×ÑÔØ"ˆŒà ˆÔØ×Ñ˜Õ!r   c                 ó†  — t        |¬«      | _        | j                  j                  d| j                  › d�«      }|�| j	                  |«      S | j
                  D ]Q  }| j                  |«       | j                  j                  d| j                  › d�«      }|€Œ@| j	                  |«      c S  t        j                  d«      ‚)N)Úfilerø   z}graphz No <graph> element in GEXF file.)	r   r{   Úfindr,   Ú
make_graphrc   rh   re   rf   )rW   Ústreamrû   r   s       r   Ú__call__zGEXFReader.__call__¹  s©   € Ü FÔ+ˆŒØ�H‰H�M‰M˜B˜tŸ|™|˜n¨GÐ4Ó5ˆØˆ=Ø—?‘? 1Ó%Ð%à—}‘}ò 	*ˆGØ×Ñ˜WÔ%Ø—‘—‘  4§<¡< .°Ð8Ó9ˆAØ‰}Ø—‘ qÓ)Ò)ð		*ô
 ×ÑÐAÓBÐBr   c                 ó.  — |j                  dd «      }|dk(  rt        j                  «       }nt        j                  «       }|j                  dd«      }|dk7  r||j                  d<   |j                  d«      }|�||j                  d<   |j                  d«      }|�||j                  d<   |j                  dd«      }|dk(  rd|j                  d<   nd	|j                  d<   |j                  d
«      | _        | j
                  dk(  rd| _        |j                  d| j                  › d�«      }i }	i }
i }i }|D ]©  }|j                  d«      }|dk(  rF| j                  |«      \  }}|	j                  |«       |
j                  |«       |
|j                  d<   Œ_|dk(  rF| j                  |«      \  }}|j                  |«       |j                  |«       ||j                  d<   Œª‚  ddd	ddœi}i }|j                  |«       |j                  |«       ||j                  d<   |j                  d| j                  › d�«      }|�7|j                  d| j                  › d�«      D ]  }| j                  |||	«       Œ |j                  d| j                  › d�«      }|�7|j                  d| j                  › d�«      D ]  }| j                  |||«       Œ | j                  r<|j                  «       rt        j                  |«      }|S t        j                   |«      }|S )Nr™   r•   r—   r˜   r©   rª   r   ry   rz   r!  r   r7   rø   z}attributesré   rw   r«   rx   rÇ   rÃ   r5   )rÄ   r   rç   ú}nodesú}nodez}edgesz}edge)rd   re   ÚMultiDiGraphÚ
MultiGraphrˆ   r!  rë   r,   Úfind_gexf_attributesr¿   r4  Úadd_nodeÚadd_edger1  rœ   ÚDiGraphÚGraph)rW   Ú	graph_xmlÚedgedefaultr   Ú
graph_nameÚgraph_startÚ	graph_endÚ
graph_modeÚattributes_elementsÚ	node_attrr«   Ú	edge_attrrÇ   r@   Ú
attr_classÚnaÚndÚeaÚedrµ   Únode_xmlrÈ   Úedge_xmls                          r   r5  zGEXFReader.make_graphÆ  s  € à—m‘mÐ$5°tÓ<ˆØ˜*Ò$Ü—‘Ó!‰Aä—‘“ˆAð —]‘] 6¨2Ó.ˆ
Ø˜ÒØ(ˆA�G‰G�F‰OØ—m‘m GÓ,ˆØÐ"Ø*ˆA�G‰G�GÑØ—M‘M %Ó(ˆ	ØÐ Ø&ˆA�G‰G�E‰NØ—]‘] 6¨2Ó.ˆ
Ø˜Ò"Ø'ˆA�G‰G�FŠOà&ˆA�G‰G�F‰Oð $Ÿ-™-¨Ó5ˆŒØ�?‰?˜fÒ$Ø&ˆDŒOð (×/Ñ/°"°T·\±\°NÀ,Ð0OÓPÐàˆ	ØˆØˆ	ØˆØ$ò 	ˆAØŸ™˜w›ˆJØ˜VÒ#Ø×2Ñ2°1Ó5‘��BØ× Ñ  Ô$Ø×#Ñ# BÔ'Ø*6�—‘˜Ò'Ø˜vÒ%Ø×2Ñ2°1Ó5‘��BØ× Ñ  Ô$Ø×#Ñ# BÔ'Ø*6�—‘˜Ò'àð	ð"  °8ÀhÑOÐPˆØˆØ×Ñ˜ÔØ×Ñ˜BÔØ".ˆ�‰�Ñð "Ÿ™¨¨D¯L©L¨>¸Ð'AÓBˆØÐ$Ø)×1Ñ1°B°t·|±|°nÀFÐ2KÓLò 6�Ø—‘˜a ¨9Õ5ð6ð "Ÿ™¨¨D¯L©L¨>¸Ð'AÓBˆØÐ$Ø)×1Ñ1°B°t·|±|°nÀFÐ2KÓLò 6�Ø—‘˜a ¨9Õ5ð6ð ×ÒØ�}‰}ŒÜ—J‘J˜q“M�ð ˆô —H‘H˜Q“K�Øˆr   c                 ó�  — | j                  ||«      }| j                  ||«      }| j                  dk(  r| j                  ||«      }n| j	                  ||«      }| j                  ||«      }| j                  ||«      }|j                  d«      }| j                  �| j                  |«      }|j                  d«      }||d<   |j                  d|«      }|�||d<   |j                  d| j                  › d�«      }|�9|j                  d| j                  › d�«      D ]  }| j                  ||||¬«       Œ  |j                  |fi |¤Ž y )	Nr+   r”   r§   r¨   rø   r9  r:  )Únode_pid)Údecode_attr_elementsr°   r0   r±   r²   r³   Úadd_start_endrd   r$   r4  r,   rë   r>  )	rW   r   rP  rI  rS  r“   r·   Ú
node_labelÚsubnodess	            r   r>  zGEXFReader.add_node  sM  € ð ×(Ñ(¨°HÓ=ˆØ×Ñ  hÓ/ˆØ�<‰<˜5Ò Ø—?‘? 4¨Ó2‰Dà—?‘? 4¨Ó2ˆDØ�|‰|˜D (Ó+ˆØ×!Ñ! $¨Ó1ˆð —,‘,˜tÓ$ˆØ�>‰>Ð%Ø—n‘n WÓ-ˆGð —\‘\ 'Ó*ˆ
Ø"ˆˆW‰ð —<‘<  xÓ0ˆØÐØ"ˆD�‰Kð —=‘= 2 d§l¡l ^°7Ð!;Ó<ˆØÐØ$×,Ñ,¨r°$·,±,°¸vÐ-FÓGò H�Ø—‘˜a ¨9¸w�ÕGðHð 	ˆ�
‰
�7Ñ#˜dÓ#r   c                 óÊ   — | j                   }|j                  d«      }|� | j                  |   |«      |d<   |j                  d«      }|� | j                  |   |«      |d<   |S )Nr©   rª   )r!  rd   rV   )rW   r“   r{   ÚttypeÚ
node_startÚnode_ends         r   rU  zGEXFReader.add_start_end8  sm   € à—‘ˆØ—W‘W˜WÓ%ˆ
ØÐ!Ø3˜D×,Ñ,¨UÑ3°JÓ?ˆD�‰MØ—7‘7˜5“>ˆØÐØ1˜$×*Ñ*¨5Ñ1°(Ó;ˆD�‰KØˆr   c           	      óŽ  — i }|j                  d| j                  › d�«      }|�Ì| j                  dk(  rRt        |j	                  d«      «      t        |j	                  d«      «      t        |j	                  d«      «      dœ|d<   nkt        |j	                  d«      «      t        |j	                  d«      «      t        |j	                  d«      «      t        |j	                  d	d
«      «      dœ|d<   |j                  d| j                  › d�«      }|�t        |j	                  d«      «      |d<   |j                  d| j                  › d�«      }|�t        |j	                  d«      «      |d<   |j                  d| j                  › d�«      }|�0|j	                  d«      |d<   |d   dk(  r|j	                  d«      |d<   |j                  d| j                  › d�«      }|�Tt        |j	                  dd«      «      t        |j	                  dd«      «      t        |j	                  dd«      «      dœ|d<   t        |«      dkD  r||d<   |S )Nrø   rù   r+   rú   rû   rü   rý   r÷   r@   r   rþ   r   rÔ   rÿ   r  r  r  r  r  r  r	  r
  r   r  r  r  r  rv   )r4  r-   r0   r;   rd   r4   rÙ   )	rW   r“   rP  rv   r÷   rÿ   r  r  r  s	            r   r³   zGEXFReader.add_vizC  s  € àˆØ—‘  4§;¡; -¨wÐ7Ó8ˆØÐØ�|‰|˜uÒ$ä˜UŸY™Y s›^Ó,Ü˜UŸY™Y s›^Ó,Ü˜UŸY™Y s›^Ó,ñ ��G’ô ˜UŸY™Y s›^Ó,Ü˜UŸY™Y s›^Ó,Ü˜UŸY™Y s›^Ó,Ü˜uŸy™y¨¨aÓ0Ó1ñ	 ��G‘ð �}‰}˜r $§+¡+ ¨fÐ5Ó6ˆØÐÜ §¡¨Ó 1Ó2ˆC�‰Kà—M‘M B t§{¡{ m°;Ð"?Ó@ˆ	ØÐ Ü$ Y§]¡]°7Ó%;Ó<ˆC�Ñà—‘  4§;¡; -¨wÐ7Ó8ˆØÐØ Ÿ9™9 WÓ-ˆC�‰LØ�7‰|˜wÒ&Ø$Ÿy™y¨Ó/��G‘à—=‘= 2 d§k¡k ]°*Ð!=Ó>ˆØÐä˜8Ÿ<™<¨¨QÓ/Ó0Ü˜8Ÿ<™<¨¨QÓ/Ó0Ü˜8Ÿ<™<¨¨QÓ/Ó0ñˆC�
‰Oô ˆs‹8�aŠ<ØˆD�‰KØˆr   c                 óä   — |j                  d| j                  › d�«      }|�Ng |d<   |j                  d| j                  › d�«      D ]'  }|j                  d«      }|d   j	                  |«       Œ) |S )Nrø   z}parentsr  z}parentrÓ   ©r4  r,   rë   rd   r�   )rW   r“   rP  r  r  r  s         r   r°   zGEXFReader.add_parentsp  sy   € Ø"Ÿ-™-¨"¨T¯\©\¨N¸)Ð(DÓEˆØÐ&Ø ˆD�‰OØ$×,Ñ,¨r°$·,±,°¸xÐ-HÓIò /�ØŸ™˜u›�Ø�Y‘×&Ñ& vÕ.ð/ð ˆr   c                 ó
  — |j                  d| j                  › d�«      }|�ag |d<   |j                  d| j                  › d�«      D ]:  }|j                  d«      }|j                  d«      }|d   j	                  ||f«       Œ< |S )Nrø   z}slicesr  z}slicer©   rª   r^  )rW   r“   Únode_or_edge_xmlr  r�   r©   rª   s          r   r±   zGEXFReader.add_slicesy  sŒ   € Ø)×.Ñ.°°D·L±L°>ÀÐ/JÓKˆØÐ%ØˆD�‰NØ#×+Ñ+¨b°·±°¸gÐ,FÓGò 4�ØŸ™˜g›�Ø—e‘e˜E“l�Ø�X‘×%Ñ% u¨c lÕ3ð4ð ˆr   c                 ón  — |j                  d| j                  › d�«      }|�“g |d<   | j                  }|j                  d| j                  › d�«      D ]`  } | j                  |   |j                  d«      «      } | j                  |   |j                  d«      «      }|d   j                  ||f«       Œb |S )Nrø   z}spellsr  z}spellr©   rª   )r4  r,   r!  rë   rV   rd   r�   )rW   r“   r`  r  rY  r�   r©   rª   s           r   r²   zGEXFReader.add_spellsƒ  s¹   € Ø)×.Ñ.°°D·L±L°>ÀÐ/JÓKˆØÐ%ØˆD�‰NØ—O‘OˆEØ#×+Ñ+¨b°·±°¸gÐ,FÓGò 4�Ø/˜×(Ñ(¨Ñ/°·±°g³Ó?�Ø-�d×&Ñ& uÑ-¨a¯e©e°E«lÓ;�Ø�X‘×%Ñ% u¨c lÕ3ð4ð ˆr   c                 ó‚  — |j                  d«      }|j                  «       r|dk(  rt        j                  d«      ‚|j                  «       s|dk(  rt        j                  d«      ‚|j                  d«      }|j                  d«      }| j                  �"| j	                  |«      }| j	                  |«      }| j                  ||«      }| j                  ||«      }| j                  dk(  r| j                  ||«      }n| j                  ||«      }|j                  d	«      }|�||d	<   |j                  d
d «      }	|	�|	}|j                  d«      }
|
�t        |
«      |d<   |j                  d«      }|�||d<   |j                  ||«      rd| _         |j                  ||fd|i|¤Ž |dk(  r |j                  ||fd|i|¤Ž y y )NrÄ   r–   z(Undirected edge found in directed graph.r•   z(Directed edge found in undirected graph.rÅ   rÆ   r+   r”   rÑ   rÃ   r§   Fr½   Úmutual)rd   rœ   re   rf   r$   rT  rU  r0   r±   r²   r­   r4   Úhas_edger1  r?  )rW   r   rÎ   rJ  Úedge_directionrÅ   rÆ   r“   r„   Úmultigraph_keyrÃ   rÉ   s               r   r?  zGEXFReader.add_edgeŽ  sÇ  € ð &×)Ñ)¨&Ó1ˆØ�=‰=Œ?˜~°Ò=Ü×"Ñ"Ð#MÓNÐNØ—‘” ^°zÒ%AÜ×"Ñ"Ð#MÓNÐNð ×!Ñ! (Ó+ˆØ×!Ñ! (Ó+ˆØ�>‰>Ð%Ø—^‘^ FÓ+ˆFØ—^‘^ FÓ+ˆFà×(Ñ(¨°LÓAˆØ×!Ñ! $¨Ó5ˆà�<‰<˜5Ò Ø—?‘? 4¨Ó6‰Dà—?‘? 4¨Ó6ˆDð
 ×"Ñ" 4Ó(ˆØÐØ ˆD�‰Jð Ÿ™ .°$Ó7ˆØÐ%Ø$ˆGà×!Ñ! (Ó+ˆØÐÜ" 6›]ˆD�‰Nà!×%Ñ% gÓ.ˆ
ØÐ!Ø&ˆD�‰Mà�:‰:�f˜fÔ%à %ˆDÔØˆ�
‰
�6˜6Ñ7 wÐ7°$Ò7Ø˜XÒ%ØˆA�J‰J�v˜vÑ;¨7Ð;°dÓ;ð &r   c                 óº  — i }|j                  d| j                  › d�«      }|��|j                  d| j                  › d�«      D ]é  }|j                  d«      }	 ||   d   }||   d   }	|j                  d	«      }
|	d
k(  r| j                  |
   }
n | j                  |	   |
«      }
||   d   dk(  rz| j                  } | j                  |   |j                  d«      «      } | j                  |   |j                  d«      «      }||v r||   j                  |
||f«       ŒÛ|
||fg||<   Œå|
||<   Œë |S # t        $ r}t        j                  d|› d�«      |‚d }~ww xY w)Nrø   z
}attvaluesz	}attvaluerÓ   rç   zNo attribute defined for=rb   rÄ   rÔ   r6   r   ry   r©   rª   )r4  r,   rë   rd   r®   re   rf   rm   rV   r!  r�   )rW   Ú	gexf_keysÚobj_xmlr‡   Úattr_elementr@   r½   rç   ÚerrÚatyperÔ   rY  r©   rª   s                 r   rT  zGEXFReader.decode_attr_elementsÂ  s�  € àˆà—|‘| b¨¯©¨°kÐ$BÓCˆØÑ#à!×)Ñ)¨B¨t¯|©|¨n¸JÐ*GÓHò (�Ø—e‘e˜E“l�ðXØ% c™N¨7Ñ3�Eð " #™ vÑ.�ØŸ™˜g›�Ø˜IÒ%Ø ×-Ñ-¨eÑ4‘Eà3˜D×,Ñ,¨UÑ3°EÓ:�EØ˜S‘> &Ñ)¨YÒ6ð !ŸO™O�EØ3˜D×,Ñ,¨UÑ3°A·E±E¸'³NÓC�EØ1˜$×*Ñ*¨5Ñ1°!·%±%¸³,Ó?�CØ ‘}Ø˜U™×*Ñ*¨E°5¸#Ð+>Õ?à(-¨u°cÐ':Ð&;˜˜Ušð #(�D˜’Kð1(ð2 ˆøô+  ò XÜ×*Ñ*Ð-FÀsÀeÈ1Ð+MÓNÐTWÐWûðXús   ÁD2Ä2	EÄ;EÅEc                 ó¾  — i }i }|j                  d«      }|j                  d| j                  › d�«      D ]£  }|j                  d«      }|j                  d«      }|j                  d«      }|||dœ||<   |j                  d| j                  › d�«      }	|	€Œa|d	k(  r| j                  |	j
                     }
n | j                  |   |	j
                  «      }
|
||<   Œ¥ ||fS )
Nr   rø   z
}attributer”   rç   rÄ   )rç   rÄ   r   z}defaultr6   )rd   rë   r,   r4  rm   r}   rV   )rW   ró   ÚattrsÚdefaultsr   râ   r…   rç   rl  r¤   rÔ   s              r   r=  zGEXFReader.find_gexf_attributesä  sç   € àˆØˆØ!×%Ñ% fÓ-ˆØ#×+Ñ+¨b°·±°¸kÐ,JÓKò 	(ˆAØ—e‘e˜D“kˆGØ—E‘E˜'“NˆEØ—E‘E˜&“MˆEØ',°eÀTÑJˆE�'‰Nà—f‘f˜r $§,¡, ¨yÐ9Ó:ˆGØÑ"Ø˜IÒ%Ø ×-Ñ-¨g¯l©lÑ;‘Eà3˜D×,Ñ,¨UÑ3°G·L±LÓA�EØ"'�˜’ð	(ð �hˆÐr   )Nr1   r=   )ri   rj   rk   r‹   r7  r5  r>  rU  r³   r°   r±   r²   r?  rT  r=  rn   r   r   r%   r%   ¯  sE   „ ó"òCòMó^!$òF	ò+òZòò	ò2<òh óDr   r%   c                 óÜ  — 	 | D �cg c]  }|| j                   |   d   f‘Œ }}t	        |Ž \  }}t        t        |«      «      t        | «      k7  rt        j                  d«      ‚t        |«      }t        j                  | |«      }| D ]²  }||   }||j                   |   d<   |j                   |   j                  d«       d|j                   |   v r%|| j                   |   d      |j                   |   d<   d|j                   |   v sŒ€| j                   |   d   D �	cg c]  }	||	   ‘Œ	 c}	|j                   |   d<   Œ´ |S c c}w # t        $ r}t        j                  d«      |‚d}~ww xY wc c}	w )a  Relabel graph using "label" node keyword for node label.

    Parameters
    ----------
    G : graph
       A NetworkX graph read from GEXF data

    Returns
    -------
    H : graph
      A NetworkX graph with relabeled nodes

    Raises
    ------
    NetworkXError
        If node labels are missing or not unique while relabel=True.

    Notes
    -----
    This function relabels the nodes in a NetworkX graph with the
    "label" attribute.  It also handles relabeling the specific GEXF
    node attributes "parents", and "pid".
    r§   zFFailed to relabel nodes: missing node labels found. Use relabel=False.NzHFailed to relabel nodes: duplicate node labels found. Use relabel=False.r”   r¨   r  )
r¦   r®   re   rf   ÚziprÙ   r~   rD   Úrelabel_nodesr­   )
r   r    Úmappingrk  r
  r  ÚHÚnÚmr  s
             r   r   r   ù  sp  € ð2Ø56Ö7°�A�q—w‘w˜q‘z 'Ñ*Ò+Ð7ˆÐ7ô
 �ˆ=�D€A€qÜ
Œ3ˆq‹6ƒ{”c˜!“fÒÜ×Ñð!ó
ð 	
ô
 �7‹m€GÜ
×Ñ˜˜GÓ$€Aàò PˆØ�A‰JˆØˆ�‰�‰
�4ÑØ	�‰�‰
�‰�wÔØ�A—G‘G˜A‘JÑØ '¨¯©°©
°5Ñ(9Ñ :ˆA�G‰G�A‰J�uÑØ˜Ÿ™ ™
Ò"Ø9:¿¹À¹ÀIÑ9NÖ$O°A W¨Q£ZÒ$OˆA�G‰G�A‰J�yÒ!ðPð €Hùò/ 8øÜò Ü×ÑØTó
àð	ûðüò* %Ps-   ‚E †D=¡E ÄE)Ä=E Å	E&ÅE!Å!E&)r.  Tr1   )NFr1   )Ú__doc__r‚   r   Úxml.etree.ElementTreer   r   r   r   r   Únetworkxre   Únetworkx.utilsr   Ú__all__r	   r   Ú_dispatchabler
   r)   r   r%   r   rn   r   r   ú<module>r}     s®   ðñó& Û ÷õ ó Ý $â
L€ñ ˆ1�4Ôò3ó ð3ól*(ñZ ˆ1�4ÔØ€×Ñ˜¨TÔ2ò(ó 3ó ð(÷V[ñ [ô|Y�ô YôxG�ô GóT
1r   