§
    Ï“ÙhÈ  ã                   óÜ   — 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 dlmZmZ  G d„ dej        ¦  «        Z G d	„ d
ej        ¦  «        Z G d„ d¦  «        Z G d„ de¦  «        ZdS )é    N)Úsettings)ÚBaseStorageÚMessage)Úsigning)ÚSimpleCookie)ÚSafeDataÚ	mark_safec                   ó&   ‡ — e Zd ZdZdZˆ fd„Zˆ xZS )ÚMessageEncoderzI
    Compactly serialize instances of the ``Message`` class as JSON.
    Ú__json_messagec                 ó  •— t          |t          ¦  «        rVt          |j        t          ¦  «        rdnd}| j        ||j        |j        g}|j        �|                     |j        ¦  «         |S t          ¦   «          	                    |¦  «        S )Né   r   )
Ú
isinstancer   Úmessager   Úmessage_keyÚlevelÚ
extra_tagsÚappendÚsuperÚdefault)ÚselfÚobjÚis_safedatar   Ú	__class__s       €úe/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/django/contrib/messages/storage/cookie.pyr   zMessageEncoder.default   s{   ø€ Ý�c�7Ñ#Ô#ð 	å)¨#¬+µxÑ@Ô@ÐG˜!˜!ÀaˆKØÔ'¨°c´iÀÄÐMˆGØŒ~Ð)Ø—’˜sœ~Ñ.Ô.Ð.ØˆNÝ‰wŒw�Š˜sÑ#Ô#Ð#ó    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__classcell__©r   s   @r   r   r      sI   ø€ € € € € ðð ð #€Kð$ð $ð $ð $ð $ð $ð $ð $ð $r   r   c                   ó(   ‡ — e Zd ZdZd„ Zˆ fd„Zˆ xZS )ÚMessageDecoderzE
    Decode JSON that includes serialized ``Message`` instances.
    c                 óJ  ‡ — t          |t          ¦  «        rW|rU|d         t          j        k    r1|d         rt	          |d         ¦  «        |d<   t          |dd …         Ž S ˆ fd„|D ¦   «         S t          |t          ¦  «        r ˆ fd„|                     ¦   «         D ¦   «         S |S )Nr   r   é   é   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS © ©Úprocess_messages)Ú.0Úitemr   s     €r   ú
