§
    £”jÜE  ã                   óž   — d Z i dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “Zd!Zd"Zd#d$lmZ  G d%„ d&e¦  «        Zd'S )()ÚECC200datamatrixé   )éä   é0   é   éo   é>   é   )é   éD   é�   é†   éð   é\   éþ   é
   )
é   é   é¹   é¦   éß   éø   ét   éÿ   én   é=   é   )é¯   éŠ   éÍ   é   éÂ   é¨   é'   éõ   é<   éa   éx   r    )é)   é™   éž   é[   r   é*   éŽ   éÕ   r&   é²   éd   éò   é   )éœ   r&   éÀ   éü   é_   é	   é�   éw   r   é-   é   éº   éS   r   r;   )r=   éÃ   r0   r#   é¼   éK   éB   r   éñ   r.   ém   é�   é^   r   éá   r   éZ   r?   é   )r   r>   éô   r7   éé   éG   r"   é   r?   é    r)   é‘   éý   éO   él   éR   é   é®   r<   é¬   r   )é4   é¾   éX   r   rC   r#   é°   é   é›   éÅ   éû   r   r[   rZ   r   rU   r   é|   r    éµ   é¸   é`   é2   éÁ   r   )éÓ   éç   é+   r&   rK   ra   ég   rT   é%   é—   éª   é5   r@   é"   éù   éy   é   r   r   r.   é�   éˆ   r'   ri   rJ   r"   é]   r   é$   )$r$   é   r1   éÚ   é‚   éú   é¢   r_   éf   r'   éT   é³   éÜ   r]   éP   é¶   éå   r;   rL   é   r   é!   ée   é‰   r6   r9   és   é,   r   r`   é;   é   rF   éb   éQ   ép   r,   )*éM   rc   rƒ   é   é   é&   é   r)   é÷   éi   éz   rL   r$   é…   r1   é   r   r6   r0   r7   é§   r‘   éÖ   r   é9   rn   rZ   é   rO   r—   é6   r‚   r   éÊ   éE   rb   é–   é±   éâ   r   r7   r   r   )0r$   é„   rU   r   ra   é    éu   r�   éî   r“   r¢   re   r   r?   éí   éW   é¿   éj   é   é“   év   r
   rh   rG   rj   r   éƒ   rX   r'   r0   rA   r   r<   r   rR   r…   rY   r¤   é»   r¨   rM   r   r›   r.   r   rO   rF   r�   é8   )8r   r7   r   r¢   r    ro   r|   éÐ   r0   é   r   rj   éæ   r4   é×   éë   rœ   éŸ   rs   r   rŽ   éÈ   rŸ   r™   r   é’   ru   éê   r¡   éË   r®   éè   r   r¢   r�   rœ   éÉ   r¡   r   éÏ   é¤   é   rƒ   r$   rt   éC   r�   r   r[   rf   r¶   ék   rJ   rk   é�   é.   r   )>r1   rr   é©   rb   r   éÒ   r#   r©   rš   r?   r¸   é½   r¾   rQ   éÄ   rh   r   rŠ   r   r¯   r$   é?   r\   rW   rw   r¦   r   éÝ   r   é@   ér   rK   é¡   r…   r¨   é   rS   ru   é3   rÄ   r¤   r   é(   rv   r?   ro   é£   rŒ   rY   rj   r€   r½   r·   r	   rE   r   éà   r^   éV   é/   r   éÌ   r   )Dr|   r   é­   éY   r]   é•   r²   r¬   rÒ   r�   r¨   rI   éš   rs   éI   rt   r.   rq   r   é´   rµ   r\   r*   r�   r   r’   rr   r.   r   rM   éã   éì   rA   é‹   r)   r   rš   r•   r{   r‡   r|   r·   ra   rÁ   re   rq   r   éï   r_   rB   r†   rV   rU   r‡   é1   r·   rd   rÂ   rÆ   r™   rQ   r)   rŸ   rÄ   ra   rg   rR   r<   (   iÿÿÿr   r˜   r   rL   rF   rB   rk   é   rŽ   rž   r“   r1   rf   r™   rÁ   r€   r>   r#   rÇ   r×   r¦   r   r   éó   éŒ   r…   r
   é7   r©   rd   rµ   r   éÛ   rÃ   ra   rË   éÞ   r„   rg   r   éN   r½   é}   é‡   r”   r®   rx   rI   r<   rp   rÖ   r:   éc   r   rÛ   r¬   r»   r9   r)   éÔ   éÇ   r±   r+   rÉ   éL   r|   éÙ   r\   r   r&   r`   r(   rs   r   rO   r   r   éh   rc   r   rÎ   rP   é«   rQ   é¥   é~   rN   rq   rl   r7   éJ   é   r    rÌ   rz   r$   rÑ   r«   rÐ   r-   r‰   r_   rW   r¿   rX   r0   r²   r‡   re   rb   r¹   r—   r¨   r2   r¼   r'   é€   rÔ   r   r.   r•   r³   rÄ   rØ   r   r   rY   r	   rÈ   r‹   r^   rÅ   ry   ru   r6   éÆ   rG   r    é˜   rˆ   r   r   r{   r,   éÑ   rh   rŸ   rÍ   rV   r   rÚ   r¡   rJ   rÙ   r�   r‘   rS   r!   éq   r¯   éÎ   r¤   r*   r}   rÂ   rU   r¶   rC   r   r   r   rt   r�   r´   rA   rƒ   r4   é#   r5   r   é·   r@   éØ   rŒ   r=   r�   rÕ   rº   r   éU   rj   éö   éA   rT   r   r?   rš   r   r8   r¾   rÀ   rR   éH   r~   r°   r¥   r]   rÏ   r/   rÒ   ri   r‚   rE   rM   é{   é   rŠ   r·   rZ   rÊ   r¢   r­   rª   é:   r›   é”   r;   r   r§   r   ro   rn   rÓ   rD   r�   r[   r†   rm   éF   r–   rw   r"   rK   r¸   r3   rÆ   r%   r£   rv   r   rH   rr   r’   r�   rœ   (   r˜   rL   r€   r”   r§   r    rÆ   rð   r:   rG   rÖ   r›   r   r—   rÇ   r   r   re   r×   r±   r]   rà   r[   rS   r™   rQ   rø   r8   r
   r¿   r   r`   rr   r<   rÒ   r/   rÕ   r´   r7   r;   rs   rü   r   r»   rþ   rV   rê   r­   rp   rß   r   r|   rÓ   r	   r2   r   r¬   rŠ   rÍ   r£   r�   r>   rë   rý   rú   rc   r   r„   r¯   rF   rÚ   rÝ   r¶   r«   r+   r~   rû   rv   r(   rR   rº   r‚   rš   r   r6   rW   r‰   rx   r‘   rÁ   rƒ   rÄ   rí   r5   r.   rä   rö   r  rÞ   rk   r¦   ræ   r“   r#   râ   r3   rZ   r,   rz   r"   rã   rw   ré   r²   r�   rŽ   rè   rò   r®   rÿ   r   r·   rO   r°   rª   rf   rÎ   rU   r¡   rµ   rm   r   r¨   r   r�   r…   rX   rY   r‹   rÔ   r‡   rb   r0   r³   rÂ   r¤   rT   rô   rž   rJ   r   rd   rÙ   r†   r©   rØ   r$   rç   rÌ   r½   r–   rD   rÏ   rE   r?   rù   rj   rn   r1   r¸   r¥   r=   r   r&   r!   rÀ   rt   r   ró   r¾   rÊ   ry   rÐ   r_   rK   r-   rÛ   rˆ   rÃ   rì   rg   rõ   r�   rP   r*   ro   rl   r   rq   r   r’   rI   r\   r•   rå   rñ   rÈ   r   rá   rN   r   rï   r%   r'   r   r   r÷   r¼   r   r�   rA   rŸ   rh   rî   r   r   r   rH   rË   r}   rM   rC   ru   r)   rŒ   r   r^   r   rÅ   ri   rÜ   rÉ   r    r   r   ra   r4   rÑ   r9   r¢   rB   r¹   r{   r@   rœ   r˜   é    )ÚBarcodec                   óš   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ 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 )ÚECC200DataMatrixa  This code only supports a Type 12 (44x44) C40 encoded data matrix.
    This is the size and encoding that Royal Mail wants on all mail from October 1st 2015.
    see https://bitbucket.org/rptlab/reportlab/issues/69/implementations-of-code-128-auto-and-data
    r€   c                 óà   — t          j        | g|¢R i |¤Ž d| _        d| _        d| _        d| _        d| _        d| _        | j        | j        dz  z
  | _        | j        | j        dz  z
  | _	        d S )Nr…   rL   r   r¬   )
