Ë
    ö­¦jÎ  ã            	       ó.  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ  G d„ d	e«      Z G d
„ de«      Z G d„ de«      Zdededefd„Zej(                  dœdedede	f   defd„Zej(                  dœdededede	f   defd„Zy)é    N)ÚCallable)Údatetime)Ú
itemgetter)ÚAny)Ú	parse_qsl)ÚTelegramObjectc                   ó`   — e Zd ZU dZeed<   	 eed<   	 eed<   	 dZedz  ed<   	 dZedz  ed<   y)Ú
WebAppChatzg
    This object represents a chat.

    Source: https://core.telegram.org/bots/webapps#webappchat
    ÚidÚtypeÚtitleNÚusernameÚ	photo_url)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚ__annotations__Ústrr   r   © ó    úH/var/www/html/venv/lib/python3.12/site-packages/aiogram/utils/web_app.pyr
   r
      sJ   … ñð 	ƒGð8ð ƒIØTØƒJØØ€Hˆc�D‰jÓØØ €Iˆs�T‰zÓ ðEr   r
   c                   óØ   — e Zd ZU dZeed<   	 dZedz  ed<   	 eed<   	 dZ	edz  ed<   	 dZ
edz  ed<   	 dZedz  ed<   	 dZedz  ed	<   	 dZedz  ed
<   	 dZedz  ed<   	 dZedz  ed<   y)Ú
WebAppUserz{
    This object contains the data of the Web App user.

    Source: https://core.telegram.org/bots/webapps#webappuser
    r   NÚis_botÚ
first_nameÚ	last_namer   Úlanguage_codeÚ
is_premiumÚadded_to_attachment_menuÚallows_write_to_pmr   )r   r   r   r   r   r   r   Úboolr   r   r   r   r    r!   r"   r   r   r   r   r   r   $   sª   … ñð 	ƒGð,ð €FˆD�4‰KÓØJØƒOØ(Ø €Iˆs�T‰zÓ Ø'Ø€Hˆc�D‰jÓØ&Ø $€M�3˜‘:Ó$ØOØ"€J��t‘Ó"Ø8Ø,0Ð˜d T™kÓ0ØBØ&*Ð˜˜t™Ó*Ø=Ø €Iˆs�T‰zÓ ðEr   r   c                   óØ   — e Zd ZU dZdZedz  ed<   	 dZedz  ed<   	 dZ	edz  ed<   	 dZ
edz  ed<   	 dZedz  ed<   	 dZedz  ed<   	 dZedz  ed	<   	 dZedz  ed
<   	 eed<   	 eed<   y)ÚWebAppInitDatazà
    This object contains data that is transferred to the Web App when it is opened.
    It is empty if the Web App was launched from a keyboard button.

    Source: https://core.telegram.org/bots/webapps#webappinitdata
    NÚquery_idÚuserÚreceiverÚchatÚ	chat_typeÚchat_instanceÚstart_paramÚcan_send_afterÚ	auth_dateÚhash)r   r   r   r   r&   r   r   r'   r   r(   r)   r
   r*   r+   r,   r-   r   r   r   r   r   r%   r%   E   s»   … ñð  €Hˆc�D‰jÓð)à"€Dˆ*�tÑ
Ó"Ø;Ø"&€Hˆj˜4ÑÓ&ðDð #€Dˆ*�tÑ
Ó"ðð !€Iˆs�T‰zÓ ð>ð !%€M�3˜‘:Ó$ð?à"€K��t‘Ó"ðUð "&€N�C˜$‘JÓ%Ø^ØÓØ-Ø
ƒIØ`r   r%   ÚtokenÚ	init_dataÚreturnc           	      ó"  — 	 t        t        |d¬«      «      }d|vry|j                  d«      }dj	                  d„ t        |j                  «       t        d«      ¬«      D «       «      }t        j                  d	| j                  «       t        j                  ¬
«      }t        j                  |j                  «       |j                  «       t        j                  ¬
«      j                  «       }t        j                  ||«      S # t        $ r Y yw xY w)zó
    Check incoming WebApp init data signature

    Source: https://core.telegram.org/bots/webapps#validating-data-received-via-the-web-app

    :param token: bot Token
    :param init_data: data from frontend to be validated
    :return:
    T)Ústrict_parsingFr/   ú
