
    %                        S r SSKJr  SS/rSrSr/ SSS	\SSS
/PSSS\SSS/PSSS\SSS/PSSS	\SSS/PSSS\SSS/PSSS	\SSS/PSS S!\SSS"/PS#S$S%\SSS&/PS'S(S%\SSS)/PS*S+S%\S,SS-/PS.S/S0\S1S1S/PS2S3S4\S5S5S6/PS7S8S4\S5S5S9/PS:S;S<\SS5S=/PS>S?S%\S5S5S@/PSASBS<\S5SSC/PSDSES<\SFSSG/PSHSISJ\SSSK/PSLSMSN\SSSO/PSPSQS%\SS5SR/PSSSTS<\SS5SU/PSVSWS<\SSSX/PSYSZS%\S5SS[/PS\S]S<\SSS^/PS_S`S<\S5SSa/PSbScS<\SdSSe/PSfSgSh\SiSSj/PSkSlSm\SnSSo/PSpSqSm\SrSSs/PStSuSv\SSwSx/PSySzSv\SSwS{/PS|S}S~\SSwS/PSSS\SSwS/PSSSv\SwSS/PSSSv\SwSwS/PSSS\SSS/PSSSv\SwSS/PSSS\SSS/PSSS\SSS/PSSS\SSS/PSSS\SSS/PrS r0 r0 r	/ r
/ SQr\ HX  r\" \" \\5      5      r\
R!                  \5        \" \S   5      r\\;   a  \" SR'                  \5      5      e\\\'   \\	\S1   '   MZ     S r " S S\R*                  5      r\rS r\rg)a}  
crcmod.predefined defines some well-known CRC algorithms.

To use it, e.g.:
    import crcmod.predefined
    
    crc32func = crcmod.predefined.mkPredefinedCrcFun("crc-32")
    crc32class = crcmod.predefined.PredefinedCrc("crc-32")

crcmod.predefined.Crc is an alias for crcmod.predefined.PredefinedCrc
But if doing 'from crc.predefined import *', only PredefinedCrc is imported.
    )crcmodPredefinedCrcmkPredefinedCrcFunTFzcrc-8Crc8i     z
crc-8-darcCrc8Darci9     zcrc-8-i-code	Crc8ICodei     ~   z	crc-8-ituCrc8ItuU      zcrc-8-maxim	Crc8Maximi1  z
crc-8-rohcCrc8Rohc      zcrc-8-wcdma	Crc8Wcdmai  %   zcrc-16Crc16i i=  zcrc-16-buypassCrc16Buypassi  zcrc-16-dds-110Crc16Dds110i  iϞ  zcrc-16-dect	Crc16Decti    z
crc-16-dnpCrc16Dnpie= i  i  zcrc-16-en-13757Crc16En13757i  zcrc-16-genibusCrc16Genibusi! iN  zcrc-16-maxim
Crc16MaximiD  zcrc-16-mcrf4xxCrc16Mcrf4xxio  zcrc-16-rielloCrc16RielloiMU  ic  zcrc-16-t10-difCrc16T10Difi i  zcrc-16-telediskCrc16Telediski i  z
crc-16-usbCrc16Usbiȴ  zx-25CrcX25in  xmodem	CrcXmodemi1  modbus	CrcModbusi7K  kermit	CrcKermiti!  zcrc-ccitt-falseCrcCcittFalsei)  zcrc-aug-ccittCrcAugCcitti  i  zcrc-24Crc24iLi i! zcrc-24-flexray-aCrc24FlexrayAim]i iyy zcrc-24-flexray-bCrc24FlexrayBiͫ i# zcrc-32Crc32l   	 l    l   &9 zcrc-32-bzip2
Crc32Bzip2l   y zcrc-32cCrc32Cl   Ao= l   F zcrc-32dCrc32Dl   +gP l   vUb zcrc-32-mpeg	Crc32MpegivposixCrcPosixiv^vzcrc-32qCrc32Ql   A i0jamcrc	CrcJamCrci4xferCrcXferl       l   8cz zcrc-64Crc64l           l   o$-5 z	crc-64-weCrc64Wel   6S l    l   
pIcgb zcrc-64-jones
Crc64Jonesl   5)Hl l   rZ\8U c                     U R                  5       n U R                  SS5      n U R                  SS5      n U R                  S5      (       a  U [        S5      S n U $ )z
Reduce CRC definition name to a simplified form:
    * lowercase
    * dashes removed
    * spaces removed
    * any initial "CRC" string removed
-  crcN)lowerreplace
startswithlen)names    3lib/third_party/gcloud_crcmod/python3/predefined.py_simplify_namerJ   j   sS     ::<D<<R D<<R DuCJK K    )rH   
identifierpolyreverseinitxor_outcheckz&Duplicate entry for '{0}' in CRC tablec                     [         R                  [        U 5      S 5      nU(       d  [        R                  U S 5      nU(       d  [	        SR                  U 5      5      eU$ )NzUnkown CRC name '{0}')_crc_definitions_by_namegetrJ   _crc_definitions_by_identifierKeyErrorformatcrc_name
definitions     rI   _get_definition_by_namer[      sN    )--nX.FMJ377$G
.55h?@@rK   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )r      c                 T   > [        U5      n[        TU ]	  US   US   US   US   S9  g NrM   rO   rN   rP   )rM   initCrcrevxorOut)r[   super__init__)selfrY   rZ   	__class__s      rI   rd   PredefinedCrc.__init__   sF    ,X6
j0*V:LR\]fRgpz  |E  qF  	GrK    )__name__
__module____qualname____firstlineno__rd   __static_attributes____classcell__)rf   s   @rI   r   r      s    G GrK   c                 ^    [        U 5      n[        R                  " US   US   US   US   S9$ r_   )r[   r   mkCrcFunrX   s     rI   r   r      sG    (2J??
6 2Jv<NT^_hTir|  ~G  sH  I  IrK   N)__doc__gcloud_crcmod.python3r   __all__REVERSENON_REVERSE_crc_definitions_tablerJ   rS   rU   _crc_definitions_crc_table_headingstable_entrydictzipcrc_definitionappendrH   	ExceptionrW   r[   Crcr   r   rp   rh   rK   rI   <module>r      s  , ) 
 
5FPT`dlpy5 	JPT`dlpy5 	KPT`dlpy	5
 	IPT`dlpy5 	KPT`dlpy5 	JPT`dlpy5 	KPT`dlpy5 	GPV`flry5 	NPV`flry5 	MPV`flry5 	KPV`flry5 	JPV`flry5 	NPV`flry5  	NPV`flry!5" 	LPV`flry#5$ 	NPV`flry%5& 	MPV`flry'5( 	MPV`flry)5* 	OPV`flry+5, 	JPV`flry-5. 	HPV`flry/50 	KPV`flry152 	KPV`flry35< 	KPV`flry=5> 	OPV`flry?5@ 	MPV`flryA5D 	G	PX`hltyE5F 	O	PX`hltyG5H 	O	PX`hltyI5L 	GPZ`jlvyM5N 	LPZ`jlvyO5P 	HPZ`jlvyQ5R 	HPZ`jlvyS5T 	KPZ`jlvyU5V 	JPZ`jlvyW5X 	HPZ`jlvyY5Z 	KPZ`jlvy[5\ 	IPZ`jlvy]5d 	G0CXjl~  AS  Ve5f 	I0CXjl~  AS  Vg5h 	L0CXjl~  AS  Vi5 p   !#  ] )K#1;?@NN++a.)D''@GGMNN%3T"5C";q>2 *GFJJ G I rK   