r  Ú__init__Úrow_modulesÚcol_modulesÚrow_regionsÚcol_regionsÚcw_dataÚcw_eccÚrow_usable_modulesÚcol_usable_modules)ÚselfÚargsÚkwargss      úz/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/reportlab/graphics/barcode/ecc200datamatrix.pyr  zECC200DataMatrix.__init__a   s‰   € ÝÔ˜Ð.˜tÐ.Ð.Ð. vÐ.Ð.Ð.ð ˆÔØˆÔØˆÔØˆÔØˆŒØˆŒØ"&Ô"2°TÔ5EÈÑ5IÑ"IˆÔØ"&Ô"2°TÔ5EÈÑ5IÑ"IˆÔÐÐó    c                 óz   — d| _         | j        D ]}t          |¦  «        dk    r
d| _          d S Œ | j        | _        d S )Nr˜   r   r  )ÚvalidÚvalueÚordÚ	validated)r  Úcs     r  ÚvalidatezECC200DataMatrix.validaten   sK   € ØˆŒ
Ø”ð 	(ð 	(ˆAÝ�1‰vŒv˜Š|ˆ|Ø�”
Ø��ð ð "œZˆDŒNˆNˆNr  c                 óÈ  — t          |¦  «        }g }|dk    s|dk    r|dk    s|dk    rf|dk    r`|dk    r|                     |dz
  ¦  «         �n’|dk    r |dk    r|                     |dz
  ¦  «         �nl|                     |dz
  ¦  «         �nR|d	k    r2|d
k    r,|                     d	¦  «         |                     |¦  «         �n|dk    r|dk    s|dk    rY|dk    rS|                     d¦  «         |dk    r|dk    r|                     |dz
  ¦  «         nÈ|                     |dz
  ¦  «         n¯|dk    r4|dk    r.|                     d¦  «         |                     |dz
  ¦  «         nu|dk    rY|dk    rS|                     d¦  «         |                     d¦  «         ||                      t          |dz
  ¦  «        ¦  «        z  }nt	          d|›d|›d�¦  «        ‚|S )Nr    r   r—   rû   rG   r®   r…   rÊ   r  rŒ   r�   rÆ   r+   r6   r˜   r›   ra   rt   rL   rð   r   rï   zCannot encode z (ú))r  ÚappendÚ_encode_c40_charÚchrÚ	Exception)r  ÚcharÚoÚencodeds       r  r  z!ECC200DataMatrix._encode_c40_charw   s  € Ý�‰IŒIˆØˆà�Š7ˆ7�q˜B’w�w 1¨¢7 7°°R²°¸AÀºG¸Gà�BŠwˆwØ—’˜q 2™vÑ&Ô&Ð&Ñ&Ø�b’�˜Q "šW˜WØ—’˜q 2™vÑ&Ô&Ð&Ñ&à—’˜q 2™vÑ&Ô&Ð&Ñ&Ø�!ŠVˆV˜˜Rš˜Ø�NŠN˜1ÑÔÐØ�NŠN˜1ÑÔÐÑØ�2Šgˆg˜!˜rš'˜' q¨B¢w w°1¸²7°7Ø�NŠN˜1ÑÔÐØ�BŠwˆw˜1 š7˜7Ø—’˜q 2™vÑ&Ô&Ð&Ð&à—’˜q 2™vÑ&Ô&Ð&Ð&Ø�"ŠWˆW˜˜cš˜Ø�NŠN˜1ÑÔÐØ�NŠN˜1˜r™6Ñ"Ô"Ð"Ð"Ø�#ŠXˆX˜!˜sš(˜(à�NŠN˜1ÑÔÐØ�NŠN˜2ÑÔÐØ�t×,Ò,­S°°S±©\¬\Ñ:Ô:Ñ:ˆGˆGå�)°t°t°t¸Q¸Q¸QÐ?Ñ@Ô@Ð@àˆr  c                 ó„  — g }|D ]}||                       |¦  «        z  }Œt          |¦  «        dz  r'|                     d¦  «         t          |¦  «        dz  °'g }|                     d¦  «         t          dt          |¦  «        d¦  «        D ]b}|||dz   …         }|d         dz  |d         dz  z   |d         z   dz   }|                     |dz  ¦  «         |                     |dz  ¦  «         Œc|                     d	¦  «         t          |¦  «        | j        k    rt          d
