§
    šŠtj  ã                   ó’   — d dl Z d dlZd dlmZmZmZmZ d dlmZ d dl	m
Z
mZ d dlmZmZ  G d„ de
¦  «        Z G d„ d	e¦  «        ZdS )
é    N)ÚListÚOptionalÚTypeÚUnion)ÚAsyncCallbackManagerForToolRun)Ú	BaseModelÚField)ÚAINBaseToolÚOperationTypec                   ód  — e Zd ZU dZ ed¦  «        Zeed<    edd¬¦  «        Ze	ed<    edd¬¦  «        Z
eee	ee	         f                  ed	<    ed
d¬¦  «        Zee         ed<    ed
d¬¦  «        Zee         ed<    ed
d¬¦  «        Zee         ed<    ed
d¬¦  «        Zee         ed<   dS )Ú
RuleSchemazSchema for owner operations..ÚtypezBlockchain reference path)ÚdescriptionÚpathNz'A single address or a list of addressesÚaddressFz2Authority to edit the `owner` property of the pathÚwrite_ownerz+Authority to edit `write rule` for the pathÚ
write_rulez(Authority to `set function` for the pathÚwrite_functionz,Authority to initialize `owner` of sub-pathsÚbranch_owner)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   r   Ú__annotations__r   Ústrr   r   r   r   r   Úboolr   r   r   © ó    úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/tools/ainetwork/owner.pyr   r      s_  € € € € € € Ø&Ð&à˜% ™*œ*€Dˆ-Ð$Ð$Ñ$Ø��cÐ'BÐCÑCÔC€Dˆ#ÐCÐCÑCØ/4¨uØÐCð0ñ 0ô 0€GˆX�e˜C  c¤˜NÔ+Ô,ð ð ñ ð #( %ØÐOð#ñ #ô #€K�˜$”ð ð ñ ð "' ØÐHð"ñ "ô "€J�˜”ð ð ñ ð &+ UØÐEð&ñ &ô &€N�H˜T”Nð ð ñ ð $) 5ØÐIð$ñ $ô $€L�(˜4”.ð ð ñ ð ð r   r   c                   óè   — e Zd ZU dZdZeed<   dZeed<   eZ	e
e         ed<   	 	 	 	 	 	 dded	ed
eeeee         f                  dee         dee         dee         dee         dee         defd„ZdS )ÚAINOwnerOpszTool for owner operations.ÚAINownerOpsÚnameaÝ  
Rules for `owner` in AINetwork Blockchain database.
An address set as `owner` can modify permissions according to its granted authorities

## Path Rule
- (/[a-zA-Z_0-9]+)+
- Permission checks ascend from the most specific (child) path to broader (parent) paths until an `owner` is located.

## Address Rules
- 0x[0-9a-fA-F]{40}: 40-digit hexadecimal address
- *: All addresses permitted
- Defaults to the current session's address

## SET
- `SET` alters permissions for specific addresses, while other addresses remain unaffected.
- When removing an address of `owner`, set all authorities for that address to false.
- message `write_owner permission evaluated false` if fail

### Example
- type: SET
- path: /apps/langchain
- address: [<address 1>, <address 2>]
- write_owner: True
- write_rule: True
- write_function: True
- branch_owner: True

## GET
- Provides all addresses with `owner` permissions and their authorities in the path.

### Example
- type: GET
- path: /apps/langchain
r   Úargs_schemaNr   r   r   r   r   r   r   Úrun_managerÚreturnc	           
   ƒ   ó¨  ‡‡‡‡K  — ddl m}	 	 |t          j        u r‡|€| j        j        j        j        }t          |t          ¦  «        r|g}| j        j
                             |¦  «                              |	ddˆˆˆˆfd„|D ¦   «         ii¬¦  «        ¬¦  «        ƒ d {V —†}
nY|t          j        u r8| j        j
                             |¦  «                             ¦   «         ƒ d {V —†}
