+
    bIiE                         Rt / ^Rb^Rb^
Rb^R	b^R
b^Rb^Rb^Rb^Rb^Rb^$Rb^*Rb^0Rb^8Rb^>Rb^DRbtRtRt^ RIHt  ! R R]4      tR# )ECC200datamatrix)Barcodec                      a  ] tR t^Zt o Rt^tR tR tR tR t	R t
R tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )ECC200DataMatrixzThis 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
c                2   \         P                  ! V .VO5/ VB  ^,V n        ^,V n        ^V n        ^V n        ^V n        ^8V n        V P                  V P                  ^,          ,
          V n        V P                  V P
                  ^,          ,
          V n	        R# ),   N)
r   __init__row_modulescol_modulesrow_regionscol_regionscw_datacw_eccrow_usable_modulescol_usable_modules)selfargskwargss   &*,ڔC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\venv\Lib\site-packages\reportlab/graphics/barcode/ecc200datamatrix.pyr   ECC200DataMatrix.__init__a   s    .t.v. "&"2"2T5E5E5I"I"&"2"2T5E5E5I"I    c                    ^V n         V P                   F  p\        V4      ^8  g   K  ^ V n          R# 	  V P                  V n        R#    N)validvalueord	validated)r   cs   & r   validateECC200DataMatrix.validaten   s9    
A1v|
 
 "ZZDNr   c                   \        V4      p. pV^ 8X  g   V^08  d   V^98:  g   V^A8  dl   V^Z8:  de   V^ 8X  d   VP                  V^,
          4       V# V^08  d"   V^98:  d   VP                  V^,,
          4       V# VP                  V^3,
          4        V# V^ 8  d,   V^8:  d%   VP                  ^ 4       VP                  V4       V# V^!8  d   V^@8:  g   V^[8  d\   V^_8:  dU   VP                  ^4       V^!8  d"   V^@8:  d   VP                  V^!,
          4       V# VP                  V^E,
          4        V# V^`8  d3   V^8:  d,   VP                  ^4       VP                  V^`,
          4       V# V^8  dS   V^8:  dL   VP                  ^4       VP                  ^4       W0P                  \        V^,
          4      4      ,          pV# \	        RV: RV: R24      h)    zCannot encode z ())r   append_encode_c40_charchr	Exception)r   charoencodeds   &&  r   r%   !ECC200DataMatrix._encode_c40_charw   s   I7qBw17RAGBwq2v&2 1 bQ"Wq2v&. + q2v&* ) !VRNN1NN1$ # 2g!r'qBw17NN1Bw17q2v&  q2v&  "WcNN1NN1r6"  #X!s(NN1NN2,,SS\::G  tQ?@@r   c                p   . pV F  pW P                  V4      ,          pK  	  \        V4      ^,          '       d   VP                  ^ 4       K+  . pVP                  ^4       \        ^ \        V4      ^4       Fx  pW%V^,            pV^ ,          R,          V^,          ^(,          ,           V^,          ,           ^,           pVP                  VR,          4       VP                  VR,          4       Kz  	  VP                  ^4       \        V4      V P                  8  d   \        R4      h\        V4      V P                  8  dt   VP                  ^4       \        V4      V P                  8  dI   ^\        V4      ^,           ,          ^,          ^,           pVP                  ^V,           ^,          4       Kb  V# )   i@     z4Too much data to fit into a data matrix of this size)r%   lenr$   ranger   r'   )	r   r   r*   r   	codewordsichunktotalrs	   &&       r   _encode_c40ECC200DataMatrix._encode_c40   sW   A,,Q//G  'lQNN1	q#g,*AacNE!HtOeAhm3eAh>BEUc\*US[)	 + 	y>DLL(RSSy>DLL(S!i.4<</S^a/0C71<  #'S1r   c                    W,          # N r   int1int2s   &&&r   _gfsumECC200DataMatrix._gfsum   s
    {r   c                    V^ 8X  g   V^ 8X  d   ^ # \         \        V,          \        V,          ,           ^,          ,          #     )ALOGVALLOGVALr;   s   &&&r   
_gfproductECC200DataMatrix._gfproduct   s/    19	F4L6$<73>??r   c                `   \         V,          p^ .V,          pV F  pV P                  WTR,          4      p\        V^,
          RR4       FM  pV P                  WcV,          4      WG&   V^ 8  g   K&  V P                  WG^,
          ,          WG,          4      WG&   KO  	  K  	  VP	                  4        V# )z
This method is basically verbatim from "huBarcode" which is BSD licensed
https://github.com/hudora/huBarcode/blob/master/hubarcode/datamatrix/reedsolomon.py
)FACTORSr>   r0   rE   reverse)r   datanum_code_words
cw_factors
code_words	data_wordtmpjs   &&&     r   _get_reed_solomon_code'ECC200DataMatrix._get_reed_solomon_code   s    
 ^,
S>)
I++iB8C>A-r26 $] C
q5$(KK
q50A:=$QJM 7  	r   c                    VP                  ^ 4      p. p\        ^ ^4       F!  pVP                  W$,	          ^,          4       K#  	  VP                  4        V# rA   )popr0   r$   rJ   )r   rK   r   bitsr2   s   &&   r   _get_next_bitsECC200DataMatrix._get_next_bits   sD    q!AKK
Q' r   c                4   V^ 8  d;   WP                   ,          pV^V P                   ^,           ^,          ,
          ,          pV^ 8  d;   W P                  ,          pV^V P                  ^,           ^,          ,
          ,          pW0P                  V,          V&   R# rB   N)r   r   _matrix)r   rowcolbits   &&&&r   
_place_bitECC200DataMatrix._place_bit   s{    7***CA$11A5:;<C7***CA$11A5:;<C!$S#r   c                   V P                  V4      pV P                  V P                  ^,
          ^ V^ ,          4       V P                  V P                  ^,
          ^V^,          4       V P                  V P                  ^,
          ^V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^V P                  ^,
          V^,          4       V P                  ^V P                  ^,
          V^,          4       V P                  ^V P                  ^,
          V^,          4       R# r   rW   r_   r   r   r   rK   rV   s   && r   _place_bit_corner_1$ECC200DataMatrix._place_bit_corner_1   
   ""4(//!3QQ@//!3QQ@//!3QQ@422Q6Q@422Q6Q@422Q6Q@422Q6Q@422Q6Q@r   c                   V P                  V4      pV P                  V P                  ^,
          ^ V^ ,          4       V P                  V P                  ^,
          ^ V^,          4       V P                  V P                  ^,
          ^ V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^V P                  ^,
          V^,          4       R# r-   Nrb   rc   s   && r   _place_bit_corner_2$ECC200DataMatrix._place_bit_corner_2   rf   r   c                   V P                  V4      pV P                  V P                  ^,
          ^ V^ ,          4       V P                  V P                  ^,
          ^ V^,          4       V P                  V P                  ^,
          ^ V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^V P                  ^,
          V^,          4       V P                  ^V P                  ^,
          V^,          4       V P                  ^V P                  ^,
          V^,          4       R# rh   rb   rc   s   && r   _place_bit_corner_3$ECC200DataMatrix._place_bit_corner_3   rf   r   c                   V P                  V4      pV P                  V P                  ^,
          ^ V^ ,          4       V P                  V P                  ^,
          V P                  ^,
          V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^ V P                  ^,
          V^,          4       V P                  ^V P                  ^,
          V^,          4       V P                  ^V P                  ^,
          V^,          4       V P                  ^V P                  ^,
          V^,          4       R# r   rb   rc   s   && r   _place_bit_corner_4$ECC200DataMatrix._place_bit_corner_4  s   ""4(//!3QQ@//!3T5L5Lq5PRVWXRYZ422Q6Q@422Q6Q@422Q6Q@422Q6Q@422Q6Q@422Q6Q@r   c                Z   V P                  V4      pV P                  V^,
          V^,
          V^ ,          4       V P                  V^,
          V^,
          V^,          4       V P                  V^,
          V^,
          V^,          4       V P                  V^,
          V^,
          V^,          4       V P                  V^,
          W4^,          4       V P                  W#^,
          V^,          4       V P                  W#^,
          V^,          4       V P                  W#V^,          4       R# )   N)rW   r_   )r   rK   r\   r]   rV   s   &&&& r   _place_bit_standard$ECC200DataMatrix._place_bit_standard  s    ""4(aq$q'2aq$q'2aq$q'2aq$q'2a1g.1Wd1g.1Wd1g.$q'*r   c                H   V P                   pV P                  pV P                  W#4      V n        ^p^ p WB8X  d   V^ 8X  d   V P	                  V4       MWB^,
          8X  d)   V^ 8X  d"   V^,          '       d   V P                  V4       MgWB^,
          8X  d(   V^ 8X  d!   V^,          ^8X  d   V P                  V4       M3WB^,           8X  d'   V^8X  d    V^,          ^ 8X  d   V P                  V4        WB8  d6   V^ 8  d/   V P                  V,          V,          f   V P                  WV4       V^,          pV^,          pV^ 8  g	   WS8  g   K]   T^,          pT^,          p T^ 8  d5   YS8  d/   T P                  T,          T,          f   T P                  YT4       T^,          pT^,          pYB8  g
   T^ 8  g   K]   T^,          pT^,          pYB8  g   EK  YS8  g   EK   T P                   F&  p\        ^ T4       F  pYF,          e   K  ^ YF&   K  	  K(  	  T P                  # )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   _create_empty_matrixr[   rd   ri   rl   ro   rs   r0   )r   rK   rowscolsr\   r]   r2   s   &&     r   _create_matrixECC200DataMatrix._create_matrix  s   
 &&&&00<{sax((."saxTAXX((."saxTAX]((."saxTAX]((.:#(t||C/@/E/M,,T<qq7ck1HC1HC!8
t||C/@/E/M,,T<qq;#'1HC1HC{s{<<C1d^6>CF $  
 ||r   c                   . p^ p^ p\        V P                  V P                  ,          4      p\        V P                  V P                  ,          4      pW0P                  8  d   W@P                  8  df   W5,          pWF,          pWWW,            p	\        ^ \        V	4      4       F  p
W,          WV,            W&   K  	  VP                  V	4       V^,          pKu  ^ pV^,          pK  V# rA   )intr   r   r   r   r0   r/   r$   )r   matrixregions
col_offset
row_offsetrw   rx   r_offsetc_offsetregionr2   s   &&         r   _create_data_regions%ECC200DataMatrix._create_data_regionsY  s    

4**T-=-==>4**T-=-==>+++///%,%,7q#f+.A &	(= AFI /v&a
J!OJr   c                b    . p\        ^ V4       F  pVP                  R.V,          4       K  	  V# rZ   )r0   r$   )r   r\   r]   r}   r2   s   &&&  r   rv   %ECC200DataMatrix._create_empty_matrixo  s.    q#AMM4&3,' r   c                   . pV EF5  pV P                  \        V P                  V P                  ,          4      \        V P                  V P
                  ,          4      4      p\        V4       F2  w  rV\        V4       F  w  rxWV^,           ,          V^,           &   K   	  K4  	  \        V4       Fv  w  rYV^ 8X  d)   \        V	4       F  w  rzV^,           ^,          W&   K  	  K4  V^,           \        V4      8X  d   \        V	4       F	  w  rz^W&   K  	  Ke  ^V	^ &   V^,          V	R&   Kx  	  VP                  V4       EK8  	  V# )r   rH   )	rv   r|   r
   r   r	   r   	enumerater/   r$   )r   r~   wrappedr   r}   r2   rw   rQ   rK   r\   r]   s   &&         r   _wrap_data_regions_with_finders0ECC200DataMatrix._wrap_data_regions_with_findersu  s   F..D$$t'7'778D$$t'7'778F
 %V,(GA'+1Q3K!$  / - $F+6"+C."#a%1 #1Uc&k)"+C.!" #1 CF!eCG , NN6"+ . r   c                   . p\        ^ \        V4      V P                  4       Ff  pWW0P                  ,            p^ pV\        V^ ,          4      8  g   K2  . pV F  pWgV,          ,          pK  	  VP                  V4       V^,          pKO  	  V# rA   )r0   r/   r   r$   )r   r~   mergedr2   r3   rQ   
merged_rowr\   s   &&      r   _merge_data_regions$ECC200DataMatrix._merge_data_regions  s    q#g,(8(89Aa 0 001EAc%(m#
 Ca&(J !j)Q : r   c                   \        V R 4      '       d   V P                  # V P                  V P                  4      pWP	                  WP
                  4      ,          pV P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      V n        V P                  P                  4        V P                  # )r*   )hasattrr*   r6   r   rR   r   ry   r   r   r   rJ   )r   r*   r}   data_regionsr   s   &    r   encodeECC200DataMatrix.encode  s    4##<<""4>>2..wDD$$W-00866|D//8||r   c                    V P                   V P                  ,          V n        V P                  V P                  ,          V n        R # r9   )r	   barWidth_heightr
   _width)r   r   s   &*r   computeSizeECC200DataMatrix.computeSize  s.    ''$--7&&6r   c                R   \        V P                  4       F  w  r\        V4       Fy  w  r4V'       g   K  V P                  V P                  W0P                  ,          ,           V P
                  WP                  ,          ,           V P                  V P                  4       K{  	  K  	  R # r9   )r   r*   rectxr   y)r   r   r\   r   rK   s   &    r   drawECC200DataMatrix.draw  sl    -FA$S>4II]]!22]]!22	 * .r   )r   r[   r   r
   r   r   r   r   r*   r	   r   r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r%   r6   r>   rE   rR   rW   r_   rd   ri   rl   ro   rs   ry   r   rv   r   r   r   r   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r   Z   s      HJ( D@@$	%	A	A	A	A	+9v,8 7	 	r   r   N)r   )   0      o   >   )   D            \      )
                  t      n   =   )                  '      <   a   x   ))         [   r   *         r      d      )   r         _   	      w   r   -         S   r   )r      r   r      K   B   r      r   m      ^   r      r   Z   r   )r   r      r      G   r   rr   r      r         O   l   R         r      )4      X   r   r   r                  r   r   r      r   r   |   r         `   2      )      +   r   r   r  g   r   %         5   r   "      y      r   r   r         r   r  r   r   ]   r   )$r      r               r  f   r   T         r   P         r   rr      r   !   e      r   r   s   r   r   r  ;      r   b   Q   p   )*M   r  r$        &      r      i   z   rr   r      r      r   r   r   r      r1     r   9   r  r   r   r   r7  6   r#  r      E   r           r   r   r   )0r      r   r   r  r"   u   r/     r3  r@  r  r   r      W      j         v   r   r
  r   r  r      r   r   r   r   r   r   r   r   r   r   rB     rF  r   r   r:  r   r   r   r   r-  )8r   r   r   r@  r   r  r     r      r   r     r         r;     $   r   r.     r>  r8  r      r     r?     rK     r   r@  r/  r;     r?  r            r$  r   r  C   r0  r   r   r  rT  k   r   r     .   )>r   r     r  r      r   rG  r9  r   rV     r\  r      r
  r   r*  r   rL  r   ?   r   r   r  rD  r      r   @   r   r      r   rF     r   r  3   rb  rB  
   (   r  r   r     r,  r   r  r!  r[  rU     r   r      r   V   /         )Dr  r      Y   r      rO  8   rs  r"  rF  r      rP  I   r  r   r  r      rS  r   r   r<  r   r2  r  r   r   r         r      r   r   r9  r5  r  r'  r  rU  r  r_  r  r  r      r  r   r&  r   r   r'  1   rU  r  r`  rd  r8  r   r   r>  rb  r  r	  r   r   (   ir   r   r   rr   r   r   r  r-   r.  r=  r3  r   r  r8  r_  r!  r   r   re  ry  rD  r   r         r   r   7   rG  r  rS  r      ra  r  rj     r%  r	  r   N   r[  }      r4  rK  r  r   r   r  rx  r   c   r   r}  ru  rY  r   r         rN  r   rg  L   r     r   rp  r   r  r   rP  r   r   r   r   h   r  r   rn  r      r      ~   r   r  r  r   J      r"   rk  r  r   rr  rI  rq  r   r)  r  r   r]  r   r   rO  r'  r  r  rW  r7  rF     rZ  r      rv  r   r   r5  rQ  rb  rz  r   r   r   rl  rf  r+  r   rc  r  r  r      r   r      r(  r   r   r  r      r
  r>  rm  r   r   r|  r?  r   r{  r/  r1  r   r   q   rL     rB  r   r  r`  r   rT  r   r   r   r   r  r0  rR  r   r$  r   #   r   ri     r      r,  r   r"  rw  rX  r   U   r     A   r   r   r   r9  r   r   r\  r^  r   H   r  rM  rC  r   ro  r   rs  r  r#  r   r   {      r*  rU  r   rh  r@  rJ  rH  :   r:     r   r   rE  r   r  r  rt  r   r-  r   r&  r  F   r6  r  r   r   rV  r   rd  r   rA  r  r      r  r2  r<  r;  (   r   rr   r!  r4  rE  r"   rd  r  r   r   rx  r:  r   r7  re  r   r   r  ry  rN  r   r  r   r   r8  r   r  r   r   r]  r   r  r  r   rs  r   rw  rR  r   r   rP  r  r   rY  r  r   r  rJ  r  r  r   r  rt  rl  r  r   ru  r*  rm  rA  r0  r   r  r  r  r  r   r%  rL  r   r|  r~  rT  rI  r   r  r  r  r   r   rX  r#  r9  r   r   r   r)  r  r1  r_  r$  rb  r  r   r   r  r  r  r  r  rD  r  r3  r   r  r   r   r   r  r   r  r  r  rO  r-  r.  r  r  rK  r  r   rU  r   rM  rH  r  rn  r   r?  rS  r  r   rF  rp  r/  r   r   r   r+  rv  r'  r  r   rQ  r`  rB  r   r  r=  r   r   r  r{  r&  rG  rz  r   r  rk  r[  r6  r   ro  r   r   r  r  r  r   rV  rC  r   r   r   r   r^  r  r   r  r\  rh  r  rq  r  r   r   r}  r(  ra  r  r	  r  r<  r   r   r  r  r   r  r   r2  r   r   r5  r  r  rf  r   r  r   r   r  r   r   r   r   r  rZ  r   r"  r   r>  r
  r  r  r   ri  r  rj  r  r   r   r  r   r,  r   r   r   rc  r  r-   rg  r   r   r   r  r   rr  r   r@  r   rW  r  r   r;  r   )__all__rI   rD   rC   !reportlab.graphics.barcode.commonr   r   r:   r   r   <module>r     s   
'''' 7' ;	'
 ?' G'  	$'  	.'  	:'  	M'  	-'$  	H%'*  	$+'2  	J3':  	$;'D  	@E'R
,, 6cw cr   