¦  «        ‚t          |¦  «        | j        k     r{|                     d¦  «         t          |¦  «        | j        k     rNdt          |¦  «        dz   z  dz  dz   }|                     d|z   d	z  ¦  «         t          |¦  «        | j        k     °N|S )NrÜ   r  r¯   i@  r˜   rË   rL   é   r   z4Too much data to fit into a data matrix of this sizerD   rÓ   rO   )r  Úlenr  Úranger  r!  )	r  r  r$  r  Ú	codewordsÚiÚchunkÚtotalÚrs	            r  Ú_encode_c40zECC200DataMatrix._encode_c40™   sÚ  € Øˆàð 	0ð 	0ˆAØ�t×,Ò,¨QÑ/Ô/Ñ/ˆGˆGå�'‰lŒl˜QÑð 	Ø�NŠN˜1ÑÔÐõ �'‰lŒl˜QÑð 	ð ˆ	Ø×Ò˜ÑÔÐå�q�#˜g™,œ,¨Ñ*Ô*ð 	*ð 	*ˆAØ˜A˜a ™c˜E”NˆEØ˜!”H˜t‘O e¨A¤h°¡mÑ3°e¸A´hÑ>ÀÑBˆEØ×Ò˜U c™\Ñ*Ô*Ð*Ø×Ò˜U S™[Ñ)Ô)Ð)Ð)à×Ò˜ÑÔÐåˆy‰>Œ>˜DœLÒ(Ð(ÝÐRÑSÔSÐSåˆy‰>Œ>˜DœLÒ(Ð(à×Ò˜SÑ!Ô!Ð!Ý�i‘.”. 4¤<Ò/Ð/Ø�S ™^œ^¨aÑ/Ñ0°CÑ7¸1Ñ<�Ø× Ò  #¨¡'¨S¡Ñ1Ô1Ð1õ �i‘.”. 4¤<Ò/Ð/ð Ðr  c                 ó   — ||z  S ©N© ©r  Úint1Úint2s      r  Ú_gfsumzECC200DataMatrix._gfsum¹   s   € Ø�d‰{Ðr  c                 óp   — |dk    s|dk    rdS t           t          |         t          |         z   dz           S )Nr  r   )ÚALOGVALÚLOGVALr2  s      r  Ú
_gfproductzECC200DataMatrix._gfproduct¼   s5   € Ø�1Š9ˆ9˜ š	˜	Ø�1å�F 4œL­6°$¬<Ñ7¸3Ñ>Ô?Ð?r  c                 ó^  — t           |         }dg|z  }|D ]‚}|                      ||d         ¦  «        }t          |dz
  dd¦  «        D ]O}|                      |||         ¦  «        ||<   |dk    r(|                      ||dz
           ||         ¦  «        ||<   ŒPŒƒ|                     ¦   «          |S )z¶
        This method is basically verbatim from "huBarcode" which is BSD licensed
        https://github.com/hudora/huBarcode/blob/master/hubarcode/datamatrix/reedsolomon.py
        r  éÿÿÿÿr˜   )ÚFACTORSr5  r(  r9  Úreverse)r  ÚdataÚnum_code_wordsÚ