nt          d|› d	�¦  «        ‚t!          j        |
d
¬¦  «        S # t$          $ r5}t'          j        |¦  «        j        › dt          |¦  «        › �cY d }~S d }~ww xY w)Nr   )ÚValueOnlyTransactionInputz.ownerÚownersc                 ó0   •— i | ]}|‰pd ‰pd ‰pd ‰pd dœ“ŒS )F)r   r   r   r   r   )Ú.0r   r   r   r   r   s     €€€€r   ú
<dictcomp>z%AINOwnerOps._arun.<locals>.<dictcomp>`   sU   ø€ ð +"ð +"ð +"ð )0ð %,Ø7BÐ7KÀeØ6@Ð6IÀEØ:HÐ:QÈEØ8DÐ8MÈð	.&ð .&ð+"ð +"ð +"r   )Úvalue)ÚtransactionInputzUnsupported 'type': ú.F)Úensure_asciiz: )Ú	ain.typesr(   r   ÚSETÚ	interfaceÚwalletÚdefaultAccountr   Ú
isinstancer   ÚdbÚrefÚsetOwnerÚGETÚgetOwnerÚ
ValueErrorÚjsonÚdumpsÚ	ExceptionÚbuiltinsr   r   )Úselfr   r   r   r   r   r   r   r%   r(   ÚresÚes       ````    r   Ú_arunzAINOwnerOps._arunI   sÕ  øøøøè è € ð 	8Ð7Ð7Ð7Ð7Ð7ð	<Ø•}Ô(Ð(Ð(Ø�?Ø"œnÔ3ÔBÔJ�GÝ˜g¥sÑ+Ô+ð (Ø&˜i�GØ œNÔ-×1Ò1°$Ñ7Ô7×@Ò@Ø%>Ð%>à$Ø (ð +"ð +"ð +"ð +"ð +"ð +"ð +"ð 4;ð+"ñ +"ô +"ð
'ðð&ñ &ô &ð Añ ô ð ð ð ð ð ð ��ð" �Ô*Ð*Ð*Ø œNÔ-×1Ò1°$Ñ7Ô7×@Ò@ÑBÔBÐBÐBÐBÐBÐBÐB��å Ð!?¸Ð!?Ð!?Ð!?Ñ@Ô@Ð@Ý”:˜c°Ð6Ñ6Ô6Ð6øÝð 	<ð 	<ð 	<Ý”m AÑ&Ô&Ô/Ð;Ð;µ3°q±6´6Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;øøøøð	<øøøs   ŽDD Ä
EÄ*EÅEÅE)NNNNNN)r   r   r   r   r#   r   r   r   r   r$   r   r   r   r   r   r   r   r   rD   r   r   r   r!   r!   !   s  € € € € € € Ø$Ð$à€Dˆ#ÐÐÑð!€K�ð !ð !ñ !ðD $.€K��i”Ð-Ð-Ñ-ð 48Ø&*Ø%)Ø)-Ø'+Ø@Dð*<ð *<àð*<ð ð*<ð ˜%  T¨#¤Y Ô/Ô0ð	*<ð
 ˜d”^ð*<ð ˜T”Nð*<ð ! œð*<ð ˜t”nð*<ð Ð<Ô=ð*<ð 
ð*<ð *<ð *<ð *<ð *<ð *<r   r!   )r@   r=   Útypingr   r   r   r   Úlangchain_core.callbacksr   Úpydanticr   r	   Ú(langchain_community.tools.ainetwork.baser
   r   r   r!   r   r   r   ú<module>rI      så   ðØ €€€Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à CÐ CÐ CÐ CÐ CÐ CØ %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à OÐ OÐ OÐ OÐ OÐ OÐ OÐ Oðð ð ð ð �ñ ô ð ð,R<ð R<ð R<ð R<ð R<�+ñ R<ô R<ð R<ð R<ð R<r   