+
    ̧6jA=                         ^ RI Ht RtRt^ RIHt ^ RIHt R t ! R R]4      t	R t
R	 tR
 tR t]R8X  d
   ]! 4        R# R# )    )print_functionz3.3.0USPS_4State)Barcode)asNativec                    \        V 4      pVR,          VR,          P                  4       ,           pVP                  R4      '       d   VRR pV# )znormalized hexN   Nr	   NNlN)hexlowerendswith)irs   & Y/opt/hart-platform/venv/lib/python3.14/site-packages/reportlab/graphics/barcode/usps4s.pynhexr   
   s?    AA	"aekkmAzz#AcrFH    c                   ^  a  ] tR t^t o Rt^t^t^t^ t ]	! R2R3R2R3R7      t
]	! R4R5R4R5R7      t]	! R6R7R8R9R7      tR:R ltR tR t]! ]4      tR t]! R	 ]4      tR
 t]! R ]4      tR t]! R ]4      tR t]! R ]4      tR t]! R ]4      tR t]! R ]4      tR t]! ]4      tR t]! ]4      tR t]! ]4      tR t]! ]4      tR t]! ]4      tR t]! ]4      tR;tR<t]! R 4      t ]! R 4      t!]R 4       t"]"PF                  R 4       t"]R 4       t$]$PF                  R 4       t$]R  4       t%]%PF                  R! 4       t%]! R" 4      t&]! R# 4      t']R$ 4       t(]R% 4       t)](PF                  R& 4       t(])PF                  R' 4       t)R( t*R) t+R=R* lt,R+ t-R, t.]! ].R- 4      t.R. t/R>R/ lt0R0t1T t2R1# )?r   zBUSPS 4-State OneView (TM) barcode. All info from USPS-B-3200A
    )FTAD)r   r   r   r   )widthpitchhczvczc                   V P                  4        \        V\        4      '       d   \        V4      M
\	        V4      pV'       g>   \        V4      R9   d   VR,          VR,          r!MF\        R\        V4      ,          4      h\        V4      R9  d   \        R\        V4      ,          4      hWn        W n        V P                  ! R/ VB  R# )	   :Nr   N:r   NNz;value+routing length must be 20, 25, 29 or 31 digits not %dz/routing length must be 5, 9 or 11 digits not %dN)r            )   	       )
_init
isinstanceintstrr   len
ValueError	_tracking_routing_setKeywords)selfvalueroutingkwds   &&&,r   __init__USPS_4State.__init__?   s    

(s33E
%5z]*!&sU3Zw !^adejak!kll\)NQTU\Q]]^^ C r   c                >    R V n         R V n        R V n        R V n        R # N)_bvalue
_codewords_characters	_barcodesr0   s   &r   r'   USPS_4State._initN   s    r   c                v    W,          p^HV^ ,          ^V,
          ,          W#^,          ,          ,           ,          # )H   r&   )kindr   sVs   &&& r   scaleUSPS_4State.scaleT   s+    G1Q41:a!f$%%r   c                2    V P                  4        Wn        R # r7   )r'   r-   )r0   trackings   &&r   rF   USPS_4State.trackingY   s    

!r   c                    V P                   # r7   )r-   r<   s   &r   <lambda>USPS_4State.<lambda>\       T^^r   c                2    V P                  4        Wn        R # r7   )r'   r.   )r0   r2   s   &&r   r2   USPS_4State.routing^   s    

r   c                    V P                   # r7   )r.   r<   s   &r   rI   rJ   a   s    DMMr   c                J    R V n         \        \        ^ V4      ^4      V n        R # r7   )_sizedminmax
_widthSizer0   r1   s   &&r   	widthSizeUSPS_4State.widthSizec   s    c!El1-r   c                    V P                   # r7   )rS   r<   s   &r   rI   rJ   f   s    door   c                     R V n         Wn        R # r7   )rP   _heightSizerT   s   &&r   
heightSizeUSPS_4State.heightSizeh   s     r   c                    V P                   # r7   )rY   r<   s   &r   rI   rJ   k   s
    t'7'7r   c                     R V n         Wn        R # r7   )rP   	_fontSizerT   s   &&r   fontSizeUSPS_4State.fontSizem   s    r   c                    V P                   # r7   )r^   r<   s   &r   rI   rJ   p   rK   r   c                     R V n         Wn        R # r7   )rP   _humanReadablerT   s   &&r   humanReadableUSPS_4State.humanReadabler   s    #r   c                    V P                   # r7   )rc   r<   s   &r   rI   rJ   u   s
    $*=*=r   c                4   V P                   pV'       Eg<   V P                  p\        V4      p V^ 8X  d   ^ pMTV^8X  d   \        V4      ^,           pM:V^	8X  d   \        V4      R,           pM V^8X  d   \        V4      R,           pM\        hV P
                  pVR,          p V^
