
    afY                         d dl Z d dlmZmZ d dlmZmZmZ d dlZddZ	d Z
d Zd Zd Zdd
eeef         dedeee         eeef         f         fdZddeee         eeef         f         deeef         fdZdS )    N)a2b_hexb2a_hex)UnionDictListc                 *   | | d         dk    rt          j                    }no| d         dk    rQ|                     di           }t          j        t           j                            | d         |                    }n| d         dk    r|                     di           }| d	         }d
                    | d         |          }t          j        t           j                            ||                    }|                     dd          dk    r"ddlm} |j                            |d           n\| d         dk    rt                      | d         dk    rt                      t          d                    | d                             |S )z
    Create a Web3 instance configured and ready-to-use gateway to the blockchain.

    :param gateway_config: Blockchain gateway configuration.
    :type gateway_config: dict

    :return: Configured Web3 instance.
    :rtype: :class:`web3.Web3`
    Ntypeautouserhttp_optionshttp)request_kwargsinfurakeyzhttps://{}.infura.io/v3/{}networkrinkebyr   )geth_poa_middleware)layer
cloudflarezksyncz$invalid blockchain gateway type "{}")web3Web3getHTTPProviderformatweb3.middlewarer   middleware_onioninjectNotImplementedErrorRuntimeError)gateway_configw3r   
project_idhttp_urlr   s         D/var/www/html/env/lib/python3.11/site-packages/autobahn/xbr/_util.pymake_w3r&   "   s    !76!A!AY[[		6	)	)'++NB??Yty--nV.DUc-ddee		8	+	+'++NB??#E*
 066~i7PR\]]Yty--h~-VVWW i..);;;;;;;; &&':!&DDD 
	<	/	/!### 
	8	+	+!### AHHX^I_``aaaI    c                 ~   | Bt          |           t          k    s*J d                    t          |                                 | rUt          |           t          k    r=t          |           dk    s*J d                    t          |                                 | rt          j                            |           S dS )Ndata must by bytes, was {}   z)data must be bytes[16], but was bytes[{}]r   )r	   bytesr   lenr   r   toIntdatas    r%   unpack_uint128r0   S   s    <4::...0L0S0STXY]T^T^0_0_... ^T

e##4yyB K R RSVW[S\S\ ] ] yt$$$qr'   c                     | )t          |           t          k    r| dk    r	| ddz  k     sJ | r7t          j                            |           }ddt          |          z
  z  |z   S dS )Nr             r*   s                   )r	   intr   r   toBytesr,   valuer/   s     r%   pack_uint128r9   ^   sl    =T%[[C//EQJJ51c6>>>R y  ''"s4yy.)D00|r'   c                    | Bt          |           t          k    s*J d                    t          |                                 | rUt          |           t          k    r=t          |           dk    s*J d                    t          |                                 | r,t	          t
          j                            |                     S dS )Nr)       z)data must be bytes[32], but was bytes[{}]r   )r	   r+   r   r,   r5   r   r   r-   r.   s    r%   unpack_uint256r<   h   s    <4::...0L0S0STXY]T^T^0_0_... ^T

e##4yyB K R RSVW[S\S\ ] ] 49??4(()))qr'   c                    | Dt          |           t          k    r| dk    r	| ddz  k     sJ d                    |                       | r7t          j                            |           }ddt          |          z
  z  |z   S dS )Nr   r2      z!value must be uint256, but was {}r4   r;   s                                    )r	   r5   r   r   r   r6   r,   r7   s     r%   pack_uint256r?   s   s    =T%[[C//EQJJ51c6>>>TwT~T~  @E  UF  UF>>R y  ''"s4yy.)D00|r'   Fr8   return_dictreturnc                 f   t          |           t          k    r=|                     d          rt          | dd                   }nUt          |           }nEt          |           t          k    r| }n*J d                    t          |                                 t          |          dk    sJ g }t          d          D ]D}|                    t          j
        d|d	|d
z  z   d
|d
z  z                      d	                    E|r'|d	         |d         |d         |d         |d
         d}n|}|S )z=

    :param value:
    :param return_dict:
    :return:
    0xr2   NFzinvalid type {} for value      <Ir            )w0w1w2r"   w4)r	   str
startswithr   r+   r   r,   rangeappendstructunpack)r8   r@   value_byteswipacked_values         r%   pack_ethadrrX   }   s;    E{{cD!! 	)!%),,KK!%..KK	e		E188eEEEEu{r!!!!
A1XX K K	t[QU1q1u91D%EFFqIJJJJ d!A$ad!A$aPQdSSr'   rW   c           
      z   g }t          |           t          k    rTt          d          D ]C}|                    t	          j        d| d                    |                                        Dnct          |           t          k    rAt          d          D ]0}|                    t	          j        d| |                              1n
J d            |rTt          j	        
                    dt          d                    |                                                    z             S d                    |          S )zC

    :param packed_value:
    :param return_str:
    :return:
    rE   rF   zw{}Fzshould not arrive hererC   r'   )r	   dictrP   rQ   rR   packr   listr   r   toChecksumAddressr   joindecode)rW   
return_strrU   rV   s       r%   unpack_ethadrra      s    	ALT!!q 	G 	GAHHV[|ELLOO'DEEFFFF	G	l		t	#	#q 	9 	9AHHV[|A778888	9 	/...u y**4'#((1++2F2F2M2M2O2O+OPPPxx{{r'   )N)F)rR   binasciir   r   typingr   r   r   r   r&   r0   r9   r<   r?   r+   rN   boolr5   rX   ra    r'   r%   <module>rf      sG  6  % % % % % % % % $ $ $ $ $ $ $ $ $ $ . . . .b         uUCZ( t dSViY]^acf^fYgNgHh    < d3ic3h&? @ W\]bdg]gWh      r'   