cw_factorsÚ
code_wordsÚ	data_wordÚtmpÚjs           r  Ú_get_reed_solomon_codez'ECC200DataMatrix._get_reed_solomon_codeÂ   sÍ   € õ
 ˜^Ô,ˆ
Ø�S˜>Ñ)ˆ
àð 	Rð 	RˆIØ—+’+˜i¨°B¬Ñ8Ô8ˆCÝ˜>¨AÑ-¨r°2Ñ6Ô6ð Rð R�Ø $§¢°°ZÀ´]Ñ CÔ C�
˜1‘Ø�q’5�5Ø$(§K¢K°
¸1¸q¹5Ô0AÀ:ÈaÄ=Ñ$QÔ$Q�J˜q‘MøðRð
 	×ÒÑÔÐØÐr  c                 ó¸   — |                      d¦  «        }g }t          dd¦  «        D ]}|                     ||z	  dz  ¦  «         Œ|                     ¦   «          |S )Nr  r”   r˜   )Úpopr(  r  r=  )r  r>  r  Úbitsr*  s        r  Ú_get_next_bitszECC200DataMatrix._get_next_bitsÔ   s\   € Ø—’˜‘”ˆØˆÝ�q˜!‘”ð 	(ð 	(ˆAØ�KŠK˜ ™
 Q™Ñ'Ô'Ð'Ð'Ø�Š‰ŒˆØˆr  c                 ó²   — |dk     r|| j         z  }|d| j         dz   dz  z
  z  }|dk     r|| j        z  }|d| j        dz   dz  z
  z  }|| j        |         |<   d S )Nr  r€   r”   )r  r  Ú_matrix)r  ÚrowÚcolÚbits       r  Ú
