o
    ÓèFhèB  ã                   @   sæ  d dl Z d dlZd dlmZ d dlmZmZmZ d dlm	Z	 dZ
dZdZdZe
d	ed
edediZe
dededed	iZe
dededediZdZe de e¡ d ¡Zd	dddœZg g ‘ddg‘ddg‘ddg‘ddg‘ddg‘g d¢‘g d¢‘g d¢‘g d¢‘g d¢‘g d ¢‘g d!¢‘g d"¢‘g d#¢‘g d$¢‘g d%¢‘g d&¢‘g d'¢‘g d(¢‘g d)¢‘g d*¢‘g d+¢‘g d,¢‘g d-¢‘g d.¢‘g d/¢‘g d0¢‘g d1¢‘g d2¢‘g d3¢‘g d4¢‘g d5¢‘g d6¢‘g d7¢‘g d8¢‘g d9¢‘g d:¢‘g d;¢‘g d<¢‘Zd=Zd>Zd?Zd@ZdAZdBdC„ ZdDdE„ edƒD ƒZdFdG„ ZdHdI„ Z dJdK„ Z!dLdM„ Z"dNdO„ Z#dPdQ„ Z$dRdS„ Z%dTdU„ Z&dVdW„ Z'dXdY„ Z(dZd[„ Z)d\d]„ Z*d^d_„ Z+drd`da„Z,dbdc„ Z-ddde„ Z.dfdg„ Z/G dhdi„ diƒZ0G djdk„ dkƒZ1dle1dmee	 fdndo„Z2dpdq„ Z3dS )sé    N)ÚList)ÚLUTÚbaseÚ
exceptions)ÚRSBlocké   é   é   é   é
   é	   é   é   é   é   é   s-   0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:s   ^[s   ]*\Zé   )é   r   r   é   é   é   é   é   é"   )r   r   é&   )r   é   é*   )r   r   é.   )r   é   é2   )r   r   é6   )r   é    é:   )r   r   é>   )r   r   r   éB   )r   r   é0   éF   )r   r   r   éJ   )r   r   r    éN   )r   r   é8   éR   )r   r   r"   éV   )r   r   r#   éZ   )r   r   r   éH   é^   )r   r   r   r'   éb   )r   r   r    r(   éf   )r   r   r    éP   éj   )r   r!   r"   éT   én   )r   r   r"   r+   ér   )r   r   r#   r,   év   )r   r   r   r'   r/   éz   )r   r   r    r(   r0   é~   )r   r   é4   r(   éh   é‚   )r   r   r)   r*   él   é†   )r   r   é<   r+   ép   éŠ   )r   r   r"   r+   r5   éŽ   )r   r   r#   r,   r6   é’   )r   r   r    r(   r0   r8   é–   )r   r   r   éL   r0   é€   éš   )r   r   r    r1   r2   é„   éž   )r   r!   r"   r3   r4   éˆ   é¢   )r   r   r    r*   r4   r@   é¦   )r   r   r"   r+   r5   rA   éª   i7  i%  iT  éì   é   c                 C   ó   | j S ©N©Ú
data_count)Úblock© rT   úD/var/www/html/loop/nvenv/lib/python3.10/site-packages/qrcode/util.pyÚ_data_counte   ó   rV   c                    s*   g | ]‰ d g‡ fdd„t ddƒD ƒ ‘qS )r   c              
      s&   g | ]}d t ttt |ˆ ¡ƒƒ ‘qS )r
   )ÚsumÚmaprV   r   Ú	rs_blocks)Ú.0Úversion©Úerror_correctionrT   rU   Ú
