§
    Ìtºf»O  ã                   óp  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlZd dlZd dlZd dlZd dlmZ d dlmZmZ d dlmZ d dlmZ dZ	 d dlZdZej        dk    r#d	e j        v re j                             d	¦  «        Z ej        ¦   «          d
Zer
ee j        d	<   n# e $ r Y nw xY w G d„ de!¦  «        Z" G d„ de!¦  «        Z#de j        v re j        d         Z$ndZ$d„ Z%d„ Z& G d„ dej'        ¦  «        Z(dd„Z) G d„ dej'        ¦  «        Z*d„ Z+ G d„ dej'        ¦  «        Z,dd„Z-dZ.dd„Z/dS ) é    N)ÚOptionalÚListÚDict)Útime_ns)Úhexstr_if_strÚto_hex)Ú	parse_url)Úpkm_from_argon2_secretFÚwin32ÚTERMTc            (       ó¶  — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddee         dee         dee         dee         dee         dee         d	ee         d
ee         dee         deej                 deej                 dee	j
                 dee	j
                 dee         dee         dee         dee         dee         dee         f&d„Zd„ Zed„ ¦   «         ZdS )ÚProfileaV  
    User profile, stored as named section in ``${HOME}/.xbrnetwork/config.ini``:

    .. code-block:: INI

        [default]
        # username used with this profile
        username=joedoe

        # user email used with the profile (e.g. for verification emails)
        email=joe.doe@example.com

        # XBR network node used as a directory server and gateway to XBR smart contracts
        network_url=ws://localhost:8090/ws

        # WAMP realm on network node, usually "xbrnetwork"
        network_realm=xbrnetwork

        # user private WAMP-cryptosign key (for client authentication)
        cskey=0xb18bbe88ca0e189689e99f87b19addfb179d46aab3d59ec5d93a15286b949eb6

        # user private Ethereum key (for signing transactions and e2e data encryption)
        ethkey=0xfbada363e724d4db2faa2eeaa7d7aca37637b1076dd8cf6fefde13983abaa2ef
    NÚpathÚnameÚ
member_adrÚethkeyÚcskeyÚusernameÚemailÚnetwork_urlÚnetwork_realmÚ
member_oidÚvaction_oidÚvaction_requestedÚvaction_verifiedÚdata_urlÚ
data_realmÚ
infura_urlÚinfura_networkÚ
infura_keyÚinfura_secretc                 ó:  — ddl m}  |¦   «         | _        || _        || _        || _        || _        || _        || _        || _	        || _
        |	| _        |
| _        || _        || _        || _        || _        || _        || _        || _        || _        || _        dS )a  

        :param path:
        :param name:
        :param member_adr:
        :param ethkey:
        :param cskey:
        :param username:
        :param email:
        :param network_url:
        :param network_realm:
        :param member_oid:
        :param vaction_oid:
        :param vaction_requested:
        :param vaction_verified:
        :param data_url:
        :param data_realm:
        :param infura_url:
        :param infura_network:
        :param infura_key:
        :param infura_secret:
        r   ©Úmake_loggerN)Útxaior$   Úlogr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   )Úselfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r$   s                        úS/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/xbr/_config.pyÚ__init__zProfile.__init__[   s¶   € ðT 	&Ð%Ð%Ð%Ð%Ð%Ø�;‘=”=ˆŒàˆŒ	ØˆŒ	à$ˆŒØˆŒØˆŒ
Ø ˆŒØˆŒ
Ø&ˆÔØ*ˆÔØ$ˆŒØ&ˆÔØ!2ˆÔØ 0ˆÔØ ˆŒØ$ˆŒØ$ˆŒØ,ˆÔØ$ˆŒØ*ˆÔÐÐó    c                 ó:  — i }| j         pd|d<   | j        r>d                     t          j        | j        ¦  «                             ¦   «         ¦  «        nd|d<   | j        r>d                     t          j        | j        ¦  «                             ¦   «         ¦  «        nd|d<   | j        pd|d<   | j        pd|d<   | j	        pd|d<   | j
        pd|d	<   | j        rt          | j        ¦  «        nd|d