_place_bitzECC200DataMatrix._place_bitÜ   s}   € Ø�Š7ˆ7Ø�4Ô*Ñ*ˆCØ�A˜$Ô1°AÑ5¸Ñ:Ñ;Ñ<ˆCà�Š7ˆ7Ø�4Ô*Ñ*ˆCØ�A˜$Ô1°AÑ5¸Ñ:Ñ;Ñ<ˆCà!$ˆŒ�SÔ˜#ÑÐÐr  c                 ó€  — |                       |¦  «        }|                      | j        dz
  d|d         ¦  «         |                      | j        dz
  d|d         ¦  «         |                      | j        dz
  d|d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         d S )	Nr˜   r  rL   rÜ   r€   r   rÉ   r	   ©rI  rO  r  r  ©r  r>  rH  s      r  Ú_place_bit_corner_1z$ECC200DataMatrix._place_bit_corner_1ç   ó+  € Ø×"Ò" 4Ñ(Ô(ˆØ�Š˜Ô/°!Ñ3°Q¸¸Q¼Ñ@Ô@Ð@Ø�Š˜Ô/°!Ñ3°Q¸¸Q¼Ñ@Ô@Ð@Ø�Š˜Ô/°!Ñ3°Q¸¸Q¼Ñ@Ô@Ð@Ø�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ø�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ø�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ø�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ø�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ð@Ð@r  c                 ó€  — |                       |¦  «        }|                      | j        dz
  d|d         ¦  «         |                      | j        dz
  d|d         ¦  «         |                      | j        dz
  d|d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         d S ©	NrÜ   r  rL   r˜   r€   r   rÉ   r	   rQ  rR  s      r  Ú_place_bit_corner_2z$ECC200DataMatrix._place_bit_corner_2ò   rT  r  c                 ó€  — |                       |¦  «        }|                      | j        dz
  d|d         ¦  «         |                      | j        dz
  d|d         ¦  «         |                      | j        dz
  d|d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         d S rV  rQ  rR  s      r  Ú_place_bit_corner_3z$ECC200DataMatrix._place_bit_corner_3ý   rT  r  c                 ó�  — |                       |¦  «        }|                      | j        dz
  d|d         ¦  «         |                      | j        dz
  | j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         |                      d| j        dz
  |d         ¦  «         d S )	Nr˜   r  rÜ   rL   r€   r   rÉ   r	   rQ  rR  s      r  Ú_place_bit_corner_4z$ECC200DataMatrix._place_bit_corner_4  s6  € Ø×"Ò" 4Ñ(Ô(ˆØ�Š˜Ô/°!Ñ3°Q¸¸Q¼Ñ@Ô@Ð@Ø�Š˜Ô/°!Ñ3°TÔ5LÈqÑ5PÐRVÐWXÔRYÑZÔZÐZØ�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ø�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ø�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ø�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ø�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ø�Š˜˜4Ô2°QÑ6¸¸Q¼Ñ@Ô@Ð@Ð@Ð@r  c                 óB  — |                       |¦  «        }|                      |dz
  |dz
  |d         ¦  «         |                      |dz
  |dz
  |d         ¦  «         |                      |dz
  |dz
  |d         ¦  «         |                      |dz
  |dz
  |d         ¦  «         |                      |dz
  ||d         ¦  «         |                      ||dz
  |d         ¦  «         |                      ||dz
  |d         ¦  «         |                      |||d         ¦  «         d S )	NrL   r  r˜   rÜ   r€   r   rÉ   r	   )rI  rO  )r  r>  rL  rM  rH  s        r  Ú_place_bit_standardz$ECC200DataMatrix._place_bit_standard  s  € Ø×"Ò" 4Ñ(Ô(ˆØ�Š˜˜a™  q¡¨$¨q¬'Ñ2Ô2Ð2Ø�Š˜˜a™  q¡¨$¨q¬'Ñ2Ô2Ð2Ø�Š˜˜a™  q¡¨$¨q¬'Ñ2Ô2Ð2Ø�Š˜˜a™  q¡¨$¨q¬'Ñ2Ô2Ð2Ø�Š˜˜a™  d¨1¤gÑ.Ô.Ð.Ø�Š˜˜S 1™W d¨1¤gÑ.Ô.Ð.Ø�Š˜˜S 1™W d¨1¤gÑ.Ô.Ð.Ø�Š˜˜S $ q¤'Ñ*Ô*Ð*Ð*Ð*r  c                 ó�  — | j         }| j        }|                      ||¦  «        | _        d}d}	 ||k    r|dk    r|                      |¦  «         n…||dz
  k    r!|dk    r|dz  r|                      |¦  «         n[||dz
  k    r%|dk    r|dz  dk    r|                      |¦  «         n-||dz   k    r$|dk    r|dz  dk    r|                      |¦  «         	 ||k     r0|dk    r*| j        |         |         €|                      |||¦  «         |dz  }|dz  }|dk     s||k    rnŒN|dz  }|dz  }	 |dk    r0||k     r*| j        |         |         €|                      |||¦  «         |dz  }|dz  }||k    s|dk     rnŒN|dz  }|dz  }||k    r||k    rn�Œh| j        D ]"}t          d|¦  «        D ]}||         €d||<   ŒŒ#| j        S )	z²
        This method is heavily influenced by "huBarcode" which is BSD licensed
        https://github.com/hudora/huBarcode/blob/master/hubarcode/datamatrix/placement.py
        r€   r  TrL   r”   Nr˜   rÜ   )