c              3   ó0   K  — | ]  \  }}|› d |› �–— Œ y­w)ú=Nr   )Ú.0ÚkÚvs      r   ú	<genexpr>z)check_webapp_signature.<locals>.<genexpr>ƒ   s#   è ø€ ò "Ù�q˜!ˆ1ˆ#ˆQˆqˆcŒ
ñ"ùs   ‚r   )Úkeys
   WebAppData)r<   ÚmsgÚ	digestmod)Údictr   Ú
ValueErrorÚpopÚjoinÚsortedÚitemsr   ÚhmacÚnewÚencodeÚhashlibÚsha256ÚdigestÚ	hexdigestÚcompare_digest)r0   r1   Úparsed_dataÚhash_Údata_check_stringÚ
secret_keyÚcalculated_hashs          r   Úcheck_webapp_signaturerR   o   sã   € ðÜœ9 Y¸tÔDÓEˆð �[Ñ àØ�O‰O˜FÓ#€EàŸ	™	ñ "Ü% k×&7Ñ&7Ó&9¼zÈ!»}ÔMô"ó Ðô —‘˜m°·±³Ì7Ï>É>ÔZ€JÜ—h‘hØ×ÑÓØ×$Ñ$Ó&Ü—.‘.ô÷ �iƒkð	 ô
 ×Ñ˜°Ó6Ð6øô# ò áðús   ‚D Ä	DÄD©ÚloadsrT   .c                óä   — i }t        | «      D ]V  \  }}|j                  d«      r|j                  d«      s"|j                  d«      r|j                  d«      r ||«      }|||<   ŒX t        di |¤ŽS )a)  
    Parse WebApp init data and return it as WebAppInitData object

    This method doesn't make any security check, so you shall not trust to this data,
    use :code:`safe_parse_webapp_init_data` instead.

    :param init_data: data from frontend to be parsed
    :param loads:
    :return:
    ú[ú]ú{ú}r   )r   Ú
startswithÚendswithr%   )r1   rT   Úresultr<   Úvalues        r   Úparse_webapp_init_datar^   �   su   € ð €FÜ 	Ó*ò ‰
ˆˆUØ×Ñ˜SÔ! e§n¡n°SÔ&9Ø×Ñ˜SÔ! e§n¡n°SÔ&9á˜%“LˆEØˆˆsŠðô Ñ#˜FÑ#Ð#r   c                óN   — t        | |«      rt        ||¬«      S d}t        |«      ‚)a   
    Validate raw WebApp init data and return it as WebAppInitData object

    Raise :obj:`ValueError` when data is invalid

    :param token: bot token
    :param init_data: data from frontend to be parsed and validated
    :param loads:
    :return:
    rS   zInvalid init data signature)rR   r^   r@   )r0   r1   rT   r=   s       r   Úsafe_parse_webapp_init_datar`   ¨   s*   € ô  ˜e YÔ/Ü% i°uÔ=Ð=Ø
'€CÜ
�S‹/Ðr   )rH   rE   ÚjsonÚcollections.abcr   r   Úoperatorr   Útypingr   Úurllib.parser   Úaiogram.typesr   r
   r   r%   r   r#   rR   rT   r^   r`   r   r   r   ú<module>rg      sÕ   ðÛ Û Û Ý $Ý Ý Ý Ý "å (ôE�ô Eô.E�ô EôB'a�^ô 'aðT7 #ð 7°#ð 7¸$ó 7ðF !%§
¡
ò$Øð$ð �C˜�HÑð$ð ó	$ð: !%§
¡
ò	Øðàðð �C˜�HÑð	ð
 ôr   