<   | j        rt          | j        ¦  «        nd|d<   | j        rt          | j        ¦  «        nd|d<   | j        rt          | j        ¦  «        nd|d<   | j        pd|d<   | j        pd|d<   | j        pd|d<   | j        pd|d<   | j        pd|d<   | j        pd|d<   |S )NÚ r   z0x{}r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   )r   r   ÚformatÚbinasciiÚb2a_hexÚdecoder   r   r   r   r   r   Ústrr   r   r   r   r   r   r   r    r!   )r'   Úobjs     r(   ÚmarshalzProfile.marshal�   sÊ  € ØˆØ œOÐ1¨rˆˆLÑØQUÔQ\Ðd˜Ÿš¥hÔ&6°t´{Ñ&CÔ&C×&JÒ&JÑ&LÔ&LÑMÔMÐMÐbdˆˆH‰ØOSÌzÐa�v—}’}¥XÔ%5°d´jÑ%AÔ%A×%HÒ%HÑ%JÔ%JÑKÔKÐKÐ_aˆˆG‰Øœ-Ð-¨2ˆˆJ‰Ø”zÐ' RˆˆG‰Ø!Ô-Ð3°ˆˆMÑØ#Ô1Ð7°RˆˆOÑØ48´OÐK�C ¤Ñ0Ô0Ð0ÈˆˆLÑØ6:Ô6FÐN�S Ô!1Ñ2Ô2Ð2ÈBˆˆMÑØBFÔBXÐ#`¥3 tÔ'=Ñ#>Ô#>Ð#>Ð^`ˆÐÑ Ø@DÔ@UÐ"]¥# dÔ&;Ñ"<Ô"<Ð"<Ð[]ˆÐÑØœ-Ð-¨2ˆˆJ‰Ø œOÐ1¨rˆˆLÑØ œOÐ1¨rˆˆLÑØ $Ô 3Ð 9°rˆÐÑØ œOÐ1¨rˆˆLÑØ#Ô1Ð7°RˆˆOÑØˆ
r*   c                 óp  — d }d }d }d }d }d }d }	d }
d }d }d }d }d }d }d }d }d }|D �]p\  }}|dk    rt          |¦  «        }Œ|dk    rt          |¦  «        }	Œ2|dk    r6t          |¦  «        t           k    r|dk    rt          j        |¦  «        }Œkd }Œn|dk    r$t          |¦  «        t           k    r	|dk    r|}Œ•d }Œ˜|dk    r6t          |¦  «        t           k    r|dk    rt          j        |¦  «        }
ŒÑd }
ŒÔ|dk    r5t          |¦  «        t          k    r|rt          j        |d¦  «        }�Œ|}�Œ|d	k    r3t          |¦  «        t          k    rt          j        |d¦  «        }�ŒD|}�ŒH|d
k    rt          |¦  «        }�Œ_|dk    rt          |¦  «        }�Œv|dk    rt          j        |dd …         ¦  «        }�Œš|dk    rt          j        |dd …         ¦  «        }�Œ¾|dk    rt          |¦  «        }�ŒÕ|dk    rt          |¦  «        }�Œì|dk    rt          |¦  «        }�Œ|dk    rt          |¦  «        }�Œ|dk    rt          |¦  «        }�Œ1|dk    rt          |¦  «        }�ŒH|dv r�ŒNt          d 
                    |¦  «        ¦  «         �Œrt          | ||||||||	|
