
    ui                         S SK r S SKrS SKrS SKr S SKr " S S5      r\" 5       r	 \R                  " 5       rS rS rg! \ a    S SKr N6f = f! \ a    Sr N!f = f)    Nc                   H    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rSrg)EntropyPool   Nc                 x   SU l         S U l        SU l        [        R                  " 5       U l        [        R                  " 5       U l        SU l	        [        SU R                  -  5      U l        Ub<  U R                  [        U5      5        SU l        [        R                  " 5       U l        g SU l        SU l        g )Nr          TF)
pool_indexdigest	next_byte
_threadingLocklockhashlibsha1hashhash_len	bytearraypool_stirseededosgetpidseed_pid)selfseeds     B/home/kodi/.kodi/addons/script.module.dnspython/lib/dns/entropy.py__init__EntropyPool.__init__#   s    OO%	LLN	edmm34	JJy'DKIIKDMDKDM    c                     U H_  nU R                   U R                  :X  a  SU l         US-  nU R                  U R                   ==   U-  ss'   U =R                   S-  sl         Ma     g )Nr         )r	   r   r   )r   entropycbs       r   r   EntropyPool._stir3   sR    A$--/"#DAIIdoo&!+&OOq O r   c                 r    U R                      U R                  U5        S S S 5        g ! , (       d  f       g = fN)r   r   )r   r#   s     r   stirEntropyPool.stir;   s    YYJJw YYs   (
6c                    U R                   (       a#  U R                  [        R                  " 5       :w  a\   [        R                  " S5      nSU l         [        R                  " 5       U l        S U l
        [        W5      nU R                  U5        g g ! [
         am     [        SSS5       nUR                  S5      nS S S 5         M{  ! , (       d  f        N= f! [
         a"    [        [        R                  " 5       5      n  Nf = ff = f)N   z/dev/urandomrbr   T)r   r   r   r   urandom	Exceptionopenreadstrtimer
   r   r   )r   r   rs      r   _maybe_seedEntropyPool._maybe_seed?   s    {{dmmryy{:,zz"~ DKIIKDMDKT?DJJt ;  ,,ndA6! vvbz 7666  ,tyy{+D,	,sG   B 
D	C*C<C
C	CC(DD	DD	c                    U R                      U R                  5         U R                  b  U R                  U R                  :X  ax  U R
                  R                  [        U R                  5      5        [        U R
                  R                  5       5      U l        U R                  U R                  5        SU l        U R                  U R                     nU =R                  S-  sl        S S S 5        U$ ! , (       d  f       W$ = f)Nr   r"   )r   r5   r
   r   r   r   updatebytesr   r   r   )r   values     r   random_8EntropyPool.random_8O   s    YY{{"dnn&E		  tyy!12'		(8(8(:;

4;;'!"KK/ENNaN   Y s   CC55
Dc                 J    U R                  5       S-  U R                  5       -   $ )N   )r;   r   s    r   	random_16EntropyPool.random_16[   s    }}$t}}66r   c                 J    U R                  5       S-  U R                  5       -   $ )N   )r@   r?   s    r   	random_32EntropyPool.random_32^   s     ~~%'$..*:::r   c                     X!-
  S-   nUS:  a  [        S5      eUS:  a  U R                  nSnO#US:  a  U R                  nSnOU R                  nSnXU" 5       -  US-   -  -   $ )	Nr"   l        ztoo bigrC   l    r>   i  r!   )
ValueErrorrD   r@   r;   )r   firstlastsizerandmaxs         r   random_betweenEntropyPool.random_betweena   sq    |a*Y''%<>>DCCZ>>DC==DCdf}q111r   )	r
   r   r   r   r   r   r	   r   r   r(   )__name__
__module____qualname____firstlineno__r   r   r)   r5   r;   r@   rD   rM   __static_attributes__ r   r   r   r      s*     !  
7;2r   r   c                  d    [         b  [         R                  SS5      $ [        R                  5       $ )Nr   rC   )system_random	randranger   r@   rT   r   r   r@   r@   w   s(     &&q%00~~r   c                 j    [         b  [         R                  XS-   5      $ [        R                  X5      $ )Nr"   )rV   rW   r   rM   )rH   rI   s     r   betweenrY   }   s.     &&uQh77""5//r   )r   r   randomr3   	threadingr   ImportErrordummy_threadingr   r   SystemRandomrV   r/   r@   rY   rT   r   r   <module>r_      sy   $ 
   )"
R2 R2h }'')M 0K  )()x  Ms"   A  A  
AAAA