§
    8·tc  ã                   óT   — d dl mZmZmZmZmZmZ  edd¦  «        Zdd„Zdd„Z	d„ Z
dS )	é    )Úload_pycryptodome_raw_libÚc_size_tÚcreate_string_bufferÚget_raw_bufferÚc_uint8_ptrÚis_writeable_bufferzCryptodome.Util._strxoray  
                    void strxor(const uint8_t *in1,
                                const uint8_t *in2,
                                uint8_t *out, size_t len);
                    void strxor_c(const uint8_t *in,
                                  uint8_t c,
                                  uint8_t *out,
                                  size_t len);
                    Nc           
      ó>  — t          | ¦  «        t          |¦  «        k    rt          d¦  «        ‚|€t          t          | ¦  «        ¦  «        }n_|}t          |¦  «        st	          d¦  «        ‚t          | ¦  «        t          |¦  «        k    rt          dt          | ¦  «        z  ¦  «        ‚t
                               t          | ¦  «        t          |¦  «        t          |¦  «        t          t          | ¦  «        ¦  «        ¦  «         |€t          |¦  «        S dS )aØ  XOR two byte strings.
    
    Args:
      term1 (bytes/bytearray/memoryview):
        The first term of the XOR operation.
      term2 (bytes/bytearray/memoryview):
        The second term of the XOR operation.
      output (bytearray/memoryview):
        The location where the result must be written to.
        If ``None``, the result is returned.
    :Return:
        If ``output`` is ``None``, a new ``bytes`` string with the result.
        Otherwise ``None``.
    z.Only byte strings of equal length can be xoredNú4output must be a bytearray or a writeable memoryviewú9output must have the same length as the input  (%d bytes))
ÚlenÚ
ValueErrorr   r   Ú	TypeErrorÚ_raw_strxorÚstrxorr   r   r   )Úterm1Úterm2ÚoutputÚresults       ú8/usr/lib/python3/dist-packages/Cryptodome/Util/strxor.pyr   r   /   s  € õ  ˆ5�z„z•S˜‘Z”ZÒÐÝÐIÑJÔJÐJà€~Ý%¥c¨%¡j¤jÑ1Ô1ˆˆð ˆå" 6Ñ*Ô*ð 	TÝÐRÑSÔSÐSåˆu‰:Œ:�˜V™œÒ$Ð$Ýð ,Ý.1°%©j¬jñ9ñ :ô :ð :õ ×Ò•{ 5Ñ)Ô)Ý" 5Ñ)Ô)Ý" 6Ñ*Ô*Ý¥ E¡
¤
Ñ+Ô+ñ-ô -ð -ð
 €~Ý˜fÑ%Ô%Ð%àˆtó    c           
      ó  — d|cxk    rdk     sn t          d¦  «        ‚|€t          t          | ¦  «        ¦  «        }n_|}t          |¦  «        st	          d¦  «        ‚t          | ¦  «        t          |¦  «        k    rt          dt          | ¦  «        z  ¦  «        ‚t
                               t          | ¦  «        |t          |¦  «        t          t          | ¦  «        ¦  «        ¦  «         |€t          |¦  «        S dS )aî  XOR a byte string with a repeated sequence of characters.

    Args:
        term(bytes/bytearray/memoryview):
            The first term of the XOR operation.
        c (bytes):
            The byte that makes up the second term of the XOR operation.
        output (None or bytearray/memoryview):
            If not ``None``, the location where the result is stored into.

    Return:
        If ``output`` is ``None``, a new ``bytes`` string with the result.
        Otherwise ``None``.
    r   é   zc must be in range(256)Nr
   r   )
r   r   r   r   r   r   Ústrxor_cr   r   r   )ÚtermÚcr   r   s       r   r   r   Z   s  € ð  �ˆ<ˆ<Š<ˆ<�CŠ<ˆ<ˆ<ˆ<ÝÐ2Ñ3Ô3Ð3à€~Ý%¥c¨$¡i¤iÑ0Ô0ˆˆð ˆå" 6Ñ*Ô*ð 	TÝÐRÑSÔSÐSåˆt‰9Œ9�˜F™œÒ#Ð#Ýð ,Ý.1°$©i¬iñ8ñ 9ô 9ð 9õ ×Ò� TÑ*Ô*ØÝ$ VÑ,Ô,Ý!¥# d¡)¤)Ñ,Ô,ñô ð ð €~Ý˜fÑ%Ô%Ð%àˆtr   c           
      ót   — t                                | ||t          t          | ¦  «        ¦  «        ¦  «         dS )z!Very fast XOR - check conditions!N)r   r   r   r   )r   r   r   s      r   Ú_strxor_directr   †   s0   € å×Ò�u˜e V­Xµc¸%±j´jÑ-AÔ-AÑBÔBÐBÐBÐBr   )N)ÚCryptodome.Util._raw_apir   r   r   r   r   r   r   r   r   r   © r   r   ú<module>r       sÉ   ðð>Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð (Ð'Ð(Aðñ	ô 	€ð(ð (ð (ð (ðV)ð )ð )ð )ðXCð Cð Cð Cð Cr   