<listcomp>k   s    ÿÿz<listcomp>.<listcomp>r   é)   )Úrange)r[   rT   r]   rU   r_   i   s    û
þÿÿr_   c                 C   sX   | d> }t |ƒt tƒ dkr$|tt |ƒt tƒ > N }t |ƒt tƒ dks| d> |B tA S )Nr   r   )Ú	BCH_digitÚG15ÚG15_MASK©ÚdataÚdrT   rT   rU   ÚBCH_type_infos   s
   ÿrh   c                 C   sT   | d> }t |ƒt tƒ dkr$|tt |ƒt tƒ > N }t |ƒt tƒ dks| d> |B S )Nr   r   )rb   ÚG18re   rT   rT   rU   ÚBCH_type_number{   s
   ÿrj   c                 C   s(   d}| dkr|d7 }| dL } | dks|S )Nr   r   rT   )rf   ÚdigitrT   rT   rU   rb   ‚   s   þrb   c                 C   s   t | d  S ©Nr   )ÚPATTERN_POSITION_TABLE©r\   rT   rT   rU   Úpattern_positionŠ   s   ro   c                 C   sŒ   | dkrdd„ S | dkrdd„ S | dkrdd„ S | dkr d	d„ S | d
kr(dd„ S | dkr0dd„ S | dkr8dd„ S | dkr@dd„ S t d|  ƒ‚)z>
    Return the mask function for the given mask pattern.
    r   c                 S   ó   | | d dkS ©Nr   r   rT   ©ÚiÚjrT   rT   rU   Ú<lambda>“   ó    zmask_func.<locals>.<lambda>r   c                 S   s   | d dkS rq   rT   rr   rT   rT   rU   ru   •   ó    r   c                 S   s   |d dkS ©Nr   r   rT   rr   rT   rT   rU   ru   —   rw   r   c                 S   rp   rx   rT   rr   rT   rT   rU   ru   ™   rv   r	   c                 S   s$   t  | d ¡t  |d ¡ d dkS ©Nr   r   r   )ÚmathÚfloorrr   rT   rT   rU   ru   ›   s   $ é   c                 S   s   | | d | | d  dkS ry   rT   rr   rT   rT   rU   ru   �   s    r   c                 S   s    | | d | | d  d dkS ry   rT   rr   rT   rT   rU   ru   Ÿ   ó     r   c                 S   s    | | d | | d  d dkS )Nr   r   r   rT   rr   rT   rT   rU   ru   ¡   r}   zBad mask pattern: )Ú	TypeError)ÚpatternrT   rT   rU   Ú	mask_funcŽ   s"   r€   c                 C   s   | dk rt S | dk rtS tS )Nr   é   )ÚMODE_SIZE_SMALLÚMODE_SIZE_MEDIUMÚMODE_SIZE_LARGErn   rT   rT   rU   Úmode_sizes_for_version¥   s
   r…   c                 C   s4   | t tttfvrtd| › d�ƒ‚t|ƒ t|ƒ|  S )NúInvalid mode (ú))ÚMODE_NUMBERÚMODE_ALPHA_NUMÚMODE_8BIT_BYTEÚ
MODE_KANJIr~   Úcheck_versionr…   )Úmoder\   rT   rT   rU   Úlength_in_bits®   s   rŽ   c                 C   s$   | dk s| dkrt d| › d�ƒ‚d S )Nr   é(   zInvalid version (was z, expected 1 to 40))Ú
ValueErrorrn   rT   rT   rU   rŒ   ·   s   ÿrŒ   c                 C   sD   t | ƒ}d}t| |ƒ}|t| |ƒ7 }|t| |ƒ7 }|t| |ƒ7 }|S ©Nr   )ÚlenÚ_lost_point_level1Ú_lost_point_level2Ú_lost_point_level3Ú_lost_point_level4)ÚmodulesÚmodules_countÚ
lost_pointrT   rT   rU   r™   ¼   s   
r™   c           	         s:  d}t |ƒ}dg|d  ‰ |D ]:}| | }|d }d}|D ]}|| |kr*|d7 }q|dkr6ˆ |  d7  < d}|| }q|dkrIˆ |  d7  < q|D ]<}| d | }d}|D ]#}| | | |krg|d7 }qX|dkrsˆ |  d7  < d}| | | }qX|dkrˆˆ |  d7  < qL|t‡ fdd„t d|d ƒD ƒƒ7 }|S )Nr   r   r|   c                 3   s    � | ]}ˆ | |d   V  qdS )r   NrT   )r[   Úeach_length©Ú	containerrT   rU   Ú	<genexpr>ì   s
   € ÿ