|||||||||¦  «        S )Nr   r   r   r,   r   r   r   Únsr   r   r   r   é   r   r   r   r   r    r!   r   )r   r   z!unprocessed config attribute "{}")r1   ÚtypeÚuuidÚUUIDÚintÚnpÚ
datetime64r.   Úa2b_hexÚprintr-   r   )r   r   Úitemsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r   ÚkÚvs                         r(   ÚparsezProfile.parse²   s*  € àˆ
ØˆØˆØˆØˆØˆØˆØˆ
ØˆØ ÐØÐØˆØˆ
ØˆØˆ
ØˆØˆ
Øð 6	Eñ 6	E‰DˆAˆqØ�MÒ!Ð!Ý! !™fœf��Ø�oÒ%Ð%Ý # A¡¤��Ø�mÒ#Ð#Ý˜‘7”7�c’>�> a¨2¢g gÝ"&¤)¨A¡,¤,�K�Kà"&�K�KØ�lÒ"Ð"Ý˜‘7”7�c’>�> a¨2¢g gØ!"�J�Jà!%�J�JØ�lÒ"Ð"Ý˜‘7”7�c’>�> a¨2¢g gÝ!%¤¨1¡¤�J�Jà!%�J�JØÐ)Ò)Ð)Ý˜‘7”7�c’>�> a�>Ý(*¬°a¸Ñ(>Ô(>Ð%Ñ%à()Ð%Ñ%ØÐ(Ò(Ð(Ý˜‘7”7�c’>�>Ý')¤}°Q¸Ñ'=Ô'=Ð$Ñ$à'(Ð$Ñ$Ø�j’�Ý˜q™6œ6�‘Ø�lÒ"Ð"Ý  ™VœV�
‘
Ø�h’�Ý!Ô)¨!¨A¨B¨B¬%Ñ0Ô0�‘Ø�g’�Ý Ô(¨¨1¨2¨2¬Ñ/Ô/�‘Ø�j’�Ý˜q™6œ6�‘Ø�g’�Ý˜A™œ�‘ØÐ&Ò&Ð&Ý!$ Q¡¤�‘Ø�lÒ"Ð"Ý  ™VœV�
‘
Ø�oÒ%Ð%Ý # A¡¤�‘Ø�lÒ"Ð"Ý  ™VœV�
‘
ØÐ&Ð&Ð&Ùõ Ð9×@Ò@ÀÑCÔCÑDÔDÐDÑDå�t˜TØ! 6¨5Ø Ø" MØ!Ø"Ð$5Ð7GØ Ø! >°:¸}ñNô Nð 	Nr*   )NNNNNNNNNNNNNNNNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r1   Úbytesr8   r9   r;   r<   r)   r3   ÚstaticmethodrB   © r*   r(   r   r   A   sÑ  € € € € € ðð ð4 (,Ø'+Ø-1Ø+/Ø*.Ø+/Ø(,Ø.2Ø04Ø37Ø48Ø>BØ=AØ+/Ø-1Ø-1Ø15Ø-1Ø04ð'@+ð @+Ø ”}ð@+à ”}ð@+ð & cœ]ð@+ð " %œð	@+ð
 ! œð@+ð $ Cœ=ð@+ð ! œð@+ð ' sœmð@+ð !)¨¤ð@+ð & d¤iÔ0ð@+ð ' t¤yÔ1ð@+ð %-¨R¬]Ô$;ð@+ð $,¨B¬MÔ#:ð@+ð $ Cœ=ð@+ð & cœ]ð@+ð  & cœ]ð!@+ð" "*¨#¤ð#@+ð$ & cœ]ð%@+ð& !)¨¤ð'@+ð @+ð @+ð @+ðDð ð ð* ðQNð QNñ „\ðQNð QNð QNr*   r   c                   ó    — e Zd ZdZd„ Zedee         fd„¦   «         Zede	ee
f         fd„¦   «         Zd
dee         fd„Zd
dee         fd	„ZdS )Ú
UserConfigzÆ
    Local user configuration file. The data is either a plain text (unencrypted)
    .ini file, or such a file encrypted with XSalsa20-Poly1305, and with a
    binary file header of 48 octets.
    c                 ó†   — ddl m}  |¦   «         | _        t          j                             |¦  «        | _        i | _        dS )zH

        :param config_path: The user configuration file path.
        r   r#   N)r%   r$   r&   Úosr   ÚabspathÚ_config_pathÚ	_profiles)r'   Úconfig_pathr$   s      r(   r)   zUserConfig.__init__  sD   € ð
 	&Ð%Ð%Ð%Ð%Ð%Ø�;‘=”=ˆŒÝœGŸOšO¨KÑ8Ô8ˆÔØˆŒˆˆr*   Úreturnc                 ó   — | j         S )z‚
        Return the path to the user configuration file exposed by this object.,

        :return: Local filesystem path.
        )rO   ©r'   s    r(   rQ   zUserConfig.config_path  s   € ð Ô Ð r*   c                 ó   — | j         S )zv
        Access to a map of user profiles in this user configuration.

        :return: Map of user profiles.
        )rP   rT   s    r(   ÚprofileszUserConfig.profiles   s   € ð Œ~Ðr*   NÚpasswordc           	      ó¤  — d}t          j        ¦   «         }| j                             ¦   «         D ]z\  }}||                     ¦   «         vr|                     |¦  «         |dz  }|                     ¦   «         }|                     ¦   «         D ]\  }}|                     |||¦  «         ŒŒ{t          j	        ¦   «         5 }	| 
                    |	¦  «         |	                     ¦   «                              d¦  «        }