r  r  Ú_create_empty_matrixrK  rS  rW  rY  r[  r]  r(  )r  r>  ÚrowsÚcolsrL  rM  r*  s          r  Ú_create_matrixzECC200DataMatrix._create_matrix  sl  € ð
 Ô&ˆØÔ&ˆà×0Ò0°°tÑ<Ô<ˆŒàˆØˆð%	Ø�dŠ{ˆ{˜s ašx˜xØ×(Ò(¨Ñ.Ô.Ð.Ð.Ø˜ ™Ò"Ð" s¨a¢x x°T¸A±X xØ×(Ò(¨Ñ.Ô.Ð.Ð.Ø˜ ™Ò"Ð" s¨a¢x x°T¸A±XÀ²]°]Ø×(Ò(¨Ñ.Ô.Ð.Ð.Ø˜ ™Ò"Ð" s¨a¢x x°T¸A±XÀ²]°]Ø×(Ò(¨Ñ.Ô.Ð.ðØ˜’:�: #¨¢( (¨t¬|¸CÔ/@ÀÔ/EÐ/MØ×,Ò,¨T°3¸Ñ<Ô<Ð<à�q‘�Ø�q‘�à˜’7�7˜c Tšk˜kØðð �1‰HˆCØ�1‰HˆCðØ˜!’8�8  d¢
 
¨t¬|¸CÔ/@ÀÔ/EÐ/MØ×,Ò,¨T°3¸Ñ<Ô<Ð<à�q‘�Ø�q‘�à˜$’;�; #¨¢' 'Øðð �1‰HˆCØ�1‰HˆCà�dŠ{ˆ{˜s dš{˜{ØñK%	ðN ”<ð 	ð 	ˆCÝ˜1˜d‘^”^ð ð �Ø�q”6�>Ø�C˜‘Føðð Œ|Ðr  c                 ó¶  — g }d}d}t          | j        | j        z  ¦  «        }t          | j        | j        z  ¦  «        }|| j        k     r�|| j        k     rr||z  }||z  }||||z   …         }	t          dt          |	¦  «        ¦  «        D ]}
|	|
         |||z   …         |	|
<   Œ|                     |	¦  «         |dz  }|| j        k     °rd}|dz  }|| j        k     °�|S ©Nr  r˜   )Úintr  r
  r  r  r(  r'  r  )r  ÚmatrixÚregionsÚ
col_offsetÚ
row_offsetr`  ra  Úr_offsetÚc_offsetÚregionr*  s              r  Ú_create_data_regionsz%ECC200DataMatrix._create_data_regionsY  s  € ØˆØˆ
Øˆ
å�4Ô*¨TÔ-=Ñ=Ñ>Ô>ˆÝ�4Ô*¨TÔ-=Ñ=Ñ>Ô>ˆà˜4Ô+Ò+Ð+Ø˜tÔ/Ò/Ð/Ø%¨Ñ,�Ø%¨Ñ,�Ø ¨¨h©Ð 6Ô7�Ý˜q¥# f¡+¤+Ñ.Ô.ð Bð B�AØ & q¤	¨(°4¸±=Ð*@Ô A�F˜1‘I�IØ—’˜vÑ&Ô&Ð&Ø˜a‘�
ð ˜tÔ/Ò/Ð/ð ˆJØ˜!‰OˆJð ˜4Ô+Ò+Ð+ð ˆr  c                 ób   — g }t          d|¦  «        D ]}|                     d g|z  ¦  «         Œ|S )Nr  )r(  r  )r  rL  rM  rf  r*  s        r  r_  z%ECC200DataMatrix._create_empty_matrixo  s>   € ØˆÝ�q˜#‘”ð 	(ð 	(ˆAØ�MŠM˜4˜& 3™,Ñ'Ô'Ð'Ð'Øˆr  c                 ó@  — g }|D �]}|                       t          | j        | j        z  ¦  «        t          | j        | j        z  ¦  «        ¦  «        }t          |¦  «        D ]+\  }}t          |¦  «        D ]\  }}|||dz            |dz   <   ŒŒ,t          |¦  «        D ]j\  }}	|dk    r!t          |	¦  «        D ]\  }}
|dz   dz  |	|<   ŒŒ,|dz   t          |¦  «        k    rt          |	¦  «        D ]
\  }}
d|	|<   ŒŒ]d|	d<   |dz  |	d<   Œk|                     |¦  «         �Œ|S )Nr˜   r  rL   r;  )	r_  re  r	  r  r  r
  Ú	enumerater'  r  )r  rg  Úwrappedrl  rf  r*  r`  rD  r>  rL  rM  s              r  Ú_wrap_data_regions_with_findersz0ECC200DataMatrix._wrap_data_regions_with_findersu  st  € Øˆàð 	#ñ 	#ˆFØ×.Ò.Ý�DÔ$ tÔ'7Ñ7Ñ8Ô8Ý�DÔ$ tÔ'7Ñ7Ñ8Ô8ñô ˆFõ
 % VÑ,Ô,ð ,ð ,‘��4Ý(¨™œð ,ð ,‘G�A�tØ'+�F˜1˜Q™3”K  !¡Ñ$Ð$ð,õ $ FÑ+Ô+ð 	$ð 	$‘��3Ø˜’6�6Ý"+¨C¡.¤.ð -ð -™˜˜3Ø"# a¡%¨1¡˜˜A™˜ð-à˜‘U�c &™kœkÒ)Ð)Ý"+¨C¡.¤.ð #ð #™˜˜3Ø!"˜˜A™˜ð#ð �C˜‘FØ !™e�C˜‘G�Gà�NŠN˜6Ñ"Ô"Ð"Ñ"àˆr  c                 ó:  — g }t          dt          |¦  «        | j        ¦  «        D ]t}|||| j        z   …         }d}|t          |d         ¦  «        k     rEg }|D ]}|||         z  }Œ|                     |¦  «         |dz  }|t          |d         ¦  «        k     °EŒu|S rd  )r(  r'  r
  r  )r  rg  Úmergedr*  r+  rD  Ú
merged_rowrL  s           r  Ú_merge_data_regionsz$ECC200DataMatrix._merge_data_regions‘  sº   € Øˆå�q�#˜g™,œ,¨Ô(8Ñ9Ô9ð 	ð 	ˆAØ˜A˜a Ô 0Ñ0Ð0Ô1ˆEØˆAØ•c˜% œ(‘m”mÒ#Ð#Ø�
Ø ð )ð )�CØ # a¤&Ñ(�J�JØ—’˜jÑ)Ô)Ð)Ø�Q‘�ð •c˜% œ(‘m”mÒ#Ð#øð ˆr  c                 ó’  — t          | d¦  «        r| j        S |                      | j        ¦  «        }||                      || j        ¦  «        z  }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|  	                    |¦  «        | _        | j         
                    ¦   «          | j        S )Nr$  )Úhasattrr$  r.  r  rE  r  rb  rm  rr  rv  r=  )r  r$  rf  Údata_regionsrq  s        r  ÚencodezECC200DataMatrix.encode   s·   € Ý�4˜Ñ#Ô#ð 	 Ø”<Ðà×"Ò" 4¤>Ñ2Ô2ˆØ�4×.Ò.¨w¸¼ÑDÔDÑDˆà×$Ò$ WÑ-Ô-ˆØ×0Ò0°Ñ8Ô8ˆØ×6Ò6°|ÑDÔDˆØ×/Ò/°Ñ8Ô8ˆŒàŒ×ÒÑÔÐàŒ|Ðr  c                 óV   — | j         | j        z  | _        | j        | j        z  | _        d S r0  )r  ÚbarWidthÚ_heightr	  Ú_width)r  r  s     r  ÚcomputeSizezECC200DataMatrix.computeSize°  s(   € ØÔ'¨$¬-Ñ7ˆŒØÔ&¨¬Ñ6ˆŒˆˆr  c                 óì   — t          | j        ¦  «        D ]^\  }}t          |¦  «        D ]I\  }}|rB|                      | j        || j        z  z   | j        || j        z  z   | j        | j        ¦  «         ŒJŒ_d S r0  )rp  r$  ÚrectÚxr|  Úy)r  rƒ  rL  r‚  r>  s        r  ÚdrawzECC200DataMatrix.draw´  s’   € Ý ¤Ñ-Ô-ð 	ð 	‰FˆAˆsÝ$ S™>œ>ð ð ‘��4Øð Ø—I’IØœ  T¤]Ñ!2Ñ2Øœ  T¤]Ñ!2Ñ2ØœØœñ	ô ð øðð	ð 	r  N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r|  r  r  r  r.  r5  r9  rE  rI  rO  rS  rW  rY  r[  r]  rb  rm  r_  rr  rv  rz  r  r„  r1  r  r  r  r  Z   s„  € € € € € ðð ð €HðJð Jð Jð(ð (ð (ð ð  ð  ðDð ð ð@ð ð ð@ð @ð @ðð ð ð$ð ð ð	%ð 	%ð 	%ð	Að 	Að 	Að	Að 	Að 	Að	Að 	Að 	Að	Að 	Að 	Að	+ð 	+ð 	+ð9ð 9ð 9ðvð ð ð,ð ð ðð ð ð8ð ð ðð ð ð 7ð 7ð 7ð	ð 	ð 	ð 	ð 	r  r  N)Ú__all__r<  r8  r7  Ú!reportlab.graphics.barcode.commonr  r  r1  r  r  ú<module>r‹     sZ  ðð 
€ð'ØÐð'àÐ'ð'ð Ð7ð'ð Ð;ð	'ð
 Ð?ð'ð ÐGð'ð ð 	$ð'ð ð 	.ð'ð ð 	:ð'ð ð 	Mð'ð ð 	-ð'ð$ ð 	Hð%'ð* ð 	$ð+'ð2 ð 	Jð3'ð: ð 	$ð;'ðD ð 	@ðE'€ðR
€ð,€ð, 6Ð 5Ð 5Ð 5Ð 5Ð 5ðcð cð cð cð c�wñ cô cð cð cð cr  