,          pV\        V^ ,          4      ,          pV^,          pV\        V^,          4      ,          p^pR F]  w  rxTp	Yh,          pYIT p \        T4      T8w  d   \        h\        T4       F$  p	T^
,          pT\        YY,          4      ,          pK&  	  K_  	  Yn         V#    \	        RT,          4      h; i   \	        RT,          4      h; i   \	        RYWT3,          4      h; i)a  convert the 4 state string values to binary
>>> print(nhex(USPS_4State('01234567094987654321','').binary))
0x1122103b5c2004b1
>>> print(nhex(USPS_4State('01234567094987654321','01234').binary))
0xd138a87bab5cf3804b1
>>> print(nhex(USPS_4State('01234567094987654321','012345678').binary))
0x202bdc097711204d21804b1
>>> print(nhex(USPS_4State('01234567094987654321','01234567891').binary))
0x16907b2a24abc16a2e5c004b1
i iP;z@Problem converting %s, routing code must be 0, 5, 9 or 11 digitsr   r	   Nz:Problem converting %s, barcode identifier must be 2 digitsz+Problem converting %s, %s must be %d digits))zspecial services   )zcustomer identifier   )zsequence numberr$   )r8   r2   r+   r)   r,   rF   range)
r0   r1   r2   nrF   svaluer   namendjs
   &         r   binaryUSPS_4State.binaryw   s    ullGGAoa4ETLNETL/EUL3E$$ }}Hc]FhVAY'
VAY' Ae!Ag6{Bj(8"2YVY/ ' f !L5o !cfm!mnnh !]`f!fggg$%RV\bdUe%effs<   	E E E ,E E "AE* >A	FE'*E>Fc                t   V P                   '       Eg   V P                  p\        VR4      w  r#\        VR4      w  r$\        VR4      w  r%\        VR4      w  r&\        VR4      w  r'\        VR4      w  r(\        VR4      w  r)\        VR4      w  r*\        VR4      w  r+^ Tu;8:  d   R8:  g$   M Q R\        \	        V4      4      : RV: 24       h\        V4      V n        V P                  R,          '       d
   VR,          pV^,          p\        \        \        W+WWWeWC3
4      4      V n         V P                   # )zconvert binary value into codewords
>>> print(USPS_4State('01234567094987654321','01234567891').codewords)
(673, 787, 607, 1022, 861, 19, 816, 1294, 35, 602)
i|  iU  i  zimproper value z passed to _2codewords A-->   i  )	r9   rq   divmodr   r)   _crc11_fcstuplemap)r0   r1   r   JIHGr   Er   CBs   &           r   	codewordsUSPS_4State.codewords   s   
 KKE%$DA!D>DA!D>DA!D>DA!D>DA!D>DA!D>DA!D>DA!D>DAa99dRUVYZ_V`Rabcdd9uDIyy~~qCxqFA#CQQQ,A$BCDOr   c                d    \        ^R4      V P                  n        V P                  P                  # )r#     )_initNof13Table	__class__table1r<   s   &r   r   USPS_4State.table1   s%     /$ 7~~$$$r   c                d    \        ^^N4      V P                  n        V P                  P                  # )r	   )r   r   table2r<   s   &r   r   USPS_4State.table2   s%     /" 5~~$$$r   c                   V P                   '       g   V P                  pV P                  p. pVP                  pV P                  pV P
                  p\        ^
4       FQ  pW,          pVR8:  d
   WX,          p	MWhR,
          ,          p	W',	          ^,          '       d   V	( R,          p	V! V	4       KS  	  \        V4      V n         V P                   # )zconvert own codewords to characters
>>> print(' '.join(hex(c)[2:] for c in USPS_4State('01234567094987654321','01234567891').characters))
dcb 85c 8e4 b06 6dd 1740 17c6 1200 123f 1b2b
i  r   i  )r:   r   rw   appendr   r   rk   rx   )
r0   r   fcsr   aCr   r   r   cwcs
   &         r   