ddd¦  «         n# 1 swxY w Y   |r¼t          j        d¦  «        }d}t          d|||¬¦  «        }t           j                             |¦  «        }|                     |
¦  «        }d	d
dt)          j        dt-          |¦  «        ¦  «        t)          j        dt/          ¦   «         ¦  «        d||g}d                     |¦  «        }n|
}t3          | j        d¦  «        5 }| 
                    |¦  «         ddd¦  «         n# 1 swxY w Y   | j                             d|t-          |¦  «        | j        ¬¦  «         t-          |¦  «        S )a;  
        Save this user configuration to the underlying configuration file. The user
        configuration file can be encrypted using Argon2id when a ``password`` is given.

        :param password: The optional Argon2id password.

        :return: Number of octets written to the user configuration file.
        r   é   Úutf8Né   úxbrnetwork-configr,   ©r   rW   ÚcontextÚsalts   Þ­¾ïs     fs      ú>Lú>Qs           r*   ÚwbzUconfiguration with {sections} sections, {bytes_written} bytes written to {written_to})ÚsectionsÚbytes_writtenÚ
written_to)ÚconfigparserÚConfigParserrP   r?   rc   Úadd_sectionr3   ÚsetÚioÚStringIOÚwriteÚgetvalueÚencoderM   Úurandomr
   ÚnaclÚsecretÚ	SecretBoxÚencryptÚstructÚpackÚlenr   ÚjoinÚopenrO   r&   Údebug)r'   rW   ÚwrittenÚconfigÚprofile_nameÚprofileÚpdÚoptionÚvalueÚfp1Úconfig_datar_   r^   Úpriv_keyÚboxÚconfig_data_ciphertextÚdlÚdataÚfp2s                      r(   ÚsavezUserConfig.save)  s°  € ð ˆÝÔ*Ñ,Ô,ˆØ%)¤^×%9Ò%9Ñ%;Ô%;ð 	8ð 	8Ñ!ˆL˜'Ø 6§?¢?Ñ#4Ô#4Ð4Ð4Ø×"Ò" <Ñ0Ô0Ð0Ø˜1‘�Ø—’Ñ"Ô"ˆBØ!#§¢¡¤ð 8ð 8‘�˜Ø—
