+
    '(j                     ,    R R.t ^ RI5 RR ltRR ltR# )padunpad)*c                l   V\        V 4      V,          ,
          pVR8X  d   \        V4      V,          pW,           # VR8X  d2   \        ^ 4      V^,
          ,          \        V4      ,           pW,           # VR8X  d2   \        ^4      \        ^ 4      V^,
          ,          ,           pW,           # \        R4      h)a  Apply standard padding.

Args:
  data_to_pad (byte string):
    The data that needs to be padded.
  block_size (integer):
    The block boundary to use for padding. The output length is guaranteed
    to be a multiple of :data:`block_size`.
  style (string):
    Padding algorithm. It can be *'pkcs7'* (default), *'iso7816'* or *'x923'*.

Return:
  byte string : the original data with the appropriate padding added at the end.
pkcs7x923iso7816Unknown padding style)lenbchr
ValueError)data_to_pad
block_sizestylepadding_lenpaddings   &&&  H/home/ubuntu/cf-venv/lib/python3.14/site-packages/Crypto/Util/Padding.pyr   r   '   s      s;/*<<K{#k1    
&q';q=)D,==    
)	s)d1gQ77    011    c                   \        V 4      pV^ 8X  d   \        R4      hW1,          '       d   \        R4      hVR9   d   \        V R,          4      pV^8  g   V\        W4      8  d   \        R4      hVR8X  d'   W) R \	        V4      V,          8w  d   \        R4      hMW) R \	        ^ 4      V^,
          ,          8w  d   \        R4      hMVR8X  d~   W0P                  \	        ^4      4      ,
          pV^8  g   V\        W4      8  d   \        R4      hV^8  d4   V ^V,
          R \	        ^ 4      V^,
          ,          8w  d   \        R	4      hM\        R
4      hV RV)  # )a  Remove standard padding.

Args:
  padded_data (byte string):
    A piece of data with padding that needs to be stripped.
  block_size (integer):
    The block boundary to use for padding. The input length
    must be a multiple of :data:`block_size`.
  style (string):
    Padding algorithm. It can be *'pkcs7'* (default), *'iso7816'* or *'x923'*.
Return:
    byte string : data without padding.
Raises:
  ValueError: if the padding is incorrect.
z$Zero-length input cannot be unpaddedzInput data is not paddedr   zPadding is incorrect.NzPKCS#7 padding is incorrect.z ANSI X.923 padding is incorrect.r   z ISO 7816-4 padding is incorrect.r	   )r   r   )r
   r   bordminr   rfind)padded_datar   r   	pdata_lenr   s   &&&  r   r   r   E   s^   " K IA~?@@344!!;r?+?kC
,FF455G<=)T+->{-JJ !?@@ K <+tAwA/FF !CDD G 
)	"3"3DI">>?kC
,FF455?{1[=>:d1g{ST}>UU?@@011}%%r   N)r   )__all__Crypto.Util.py3compatr   r    r   r   <module>r      s   D 7
 #!<1&r   