charactersUSPS_4State.characters   s    
 I))CAB[[F[[F2Y\t8
A$wAFA::VA1   %QxDr   c                l   V P                   '       g   V P                  p. pVP                  pV P                  pV P                   FK  w  rVrxV! WAV,          V,	          ^,          ^W,          V,	          ^,          ,          ,           ,          4       KM  	  RP                  V4      V n         V P                   # )zGet 4 state bar codes for current routing and tracking
>>> print(USPS_4State('01234567094987654321','01234567891').barcodes)
AADTFFDFTDADTAADAATFDTDDAAADDTDTTDAFADADDDTFFFDDTTTADFAAADFTDAADA
 )r;   r   r   
_bits2barstable4join)	r0   r   r   aB	bits2barsdcdbacabs	   &        r   barcodesUSPS_4State.barcodes   s    
 ~~~AABI#{{b9uby!mQA->>?@  +WWQZDN~~r   c                P    V P                  R V P                  V P                  4      # )r   )rC   
dimensions
widthScaler<   s   &r   rI   rJ     s    

5QUQ`Q`0ar   c                P    V P                  R V P                  V P                  4      # )r   )rC   r   heightScaler<   s   &r   rI   rJ     s    djjttO_O_.`r   c                    R V P                   9   d   V P                   R ,          # V P                  RV P                  V P                  4      # )	_barWidthr   __dict__rC   r   r   r<   s   &r   barWidthUSPS_4State.barWidth  s8    $--'==--zz'$//$//BBr   c                    V P                   R ,          w  r#^H\        \        VR,          V4      V4      ,          V P                  R&   R# )r         R@r   Nr   rQ   rR   r   r0   r1   rl   xs   &&  r   r   r     s7    w'%'Cd
1,=a(@%@k"r   c                    R V P                   9   d   V P                   R ,          # V P                  RV P                  V P                  4      # )_pitchr   r   r<   s   &r   r   USPS_4State.pitch  s8    t}}$==**zz'$//$//BBr   c                    V P                   R ,          w  r#^H\        \        VR,          V4      V4      ,          V P                  R&   R# )r   r   r   Nr   r   s   &&  r   r   r   !  s7    w'"$SU4Z):1%="=hr   c                    R V P                   9   d   V P                   R ,          # V P                  RV P                  V P                  4      V P                  RV P                  V P                  4      ,
          # )
_barHeightr   )r   rC   topsr   bottomsr<   s   &r   	barHeightUSPS_4State.barHeight&  sW    4==(==..zz#dii(8(89DJJs4<<X\XhXh<iiir   c                   V P                   R ,          ^ ,          V P                  R ,          ^ ,          ,
          pV P                   R ,          ^,          V P                  R ,          ^,          ,
          p^H\        \        VR,          V4      V4      ,          ;qP                  R&   W,
          W2,
          ,          V n        R# )r   r   r   N)r   r   rQ   rR   r   rZ   r   s   &&  r   r   r   ,  s    IIcN1S 1! 44IIcN1S 1! 44.0StA5Fq1I.IIl+ 9qs+r   c                B    \        ^\        ^ V P                  4      4      #    )rQ   rR   rU   r<   s   &r   rI   rJ   3  s    s1S4>>-B'Cr   c                B    \        ^\        ^ V P                  4      4      # r   )rQ   rR   rZ   r<   s   &r   rI   rJ   4  s    Ac!DOO.D(Er   c                :    V P                  4        V P                  # r7   )computeSize_widthr<   s   &r   r   USPS_4State.width6  s    {{r   c                :    V P                  4        V P                  # r7   )r   _heightr<   s   &r   heightUSPS_4State.height;  s    ||r   c                    R # r7   r&   r0   vs   &&r   r   r   A      r   c                    R # r7   r&   r   s   &&r   r   r   D  r   r   c                   \        V R R4      '       g   V P                  pV P                  pV P                  pV P                  pV P
                  pV P                  pV P                  p^V,          V,           ^@V,          ,           V n        ^V,          V,           V n	        V P                  '       d2   V ;P                  V P                  R,          V,           ,          un	        RV n        R# R# )rP   Ng333333?T)getattrr   r   r   r   r   horizontalClearZoneverticalClearZoner   r   rd   r_   rP   )r0   wshsr   r   r   r   r   s   &       r   r   USPS_4State.computeSizeH  s    tHT**B!!BI}}HJJE**C((CC%(*RX5DKS5?DL!!!c 1# 55DK +r   c                R    V P                  4        V P                  V P                  3# r7   )r   r   r   )r0   aWaHs   &&&r   wrapUSPS_4State.wrapW  s!    zz4;;&&r   c                    / pV P                   pR FS  pV P                  W@P                  V4      V,           pWPP                  W@P                  V4      V,           V,
          3W$&   KU  	  V# )r   r   r   r   r   )r   rC   r   r   )r0   y0vInfor   bys   &&    r   _getBarVInfoUSPS_4State._getBarVInfo[  s_    "A

1\\"-b0AAii3B6::EH # r   c                l   V P                  4        V P                  pV P                  pV P                  pTpW P                  R ,          ,           pV P
                  pV P                  V4      pV P                   F'  pWx,          w  rV P                  WIW:4       WF,          pK)  	  V P                  4        R# )g      ?N)
r   r   r   r   r   r   r   r   rectdrawHumanReadable)r0   r   r   bwr   r   dwr   r   ybhbs   &          r   drawUSPS_4State.drawc  s    &&$$]]##ZZ!!"%AXFBIIa2!GA  	 r   c                    V P                   pV P                  pT;'       d    V3;'       g    RpR P                  VR,          VR,          VR,          VR,          3V,           4      # ) rh   :r	   r#   N:r#   r%   N:r%   NNr&   )rF   r2   r   )r0   rF   r2   s   &  r   r1   USPS_4State.valuer  sY    ==,,((wj..Bxx#x}Xd^HSMRSZZ[[r   c                :    V P                   P                  R V4      # )rF   )r   __setitem__rT   s   &&r   rI   rJ   w  s    dmm.G.G
SX.Yr   c                   V P                   '       dx   V P                  pV P                  pV P                  pV P                  pV P
                  ^V,          ,           RV,          ,           pV P                  WV P                  W44       R# R# )r	   g?N)rd   r   r   fontNamer_   r   annotater1   )r0   r   r   r   r_   r   s   &     r   r   USPS_4State.drawHumanReadabley  sj    **C((C}}H}}Hqu$S\1AMM#