ÿz%_lost_point_level1.<locals>.<genexpr>)ra   rX   )	r—   r˜   r™   Úmodules_rangeÚrowÚthis_rowÚprevious_colorÚlengthÚcolrT   r›   rU   r“   É   sD   

€
€
þr“   c           
      C   s�   d}t |d ƒ}|D ];}| | }| |d  }t|ƒ}|D ](}||d  }	|	||d  kr2t|d ƒ q|	|| kr9q|	|| kr@q|d7 }qq
|S )Nr   r   r   ©ra   ÚiterÚnext)
r—   r˜   r™   rž   rŸ   r    Únext_rowÚmodules_range_iterr£   Ú	top_rightrT   rT   rU   r”   ô   s"   
õr”   c           	      C   s¤  t |ƒ}t |d ƒ}d}|D ]†}| | }t|ƒ}d}|D ]w}||d  sˆ||d  rˆ||d  sˆ||d  rˆ||d  sˆ||d  r`||d  r`||d	  r`||d
  s`||d  s`||d  r„||d  sˆ||d  sˆ||d	  sˆ||d
  rˆ||d  rˆ||d  rˆ|d7 }||d  r“t|d ƒ qq|D ]¸}t|ƒ}d}|D ]­}| |d  | �s@| |d  | �r@| |d  | �s@| |d  | �r@| |d  | �s@| |d  | �r| |d  | �r| |d	  | �r| |d
  | �s| |d  | �s| |d  | �r<| |d  | �s@| |d  | �s@| |d	  | �s@| |d
  | �r@| |d  | �r@| |d  | �r@|d7 }| |d  | �rNt|d ƒ q¡q—|S )Nr   r   r   r	   r|   r   r   r   r   r   r
   r�   r¤   )	r—   r˜   rž   Úmodules_range_shortr™   rŸ   r    Úmodules_range_short_iterr£   rT   rT   rU   r•     s¶   
ÿ
þ
ý
ü
û
ù
ø
	÷

ö
õ
ô
ó
ò
ñ
ð
ï
î
€ãÿþýüûùø	÷
öõôóòñðïî
€èr•   c                 C   s>   t tt | ƒƒ}t|ƒ|d  }tt|d d ƒd ƒ}|d S )Nr   éd   r   r|   r   )rX   rY   ÚfloatÚintÚabs)r—   r˜   Ú
dark_countÚpercentÚratingrT   rT   rU   r–   [  s   r–   c                 c   sæ   � t | ƒ} d}dt t¡ d }t| ƒ|kr)t d| d ¡}t d| d ¡}ndt|ƒ d¡ d }t || ¡}t || ¡}t| |ƒ}|D ]'\}}|rXt	|t
d	d
�V  qIt||ƒD ]\}}	|retnt}
t	|	|
d	d
�V  q]qIdS )z›
    An iterator returning QRData chunks optimized to the data content.

    :param minimum: The minimum number of bytes in a row to split as a chunk.
    s   \dó   [ó   ]ó   ^s   +$ó   {Úasciis   ,}F)r�   Ú
check_dataN)Úto_bytestringÚreÚescapeÚ	ALPHA_NUMr’   ÚcompileÚstrÚencodeÚ_optimal_splitÚQRDatarˆ   r‰   rŠ   )rf   ÚminimumÚnum_patternÚalpha_patternÚ	re_repeatÚnum_bitsÚis_numÚchunkÚis_alphaÚ	sub_chunkr�   rT   rT   rU   Úoptimal_data_chunksc  s&   €
þürË   c                 c   sx   � | r1t  || ¡}|sn%| ¡ | ¡ }}|r d| d |… fV  d| ||… fV  | |d … } | s| r:d| fV  d S d S )NFT)rº   ÚsearchÚstartÚend)rf   r   ÚmatchrÍ   rÎ   rT   rT   rU   rÀ   }  s   €ø	ÿrÀ   c                 C   s   t | tƒst| ƒ d¡} | S )z^
    Convert data to a (utf-8 encoded) byte-string if it isn't a byte-string
    already.
    zutf-8)Ú
isinstanceÚbytesr¾   r¿   ©rf   rT   rT   rU   r¹   ‹  s   
r¹   c                 C   s   |   ¡ rtS t | ¡rtS tS )z<
    Calculate the optimal mode for this chunk of data.
    )Úisdigitrˆ   ÚRE_ALPHA_NUMrÏ   r‰   rŠ   rÒ   rT   rT   rU   Úoptimal_mode•  s
   
rÕ   c                   @   s2   e Zd ZdZddd„Zdd„ Zdd	„ Zd
d„ ZdS )rÁ   zS
    Data held in a QR compatible format.

    Doesn't currently handle KANJI.
    NTc                 C   sl   |rt |ƒ}|du rt|ƒ| _n!|| _|tttfvr"td|› d�ƒ‚|r1|t|ƒk r1td|› �ƒ‚|| _dS )zg
        If ``mode`` isn't provided, the most compact QR data type possible is
        chosen.
        Nr†   r‡   z-Provided data can not be represented in mode )	r¹   rÕ   r�   rˆ   r‰   rŠ   r~   r�   rf   )Úselfrf   r�   r¸   rT   rT   rU   Ú__init__§  s   
zQRData.__init__c                 C   ó
   t | jƒS rP   )r’   rf   ©rÖ   rT   rT   rU   Ú__len__º  ó   
zQRData.__len__c                 C   sô   | j tkr*tdt| jƒdƒD ]}| j||d … }tt|ƒ }| t|ƒ|¡ qd S | j tkrjtdt| jƒdƒD ]/}| j||d … }t|ƒdkr^| t	 
|d ¡d t	 
|d ¡ d¡ q8| t	 
|¡d¡ q8d S | j}|D ]}| |d¡ qod S )	Nr   r   r   r   é-   r   r   r
   )r�   rˆ   ra   r’   rf   ÚNUMBER_LENGTHÚputr®   r‰   r¼   Úfind)rÖ   Úbufferrs   ÚcharsÚ
bit_lengthrf   ÚcrT   rT   rU   Úwrite½  s&   
ý
 ÿùÿzQRData.writec                 C   rØ   rP   )Úreprrf   rÙ   rT   rT   rU   Ú__repr__Ó  rÛ   zQRData.__repr__)NT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r×   rÚ   rä   ræ   rT   rT   rT   rU   rÁ      s    
rÁ   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú	BitBufferc                 C   s   g | _ d| _d S r‘   )rà   r¢   rÙ   rT   rT   rU   r×   Ø  s   
zBitBuffer.__init__c                 C   s   d  dd„ | jD ƒ¡S )NÚ.c                 S   s   g | ]}t |ƒ‘qS rT   )r¾   )r[   ÚnrT   rT   rU   r_   Ý  s    z&BitBuffer.__repr__.<locals>.<listcomp>)Újoinrà   rÙ   rT   rT   rU   ræ   Ü  s   zBitBuffer.__repr__c                 C   s,   t  |d ¡}| j| d|d  ? d@ dkS )Nr
   r   r   )rz   r{   rà   )rÖ   ÚindexÚ	buf_indexrT   rT   rU   Úgetß  s   zBitBuffer.getc                 C   s0   t |ƒD ]}|  ||| d ? d@ dk¡ qd S rl   )ra   Úput_bit)rÖ   Únumr¢   rs   rT   rT   rU   rÞ   ã  s    ÿzBitBuffer.putc                 C   rO   rP   )r¢   rÙ   rT   rT   rU   rÚ   ç  rW   zBitBuffer.__len__c                 C   sV   | j d }t| jƒ|kr| j d¡ |r"| j|  d| j d ? O  < |  j d7  _ d S )Nr
   r   rE   r   )r¢   r’   rà   Úappend)rÖ   Úbitrð   rT   rT   rU   rò   ê  s   
zBitBuffer.put_bitN)	rç   rè   ré   r×   ræ   rñ   rÞ   rÚ   rò   rT   rT   rT   rU   rë   ×  s    rë   rà   rZ   c              	      s’  d‰d}d}g }g }|D ]†}|j }|j| }t||ƒ}t||ƒ}‡ ‡fdd„t|ƒD ƒ}	ˆ|7 ‰|tjv r?t tj| d¡}
nt dgd¡}
t|ƒD ]}|
t dt |¡gd¡ }
qJt |	t	|
ƒd ¡}||
 }g }t	|ƒ| }t|ƒD ]}|| }| 
|dkr„|| nd¡ qt| 
|	¡ | 
|¡ qg }t|ƒD ]}|D ]}|t	|ƒk r¬| 
|| ¡ q�q™t|ƒD ]}|D ]}|t	|ƒk rÅ| 
|| ¡ q¶q²|S )Nr   c                    s   g | ]}d ˆ j |ˆ  @ ‘qS )éÿ   )rà   )r[   rs   ©rà   ÚoffsetrT   rU   r_     s    z create_bytes.<locals>.<listcomp>r   )rR   Útotal_countÚmaxra   r   Ú
rsPoly_LUTr   Ú
PolynomialÚgexpr’   rô   )rà   rZ   Ú
maxDcCountÚ
maxEcCountÚdcdataÚecdataÚrs_blockÚdcCountÚecCountÚ
current_dcÚrsPolyrs   ÚrawPolyÚmodPolyÚ
current_ecÚ
mod_offsetÚmodIndexrf   ÚdcÚecrT   r÷   rU   Úcreate_bytesó  sP   




€þ€þr  c                 C   s   t ƒ }|D ]}| |jd¡ | t|ƒt|j| ƒ¡ | |¡ qt | |¡}tdd„ |D ƒƒ}t|ƒ|kr@t	 
dt|ƒ|f ¡‚tt|t|ƒ dƒƒD ]}| d¡ qKt|ƒd }|ritd| ƒD ]}| d¡ qa|t|ƒ d }	t|	ƒD ]}
|
d dkr„| td¡ qu| td¡ qut||ƒS )	Nr	   c                 s   s   � | ]}|j d  V  qdS )r
   NrQ   )r[   rS   rT   rT   rU   r�   1  s   € zcreate_data.<locals>.<genexpr>z:Code length overflow. Data size (%s) > size available (%s)Fr
   r   r   )rë   rÞ   r�   r’   rŽ   rä   r   rZ   rX   r   ÚDataOverflowErrorra   Úminrò   ÚPAD0ÚPAD1r  )r\   r^   Ú	data_listrà   rf   rZ   Ú	bit_limitÚ_ÚdelimitÚbytes_to_fillrs   rT   rT   rU   Úcreate_data'  s2   
ÿÿ
r  )r	   )4rz   rº   Útypingr   Úqrcoder   r   r   Úqrcode.baser   rˆ   r‰   rŠ   r‹   r‚   rƒ   r„   r¼   r½   r»   rÔ   rÝ   rm   rc   ri   rd   r  r  rV   ra   ÚBIT_LIMIT_TABLErh   rj   rb   ro   r€   r…   rŽ   rŒ   r™   r“   r”   r•   r–   rË   rÀ   r¹   rÕ   rÁ   rë   r  r  rT   rT   rT   rU   Ú<module>   s   üüüÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø+ÿ
ú
		+L

74