<listcomp>z3MessageDecoder.process_messages.<locals>.<listcomp>(   s'   ø€ Ð@Ð@Ð@°D�D×)Ò)¨$Ñ/Ô/Ð@Ð@Ð@r   c                 óB   •— i | ]\  }}|‰                      |¦  «        “ŒS r)   r*   )r,   ÚkeyÚvaluer   s      €r   ú
<dictcomp>z3MessageDecoder.process_messages.<locals>.<dictcomp>*   s-   ø€ ÐTÐTÐT¹*¸#¸u�C˜×.Ò.¨uÑ5Ô5ÐTÐTÐTr   )r   Úlistr   r   r	   r   ÚdictÚitems©r   r   s   ` r   r+   zMessageDecoder.process_messages"   s¸   ø€ Ý�c�4Ñ Ô ð 	A Sð 	AØ�1Œv�Ô3Ò3Ð3Ø�q”6ð /Ý& s¨1¤vÑ.Ô.�C˜‘FÝ  A B B¤Ð(Ð(Ø@Ð@Ð@Ð@¸CÐ@Ñ@Ô@Ð@Ý�c�4Ñ Ô ð 	UØTÐTÐTÐTÈÏ	Ê	ÉÌÐTÑTÔTÐTØˆ
r   c                 ób   •—  t          ¦   «         j        |fi |¤Ž}|                      |¦  «        S )N)r   Údecoder+   )r   ÚsÚkwargsÚdecodedr   s       €r   r8   zMessageDecoder.decode-   s4   ø€ Ø •%‘'”'”. Ð-Ð- fÐ-Ð-ˆØ×$Ò$ WÑ-Ô-Ð-r   )r   r   r   r    r+   r8   r!   r"   s   @r   r$   r$      sQ   ø€ € € € € ðð ð	ð 	ð 	ð.ð .ð .ð .ð .ð .ð .ð .ð .r   r$   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚMessageSerializerc                 ó`   — t          j        |dt          ¬¦  «                             d¦  «        S )N)ú,ú:)Ú
separatorsÚclsúlatin-1)ÚjsonÚdumpsr   Úencoder6   s     r   rE   zMessageSerializer.dumps3   s3   € ÝŒzØØ!Ýð
ñ 
ô 
÷ Š&�Ñ
Ô
ð		r   c                 ó^   — t          j        |                     d¦  «        t          ¬¦  «        S )NrC   )rB   )rD   Úloadsr8   r$   ©r   Údatas     r   rH   zMessageSerializer.loads:   s#   € ÝŒz˜$Ÿ+š+ iÑ0Ô0µnÐEÑEÔEÐEr   N)r   r   r   rE   rH   r)   r   r   r=   r=   2   s7   € € € € € ðð ð ðFð Fð Fð Fð Fr   r=   c                   óT   ‡ — e Zd ZdZdZdZdZdZˆ fd„Zd„ Z	d„ Z
dd
„Zdd„Zd„ Zˆ xZS )ÚCookieStoragez%
    Store messages in a cookie.
    Úmessagesi   Ú__messagesnotfinished__zdjango.contrib.messagesc                 óx   •—  t          ¦   «         j        |i |¤Ž t          j        | j        ¬¦  «        | _        d S )N)Úsalt)r   Ú__init__r   Úget_cookie_signerÚkey_saltÚsigner)r   Úargsr:   r   s      €r   rQ   zCookieStorage.__init__K   s:   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)ÝÔ/°T´]ÐCÑCÔCˆŒˆˆr   c                 óÔ   — | j         j                             | j        ¦  «        }|                      |¦  «        }|o|d         | j        k     }|r|s|                     ¦   «          ||fS )a
  
        Retrieve a list of messages from the messages cookie. If the
        not_finished sentinel value is found at the end of the message list,
        remove it and return a result indicating that not all messages were
        retrieved by this storage.
        éÿÿÿÿ)ÚrequestÚCOOKIESÚgetÚcookie_nameÚ_decodeÚnot_finishedÚpop)r   rU   r:   rJ   rM   Úall_retrieveds         r   Ú_getzCookieStorage._getO   sp   € ð Œ|Ô#×'Ò'¨Ô(8Ñ9Ô9ˆØ—<’< Ñ%Ô%ˆØ%ÐK¨(°2¬,¸$Ô:KÒ*KÐLˆØð 	˜Mð 	à�LŠL‰NŒNˆNØ˜Ð&Ð&r   c                 ó  — |rN|                      | j        |t          j        t          j        pdt          j        pdt          j        ¬¦  «         dS |                     | j        t          j        t          j        ¬¦  «         dS )zz
        Either set the cookie with the encoded data if there is any data to
        store, or delete the cookie.
        N)ÚdomainÚsecureÚhttponlyÚsamesite)rb   re   )Ú
set_cookier[   r   ÚSESSION_COOKIE_DOMAINÚSESSION_COOKIE_SECUREÚSESSION_COOKIE_HTTPONLYÚSESSION_COOKIE_SAMESITEÚdelete_cookie)r   Úencoded_dataÚresponses      r   Ú_update_cookiezCookieStorage._update_cookie^   s™   € ð
 ð 	Ø×ÒØÔ ØÝÔ5ÝÔ5Ð=¸Ý!Ô9ÐA¸TÝ!Ô9ð  ñ ô ð ð ð ð ×"Ò"ØÔ ÝÔ5Ý!Ô9ð #ñ ô ð ð ð r   Tc                 óÔ  ‡	— g }|                       |¦  «        }| j        r²t          ¦   «         Š	ˆ	fd„}|r� ||¦  «        | j        k    r‰|r)|                     |                     d¦  «        ¦  «         n(|                     d|                     ¦   «         ¦  «         |                       || j        gz   |¬¦  «        }|r ||¦  «        | j        k    °‰|                      ||¦  «         |S )aT  
        Store the messages to a cookie and return a list of any messages which
        could not be stored.

        If the encoded data is larger than ``max_cookie_size``, remove
        messages until the data fits (these are the messages which are
        returned), and add the not_finished sentinel value to indicate as much.
        c                 óT   •— t          ‰                     | ¦  «        d         ¦  «        S )Nr   )ÚlenÚvalue_encode)ÚvalÚcookies    €r   Ústored_lengthz+CookieStorage._store.<locals>.stored_lengthƒ   s$   ø€ Ý˜6×.Ò.¨sÑ3Ô3°AÔ6Ñ7Ô7Ð7r   r   )Úencode_empty)Ú_encodeÚmax_cookie_sizer   r   r^   Úinsertr]   rn   )