8= r   c           
     :    \         P                  ! WW#WER R7       R# )start)anchorN)r   r   )r0   r   r   textr   r_   r   s   &&&&&&&r   r   USPS_4State.annotate  s    xHr   )r;   r8   r:   r9   rw   r^   r   rY   rc   r.   rP   r-   r   rS   rZ   N)g      ?gQ?)g+?gv/?)g      gQ)g+gv/)gQ?g?)g_L?g?)      ?r   )y&1?r   )01234567094987654321r   )A)   r	      ri   )r   
   r   r   )r$      r	      )r#   r#   rj   r%   )r   r$   ri   r   )r   r   r#   r   )r	   r#   r   r   )r   r   r$   r%   )rj   ri   r   r   )ri   r$   r   rj   )r#   r%   r   r   )r   r#   r	   r   )r$   r   r   r	   )r   r   rj   r   )ri   rj   r   r$   )r   ri   r   rj   )rj   r   r	   r   )r   r   r$   r$   )r   r   r#   r	   )r   r   ri   r   )rj   r	   r   r   )r   r%   r   r   )r$   r   ri   r   )r	   rj   r   r   )r#   r   r   r   )r   r   rj   r$   )r   ri   r   r   )r#   r   r$   r   )r   rj   r	   r   )ri   r   r   r#   )r   r   r#   r   )r   r%   r   r$   )rj   r   r$   rj   )r   rj   r   r   )r	   r   ri   r	   )r#   r$   r   r   )r   r%   rj   r   )r$   r#   r   r   )ri   ri   r   r	   )r   r   r	   r   )r   ri   r   r   )rj   r   ri   r#   )r   r   r$   r   )r	   r%   r#   rj   )r   r   r   r   )r   r	   r   r   )r#   r   ri   r   )r$   ri   r   r$   )rj   r#   r	   r   )r   r   r   r   )r#   r   r   r#   )r	   ri   r   r   )rj   r   r$   r	   )ri   r%   r   rj   )r   r   r   r$   )r#   r   r   r%   )r   r#   r	   r	   )r$   r   r   r   )r   ri   rj   rj   )r   r   ri   r   )r   r   r   r#   )r   r   r   r%   )r	   r$   r$   r   )rj   r   r#   ri   )ri   r   r   r	   r   )r   )middle)3__name__
