
    i                         d dl Z d dlZd dlmZ ej        dk     rd dlmZ nd dlmZ d Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd ZdS )    N)settings)   
   reversec                     d} t          j        dd          t          j        dd          f}t          j        |           }|d         |d         k     rd|k    r|d         |d         f}d|d         ||d         fz  }d                    |                    dt
          j                            t          t          |                    fS )	N)+*-r   r   r   r   z%d%s%dz{}=r
   )	randomrandintchoiceformatreplacer   CAPTCHA_MATH_CHALLENGE_OPERATORstreval)	operatorsoperandsoperator	challenges       G/srv/django_bis/venv311/lib/python3.11/site-packages/captcha/helpers.pymath_challenger      s    Iq"%%v~a'<'<=H}Y''H{Xa[  SH__QK!-HQK8A;??IY&&sH,TUUVVDOO     c                      d\  } }t          t          j                  D ]}|t          j        |           z  }|                                |fS )N)abcdefghijklmnopqrstuvwxyz ranger   CAPTCHA_LENGTHr   r   uppercharsretis      r   random_char_challenger&      sN    1JE38*++ $ $v}U###99;;r   c                      d\  } }t          t          j                  D ]}|t          j        |           z  }|                                |fS )N)u   äàáëéèïíîöóòüúùr   r   r"   s      r   unicode_challenger(       sN    5JE38*++ $ $v}U###99;;r   c                     t          t          j        d          } |                                 }|                                  	 t          j        |                                          }t          |          t          j	        k    rt          |          t          j
        k    rnb|                                |                                fS )Nr)openr   CAPTCHA_WORDS_DICTIONARY	readlinescloser   r   striplenCAPTCHA_DICTIONARY_MIN_LENGTHCAPTCHA_DICTIONARY_MAX_LENGTHr!   lower)fdlineswords      r   word_challenger7   '   s    	h/	5	5BLLNNEHHJJJ}U##))++II???D		XCCC ::<<%%r   c                  8   t          t          j        d          } |                                 }|                                  d}	 t          j        |                                          }t          j        |                                          }t          j        t          j                  }|||}t          |          t          j
        k    rt          |          t          j        k    rn|                                |                                fS )ztYay, undocumneted. Mostly used to test Issue 39 - http://code.google.com/p/django-simple-captcha/issues/detail?id=39rbr   )r+   r   r,   r-   r.   r   r   r/   CAPTCHA_PUNCTUATIONr0   r1   r2   r!   r3   )r4   r5   r6   word1word2puncts         r   $huge_words_and_punctuation_challenger>   5   s    	h/	6	6BLLNNEHHJJJD	e$$**,,e$$**,,h:;; 5%%/II???D		XCCC	 ::<<%%r   c                 D   |j         }|                     dd|d         dgddt          j                   |                     dd|d         dz   |d         dz
  gt          j                   |                     dd|d         dz   |d         gt          j                   | S )Nir      i'  fillr   )sizearcr   CAPTCHA_FOREGROUND_COLORline)drawimagerC   s      r   
noise_arcsrI   H   s    :DHHc3Q$a83THUUUII	b$q'B,Q"-H4U     	IIsAtAw|T!W-H4UIVVVKr   c           	          |j         }t          t          |d         |d         z  dz                      D ]W}|                     t	          j        d|d                   t	          j        d|d                   ft          j                   X| S )Nr   r   g?rA   )rC   r   intpointr   r   r   rE   )rG   rH   rC   ps       r   
noise_dotsrN   R   s    :D3tAwa(3.//00 
 


^AtAw''47)C)CD2 	 	
 	
 	
 	
 Kr   c                     | S )N )rG   rH   s     r   
noise_nullrQ   \   s    Kr   c                 B    ddl m} |                     |j                  S )Nr   )ImageFilter)PILrS   filterSMOOTH)rH   rS   s     r   post_smoothrW   `   s)    <<*+++r   c                 &    t          d| g          S )3Return url to image. Need for ajax refresh and, etczcaptcha-imageargsr   keys    r   captcha_image_urlr^   f       ?#////r   c                 &    t          d| g          S )rY   zcaptcha-audiorZ   r   r\   s    r   captcha_audio_urlra   k   r_   r   )r   djangocaptcha.confr   VERSIONdjango.core.urlresolversr   django.urlsr   r&   r(   r7   r>   rI   rN   rQ   rW   r^   ra   rP   r   r   <module>rg      s     ! ! ! ! ! !	>G0000000######
 
 
    & & && & &&      , , ,0 0 0
0 0 0 0 0r   