r   rM   rm   Úremove_oldestrU   r:   Úunstored_messagesrl   ru   rt   s
            @r   Ú_storezCookieStorage._stores   s  ø€ ð ÐØ—|’| HÑ-Ô-ˆØÔð 	õ "‘^”^ˆFð8ð 8ð 8ð 8ð 8ð ð  = =°Ñ#>Ô#>ÀÔAUÒ#UÐ#UØ ð @Ø%×,Ò,¨X¯\ª\¸!©_¬_Ñ=Ô=Ð=Ð=à%×,Ò,¨Q°·²±´Ñ?Ô?Ð?Ø#Ÿ|š|Ø Ô 1Ð2Ñ2ÐARð  ,ñ  ô  �ð ð  = =°Ñ#>Ô#>ÀÔAUÒ#UÐ#Uð 	×Ò˜L¨(Ñ3Ô3Ð3Ø Ð r   Fc                 óR   — |s|r"| j                              |t          d¬¦  «        S dS )a  
        Return an encoded version of the messages list which can be stored as
        plain text.

        Since the data will be retrieved from the client-side, the encoded data
        also contains a hash to ensure that the data was not tampered with.
        T)Ú
serializerÚcompressN)rT   Úsign_objectr=   )r   rM   rv   s      r   rw   zCookieStorage._encode‘   sD   € ð ð 	�|ð 	Ø”;×*Ò*ØÕ%6Àð +ñ ô ð ð	ð 	r   c                 ó¸   — |sdS 	 | j                              |t          ¬¦  «        S # t          j        t
          j        t          j        f$ r Y nw xY wd| _	        dS )zÄ
        Safely decode an encoded text stream back into a list of messages.

        If the encoded text stream contained an invalid hash or was in an
        invalid format, return None.
        N)r~   T)
rT   Úunsign_objectr=   r   ÚBadSignatureÚbinasciiÚErrorrD   ÚJSONDecodeErrorÚusedrI   s     r   r\   zCookieStorage._decodež   so   € ð ð 	Ø�4ð	Ø”;×,Ò,¨TÕ>OÐ,ÑPÔPÐPøÝÔ$¥h¤nµdÔ6JÐKð 	ð 	ð 	ØˆDð	øøøð ˆŒ	Øˆts   † ' §&AÁA)T)F)r   r   r   r    r[   rx   r]   rS   rQ   r`   rn   r|   rw   r\   r!   r"   s   @r   rL   rL   >   s´   ø€ € € € € ðð ð €Kð €OØ,€LØ(€HðDð Dð Dð Dð Dð'ð 'ð 'ðð ð ð*!ð !ð !ð !ð<ð ð ð ðð ð ð ð ð ð r   rL   )r„   rD   Údjango.confr   Ú$django.contrib.messages.storage.baser   r   Údjango.corer   Údjango.httpr   Údjango.utils.safestringr   r	   ÚJSONEncoderr   ÚJSONDecoderr$   r=   rL   r)   r   r   ú<module>r�      sE  ðØ €€€Ø €€€à  Ð  Ð  Ð  Ð  Ð  Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7ð$ð $ð $ð $ð $�TÔ%ñ $ô $ð $ð$.ð .ð .ð .ð .�TÔ%ñ .ô .ð .ð*	Fð 	Fð 	Fð 	Fð 	Fñ 	Fô 	Fð 	Fðpð pð pð pð p�Kñ pô pð pð pð pr   