__module____qualname____firstlineno____doc__rS   rY   r^   rc   dictr   r   r   r4   r'   rC   staticmethodrF   propertyr2   rU   rZ   r_   rd   rq   r   r   r   r   r   r   r   r   r   r   setterr   r   r   r   r   r   r   r   r   r   r1   r   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s    JKIN	 !!!!	 "#	
4!& E" 3H=H  1':G. 5i@I! 7
CJ 3H=H$ =mLM4j fF, #I% fF% fF . *%J !HF$ !J"#ab !`aC C
 __A A C C
 \\> > j j
 , , CDJEFK   
 \\ ]] '!\
 UYZE>I Ir   c                f   \        \        V 4      4      R,          pR^\        V4      ,
          ,          V,           pRpRp\        VR,          ^4      ^,          p\        ^^4       FD  pW4,          R,          '       d   V^,          V,          pM	V^,          pVR,          pV^,          pKF  	  \        ^^^4       Fr  p\        WV^,            ^4      ^,          p\        ^4       FD  pW4,          R,          '       d   V^,          V,          pM	V^,          pVR,          pV^,          pKF  	  Kt  	  V# )a>  
>>> usps = [USPS_4State('01234567094987654321',x).binary for x in ('','01234','012345678','01234567891')]
>>> print(' '.join(nhex(x) for x in usps))
0x1122103b5c2004b1 0xd138a87bab5cf3804b1 0x202bdc097711204d21804b1 0x16907b2a24abc16a2e5c004b1
>>> print(' '.join(nhex(_crc11(x)) for x in usps))
0x51 0x65 0x606 0x751
r
   0i5  i  r   rt   )r   r)   r+   rk   )r1   hexbytesgpr   datar   r   s   &      r   rv   rv     s
    CJ#HBs8}$%h.H	B
Cx|B"D1QZJ62+Cq&Cu
  1T!_8ac?2&)qA
E!!Avrk1f5LCQJD   Jr   c                p    ^ p\        ^4       F$  pV^,          pW^,          ,          pV ^,          p K&  	  V# )zireverse unsigned 13 bit number
>>> print(_ru13(7936), _ru13(31), _ru13(47), _ru13(7808))
31 7936 7808 47
)rk   )r   r   r   s   &  r   _ru13r    s;    
 	
A2Y	a	U
	a  Hr   c                   VR.,          p^ pV^,
          p\        R4       Fz  p^ p\        ^4       F  pWe^V,          ,          ^ 8g  ,          pK  	  W`8w  d   K8  \        V4      pW8  d   KK  W8X  d   WRV&   V^,          pK`  WRV&   V^,          pWV&   V^,          pK|  	  W4^,           8X  g   Q RV^,           W03,          4       hV# )a  create and return table of 13 bit values with N bits on
>>> T = _initNof13Table(5,1287)
>>> print(' '.join('T[%d]=%d' % (i, T[i]) for i in (0,1,2,3,4,1271,1272,1284,1285,1286)))
T[0]=31 T[1]=7936 T[2]=47 T[3]=7808 T[4]=55 T[1271]=6275 T[1272]=6211 T[1284]=856 T[1285]=744 T[1286]=496
Ni    z!u+1(%d)!=l(%d) for %d of 13 table)rk   r  )	NlenTr   r   ur   bcr   r   s	   &&       r   r   r     s     	dVA	AQA4[rAad8a-B 5(!H34aDFAaDFAaDFA  s8D8AaC9DD8Hr   c                  *    ^ RI p V P                  4       # )r   N)doctesttestmod)r  s    r   _testr    s    ??r   __main__N)r   )
__future__r   __version____all__!reportlab.graphics.barcode.commonr   reportlab.lib.utilsr   r   r   rv   r  r   r  r  r&   r   r   <module>r#     sY    &
 5 (rI' rIh@
6 z	G r   