’
˜<¨°Ñ7Ô7Ð7Ð7ð8õ Œ[‰]Œ]ð 	8˜cØ�LŠL˜ÑÔÐØŸ,š,™.œ.×/Ò/°Ñ7Ô7ˆKð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð ð 	õ ”:˜b‘>”>ˆDØ)ˆGÝ-°BÀÐSZÐaeÐfÑfÔfˆHÝ”+×'Ò'¨Ñ1Ô1ˆCØ%(§[¢[°Ñ%=Ô%=Ð"à#Ø#Ø#Ý”˜D¥#Ð&<Ñ"=Ô"=Ñ>Ô>Ý”˜D¥'¡)¤)Ñ,Ô,ØØØ&ð	ˆBð —8’8˜B‘<”<ˆDˆDàˆDå�$Ô# TÑ*Ô*ð 	¨cØ�IŠI�d‰OŒOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	Œ�ŠÐnØ 'µs¸4±y´yÈTÔM^ð 	ñ 	`ô 	`ð 	`õ �4‰yŒyÐs$   Â==DÄD
ÄD
Ç&HÈHÈHc                 óJ  — t           j                             | j        ¦  «        r$t           j                             | j        ¦  «        s't          d                     | j        ¦  «        ¦  «        ‚t          | j        d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          |¦  «        dk    �r|dd…         dk    �r|dd…         }|dd…         }t          j        d|dd…         ¦  «        d	         }t          j        d|dd
…         ¦  «        d	         }t          j        d|d
d…         ¦  «        d	         }|dv sJ ‚|t          |¦  «        k    sJ ‚|t          ¦   «         k     sJ ‚|dd…         }	d}
|r |¦   «         }nd}t          d||
|	¬¦  «        }t          j                             |¦  «        }|                     |¦  «        }nd}|}t%          j        ¦   «         }|                     |                     d¦  «        ¦  «         i }|                     ¦   «         D ]=}|                     |¦  «        }t0                               | j        ||¦  «        }|||<   Œ>|| _        t7          | j                             ¦   «         ¦  «        }|S )a%  
        Load this object from the underlying user configuration file. When the
        file is encrypted, call back into ``cb_get_password`` to get the user password.

        :param cb_get_password: Callback called when password is needed.

        :return: List of profiles loaded.
        z/config path "{}" cannot be loaded: so such fileÚrbNé0   é   s   Þ­¾ï  fr`   é   r   r[   ra   é   )r   rY   é    r\   r,   r]   rZ   )rM   r   ÚexistsrO   ÚisfileÚRuntimeErrorr-   rx   Úreadrv   rt   Úunpackr   r
   rp   rq   rr   Údecryptrf   rg   Úread_stringr0   rc   r?   r   rB   rP   ÚsortedrV   Úkeys)r'   Úcb_get_passwordÚfpr‡   ÚheaderÚbodyÚalgoÚdata_lenÚcreatedr_   r^   rW   rƒ   r„   r{   rV   r|   Úcitemsr}   Úloaded_profiless                       r(   ÚloadzUserConfig.loade  sÁ  € õ Œw�~Š~˜dÔ/Ñ0Ô0ð 	l½¼¿ºÀtÔGXÑ8YÔ8Yð 	lÝÐP×WÒWÐX\ÔXiÑjÔjÑkÔkÐkå�$Ô# TÑ*Ô*ð 	¨bØ—7’7‘9”9ˆDð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ˆt‰9Œ9˜Š?‰?˜t B Q BœxÐ+NÒNÑNà˜#˜2˜#”YˆFØ˜˜˜”9ˆDå”=  v¨a°¨d¤|Ñ4Ô4°QÔ7ˆDÝ”} T¨6°"°R°%¬=Ñ9Ô9¸!Ô<ˆHÝ”m D¨&°°B°¬-Ñ8Ô8¸Ô;ˆGð ˜6�>�>�>�>Ø�s 4™yœyÒ(Ð(Ð(Ð(Ø�W™YœYÒ&Ð&Ð&Ð&à˜"˜R˜%”=ˆDØ)ˆGØð Ø*˜?Ñ,Ô,��à�Ý-°BÀÐSZÐaeÐfÑfÔfˆHÝ”+×'Ò'¨Ñ1Ô1ˆCØ—;’;˜tÑ$Ô$ˆDˆDð ˆFØˆDåÔ*Ñ,Ô,ˆØ×Ò˜4Ÿ;š; vÑ.Ô.Ñ/Ô/Ð/àˆØ"ŸOšOÑ-Ô-ð 	-ð 	-ˆLØ—\’\ ,Ñ/Ô/ˆFÝ—m’m DÔ$5°|ÀVÑLÔLˆGØ%,ˆH�\Ñ"Ð"Ø!ˆŒå  ¤×!3Ò!3Ñ!5Ô!5Ñ6Ô6ˆØÐs   ÂB&Â&B*Â-B*©N)rC   rD   rE   rF   r)   Úpropertyr   r1   rQ   r   ÚobjectrV   r   r‰   r£   rI   r*   r(   rK   rK     sÑ   € € € € € ðð ð
ð ð ð ð!˜T #œYð !ð !ð !ñ „Xð!ð ð˜$˜s F˜{Ô+ð ð ð ñ „Xðð:ð :˜X cœ]ð :ð :ð :ð :ðx6ð 6¨D°¬Ið 6ð 6ð 6ð 6ð 6ð 6r*   rK   ÚCROSSBAR_FABRIC_URLzwss://master.xbr.network/wsc                 óB   — t           rt          j        | dd¬¦  «        S | S )NÚredT©ÚfgÚbold©Ú_HAS_COLOR_TERMÚclickÚstyle©Útexts    r(   Ústyle_errorr³   ¤  s&   € Ýð ÝŒ{˜4 E°Ð5Ñ5Ô5Ð5àˆr*   c                 óB   — t           rt          j        | dd¬¦  «        S | S )NÚgreenTrª   r­   r±   s    r(   Ústyle_okr¶   «  s&   € Ýð ÝŒ{˜4 G°$Ð7Ñ7Ô7Ð7àˆr*   c                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ÚWampUrlz'
    WAMP transport URL validator.
    zWAMP transport URLc                 óD   — t           j                             | ¦  «         d S r¤   ©r¯   Ú	ParamTyper)   rT   s    r(   r)   zWampUrl.__init__¹  ó   € ÝŒ× Ò  Ñ&Ô&Ð&Ð&Ð&r*   c                 ó´   — 	 t          |¦  «         |S # t          $ r:}|                      t          t	          |¦  «        ¦  «        ¦  «         Y d }~d S d }~ww xY wr¤   )r	   Ú	ExceptionÚfailr³   r1   )r'   r€   ÚparamÚctxÚes        r(   ÚconvertzWampUrl.convert¼  so   € ð	Ý�eÑÔÐð ˆLøõ ð 	+ð 	+ð 	+Ø�IŠI•k¥# a¡&¤&Ñ)Ô)Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*øøøøð	+øøøs   ‚ “
A�/AÁAN©rC   rD   rE   rF   r   r)   rÃ   rI   r*   r(   r¸   r¸   ²  sC   € € € € € ðð ð  €Dð'ð 'ð 'ðð ð ð ð r*   r¸   c                 óL   — t          j        | t          ¦   «         |¬¦  «        }|S )zP
    Prompt user for WAMP transport URL (eg "wss://planet.xbr.network/ws").
    ©r7   Údefault)r¯   Úpromptr¸   )ÚmsgrÇ   r€   s      r(   Úprompt_for_wamp_urlrÊ   Å  s#   € õ ŒL˜¥7¡9¤9°gÐ>Ñ>Ô>€EØ€Lr*   c                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ÚEthereumAddressz%
    Ethereum address validator.
    zEthereum addressc                 óD   — t           j                             | ¦  «         d S r¤   rº   rT   s    r(   r)   zEthereumAddress.__init__Ô  r¼   r*   c                 ó’  — 	 t           j                             |¦  «        }t          j        |dd …         ¦  «        }t          |¦  «        dk    r/t          d                     t          |¦  «        ¦  «        ¦  «        ‚	 |S # t          $ r:}|  	                    t          t          |¦  «        ¦  «        ¦  «         Y d }~d S d }~ww xY w)Nr6   é   z<Ethereum addres must be 20 bytes (160 bit), but was {} bytes)Úweb3ÚWeb3ÚtoChecksumAddressr.   r=   rv   Ú
ValueErrorr-   r¾   r¿   r³   r1   )r'   r€   rÀ   rÁ   ÚadrrÂ   s         r(   rÃ   zEthereumAddress.convert×  sË   € ð	Ý”I×/Ò/°Ñ6Ô6ˆEÝÔ" 5¨¨¨¤9Ñ-Ô-ˆCÝ�5‰zŒz˜RÒÐÝ Ð!_×!fÒ!fÕgjÐknÑgoÔgoÑ!pÔ!pÑqÔqÐqð  ð
 ˆLøõ ð 	+ð 	+ð 	+Ø�IŠI•k¥# a¡&¤&Ñ)Ô)Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*øøøøð	+øøøs   ‚A=B Â
CÂ/CÃCNrÄ   rI   r*   r(   rÌ   rÌ   Í  sC   € € € € € ðð ð €Dð'ð 'ð 'ð	ð 	ð 	ð 	ð 	r*   rÌ   c                 óJ   — t          j        | t          ¦   «         ¬¦  «        }|S )z7
    Prompt user for an Ethereum (public) address.
    )r7   )r¯   rÈ   rÌ   )rÉ   r€   s     r(   Úprompt_for_ethereum_addressrÖ   ã  s#   € õ ŒL˜¥?Ñ#4Ô#4Ð5Ñ5Ô5€EØ€Lr*   c                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )Ú
PrivateKeyz2
    Private key (32 bytes in HEX) validator.
    zPrivate keyc                 óR   — t           j                             | ¦  «         || _        d S r¤   )r¯   r»   r)   Ú_key_len)r'   Úkey_lens     r(   r)   zPrivateKey.__init__ò  s#   € ÝŒ× Ò  Ñ&Ô&Ð&ØˆŒˆˆr*   c                 óÖ  — 	 t          t          |¦  «        }|d d…         dv rt          j        |dd …         ¦  «        }nt          j        |¦  «        }t	          |¦  «        | j        k    r5t          d                     | j        t	          |¦  «        ¦  «        ¦  «        ‚	 |S # t          $ r:}|  	                    t          t          |¦  «        ¦  «        ¦  «         Y d }~d S d }~ww xY w)Nr6   )Ú0xz\xz-key length must be {} bytes, but was {} bytes)r   r   r.   r=   rv   rÚ   rÓ   r-   r¾   r¿   r³   r1   )r'   r€   rÀ   rÁ   ÚkeyrÂ   s         r(   rÃ   zPrivateKey.convertö  sò   € ð	Ý!¥&¨%Ñ0Ô0ˆEØ�R�a�RŒy˜MÐ)Ð)ÝÔ& u¨Q¨R¨R¤yÑ1Ô1��åÔ& uÑ-Ô-�Ý�3‰xŒx˜4œ=Ò(Ð(Ý Ð!P×!WÒ!WÐX\ÔXeÕgjÐknÑgoÔgoÑ!pÔ!pÑqÔqÐqð )ð
 ˆLøõ ð 	+ð 	+ð 	+Ø�IŠI•k¥# a¡&¤&Ñ)Ô)Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*øøøøð	+øøøs   ‚BB$ Â$
C(Â./C#Ã#C(NrÄ   rI   r*   r(   rØ   rØ   ë  sC   € € € € € ðð ð €Dð ð  ð  ðð ð ð ð r*   rØ   c                 óN   — t          j        | t          |¦  «        |¬¦  «        }|S )z@
    Prompt user for a binary key of given length (in HEX).
    rÆ   )r¯   rÈ   rØ   )rÉ   rÛ   rÇ   r€   s       r(   Úprompt_for_keyrà     s'   € õ ŒL˜¥:¨gÑ#6Ô#6ÀÐHÑHÔH€EØ€Lr*   aý  [default]
# username used with this profile
username={username}

# user email used with the profile (e.g. for verification emails)
email={email}

# XBR network node used as a directory server and gateway to XBR smart contracts
network_url={network_url}

# WAMP realm on network node, usually "xbrnetwork"
network_realm={network_realm}

# user private WAMP-cryptosign key (for client authentication)
cskey={cskey}

# user private Ethereum key (for signing transactions and e2e data encryption)
ethkey={ethkey}
c                 óü  — | pd} |pd}|pd}|pd}t           j                             | ¦  «        }t           j                             |¦  «        sHt          j        |¦  «         t          j        d                     t          |¦  «        ¦  «        ¦  «         t           j         	                    |d¦  «        }t           j         
                    |¦  «        �s¾t          j        d                     t          |¦  «        ¦  «        ¦  «         t          |d¦  «        5 }t          d	|¬
¦  «        }	t          j        dt          |¬¦  «        }
t          dddt!          j        t          j        d¦  «        ¦  «                             ¦   «         z   ¬
¦  «        }t          dddt!          j        t          j        d¦  «        ¦  «                             ¦   «         z   ¬
¦  «        }t          j        dt          |¬¦  «        }t          j        dt          |¬¦  «        }|                     t*                               |	|
||||¬¦  «        ¦  «         t          j        d                     t          |¦  «        ¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t-          |¦  «        }|                     ¦   «          |j                             |d ¦  «        }|s't          j        d                     |¦  «        ¦  «        ‚|S )Nz~/.xbrnetworkrÇ   zwss://planet.xbr.network/wsÚ
xbrnetworkz#created new local user directory {}z
config.inizcreating new user profile "{}"Úwz7enter the WAMP router URL of the network directory node)rÇ   z:enter the WAMP realm to join on the network directory noderÆ   zyour private WAMP client keyr�   rÝ   zyour private Etherum keyz user email used for with profilez user name used with this profile)r   r   r   r   r   r   z'created new local user configuration {}zno such profile: "{}")rM   r   Ú
expanduserÚisdirÚmkdirr¯   Úechor-   r¶   rw   r’   rx   rÊ   rÈ   r1   rà   r.   r/   ro   r0   rl   Ú_DEFAULT_CONFIGrK   r£   rV   ÚgetÚClickException)Údotdirr}   Údefault_urlÚdefault_realmÚdefault_emailÚdefault_usernameÚ
config_dirrQ   Úfr   r   r   r   r   r   Ú
config_objÚprofile_objs                    r(   Úload_or_create_profilerô   ,  s  € ØÐ&�€FØÐ"˜€GØÐ>Ð!>€KØ!Ð1 \€Må”×#Ò# FÑ+Ô+€JÝŒ7�=Š=˜Ñ$Ô$ð WÝ
Œ�ÑÔÐÝŒ
Ð8×?Ò?ÅÈÑ@TÔ@TÑUÔUÑVÔVÐVå”'—,’,˜z¨<Ñ8Ô8€KÝŒ7�>Š>˜+Ñ&Ô&ñ `ÝŒ
Ð3×:Ò:½8ÀGÑ;LÔ;LÑMÔMÑNÔNÐNÝ�+˜sÑ#Ô#ð 		` qÝ-Ð.gÐq|Ð}Ñ}Ô}ˆKÝ!œLÐ)eÕloð  zGð  Hñ  Hô  HˆMÝ"Ð#AÀ2ÈtÕV^ÔVfÕgiÔgqÐrtÑguÔguÑVvÔVv×V}ÒV}ÑVÔVÑOð  Añ  Aô  AˆEÝ#Ð$>ÀÈDÕS[ÔScÕdfÔdnÐoqÑdrÔdrÑSsÔSs×SzÒSzÑS|ÔS|ÑL|Ð}Ñ}Ô}ˆFÝ”LÐ!CÍ#ÐWdÐeÑeÔeˆEÝ”|Ð$FÍSÐZjÐkÑkÔkˆHØ�GŠG•O×*Ò*°{ÐR_ÐhnØ16¸eÈhð +ñ Xô Xñ Yô Yð YåŒJÐ@×GÒGÍÐQ\ÑH]ÔH]Ñ^Ô^Ñ_Ô_Ð_ð		`ð 		`ð 		`ñ 		`ô 		`ð 		`ð 		`ð 		`ð 		`ð 		`ð 		`øøøð 		`ð 		`ð 		`ð 		`õ ˜KÑ(Ô(€JØ‡O‚OÑÔÐØÔ%×)Ò)¨'°4Ñ8Ô8€Kàð LÝÔ"Ð#:×#AÒ#AÀ'Ñ#JÔ#JÑKÔKÐKàÐs   ÄE#J
Ê
JÊJr¤   )NNNNNN)0rM   rj   Úsysr8   rt   r.   rf   Útypingr   r   r   r¯   rp   rÐ   Únumpyr;   Útimer   Úeth_utils.conversionsr   r   Úautobahn.websocket.utilr	   Úautobahn.xbr._walletr
   r®   ÚcoloramaÚtermÚplatformÚenvironÚpopÚinitÚImportErrorr¦   r   rK   Ú_DEFAULT_CFC_URLr³   r¶   r»   r¸   rÊ   rÌ   rÖ   rØ   rà   rè   rô   rI   r*   r(   ú<module>r     sû  ðð6 
€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à -Ð -Ð -Ð -Ð -Ð -Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7à€ð	Ø€O€O€Oð €DØ
„|�wÒÐ 6¨R¬ZÐ#7Ð#7ØŒz�~Š~˜fÑ%Ô%ˆà€H„M�O„O€OØ€Oàð "Ø!ˆŒ
�6Ñøøàð 	ð 	ð 	Ø€Dð	øøøðCNð CNð CNð CNð CNˆfñ CNô CNð CNðLTð Tð Tð Tð T�ñ Tô Tð Tðn ˜BœJÐ&Ð&Ø”zÐ"7Ô8ÐÐà5Ððð ð ðð ð ðð ð ð ð ˆeŒoñ ô ð ð&ð ð ð ðð ð ð ð �e”oñ ô ð ð,ð ð ðð ð ð ð �”ñ ô ð ð4ð ð ð ð€ð< ð  ð  ð  ð  ð  s   ÁAB& Â&B.Â-B.